<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Thoughts on Software Development</title>
    <link>http://www.reliablesoftware.com/DasBlog/</link>
    <description>"Publication - is the Auction Of the Mind of Man" Emily Dickinson</description>
    <language>en-us</language>
    <copyright>Reliable Software, Inc.</copyright>
    <lastBuildDate>Mon, 08 Mar 2010 00:54:26 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.8.5223.1</generator>
    <managingEditor>weblogcomments@reliablesoftware.com</managingEditor>
    <webMaster>weblogcomments@reliablesoftware.com</webMaster>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=08c147ed-085b-47a0-9818-15b5d5ec3281</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,08c147ed-085b-47a0-9818-15b5d5ec3281.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,08c147ed-085b-47a0-9818-15b5d5ec3281.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=08c147ed-085b-47a0-9818-15b5d5ec3281</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">Here is the keynote I delivered at the <a href="http://architectfactory.com/EventContent.aspx" target="_blank">Boston
   Architect Factory on January 27, 2010.</a> Software Architect is the most misunderstood
   role in all of software development. I think architects themselves share the blame
   because they have not articulated their role very well. I discuss the role of a software
   architect in my keynote address. 
   <br /><br /><font face="Arial"> Technorati Tags: <a href="http://technorati.com/tags/ARCast" rel="tag" mce_href="http://technorati.com/tags/ARCast">ARCast</a>,<a href="http://technorati.com/tags/Architect+Factory" rel="tag" mce_href="http://technorati.com/tags/Architect+Factory">Architect
   Factory</a>,<a href="http://technorati.com/tags/Architects" rel="tag" mce_href="http://technorati.com/tags/Architects">Architects</a>,<a href="http://technorati.com/tags/Architecture" rel="tag" mce_href="http://technorati.com/tags/Architecture">Architecture</a>,<a href="http://technorati.com/tags/Art" rel="tag" mce_href="http://technorati.com/tags/Art">Art</a>,<a href="http://technorati.com/tags/Michael+Stiefel" rel="tag" mce_href="http://technorati.com/tags/Michael+Stiefel">Michael
   Stiefel</a>,<a href="http://technorati.com/tags/Thought+Leadership" rel="tag" mce_href="http://technorati.com/tags/Thought+Leadership">Thought
   Leadership</a></font><br /><br /><br /><br /><table><tbody><tr><td><p><iframe height="325" src="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Architects-We-Dont-Need-No-Stinkin-Architects//player" frameborder="0" width="320" scrolling="no" mce_src="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Architects-We-Dont-Need-No-Stinkin-Architects/"></iframe></p><br /><a href="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Architects-We-Dont-Need-No-Stinkin-Architects/">ARCast.TV
               - Architects? We Don't Need No Stinkin' Architects!</a></td></tr></tbody></table><p><script type="text/javascript">
digg_url = 'http://blogs.msdn.com/innov8showcase/archive/2010/03/03/arcast-tv-architects-we-don-t-need-no-stinkin-architects.aspx';
</script><script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script><a href="http://dotnetshoutout.com/Submit?url=http://blogs.msdn.com/innov8showcase/archive/2010/03/03/arcast-tv-architects-we-don-t-need-no-stinkin-architects.aspx" rev="vote-for"><img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.msdn.com/innov8showcase/archive/2010/03/03/arcast-tv-architects-we-don-t-need-no-stinkin-architects.aspx" /></a></p><br /><br />
   It is also with my other presentations on my <a href="http://www.reliablesoftware.com/webcasts/Architects%20We%20Dont%20Need%20No%20Stinkin%20Architects.html"> presentation
   page.</a><img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=08c147ed-085b-47a0-9818-15b5d5ec3281" /></body>
      <title>Architects? We Don't Need No Stinkin Architects!</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,08c147ed-085b-47a0-9818-15b5d5ec3281.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,08c147ed-085b-47a0-9818-15b5d5ec3281.aspx</link>
      <pubDate>Mon, 08 Mar 2010 00:54:26 GMT</pubDate>
      <description>Here is the keynote I delivered at the &lt;a href="http://architectfactory.com/EventContent.aspx" target= _blank&gt;Boston
Architect Factory on January 27, 2010.&lt;/a&gt; Software Architect is the most misunderstood
role in all of software development. I think architects themselves share the blame
because they have not articulated their role very well. I discuss the role of a software
architect in my keynote address. 
&lt;br&gt;
&gt;
&lt;br&gt;
&lt;font face="Arial"&gt; Technorati Tags: &lt;a href="http://technorati.com/tags/ARCast" rel=tag mce_href="http://technorati.com/tags/ARCast"&gt;ARCast&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Architect+Factory" rel=tag mce_href="http://technorati.com/tags/Architect+Factory"&gt;Architect
Factory&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Architects" rel=tag mce_href="http://technorati.com/tags/Architects"&gt;Architects&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Architecture" rel=tag mce_href="http://technorati.com/tags/Architecture"&gt;Architecture&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Art" rel=tag mce_href="http://technorati.com/tags/Art"&gt;Art&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Michael+Stiefel" rel=tag mce_href="http://technorati.com/tags/Michael+Stiefel"&gt;Michael
Stiefel&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Thought+Leadership" rel=tag mce_href="http://technorati.com/tags/Thought+Leadership"&gt;Thought
Leadership&lt;/a&gt;&gt;
&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;table&gt;
   &lt;tbody&gt;
      &lt;tr&gt;
         &lt;td&gt;
            &lt;p&gt;
               &lt;iframe height="325" src="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Architects-We-Dont-Need-No-Stinkin-Architects//player" frameborder="0" width="320" scrolling="no" mce_src="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Architects-We-Dont-Need-No-Stinkin-Architects/"&gt;
               &lt;/iframe&gt;
            &lt;/p&gt;
            &lt;br /&gt;
            &lt;a href="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Architects-We-Dont-Need-No-Stinkin-Architects/"&gt;ARCast.TV
            - Architects? We Don't Need No Stinkin' Architects!&lt;/a&gt; 
         &lt;/td&gt;
      &lt;/tr&gt;
   &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
   &lt;script type="text/javascript"&gt;
digg_url = 'http://blogs.msdn.com/innov8showcase/archive/2010/03/03/arcast-tv-architects-we-don-t-need-no-stinkin-architects.aspx';
&lt;/script&gt;
   &lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;
   &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.msdn.com/innov8showcase/archive/2010/03/03/arcast-tv-architects-we-don-t-need-no-stinkin-architects.aspx" rev="vote-for"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.msdn.com/innov8showcase/archive/2010/03/03/arcast-tv-architects-we-don-t-need-no-stinkin-architects.aspx" /&gt; &lt;/a&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;br&gt;
It is also with my other presentations on my &lt;a href="http://www.reliablesoftware.com/webcasts/Architects%20We%20Dont%20Need%20No%20Stinkin%20Architects.html"&gt; presentation
page.&lt;/a&gt; &lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=08c147ed-085b-47a0-9818-15b5d5ec3281" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,08c147ed-085b-47a0-9818-15b5d5ec3281.aspx</comments>
      <category>All;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=e03414c3-c0ff-44ea-b6f9-6aefce2887ea</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,e03414c3-c0ff-44ea-b6f9-6aefce2887ea.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,e03414c3-c0ff-44ea-b6f9-6aefce2887ea.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=e03414c3-c0ff-44ea-b6f9-6aefce2887ea</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Arial"> One way to approach the different architectural
      implications is to look at the various vendor offering and see how they match to the
      various application types. 
      <br /><br />
      You can divide the cloud vendors into four categories, although one vendor might have
      offerings in more than one category: 
      <br /><br />
      Platform as a Service providers 
      <br />
      Software as a Service providers 
      <br />
      Application as a Service providers 
      <br />
      Cloud Appliance Vendors 
      <br /><br />
      The Platform as a Service providers attempt to provide a cloud operating system for
      users to build an application on. An operating system serves two basic functions:
      it abstracts the underlying hardware and manages the platform resources for each process
      or user. Google App Engine, Amazon EC2, Microsoft Azure, and Force.com are examples
      of platform providers. 
      <br /><br />
      The most restrictive platform is the Google App Engine because you program to the
      Google API which makes it difficult to port to another platform. One the other hand,
      precisely because you program to a specific API, Google can scale your application
      and provide recovery for a failed application. 
      <br /><br />
      At the other extreme is Amazon. Amazon gives you a virtual machine which with you
      can program directly against the native OS installed on the virtual machine. This
      freedom comes with a price. Since the Amazon virtual machine has no knowledge about
      the application you are running, it cannot provide recovery or scaling for you. You
      are responsible for doing that. You can use third party software, but that is just
      a means of fulfilling your responsibility. 
      <br /><br />
      Microsoft tries to achieve a balance between these two approaches. By using .NET you
      have a greater degree of portability than the Google API. You could move your application
      to an Amazon VM or even your own servers. By using metadata to describe your application
      to the cloud fabric, the Azure infrastructure can provide recovery and scalability. 
      <br /><br />
      The first architectural dimension (ignoring for a moment the relative econonmics which
      will be explored in another post) then is how much responsibility you want to take
      for scaling and recovery vs. the degrees of programming freedom you want to have.
      Of course the choice between the Google API and Microsoft Azure might come down to
      the skill set of your developers, but in my opinion, for any significant application,
      the architectural implications of the platform choice should be the more important
      factor. 
      </font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=e03414c3-c0ff-44ea-b6f9-6aefce2887ea" />
      </body>
      <title> Why should you consider Cloud Computing? : Part 3</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,e03414c3-c0ff-44ea-b6f9-6aefce2887ea.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,e03414c3-c0ff-44ea-b6f9-6aefce2887ea.aspx</link>
      <pubDate>Sun, 27 Dec 2009 16:05:16 GMT</pubDate>
      <description>&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Arial"&gt; One way to approach the different architectural
   implications is to look at the various vendor offering and see how they match to the
   various application types. 
   &lt;br&gt;
   &lt;br&gt;
   You can divide the cloud vendors into four categories, although one vendor might have
   offerings in more than one category: 
   &lt;br&gt;
   &lt;br&gt;
   Platform as a Service providers 
   &lt;br&gt;
   Software as a Service providers 
   &lt;br&gt;
   Application as a Service providers 
   &lt;br&gt;
   Cloud Appliance Vendors 
   &lt;br&gt;
   &lt;br&gt;
   The Platform as a Service providers attempt to provide a cloud operating system for
   users to build an application on. An operating system serves two basic functions:
   it abstracts the underlying hardware and manages the platform resources for each process
   or user. Google App Engine, Amazon EC2, Microsoft Azure, and Force.com are examples
   of platform providers. 
   &lt;br&gt;
   &lt;br&gt;
   The most restrictive platform is the Google App Engine because you program to the
   Google API which makes it difficult to port to another platform. One the other hand,
   precisely because you program to a specific API, Google can scale your application
   and provide recovery for a failed application. 
   &lt;br&gt;
   &lt;br&gt;
   At the other extreme is Amazon. Amazon gives you a virtual machine which with you
   can program directly against the native OS installed on the virtual machine. This
   freedom comes with a price. Since the Amazon virtual machine has no knowledge about
   the application you are running, it cannot provide recovery or scaling for you. You
   are responsible for doing that. You can use third party software, but that is just
   a means of fulfilling your responsibility. 
   &lt;br&gt;
   &lt;br&gt;
   Microsoft tries to achieve a balance between these two approaches. By using .NET you
   have a greater degree of portability than the Google API. You could move your application
   to an Amazon VM or even your own servers. By using metadata to describe your application
   to the cloud fabric, the Azure infrastructure can provide recovery and scalability. 
   &lt;br&gt;
   &lt;br&gt;
   The first architectural dimension (ignoring for a moment the relative econonmics which
   will be explored in another post) then is how much responsibility you want to take
   for scaling and recovery vs. the degrees of programming freedom you want to have.
   Of course the choice between the Google API and Microsoft Azure might come down to
   the skill set of your developers, but in my opinion, for any significant application,
   the architectural implications of the platform choice should be the more important
   factor. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=e03414c3-c0ff-44ea-b6f9-6aefce2887ea" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,e03414c3-c0ff-44ea-b6f9-6aefce2887ea.aspx</comments>
      <category>All;Cloud Computing;Microsoft .NET;SOA</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=15ba5ed6-632f-4cab-8651-b1e0f1c40b21</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,15ba5ed6-632f-4cab-8651-b1e0f1c40b21.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,15ba5ed6-632f-4cab-8651-b1e0f1c40b21.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=15ba5ed6-632f-4cab-8651-b1e0f1c40b21</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <br />
        <img src="http://www.reliablesoftware.com/DasBlog/content/binary/arccast.bmp" border="0" />
        <br />
        <br />
        <font color="#000000" size="4">
          <b>ARCast.TV Special - Michael Stiefel on Cloud Computing
   is for Small Companies Too</b>
        </font>
        <br />
        <br />
        <font color="#000000" size="2" face="Arial"> Here is an interview that I did at last
   year's TechEd where I discuss why cloud computing is for small companies and divisions
   of large companies as well as the enterprise. In fact, there may be more immediate
   opportunites for cloud computing in small companies than in the enterprise. 
   <br /></font>
        <br />
        <font face="Arial"> Technorati Tags: <a href="http://technorati.com/tags/ARCast" rel="tag" mce_href="http://technorati.com/tags/ARCast">ARCast</a>,<a href="http://technorati.com/tags/Architects" rel="tag" mce_href="http://technorati.com/tags/Architects">Architects</a>,<a href="http://technorati.com/tags/Architecture" rel="tag" mce_href="http://technorati.com/tags/Architecture">Architecture</a>,<a href="http://technorati.com/tags/Cloud+Architecture" rel="tag" mce_href="http://technorati.com/tags/Cloud+Architecture">Cloud
   Architecture</a>,<a href="http://technorati.com/tags/Cloud+Computing" rel="tag" mce_href="http://technorati.com/tags/Cloud+Computing">Cloud
   Computing</a>,<a href="http://technorati.com/tags/Cloud+Patterns" rel="tag" mce_href="http://technorati.com/tags/Cloud+Patterns">Cloud
   Patterns</a>,<a href="http://technorati.com/tags/Cloud+Services" rel="tag" mce_href="http://technorati.com/tags/Cloud+Services">Cloud
   Services</a>,<a href="http://technorati.com/tags/Windows+Azure" rel="tag" mce_href="http://technorati.com/tags/Windows+Azure">Windows
   Azure</a>,<a href="http://technorati.com/tags/Thought+Leadershipt+Leadership" rel="tag" mce_href="http://technorati.com/tags/Thought+Leadershipt+Leadership">Thought
   Leadership Leadership 
   </a></font>
        <br />
        <br />
        <br />
        <br />
        <table>
          <tbody>
            <tr>
              <td>
                <p>
                  <iframe height="325" src="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Cloud-Computing-is-for-Small-Companies-Too//player" frameborder="0" width="320" scrolling="no" mce_src="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Cloud-Computing-is-for-Small-Companies-Too/">
                  </iframe>
                </p>
                <br />
                <a target="_blank" href="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Cloud-Computing-is-for-Small-Companies-Too/">ARCast.TV
               - Cloud Computing is for Small Companies Too"</a>
              </td>
            </tr>
          </tbody>
        </table>
        <div>
          <script type="text/javascript">
digg_url = 'http://blogs.msdn.com/innov8showcase/archive/2009/11/22/arcast-tv-cloud-computing-is-for-small-companies-too.aspx';
</script>
          <script src="http://digg.com/tools/diggthis.js" type="text/javascript">
          </script>
          <div class="shoutIt">
            <a rev="vote-for" href="http://dotnetshoutout.com/Submit?url=http://blogs.msdn.com/innov8showcase/archive/2009/11/22/arcast-tv-cloud-computing-is-for-small-companies-too.aspx">
              <img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.msdn.com/innov8showcase/archive/2009/11/22/arcast-tv-cloud-computing-is-for-small-companies-too.aspx" style="border:0px" />
            </a>
            <div>
              <a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2finnov8showcase%2farchive%2f2009%2f11%2f22%2farcast-tv-cloud-computing-is-for-small-companies-too.aspx">
                <img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2finnov8showcase%2farchive%2f2009%2f11%2f22%2farcast-tv-cloud-computing-is-for-small-companies-too.aspx" border="0" alt="kick it on DotNetKicks.com" />
              </a>
            </div>
            <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=15ba5ed6-632f-4cab-8651-b1e0f1c40b21" />
          </div>
        </div>
      </body>
      <title>Cloud Computing is For Small Companies Too</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,15ba5ed6-632f-4cab-8651-b1e0f1c40b21.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,15ba5ed6-632f-4cab-8651-b1e0f1c40b21.aspx</link>
      <pubDate>Fri, 25 Dec 2009 02:22:24 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;img src="http://www.reliablesoftware.com/DasBlog/content/binary/arccast.bmp" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
&lt;font color="#000000" size="4"&gt;&lt;b&gt;ARCast.TV Special - Michael Stiefel on Cloud Computing
is for Small Companies Too&lt;/b&gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
&lt;font color="#000000" size="2" face="Arial"&gt; Here is an interview that I did at last
year's TechEd where I discuss why cloud computing is for small companies and divisions
of large companies as well as the enterprise. In fact, there may be more immediate
opportunites for cloud computing in small companies than in the enterprise. 
&lt;br&gt;
&lt;/font&gt;
&lt;br&gt;
&lt;font face="Arial"&gt; Technorati Tags: &lt;a href="http://technorati.com/tags/ARCast" rel=tag mce_href="http://technorati.com/tags/ARCast"&gt;ARCast&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Architects" rel=tag mce_href="http://technorati.com/tags/Architects"&gt;Architects&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Architecture" rel=tag mce_href="http://technorati.com/tags/Architecture"&gt;Architecture&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Cloud+Architecture" rel=tag mce_href="http://technorati.com/tags/Cloud+Architecture"&gt;Cloud
Architecture&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Cloud+Computing" rel=tag mce_href="http://technorati.com/tags/Cloud+Computing"&gt;Cloud
Computing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Cloud+Patterns" rel=tag mce_href="http://technorati.com/tags/Cloud+Patterns"&gt;Cloud
Patterns&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Cloud+Services" rel=tag mce_href="http://technorati.com/tags/Cloud+Services"&gt;Cloud
Services&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Windows+Azure" rel=tag mce_href="http://technorati.com/tags/Windows+Azure"&gt;Windows
Azure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Thought+Leadershipt+Leadership" rel=tag mce_href="http://technorati.com/tags/Thought+Leadershipt+Leadership"&gt;Thought
Leadership Leadership 
&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;table&gt;
   &lt;tbody&gt;
      &lt;tr&gt;
         &lt;td&gt;
            &lt;p&gt;
               &lt;iframe height="325" src="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Cloud-Computing-is-for-Small-Companies-Too//player" frameborder="0" width="320" scrolling="no" mce_src="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Cloud-Computing-is-for-Small-Companies-Too/"&gt;
               &lt;/iframe&gt;
            &lt;/p&gt;
            &lt;br /&gt;
            &lt;a target="_blank" href="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Cloud-Computing-is-for-Small-Companies-Too/"&gt;ARCast.TV
            - Cloud Computing is for Small Companies Too"&lt;/a&gt; 
         &lt;/td&gt;
      &lt;/tr&gt;
   &lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
   &lt;script type="text/javascript"&gt;
digg_url = 'http://blogs.msdn.com/innov8showcase/archive/2009/11/22/arcast-tv-cloud-computing-is-for-small-companies-too.aspx';
&lt;/script&gt;
   &lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;
   &lt;div class="shoutIt"&gt;
      &lt;a rev="vote-for" href="http://dotnetshoutout.com/Submit?url=http://blogs.msdn.com/innov8showcase/archive/2009/11/22/arcast-tv-cloud-computing-is-for-small-companies-too.aspx"&gt; &lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.msdn.com/innov8showcase/archive/2009/11/22/arcast-tv-cloud-computing-is-for-small-companies-too.aspx" style="border:0px" /&gt; &lt;/a&gt; 
      &lt;div&gt;
         &lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2finnov8showcase%2farchive%2f2009%2f11%2f22%2farcast-tv-cloud-computing-is-for-small-companies-too.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2finnov8showcase%2farchive%2f2009%2f11%2f22%2farcast-tv-cloud-computing-is-for-small-companies-too.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt; 
      &lt;/div&gt;
      &lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=15ba5ed6-632f-4cab-8651-b1e0f1c40b21" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,15ba5ed6-632f-4cab-8651-b1e0f1c40b21.aspx</comments>
      <category>Cloud Computing;SOA;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=f2dd8b67-8f64-4f26-9ea9-96a964451128</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f2dd8b67-8f64-4f26-9ea9-96a964451128.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,f2dd8b67-8f64-4f26-9ea9-96a964451128.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=f2dd8b67-8f64-4f26-9ea9-96a964451128</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Arial">One of my clients, ITNAmerica has become
      a <a target="_blank" href="http://www.microsoft.com/business/success/?StoryID=290">Microsoft
      case study for the idea of software + services</a>. The idea behind software + services
      is that software should run where ever it makes sense: in the cloud, on the desktop,
      or on a mobile device, not just in a thin client such as a browser.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Arial"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Arial">Latency, bandwidth limits, and the need
      for software to<span style="">  </span>work if the connection to the cloud disappears
      makes this a logical approach.<span style="">  </span>Anybody who has tried to
      get a cell phone signal should understand the issues about continual connectivity.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Arial"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Arial">Curt Devlin, a Microsoft evangelist, <a target="_blank" href="http://blogs.msdn.com/curtd/default.aspx">demonstrates
      another reason</a> why this approach makes sense. It makes the transition to a cloud
      provider such as Azure much simpler. </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Arial"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Arial">If you want some further ideas on how
      to take a software + services application to a cloud platform. Check out my recent <a href="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Special-Michael-Stiefel-on-Software-as-a-Service-in-the-Cloud/">ARCast </a>on
      "Software + Services in the Cloud."</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
       
   </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
       
   </p>
        <p>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=f2dd8b67-8f64-4f26-9ea9-96a964451128" />
      </body>
      <title>The Road to Azure</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f2dd8b67-8f64-4f26-9ea9-96a964451128.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f2dd8b67-8f64-4f26-9ea9-96a964451128.aspx</link>
      <pubDate>Thu, 05 Nov 2009 17:23:41 GMT</pubDate>
      <description>
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Arial"&gt;One of my clients, ITNAmerica has become
   a &lt;a target="_blank" href="http://www.microsoft.com/business/success/?StoryID=290"&gt;Microsoft
   case study for the idea of software + services&lt;/a&gt;. The idea behind software + services
   is that software should run where ever it makes sense: in the cloud, on the desktop,
   or on a mobile device, not just in a thin client such as a browser.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Arial"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Arial"&gt;Latency, bandwidth limits, and the need
   for software to&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;work if the connection to the cloud disappears
   makes this a logical approach.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Anybody who has tried to
   get a cell phone signal should understand the issues about continual connectivity.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Arial"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Arial"&gt;Curt Devlin, a Microsoft evangelist, &lt;a target="_blank" href="http://blogs.msdn.com/curtd/default.aspx"&gt;demonstrates
   another reason&lt;/a&gt; why this approach makes sense. It makes the transition to a cloud
   provider such as Azure much simpler. &lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Arial"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Arial"&gt;If you want some further ideas on how
   to take a software + services application to a cloud platform. Check out my recent &lt;a href="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Special-Michael-Stiefel-on-Software-as-a-Service-in-the-Cloud/"&gt;ARCast &lt;/a&gt;on
   "Software + Services in the Cloud."&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=f2dd8b67-8f64-4f26-9ea9-96a964451128" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,f2dd8b67-8f64-4f26-9ea9-96a964451128.aspx</comments>
      <category>All;Cloud Computing;SOA;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=4861cdfb-8680-435e-87b9-914c48c808a6</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,4861cdfb-8680-435e-87b9-914c48c808a6.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,4861cdfb-8680-435e-87b9-914c48c808a6.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=4861cdfb-8680-435e-87b9-914c48c808a6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <br />
        <img src="http://www.reliablesoftware.com/DasBlog/content/binary/ArchitectinnovationCafe.bmp" border="0" />
        <br />
        <br />
        <font color="#000000" size="4">
          <b>ARCast.TV Special - Michael Stiefel on Software
   as a Service in the Cloud </b>
        </font>
        <br />
        <br />
        <font color="#000000" size="2" face="Arial">The Architecture Innovation Cafe presents
   my <a target="_blank" href="http://bit.ly/2bp2FM">discussion of Software as a Service
   in the Cloud</a>, I discuss how architecting and building a software as a service
   application requires solving a series of problems that are independent of a particular
   software platform. I focus on three areas of designing and building the application
   that you can leverage on new platforms such as Microsoft Azure.<br /></font>
        <br />
        <font face="Arial">Tags<br />
   ARCast, Architects, Architecture, Cloud Architecture, Cloud Computing, Cloud Patterns,
   Cloud Services, Software + Services, software as a service, Windows Azure</font>
        <br />
        <br />
        <br />
        <br />
        <table width="1000">
          <tbody>
            <tr>
              <td width="303">
                <p>
                  <iframe src="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Special-Michael-Stiefel-on-Software-as-a-Service-in-the-Cloud//player" mce_src="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Special-Michael-Stiefel-on-Software-as-a-Service-in-the-Cloud/" scrolling="no" width="320" frameborder="0" height="325">
                  </iframe>
                </p>
                <br />
                <a target="_blank" href="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Special-Michael-Stiefel-on-Software-as-a-Service-in-the-Cloud/">ARCast.TV
               Special - Michael Stiefel on Software as a Service in the Cloud</a>
              </td>
            </tr>
          </tbody>
        </table>
        <div class="shoutIt">
          <script type="text/javascript">
digg_url = 'http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Special-Michael-Stiefel-on-Software-as-a-Service-in-the-Cloud/';
</script>
          <script type="text/javascript" src="http://digg.com/tools/diggthis.js">
          </script>
          <a href="http://dotnetshoutout.com/Submit?url=http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Special-Michael-Stiefel-on-Software-as-a-Service-in-the-Cloud/" rev="vote-for">
            <img style="border: 0px none ;" alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Special-Michael-Stiefel-on-Software-as-a-Service-in-the-Cloud/" />
          </a>
          <a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fchannel9.msdn.com%2fshows%2fARCast.TV%2fARCastTV-Special-Michael-Stiefel-on-Software-as-a-Service-in-the-Cloud%2f">
            <img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fchannel9.msdn.com%2fshows%2fARCast.TV%2fARCastTV-Special-Michael-Stiefel-on-Software-as-a-Service-in-the-Cloud%2f" border="0" />
          </a>
          <div>
          </div>
        </div>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=4861cdfb-8680-435e-87b9-914c48c808a6" />
      </body>
      <title>ARCast: Software as a Service in the Cloud</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,4861cdfb-8680-435e-87b9-914c48c808a6.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,4861cdfb-8680-435e-87b9-914c48c808a6.aspx</link>
      <pubDate>Thu, 05 Nov 2009 16:05:17 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;img src="http://www.reliablesoftware.com/DasBlog/content/binary/ArchitectinnovationCafe.bmp" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
&lt;font color="#000000" size="4"&gt;&lt;b&gt;ARCast.TV Special - Michael Stiefel on Software
as a Service in the Cloud &lt;/b&gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
&lt;font color="#000000" size="2" face="Arial"&gt;The Architecture Innovation Cafe presents
my &lt;a target= "_blank" href="http://bit.ly/2bp2FM"&gt;discussion of Software as a Service
in the Cloud&lt;/a&gt;, I discuss how architecting and building a software as a service
application requires solving a series of problems that are independent of a particular
software platform. I focus on three areas of designing and building the application
that you can leverage on new platforms such as Microsoft Azure.&lt;br&gt;
&lt;/font&gt;
&lt;br&gt;
&lt;font face="Arial"&gt;Tags&lt;br&gt;
ARCast, Architects, Architecture, Cloud Architecture, Cloud Computing, Cloud Patterns,
Cloud Services, Software + Services, software as a service, Windows Azure&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;table width="1000"&gt;
   &lt;tbody&gt;
      &lt;tr&gt;
         &lt;td width="303"&gt;
            &lt;p&gt;
               &lt;iframe src="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Special-Michael-Stiefel-on-Software-as-a-Service-in-the-Cloud//player" mce_src="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Special-Michael-Stiefel-on-Software-as-a-Service-in-the-Cloud/" scrolling="no" width="320" frameborder="0" height="325"&gt;
               &lt;/iframe&gt;
            &lt;/p&gt;
            &lt;br&gt;
            &lt;a target= "_blank" href="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Special-Michael-Stiefel-on-Software-as-a-Service-in-the-Cloud/"&gt;ARCast.TV
            Special - Michael Stiefel on Software as a Service in the Cloud&lt;/a&gt; 
         &lt;/td&gt;
      &lt;/tr&gt;
   &lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="shoutIt"&gt;
   &lt;script type="text/javascript"&gt;
digg_url = 'http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Special-Michael-Stiefel-on-Software-as-a-Service-in-the-Cloud/';
&lt;/script&gt;
   &lt;script type="text/javascript" src="http://digg.com/tools/diggthis.js"&gt;&lt;/script&gt;
   &lt;a href="http://dotnetshoutout.com/Submit?url=http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Special-Michael-Stiefel-on-Software-as-a-Service-in-the-Cloud/" rev="vote-for"&gt;&lt;img style="border: 0px none ;" alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Special-Michael-Stiefel-on-Software-as-a-Service-in-the-Cloud/"&gt; &lt;/a&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fchannel9.msdn.com%2fshows%2fARCast.TV%2fARCastTV-Special-Michael-Stiefel-on-Software-as-a-Service-in-the-Cloud%2f"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fchannel9.msdn.com%2fshows%2fARCast.TV%2fARCastTV-Special-Michael-Stiefel-on-Software-as-a-Service-in-the-Cloud%2f" border="0"&gt;&lt;/a&gt; 
   &lt;div&gt;
   &lt;/div&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=4861cdfb-8680-435e-87b9-914c48c808a6" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,4861cdfb-8680-435e-87b9-914c48c808a6.aspx</comments>
      <category>All;Cloud Computing;SOA</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=10f964a9-cab2-47be-861b-009708f1e815</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,10f964a9-cab2-47be-861b-009708f1e815.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,10f964a9-cab2-47be-861b-009708f1e815.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=10f964a9-cab2-47be-861b-009708f1e815</wfw:commentRss>
      <title> 	 Why should you consider Cloud Computing? : Part 2</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,10f964a9-cab2-47be-861b-009708f1e815.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,10f964a9-cab2-47be-861b-009708f1e815.aspx</link>
      <pubDate>Thu, 05 Nov 2009 02:50:26 GMT</pubDate>
      <description>&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;
&lt;meta name="ProgId" content="Word.Document"&gt;
&lt;meta name="Generator" content="Microsoft Word 11"&gt;
&lt;meta name="Originator" content="Microsoft Word 11"&gt;
&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5Cmds%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
 &lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" LatentStyleCount="156"&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt;
&lt;!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
--&gt;
&lt;/style&gt;
&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman";
	mso-ansi-language:#0400;
	mso-fareast-language:#0400;
	mso-bidi-language:#0400;}
&lt;/style&gt;
&lt;![endif]--&gt;
&lt;p class="MsoNormal"&gt;
   The application delivery scenarios focus around software as a service. Software as
   a service applications fall into three varieties: pure service, and software + service,
   hosted application.
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   The hosted application scenario is similar to hosted application delivery. Examples
   are SalesForce, or Hosted Microsoft Exchange. People provide or buy an application
   that runs in the cloud. At the other extreme is the pure service play. Providers create
   web services (SOAP or REST based) that provide services used by other applications.
   Examples are credit card approvals, or certain loan applications. Applications written
   by third parties use this software to compose their applications in conjunction with
   their own software. Then there is the mixed play. Providers create both web applications
   and web services to be used by third parties. These applications consume the same
   web services that are available to others to build their own applications. This is
   often done to allow the provider to share the web services among various offerings,
   or because they need to boot strap the application marketplace. The need for rich
   clients does not necessarily disappear here. If applications (such as emergency services)
   have to run with loss of internet connectivity, stand alone apps may be necessary
   with synchronization software used when connectivity is re-established. Transactional
   queuing is not enough here because substantive work has to be done by the rich client
   app when connectivity is absent.
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   Internet scale is the last class of application. The first scaling factor is number
   of users. In order to achieve such scale you may to use cloud features such as tables
   (Google Big Table, Azure Tables, Amazon Simple DB) instead of or in addition to relational
   databases. Note that transactional guarantees are often impossible to make here. The
   second scaling factor is geographic distance. If your clients are geographically separated
   by enough distance, the latency caused by the speed of light in fiber optic cable
   actually matters. You may have to use the cloud features mentioned previously to achieve
   the responsiveness for writeable data because transactions, especially distributed
   transactions are not feasible to achieve scalability.
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;br&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   The next post in the series will start to discuss the architectural&amp;nbsp; implications
   of these different types of applications.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=10f964a9-cab2-47be-861b-009708f1e815" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,10f964a9-cab2-47be-861b-009708f1e815.aspx</comments>
      <category>Cloud Computing;SOA;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=9303ac48-c4a2-4f33-b6e2-c33887f855c4</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,9303ac48-c4a2-4f33-b6e2-c33887f855c4.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,9303ac48-c4a2-4f33-b6e2-c33887f855c4.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=9303ac48-c4a2-4f33-b6e2-c33887f855c4</wfw:commentRss>
      <title>Why should you consider Cloud Computing? : Part 1</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,9303ac48-c4a2-4f33-b6e2-c33887f855c4.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,9303ac48-c4a2-4f33-b6e2-c33887f855c4.aspx</link>
      <pubDate>Wed, 28 Oct 2009 15:54:08 GMT</pubDate>
      <description>&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5Cmds%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
 &lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" LatentStyleCount="156"&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt;
&lt;!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
--&gt;
&lt;/style&gt;
&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman";
	mso-ansi-language:#0400;
	mso-fareast-language:#0400;
	mso-bidi-language:#0400;}
&lt;/style&gt;
&lt;![endif]--&gt;
&lt;p class="MsoNormal"&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   Cloud computing is utility computing. No up front commitment required. You buy only
   what you need, and when you do not need it any more you do not pay for it.
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   There are three basic cloud computing scenarios: infrastructure scenarios, application
   delivery scenarios, and scaling scenarios. These scenarios are not independent, one
   or all of them can come into play.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Each, however, has
   different technological implications.
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   The three basic scenarios are: infrastructure, application delivery, or the need to
   reach internet scale.
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   Fundamentally, cloud computing is a software delivery platform. Are the economics
   of working with the cloud cheaper than doing it yourself? Doing it yourself could
   mean self-hosting, or traditional delivery of desktop software. Self-hosting could
   be in your own data center, or in a hosting facility.
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   Not needing to build to your peak capacity drives the infrastructure scenarios. This
   is not an all or nothing proposition. 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   Some small and medium sized companies may decide they do not want to run their own
   data centers. The savings in terms of not having to buy machines and pay employees
   is enormous. This money could be put to use in building better applications. This
   might be the entire compute infrastructure, or just running an email server.
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   Other companies may have an occasional need for massive computation. Say you have
   to do a stress analysis of a new airplane wing, or a geographical routing of a complicated
   delivery, decide among alternative new financial models, or even a human genome search.
   Any of the classic grid computations fall into this category. Your existing infrastructure
   is just fine, but for these not every day scenarios (they might actually be frequent)
   it makes sense to rent space in the cloud to do the computations.
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   A related scenario is cloud-bursting. You can handle your everyday computing demands,
   but occasionally you get a burst of orders that overwhelms your system. Ticket agencies
   are a classic example when tickets for a popular event first go on sale. So are stores
   around the holidays. Here you use the cloud to handle the overflow so that people
   wanting to order do not get unresponsive web pages, or busy signals on the telephone.
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   Small divisions in large companies may find the cloud appealing for prototyping, or
   even developing certain applications. Their central IT may be unresponsive or slow
   to respond to their needs. It is well within the capacity of a departmental budget
   to rent space in the cloud.
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   The next post will explore the other two scenarios, and look at how the various vendor
   options would meet your needs.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=9303ac48-c4a2-4f33-b6e2-c33887f855c4" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,9303ac48-c4a2-4f33-b6e2-c33887f855c4.aspx</comments>
      <category>All;Cloud Computing;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=83d3b9fa-1247-4949-aeeb-25899d24252e</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,83d3b9fa-1247-4949-aeeb-25899d24252e.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,83d3b9fa-1247-4949-aeeb-25899d24252e.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=83d3b9fa-1247-4949-aeeb-25899d24252e</wfw:commentRss>
      <title>Architect's Cafe Webcast</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,83d3b9fa-1247-4949-aeeb-25899d24252e.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,83d3b9fa-1247-4949-aeeb-25899d24252e.aspx</link>
      <pubDate>Wed, 07 Oct 2009 00:55:51 GMT</pubDate>
      <description>&lt;font color="#000000" size="3" face="Arial"&gt;Here is a webcast on Software as a Service
that I did for Microsoft's Architect's Cafe:&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;
&lt;meta name="ProgId" content="Word.Document"&gt;
&lt;meta name="Generator" content="Microsoft Word 12"&gt;
&lt;meta name="Originator" content="Microsoft Word 12"&gt;
&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5Cmds%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;
&lt;link rel="themeData" href="file:///C:%5CDOCUME%7E1%5Cmds%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;
&lt;link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5Cmds%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:DontVertAlignCellWithSp/&gt;
   &lt;w:DontBreakConstrainedForcedTables/&gt;
   &lt;w:DontVertAlignInTxbx/&gt;
   &lt;w:Word11KerningPairs/&gt;
   &lt;w:CachedColBalance/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val="Cambria Math"/&gt;
   &lt;m:brkBin m:val="before"/&gt;
   &lt;m:brkBinSub m:val="--"/&gt;
   &lt;m:smallFrac m:val="off"/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val="0"/&gt;
   &lt;m:rMargin m:val="0"/&gt;
   &lt;m:defJc m:val="centerGroup"/&gt;
   &lt;m:wrapIndent m:val="1440"/&gt;
   &lt;m:intLim m:val="subSup"/&gt;
   &lt;m:naryLim m:val="undOvr"/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;
  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;
  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;
  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;
  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;
  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;
  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;
  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt;
&lt;!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:1;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	mso-themecolor:followedhyperlink;
	text-decoration:underline;
	text-underline:single;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
--&gt;
&lt;/style&gt;
&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:minor-fareast;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
&lt;/style&gt;
&lt;![endif]--&gt;
&lt;p class="MsoNormal"&gt;
   &lt;span style="font-size: 11pt; font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(31, 73, 125);"&gt;&lt;font color="#000000" size="3" face="Arial"&gt;&lt;a href="https://www112.livemeeting.com/cc/microsoft/view?id=M7GT9D"&gt;https://www112.livemeeting.com/cc/microsoft/view?id=M7GT9D&lt;/a&gt;&lt;/font&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=83d3b9fa-1247-4949-aeeb-25899d24252e" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,83d3b9fa-1247-4949-aeeb-25899d24252e.aspx</comments>
      <category>All;Cloud Computing;Microsoft .NET;SOA;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=472eb302-be57-41a7-bcea-ae71e23e5df5</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,472eb302-be57-41a7-bcea-ae71e23e5df5.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,472eb302-be57-41a7-bcea-ae71e23e5df5.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=472eb302-be57-41a7-bcea-ae71e23e5df5</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <title>How Does Your Utility's SLA Compare with Windows Azure?</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,472eb302-be57-41a7-bcea-ae71e23e5df5.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,472eb302-be57-41a7-bcea-ae71e23e5df5.aspx</link>
      <pubDate>Tue, 11 Aug 2009 14:32:28 GMT</pubDate>
      <description>&lt;font color="#000000" size="3" face="Arial"&gt;Microsoft has yet to release all the details
of its Azure SLA, but it has said that you will have a 99.95 per cent up-time for
compute and 99.9 per cent up-time for SQL Azure.&lt;br&gt;
&lt;br&gt;
How does this compare with my electric utility? 
&lt;br&gt;
&lt;br&gt;
With my latest electric bill, my local utility listed its 2008 average number of service
interruptions per customer as 1.051, and the average number of minutes without power
for a customer at 78.55 minutes. So my electric utility has an up-time of .9998. I
guess they don't get 4 or 5 "9"s either.&lt;br&gt;
&lt;br&gt;
I presume these numbers include outages due to winter storms, but I do not know what
the utility regulators allow them to exclude. Microsoft, to my knowledge, has not
stated whether the SLA percentages include planned downtime for upgrades.&lt;br&gt;
&lt;br&gt;
How many outage minutes per year could we expect with Azure under the SLA? That comes
to about 262.8 compute minutes per year, or about 4.36 hours. Of course when those
outages occur matters, and whether they are concentrated in one or many interruptions.&lt;br&gt;
&lt;br&gt;
For SQL Azure that SLA is on a per month basis. So for data you could loose access
to it for 43.8 minutes per month.&lt;br&gt;
&lt;br&gt;
Is 4 hours a long time? Could you live without data access for 45 minutes a month?&lt;br&gt;
&lt;br&gt;
For Facebook probably, for emergency services you would need some sort of fallback
just like they have backup generators now.&lt;br&gt;
&lt;br&gt;
I wonder what a cloud computing brownout looks like?&lt;br&gt;
&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;table x:str="" style="border-collapse: collapse; width: 48pt;" border="0" cellpadding="0" cellspacing="0" width="64"&gt;
   &lt;col style="width: 48pt;" width="64"&gt;
   &lt;tbody&gt;
      &lt;tr style="height: 12.75pt;" height="17"&gt;
         &lt;td style="height: 12.75pt; width: 48pt;" x:num="0.99985055175038051" align="right" width="64" height="17"&gt;
            &lt;br&gt;
         &lt;/td&gt;
      &lt;/tr&gt;
   &lt;/tbody&gt;
&lt;/table&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=472eb302-be57-41a7-bcea-ae71e23e5df5" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,472eb302-be57-41a7-bcea-ae71e23e5df5.aspx</comments>
      <category>All;Cloud Computing;SOA;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=0706e171-bdb9-4499-8bd1-0eea2e621db5</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,0706e171-bdb9-4499-8bd1-0eea2e621db5.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,0706e171-bdb9-4499-8bd1-0eea2e621db5.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=0706e171-bdb9-4499-8bd1-0eea2e621db5</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Want to provide some input to Microsoft?
   </p>
        <p>
      Here is a blog entry that contains a link to a survey that would help them decide
      on priorities for providing cloud security guidance: <a target="-1" href="http://blogs.msdn.com/jmeier/archive/2009/08/04/cloud-security-survey.aspx">http://blogs.msdn.com/jmeier/archive/2009/08/04/cloud-security-survey.aspx</a>.
   </p>
        <p>
      The post explains the rationale behind the survey.
   </p>
        <p>
       
   </p>
        <p>
       
   </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=0706e171-bdb9-4499-8bd1-0eea2e621db5" />
      </body>
      <title>Microsoft Cloud Security Survey</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,0706e171-bdb9-4499-8bd1-0eea2e621db5.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,0706e171-bdb9-4499-8bd1-0eea2e621db5.aspx</link>
      <pubDate>Mon, 10 Aug 2009 18:22:46 GMT</pubDate>
      <description>&lt;p&gt;
   Want to provide some input to Microsoft?
&lt;/p&gt;
&lt;p&gt;
   Here is a blog entry that contains a link to a survey that would help them decide
   on priorities for providing cloud security guidance: &lt;a target=-1 href="http://blogs.msdn.com/jmeier/archive/2009/08/04/cloud-security-survey.aspx"&gt;http://blogs.msdn.com/jmeier/archive/2009/08/04/cloud-security-survey.aspx&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   The post explains the rationale behind the survey.
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=0706e171-bdb9-4499-8bd1-0eea2e621db5" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,0706e171-bdb9-4499-8bd1-0eea2e621db5.aspx</comments>
      <category>All;Cloud Computing;SOA;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=2b6f5683-640f-422b-a138-aea8c20ac24c</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,2b6f5683-640f-422b-a138-aea8c20ac24c.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,2b6f5683-640f-422b-a138-aea8c20ac24c.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=2b6f5683-640f-422b-a138-aea8c20ac24c</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      I just did an interview on .NET rocks about <a href="http://www.dotnetrocks.com/default.aspx?showNum=459" target="_blank">cloud
      computing</a>.
   </p>
        <p>
      We covered a whole bunch of topics including:<br />
                          
      what is cloud computing<br />
                          
      comparing the various offering of Google, Force.com, Amazon, and Microsoft<br />
                          
      the social and economic environment required for cloud computing<br />
                          
      the implications for transactional computing and the relational model<br />
                          
      the importance of price and SLA for Microsoft whose offerring is different from Amazon
      and Google<br />
                           the
      need for rich clients even in the world of cloud computing.
   </p>
        <p>
       
   </p>
        <p>
       
   </p>
        <p>
       
   </p>
        <p>
          <a href="http://www.dotnetrocks.com/default.aspx?showNum=459">
          </a> 
   </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=2b6f5683-640f-422b-a138-aea8c20ac24c" />
      </body>
      <title>. NET Rocks Interview</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,2b6f5683-640f-422b-a138-aea8c20ac24c.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,2b6f5683-640f-422b-a138-aea8c20ac24c.aspx</link>
      <pubDate>Mon, 06 Jul 2009 00:53:02 GMT</pubDate>
      <description>&lt;p&gt;
   I just did an interview on .NET rocks about &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=459" target=_blank&gt;cloud
   computing&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   We covered a whole bunch of topics including:&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   what is cloud computing&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   comparing the various offering of Google, Force.com, Amazon, and Microsoft&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   the social and economic environment required for cloud computing&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   the implications for transactional computing and the relational model&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   the importance of price and SLA for Microsoft whose offerring is different from Amazon
   and Google&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;the
   need for rich clients even in the world of cloud computing.
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=459"&gt;&lt;/a&gt;&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=2b6f5683-640f-422b-a138-aea8c20ac24c" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,2b6f5683-640f-422b-a138-aea8c20ac24c.aspx</comments>
      <category>All;Cloud Computing;Microsoft .NET;SOA;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=21fbe08c-ebdd-42e5-abdd-48169db4711e</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,21fbe08c-ebdd-42e5-abdd-48169db4711e.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,21fbe08c-ebdd-42e5-abdd-48169db4711e.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=21fbe08c-ebdd-42e5-abdd-48169db4711e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      One of the big advantages of cloud computing is its utility computing model. Customers
      can use as much compute power or as little as they want without paying for what they
      do not need. Normally, most data centers have to be built for peak demand, with the
      servers unused when they are not needed.
   </p>
        <p>
      Utility computing is based on the electric utility model. While this comparison has
      a lot of merit, there is one particular part of the analogy that really does not work.
   </p>
        <p>
      Data are not electrons.
   </p>
        <p>
      If someone steals some of your electric power by diverting it, you can get replacement
      power.  If one part of the country's electric demand exceeds its generating ability,
      it can get power from another part of the grid. One electron is as good as another.
   </p>
        <p>
      Data has identity, latency, and relationships to other pieces of data.
   </p>
        <p>
      If someone steals your data, another piece of data cannot take its place. if your
      data is stolen, or even delayed it, can aversely affect you. Depending on your resolution
      of the CAP Theorem dilemma, your replication strategy might leave you with a window
      of vulnerability for data loss.
   </p>
        <p>
      Curiously, the argument has been made that the utlity computing model makes denial
      of service attacks unfeasible because the economics of trying to get enough bot driven
      computers to assualt a hugh data center is prohibitive. Sooner or later, somebody
      is going to try to get the servers of one data center to attack the servers of another
      data center. Hopefully, the software that monitors the transactions would realize
      that somebody is exceeding their credit limit.
   </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=21fbe08c-ebdd-42e5-abdd-48169db4711e" />
      </body>
      <title>Cloud Computing, Utility Computing and Data</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,21fbe08c-ebdd-42e5-abdd-48169db4711e.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,21fbe08c-ebdd-42e5-abdd-48169db4711e.aspx</link>
      <pubDate>Wed, 24 Jun 2009 15:13:48 GMT</pubDate>
      <description>&lt;p&gt;
   One of the big advantages of cloud computing is its utility computing model. Customers
   can use as much compute power or as little as they want without paying for what they
   do not need. Normally, most data centers have to be built for peak demand, with the
   servers unused when they are not needed.
&lt;/p&gt;
&lt;p&gt;
   Utility computing is based on the electric utility model. While this comparison has
   a lot of merit, there is one particular part of the analogy that really does not work.
&lt;/p&gt;
&lt;p&gt;
   Data are not electrons.
&lt;/p&gt;
&lt;p&gt;
   If someone steals some of your electric power by diverting it, you can get replacement
   power.&amp;nbsp; If one part of the country's electric demand exceeds its generating ability,
   it can get power from another part of the grid. One electron is as good as another.
&lt;/p&gt;
&lt;p&gt;
   Data has identity, latency, and relationships to other pieces of data.
&lt;/p&gt;
&lt;p&gt;
   If someone steals your data, another piece of data cannot take its place. if your
   data is stolen, or even delayed it, can aversely affect you. Depending on your resolution
   of the CAP Theorem dilemma, your replication strategy might leave you with a window
   of vulnerability for data loss.
&lt;/p&gt;
&lt;p&gt;
   Curiously, the argument has been made that the utlity computing model makes denial
   of service attacks unfeasible because the economics of trying to get enough bot driven
   computers to assualt a hugh data center is prohibitive. Sooner or later, somebody
   is going to try to get the servers of one data center to attack the servers of another
   data center. Hopefully, the software that monitors the transactions would realize
   that somebody is exceeding their credit limit.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=21fbe08c-ebdd-42e5-abdd-48169db4711e" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,21fbe08c-ebdd-42e5-abdd-48169db4711e.aspx</comments>
      <category>All;Cloud Computing;SOA;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=53155187-fea1-4eee-8318-6e2de064a1e8</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,53155187-fea1-4eee-8318-6e2de064a1e8.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,53155187-fea1-4eee-8318-6e2de064a1e8.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=53155187-fea1-4eee-8318-6e2de064a1e8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      It's time for me to be interviewed on .NET Rocks again!
   </p>
        <p>
      Carl and Richard will interview me about Cloud Computing. The interview will be published
      on June 30 at <a href="http://www.dotnetrocks.com/" target="_blank">http://www.dotnetrocks.com/</a>.
   </p>
        <p>
      Based on my previous show (and related DNR TV segments) it will be a lot of fun to
      do and to listen to.
   </p>
        <p>
       
   </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=53155187-fea1-4eee-8318-6e2de064a1e8" />
      </body>
      <title>My interview on .NET Rocks about Cloud Computing</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,53155187-fea1-4eee-8318-6e2de064a1e8.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,53155187-fea1-4eee-8318-6e2de064a1e8.aspx</link>
      <pubDate>Tue, 23 Jun 2009 14:48:08 GMT</pubDate>
      <description>&lt;p&gt;
   It's time for me to be interviewed on .NET Rocks again!
&lt;/p&gt;
&lt;p&gt;
   Carl and Richard will interview me about Cloud Computing. The interview will be published
   on June 30 at &lt;a href="http://www.dotnetrocks.com/" target=_blank&gt;http://www.dotnetrocks.com/&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   Based on my previous show (and related DNR TV segments) it will be a lot of fun to
   do and to listen to.
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=53155187-fea1-4eee-8318-6e2de064a1e8" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,53155187-fea1-4eee-8318-6e2de064a1e8.aspx</comments>
      <category>All;Cloud Computing;Microsoft .NET;SOA;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=9bf1d506-12d1-4b53-a5d1-c4c7410c253d</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,9bf1d506-12d1-4b53-a5d1-c4c7410c253d.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,9bf1d506-12d1-4b53-a5d1-c4c7410c253d.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=9bf1d506-12d1-4b53-a5d1-c4c7410c253d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="2">Many people have misconceptions about
      cloud computing. For example, applications do not have to be built so they are all
      in the cloud. You can put the application in the cloud (to handle parallel computation),
      and have the database in your enterprise. I was <a href="http://www.msteched.com/online/view.aspx?tid=64ad77fe-66ee-49ec-bd77-6731174a4582" target="_blank">interviewed </a>at
      TechEd about some of the misconceptions about computing in the cloud.  Other
      misconceptions discussed include what size business is right for the cloud, the role
      of the browser, guaranteed connectivity, and cloud security.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=9bf1d506-12d1-4b53-a5d1-c4c7410c253d" />
      </body>
      <title>Misconceptions about Cloud Computing</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,9bf1d506-12d1-4b53-a5d1-c4c7410c253d.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,9bf1d506-12d1-4b53-a5d1-c4c7410c253d.aspx</link>
      <pubDate>Thu, 28 May 2009 01:14:25 GMT</pubDate>
      <description>&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=2&gt;Many people have misconceptions about cloud
   computing. For example, applications do not have to be built so they are all in the
   cloud. You can put the application in the cloud (to handle parallel computation),
   and have the database in your enterprise. I was &lt;a href="http://www.msteched.com/online/view.aspx?tid=64ad77fe-66ee-49ec-bd77-6731174a4582" target=_blank&gt;interviewed &lt;/a&gt;at
   TechEd about some of the misconceptions about computing in the cloud.&amp;nbsp; Other
   misconceptions discussed include what size business is right for the cloud, the role
   of the browser, guaranteed connectivity, and cloud security.&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=9bf1d506-12d1-4b53-a5d1-c4c7410c253d" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,9bf1d506-12d1-4b53-a5d1-c4c7410c253d.aspx</comments>
      <category>All;Cloud Computing;SOA;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=8f91d827-3a94-4271-8dd7-b3bf33d14f3a</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,8f91d827-3a94-4271-8dd7-b3bf33d14f3a.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,8f91d827-3a94-4271-8dd7-b3bf33d14f3a.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=8f91d827-3a94-4271-8dd7-b3bf33d14f3a</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Here is my Tech Ed podcast about how small businesses and small business units can
      benefit from Cloud Computing: <a href="http://www.msteched.com/online/view.aspx?tid=a4377dcf-ed90-4872-8d45-ec5108be118e" target="_blank">http://www.msteched.com/online/view.aspx?tid=a4377dcf-ed90-4872-8d45-ec5108be118e</a>.
   </p>
        <p>
      I cover some of the material discussed in yesterday's post, but there is also some
      new content.
   </p>
        <p>
       
   </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=8f91d827-3a94-4271-8dd7-b3bf33d14f3a" />
      </body>
      <title>TechEd Tech Talk on Cloud Computing and Small Business</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,8f91d827-3a94-4271-8dd7-b3bf33d14f3a.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,8f91d827-3a94-4271-8dd7-b3bf33d14f3a.aspx</link>
      <pubDate>Fri, 22 May 2009 02:52:36 GMT</pubDate>
      <description>&lt;p&gt;
   Here is my Tech Ed podcast about how small businesses and small business units can
   benefit from Cloud Computing: &lt;a href="http://www.msteched.com/online/view.aspx?tid=a4377dcf-ed90-4872-8d45-ec5108be118e" target="_blank"&gt;http://www.msteched.com/online/view.aspx?tid=a4377dcf-ed90-4872-8d45-ec5108be118e&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   I cover some of the material discussed in yesterday's post, but there is also some
   new content.
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=8f91d827-3a94-4271-8dd7-b3bf33d14f3a" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,8f91d827-3a94-4271-8dd7-b3bf33d14f3a.aspx</comments>
      <category>All;Cloud Computing;SOA;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=4e6f3b2a-b834-41c0-a050-db7dc28fce80</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,4e6f3b2a-b834-41c0-a050-db7dc28fce80.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,4e6f3b2a-b834-41c0-a050-db7dc28fce80.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=4e6f3b2a-b834-41c0-a050-db7dc28fce80</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">Small or medium sized companies can have the advantages
      of being able to act as a big company while maintaining the advantages of being small.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">A hosted solution has many advantages. </font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">You no longer need the staff, or have to spend money
      on installing and upgrading software on your clients' machines.<span style="mso-spacerun: yes">  </span>Your
      customers and clients can use your application anywhere, not just on their office
      computers.<span style="mso-spacerun: yes">  </span>If you provide services as
      well as an application, third parties can easily use your solution as part of their
      offering.<span style="mso-spacerun: yes">  </span>Sometimes these services can
      be used in your own applications such as portals, or future applications. Perhaps
      your customers can extend your application making it more valuable to them. Having
      your application in the cloud means that your intellectual property (your secret sauce)
      is better protected because it is not in the hands of your users.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">All these arguments also apply to small business units
      within a large enterprise.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">Nonetheless, small businesses very often do not have
      the financial ability to economically run, or even rent a significant hosted application
      solution beyond a small scale web application.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">Cloud computing offers a way out of the dilemma.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">Cloud computing offers businesses a utility model for
      computation. Host your application on a cloud platform and you pay only for what you
      use. With minimal initial investment, you can scale up or down as your customers use
      more or less of your application or services.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">With many cloud vendors (Amazon being a major exception)
      you do not even know on what infrastructure your machine runs on. Scaling and failover
      happen in those environments with minimal work on the client's part.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">Clearly the cost and reliability of the cloud provider
      is crucial. Google's most recent outage shows that this is not a unreasonable fear.
      Private IT centers also have had their outages, but they are not made public.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <a href="http://www.spectrum.ieee.org/feb09/7327">
            <font face="Verdana" size="2">Microsoft,
      Amazon,<span style="mso-spacerun: yes">  </span>Google and others are spending
      huge amounts of money to build cloud data centers</font>
          </a>
          <font face="Verdana" size="2">.
      Clearly they see the opportunity.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">Right now many large companies already have data centers
      that can offer cheaper compute power than the current generation of cloud providers.
      This will eventually change.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" size="2">But right now, small companies, start-ups, and other
      similar organizations should think about cloud computing for their hardware infrastructure.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=4e6f3b2a-b834-41c0-a050-db7dc28fce80" />
      </body>
      <title>Why would a Small Business Put an App in the Cloud?</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,4e6f3b2a-b834-41c0-a050-db7dc28fce80.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,4e6f3b2a-b834-41c0-a050-db7dc28fce80.aspx</link>
      <pubDate>Wed, 20 May 2009 19:40:19 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;Small or medium sized companies can have the advantages
   of being able to act as a big company while maintaining the advantages of being small.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;A hosted solution has many advantages. &lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;You no longer need the staff, or have to spend money on
   installing and upgrading software on your clients' machines.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Your
   customers and clients can use your application anywhere, not just on their office
   computers.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If you provide services as
   well as an application, third parties can easily use your solution as part of their
   offering.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Sometimes these services can
   be used in your own applications such as portals, or future applications. Perhaps
   your customers can extend your application making it more valuable to them. Having
   your application in the cloud means that your intellectual property (your secret sauce)
   is better protected because it is not in the hands of your users.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;All these arguments also apply to small business units within
   a large enterprise.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;Nonetheless, small businesses very often do not have the
   financial ability to economically run, or even rent a significant hosted application
   solution beyond a small scale web application.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;Cloud computing offers a way out of the dilemma.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;Cloud computing offers businesses a utility model for computation.
   Host your application on a cloud platform and you pay only for what you use. With
   minimal initial investment, you can scale up or down as your customers use more or
   less of your application or services.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;With many cloud vendors (Amazon being a major exception)
   you do not even know on what infrastructure your machine runs on. Scaling and failover
   happen in those environments with minimal work on the client's part.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;Clearly the cost and reliability of the cloud provider is
   crucial. Google's most recent outage shows that this is not a unreasonable fear. Private
   IT centers also have had their outages, but they are not made public.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;a href="http://www.spectrum.ieee.org/feb09/7327"&gt;&lt;font face=Verdana size=2&gt;Microsoft,
   Amazon,&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Google and others are spending
   huge amounts of money to build cloud data centers&lt;/font&gt;&lt;/a&gt;&lt;font face=Verdana size=2&gt;.
   Clearly they see the opportunity.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;Right now many large companies already have data centers
   that can offer cheaper compute power than the current generation of cloud providers.
   This will eventually change.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana size=2&gt;But right now, small companies, start-ups, and other similar
   organizations should think about cloud computing for their hardware infrastructure.&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=4e6f3b2a-b834-41c0-a050-db7dc28fce80" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,4e6f3b2a-b834-41c0-a050-db7dc28fce80.aspx</comments>
      <category>All;Cloud Computing;SOA;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=e1b56cb0-c0d6-4fd0-a38c-3c8bfedecc9e</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,e1b56cb0-c0d6-4fd0-a38c-3c8bfedecc9e.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,e1b56cb0-c0d6-4fd0-a38c-3c8bfedecc9e.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=e1b56cb0-c0d6-4fd0-a38c-3c8bfedecc9e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      I have uploaded the slides and code for my <a target="_blank" href="http://www.reliablesoftware.com/presentations.html#Cloud">talk</a> on
      Windows Azure at the <a target="_blank" href="http://www.msdndevcon.com/Pages/Boston.aspx">Microsoft
      MSDN day</a> in Boston on January 22.
   </p>
        <p>
      The talk was a combination of slides from several PDC talks with some of my own additions.
      I went through the fundamental architecture of the Azure cloud operating system and
      the basic elements of the Azure cloud services (i.e. Identity, Workflow, Live, SQL
      Data Services).
   </p>
        <p>
      I did two demos. The first was a simple thumbnail generator. It illustrated a simple,
      scalable architecture using web roles and worker roles that used the primitive Azure
      operating system storage for blobs and queues.  It also demonstrated how you
      model and configure a cloud application. The second, using the SQL Data Services,
      demonstrated how to integrate a non-cloud application (on a desktop or server) with
      the cloud. The app used a variety of industry standard mechanisms (WS*, REST, HTTP
      Get) to create and query data.
   </p>
        <p>
       
   </p>
        <p>
       
   </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=e1b56cb0-c0d6-4fd0-a38c-3c8bfedecc9e" />
      </body>
      <title>Lap Around Windows Azure and the Azure Platform</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,e1b56cb0-c0d6-4fd0-a38c-3c8bfedecc9e.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,e1b56cb0-c0d6-4fd0-a38c-3c8bfedecc9e.aspx</link>
      <pubDate>Sun, 25 Jan 2009 16:20:05 GMT</pubDate>
      <description>&lt;p&gt;
   I have uploaded the slides and code for my &lt;a target="_blank" href="http://www.reliablesoftware.com/presentations.html#Cloud"&gt;talk&lt;/a&gt; on
   Windows Azure at the &lt;a target="_blank" href="http://www.msdndevcon.com/Pages/Boston.aspx"&gt;Microsoft
   MSDN day&lt;/a&gt; in Boston on January 22.
&lt;/p&gt;
&lt;p&gt;
   The talk was a combination of slides from several PDC talks with some of my own additions.
   I went through the fundamental architecture of the Azure cloud operating system and
   the basic elements of the Azure cloud services (i.e. Identity, Workflow, Live, SQL
   Data Services).
&lt;/p&gt;
&lt;p&gt;
   I did two demos. The first was a simple thumbnail generator. It illustrated a simple,
   scalable architecture using web roles and worker roles that used the primitive Azure
   operating system storage for blobs and queues.&amp;nbsp; It also demonstrated how you
   model and configure a cloud application. The second, using the SQL Data Services,
   demonstrated how to integrate a non-cloud application (on a desktop or server) with
   the cloud. The app used a variety of industry standard mechanisms (WS*, REST, HTTP
   Get) to create and query data.
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=e1b56cb0-c0d6-4fd0-a38c-3c8bfedecc9e" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,e1b56cb0-c0d6-4fd0-a38c-3c8bfedecc9e.aspx</comments>
      <category>Cloud Computing;Microsoft .NET;SOA</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=a92a6fe1-b5d8-4a3c-8ff1-ebb0e5587a16</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,a92a6fe1-b5d8-4a3c-8ff1-ebb0e5587a16.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,a92a6fe1-b5d8-4a3c-8ff1-ebb0e5587a16.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=a92a6fe1-b5d8-4a3c-8ff1-ebb0e5587a16</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      I will be speaking at VSLive! San Francisco on February 25 on <a target="_blank" href="http://vslive.com/2009/sf/distributedsystems.aspx#VW22">"Advanced
      Topics in Windows Workflow Foundation"</a>.
   </p>
        <p>
      The conference will be at the Hyatt Regency Embarcadero from February 23-27. Workshops
      are offered on Feb 23 and 27. The conference sessions are on Feb 24, 25 and 26. If
      you register with promo code NS9F20 you will receive a $500 discount off the price.
      The event web site is <a target="_blank" href="http://vslive.com/2009/sf">vslive.com/2009/sf</a>.
   </p>
        <p>
      There is some great content that covers ALM and Development Tools, .NET, Data Management,
      Infrastructure, Rich Clients, Distributed Systems, and Web Development. I hope to
      see you there.
   </p>
        <p>
          <img src="http://www.reliablesoftware.com/DasBlog/content/binary/VSLLogo_SFDates .gif" border="0" />
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=a92a6fe1-b5d8-4a3c-8ff1-ebb0e5587a16" />
      </body>
      <title>Speaking at VSLive! San Francisco</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,a92a6fe1-b5d8-4a3c-8ff1-ebb0e5587a16.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,a92a6fe1-b5d8-4a3c-8ff1-ebb0e5587a16.aspx</link>
      <pubDate>Fri, 23 Jan 2009 23:03:16 GMT</pubDate>
      <description>&lt;p&gt;
   I will be speaking at VSLive! San Francisco on February 25 on &lt;a target=_blank href="http://vslive.com/2009/sf/distributedsystems.aspx#VW22"&gt;"Advanced
   Topics in Windows Workflow Foundation"&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   The conference will be at the Hyatt Regency Embarcadero from February 23-27. Workshops
   are offered on Feb 23 and 27. The conference sessions are on Feb 24, 25 and 26. If
   you register with promo code NS9F20 you will receive a $500 discount off the price.
   The event web site is &lt;a target=_blank href="http://vslive.com/2009/sf"&gt;vslive.com/2009/sf&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   There is some great content that covers ALM and Development Tools, .NET, Data Management,
   Infrastructure, Rich Clients, Distributed Systems, and Web Development. I hope to
   see you there.
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://www.reliablesoftware.com/DasBlog/content/binary/VSLLogo_SFDates .gif" border=0&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=a92a6fe1-b5d8-4a3c-8ff1-ebb0e5587a16" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,a92a6fe1-b5d8-4a3c-8ff1-ebb0e5587a16.aspx</comments>
      <category>Cloud Computing;Microsoft .NET;Software Development;Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=c847dbec-0f31-4542-955d-a909d0648fe1</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,c847dbec-0f31-4542-955d-a909d0648fe1.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,c847dbec-0f31-4542-955d-a909d0648fe1.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=c847dbec-0f31-4542-955d-a909d0648fe1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <meta content="OneNote.File" name="ProgId" />
        <meta content="Microsoft OneNote 12" name="Generator" />
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
      "Once upon a time, we wrote a book called A Pattern Language and that is how we got
      our name.<span>  </span>Now, a pattern is an old idea. The new idea in the book
      was to organize implicit knowledge about how people solve recurring problems when
      they go about building things. "
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
       
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <a target="_blank" href="http://www.patternlanguage.com/leveltwo/patternsframe.htm?/leveltwo/../history/ajustsostory6.htm">Christopher
      Alexander</a>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
       
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
      What is a software pattern?
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <br />
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
        </p>
        <meta content="OneNote.File" name="ProgId" />
        <meta content="Microsoft OneNote 12" name="Generator" />
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
      How do writers about software patterns decide what software artifacts are patterns?
      How do these writers<span>  </span>decide what patterns are worthy of note?
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
       
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
      Christopher Alexander is the writer most associated with originating the idea of a
      pattern as a design concept.<sup>1</sup><span>  </span>As the above quotation
      makes clear patterns are about making explicit solutions to recurring problems that
      people have created. 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
       
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
      So a pattern formalizes knowledge that the profession has already arrived at.
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
       
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
      Alexander never defined the word pattern.<span>  </span>Nothing wrong with that.
      In fact the whole idea that we should define all our terms before we use them is<span>  </span>misguided.
      The best definitions emerge from<span>  </span>discussion and debate.<span>  </span>Relying
      on people's intuitive notions on what a pattern is, is better than trying to spend
      time defining what a pattern is. In fact philosophy has long realized that good definitions
      arrive over time and debate.<sup> 2</sup></p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
       
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
      My dictionary has various definitions for pattern. To use "a model for making things"
      seems to be the most useful stake in the ground to start the discussion.
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
       
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
      In other words, a pattern is not just a solution to a problem. It is an abstraction
      of a solution that can generate several possible implementations. This of course,
      corresponds to Alexander's use of the word.<span>   </span>His patterns
      such as "agricultural valleys" or "house for one person" do not have one possible
      implementation. 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
       
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
      So a good software pattern is not a software technology. Hence WS* and REST are not
      patterns. They are implementations of a standard.<sup>3</sup><span>  </span>The
      standards operate the same way on different platforms.<span>  </span>This is
      no different than a mold for a cup being used to cast a bronze or sliver cup.
   </p>
     
   <br /><p></p><p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"></p><meta content="OneNote.File" name="ProgId" /><meta content="Microsoft OneNote 12" name="Generator" /><p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
      Given this point of view, a looping construct is not a pattern. A linked list is not
      a pattern. What about file systems? Anybody who remembers JCL realizes that there
      is more than one way to work with disk sectors.
   </p><p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
       
   </p><p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
      But don't looping constructs come in several<span>  </span>flavors? Aren't they
      different ways to solve the problem of control of software programs. Way back in the
      early days of computing people had to come up with these various ways of handling
      control flow.<span>  </span>They were not<span>  </span>divine revelations;
      that had to be invented. Anybody who remembers the arguments over the use of "goto"s
      , whether programs should have single or multiple entry and endpoints, or whether
      co-routines were a good idea might think of all of these as control flow patterns.
   </p><p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
       
   </p><p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
      It is just that we take them for granted now that we might not consider them as patterns,
      just as technological givens. So patterns do need a context. Whenever somebody discusses
      patterns you need to clarify the domain of discourse. There are certainly patterns
      in certain "application domains" such as "double-entry" bookkeeping in accounting.
   </p><p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
       
   </p><p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
      In fact looping constructs, assignment constructs and the like perhaps should be considered
      patterns once again. The rise of multi-processors, and distributed computing force
      us to think once again about what it means to do an assignment statement.<span>  </span>In
      a distributed environment, where there is a latency in updating the value of any value,
      saying "x=y" is not always simple.
   </p><p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"><span></span> 
   </p><p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
      Whenever you discuss patterns, you must state the context in which you are talking.
      A pattern in one context could be a foundational technology in another context.<br /></p><p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
       
   </p><p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"></p><meta content="OneNote.File" name="ProgId" /><meta content="Microsoft OneNote 12" name="Generator" /><ol style="MARGIN-TOP: 0in; FONT-SIZE: 11pt; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in; DIRECTION: ltr; FONT-FAMILY: Calibri; unicode-bidi: embed" type="1"><li style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: middle" value="1"><a target="_blank" href="http://www.patternlanguage.com/leveltwo/caframe.htm?/leveltwo/../bios/douglea.htm"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri">http://www.patternlanguage.com/leveltwo/caframe.htm?/leveltwo/../bios/douglea.htm</span></a></li><li style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: middle" value="2"><a target="_blank" href="http://www.sfu.ca/philosophy/swartz/definitions.htm"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri">http://www.sfu.ca/philosophy/swartz/definitions.htm</span></a></li><li style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: middle" value="3"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri">The OAIS reference model for SOA
         (</span><a target="_blank" href="http://docs.oasis-open.org/soa-rm/v1.0/soa-rm.pdf"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri">http://docs.oasis-open.org/soa-rm/v1.0/soa-rm.pdf</span></a><span style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri">)
         would consider WS* and REST as implementations.</span></li></ol><p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri">
       
   </p><p></p><p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"><br /></p><p></p><p></p><img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=c847dbec-0f31-4542-955d-a909d0648fe1" /></body>
      <title>Is a Do Loop a Pattern? </title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,c847dbec-0f31-4542-955d-a909d0648fe1.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,c847dbec-0f31-4542-955d-a909d0648fe1.aspx</link>
      <pubDate>Mon, 05 Jan 2009 03:16:58 GMT</pubDate>
      <description>
&lt;meta content=OneNote.File name=ProgId&gt;
&lt;meta content="Microsoft OneNote 12" name=Generator&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   "Once upon a time, we wrote a book called A Pattern Language and that is how we got
   our name.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Now, a pattern is an old idea. The new idea in the book
   was to organize implicit knowledge about how people solve recurring problems when
   they go about building things. "
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;a target="_blank" href="http://www.patternlanguage.com/leveltwo/patternsframe.htm?/leveltwo/../history/ajustsostory6.htm"&gt;Christopher
   Alexander&lt;/a&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   What is a software pattern?
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;br&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
&lt;meta content=OneNote.File name=ProgId&gt;
&lt;meta content="Microsoft OneNote 12" name=Generator&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   How do writers about software patterns decide what software artifacts are patterns?
   How do these writers&lt;span&gt;&amp;nbsp; &lt;/span&gt;decide what patterns are worthy of note?
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   Christopher Alexander is the writer most associated with originating the idea of a
   pattern as a design concept.&lt;sup&gt;1&lt;/sup&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;As the above quotation
   makes clear patterns are about making explicit solutions to recurring problems that
   people have created. 
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   So a pattern formalizes knowledge that the profession has already arrived at.
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   Alexander never defined the word pattern.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Nothing wrong with that.
   In fact the whole idea that we should define all our terms before we use them is&lt;span&gt;&amp;nbsp; &lt;/span&gt;misguided.
   The best definitions emerge from&lt;span&gt;&amp;nbsp; &lt;/span&gt;discussion and debate.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Relying
   on people's intuitive notions on what a pattern is, is better than trying to spend
   time defining what a pattern is. In fact philosophy has long realized that good definitions
   arrive over time and debate.&lt;sup&gt; 2&lt;/sup&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   My dictionary has various definitions for pattern. To use "a model for making things"
   seems to be the most useful stake in the ground to start the discussion.
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   In other words, a pattern is not just a solution to a problem. It is an abstraction
   of a solution that can generate several possible implementations. This of course,
   corresponds to Alexander's use of the word.&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;His patterns
   such as "agricultural valleys" or "house for one person" do not have one possible
   implementation. 
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   So a good software pattern is not a software technology. Hence WS* and REST are not
   patterns. They are implementations of a standard.&lt;sup&gt;3&lt;/sup&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;The
   standards operate the same way on different platforms.&lt;span&gt;&amp;nbsp; &lt;/span&gt;This is
   no different than a mold for a cup being used to cast a bronze or sliver cup.
&lt;/p&gt;
&amp;nbsp; 
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
&lt;meta content=OneNote.File name=ProgId&gt;
&lt;meta content="Microsoft OneNote 12" name=Generator&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   Given this point of view, a looping construct is not a pattern. A linked list is not
   a pattern. What about file systems? Anybody who remembers JCL realizes that there
   is more than one way to work with disk sectors.
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   But don't looping constructs come in several&lt;span&gt;&amp;nbsp; &lt;/span&gt;flavors? Aren't they
   different ways to solve the problem of control of software programs. Way back in the
   early days of computing people had to come up with these various ways of handling
   control flow.&lt;span&gt;&amp;nbsp; &lt;/span&gt;They were not&lt;span&gt;&amp;nbsp; &lt;/span&gt;divine revelations;
   that had to be invented. Anybody who remembers the arguments over the use of "goto"s
   , whether programs should have single or multiple entry and endpoints, or whether
   co-routines were a good idea might think of all of these as control flow patterns.
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   It is just that we take them for granted now that we might not consider them as patterns,
   just as technological givens. So patterns do need a context. Whenever somebody discusses
   patterns you need to clarify the domain of discourse. There are certainly patterns
   in certain "application domains" such as "double-entry" bookkeeping in accounting.
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   In fact looping constructs, assignment constructs and the like perhaps should be considered
   patterns once again. The rise of multi-processors, and distributed computing force
   us to think once again about what it means to do an assignment statement.&lt;span&gt;&amp;nbsp; &lt;/span&gt;In
   a distributed environment, where there is a latency in updating the value of any value,
   saying "x=y" is not always simple.
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;span&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   Whenever you discuss patterns, you must state the context in which you are talking.
   A pattern in one context could be a foundational technology in another context.&lt;br&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
&lt;meta content=OneNote.File name=ProgId&gt;
&lt;meta content="Microsoft OneNote 12" name=Generator&gt;
&lt;ol style="MARGIN-TOP: 0in; FONT-SIZE: 11pt; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in; DIRECTION: ltr; FONT-FAMILY: Calibri; unicode-bidi: embed" type=1&gt;
   &lt;li style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: middle" value=1&gt;
      &lt;a target="_blank" href="http://www.patternlanguage.com/leveltwo/caframe.htm?/leveltwo/../bios/douglea.htm"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;http://www.patternlanguage.com/leveltwo/caframe.htm?/leveltwo/../bios/douglea.htm&lt;/span&gt;&lt;/a&gt; 
   &lt;li style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: middle" value=2&gt;
      &lt;a target="_blank" href="http://www.sfu.ca/philosophy/swartz/definitions.htm"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;http://www.sfu.ca/philosophy/swartz/definitions.htm&lt;/span&gt;&lt;/a&gt; 
   &lt;li style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: middle" value=3&gt;
      &lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;The OAIS reference model for SOA
      (&lt;/span&gt;&lt;a target="_blank" href="http://docs.oasis-open.org/soa-rm/v1.0/soa-rm.pdf"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;http://docs.oasis-open.org/soa-rm/v1.0/soa-rm.pdf&lt;/span&gt;&lt;/a&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;)
      would consider WS* and REST as implementations.&lt;/span&gt;
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=c847dbec-0f31-4542-955d-a909d0648fe1" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,c847dbec-0f31-4542-955d-a909d0648fe1.aspx</comments>
      <category>All;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=560ad329-a24c-414b-88d8-49bacf5429d7</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,560ad329-a24c-414b-88d8-49bacf5429d7.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,560ad329-a24c-414b-88d8-49bacf5429d7.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=560ad329-a24c-414b-88d8-49bacf5429d7</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font face="Times New Roman" size="3">At the PDC Microsoft announced its answer to
      Amazon and Google's cloud computing services.<br /></font>
          <font face="Times New Roman">
            <br />
          </font>
        </p>
        <p>
          <font face="Times New Roman" size="3">This answer has two parts: the Azure platform
      and hosted applications.<span style="mso-spacerun: yes">  </span>Unfortunately
      people confuse these two aspects of cloud computing although they do have some features
      in common.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">The idea behind Azure is to have a hosted operating systems
      platform.<span style="mso-spacerun: yes">  </span>Companies and individuals will
      be able to build applications that run on infrastructure inside one of Microsoft's
      data centers.<span style="mso-spacerun: yes">  </span>Hosted services are applications
      that companies and individuals will use instead of running them on their own computers.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">For example,<span style="mso-spacerun: yes">  </span>a<span style="mso-spacerun: yes">  </span>company
      wants to build a document approval system. It can outsource the infrastructure on
      which it runs by building the application on top of a cloud computing platform such
      as Azure.<span style="mso-spacerun: yes">  </span>My web site and blog do not
      run on my own servers, I use a hosting company. That is an example of using a hosted
      application.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">As people get more sophisticated about cloud computing
      we will see these two types as endpoints on a continuum. Right now as you start to
      think about cloud computing and where it makes sense,<span style="mso-spacerun: yes">  </span>it
      is easier to treat these as distinct approaches. </font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">The economics of outsourcing your computing infrastructure
      and certain applications is compelling as Nicholas Carr has argued.<span style="mso-spacerun: yes">  </span></font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">Companies will be able to vary capacity as needed. They
      can focus scarce economic resources on building the software the<span style="mso-spacerun: yes">  </span>organization
      needs, as opposed to the specialized skills needed to run computing infrastructure.<span style="mso-spacerun: yes">  </span>Many
      small and mid-sized companies already using hosting companies to run their applications.
      The next logical step is for hosting on an operating system in the cloud. </font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">Salesforce.com has already proven the viability of hosted
      CRM applications.<span style="mso-spacerun: yes">  </span>If I am a small business
      and I need Microsoft Exchange,<span style="mso-spacerun: yes">  </span>I have
      several choices. I can hire somebody who knows how to run an Exchange server. I can
      take one my already overburdened computer people and hope they can become expert enough
      on Exchange to run it without problems. Or I can outsource to a company that knows
      about Exchange,<span style="mso-spacerun: yes">  </span>the appropriate patches,
      security issues, and how to get it to scale. The choice seems pretty clear to most
      businesses.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">We are at the beginning of the cloud computing wave,
      and there are many legitimate concerns. What about service outages as Amazon and Salesforce.com
      have had that prevent us from accessing our critical applications and data? What about
      privacy issues? I have discussed the <a href="http://www.podango.com/podcast_episode/2415/83715/OnMicrosoft_video/OnMicrosoft__Privacy_and_Cloud_Computing_with_Michael_Stiefel">cloud
      privacy issue </a>in a podcast</font>
          <font face="Times New Roman">.<span style="mso-spacerun: yes">  </span>People
      are concerned about the ownership of information in the cloud.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">All these are legitimate concerns. But we have faced
      these issues before. Think of the electric power industry. We produce and consume
      all kinds of products and services using electric power. Electric power is reliable
      enough that nobody produces their own power any more. Even survivalists still get
      their usual power from the grid. </font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">This did not happen over night. Their were bitter arguments
      over the AC and DC standards for electric power transmission. Thomas Edison (the champion
      of DC power) built an alternating current electric chair for executing prisoners<span style="mso-spacerun: yes">  </span>to
      demonstrate the "horrors" of Nikola Tesla's approach. There were bitter financial
      struggles between competing companies. Read Thomas Parke Hughes' classic work "Networks
      of power: Electrification in Western society 1880-1930". Yet in the end we have reliable
      electric power.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">Large scale computing utilities could provide computation
      much more efficiently than individual business. Compare the energy and pollution efficiency
      of large scale electric utilities with individual automobiles.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">
            <span style="mso-spacerun: yes"> </span>Large companies
      with the ability to hire and retain infrastructure professionals might decide to build
      rather than outsource. Some companies may decide to do their own hosting for their
      own individual reasons.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">You probably already have information in the cloud if
      you have ever used Amazon.com. You have already given plenty of information to banks,
      credit card companies, and other companies you have dealt with. This information surely
      already resides on a computer somewhere. Life is full of trust decisions that you
      make without realizing it.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">Very few people grow their own food, sew their own clothes,
      build their own houses, or (even in these tenuous financial times)<span style="mso-spacerun: yes">  </span>keep
      their money in their mattresses any more. We have learnt to trust in an economic system
      to provide these things. This too did not happen overnight.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">I personally believe that Internet connectivity will
      never be 100% reliable, but how much reliability will be needed depends on the mission
      criticality of an application. That is why there will always be a role for rich clients
      and synchronization services.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">Hosting companies will have to be large to have the financial
      stability to handle law suits and survive for the long term. We will have to develop
      the institutional and legal infrastructure to handle what happens to data and applications
      when a hosting company fails. We learned how to do this with bank failures and<span style="mso-spacerun: yes">  </span>we
      will learn how to do this with hosting companies.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">This could easily take 50 years with many false starts.
      People tend to overestimate what will happen in 5 years, and underestimate what will
      happen in 10-15 years.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Times New Roman">Azure, the color Microsoft picked for the name of its
      platform, is the color of a bright, cloudless day.<span style="mso-spacerun: yes">  </span>Interesting
      metaphor for a cloud computing platform. Is the future of clouds clear?</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=560ad329-a24c-414b-88d8-49bacf5429d7" />
      </body>
      <title>Microsoft Cloud Computing: The Empire Strikes Back</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,560ad329-a24c-414b-88d8-49bacf5429d7.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,560ad329-a24c-414b-88d8-49bacf5429d7.aspx</link>
      <pubDate>Wed, 29 Oct 2008 23:22:13 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font face="Times New Roman" size=3&gt;At the PDC Microsoft announced its answer to Amazon
   and Google's cloud computing services.&lt;br&gt;
   &lt;/font&gt;&lt;font face="Times New Roman"&gt;
   &lt;br&gt;
   &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Times New Roman" size=3&gt;This answer has two parts: the Azure platform
   and hosted applications.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Unfortunately
   people confuse these two aspects of cloud computing although they do have some features
   in common.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;The idea behind Azure is to have a hosted operating systems
   platform.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Companies and individuals will
   be able to build applications that run on infrastructure inside one of Microsoft's
   data centers.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Hosted services are applications
   that companies and individuals will use instead of running them on their own computers.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;For example,&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;a&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;company
   wants to build a document approval system. It can outsource the infrastructure on
   which it runs by building the application on top of a cloud computing platform such
   as Azure.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;My web site and blog do not
   run on my own servers, I use a hosting company. That is an example of using a hosted
   application.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;As people get more sophisticated about cloud computing
   we will see these two types as endpoints on a continuum. Right now as you start to
   think about cloud computing and where it makes sense,&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;it
   is easier to treat these as distinct approaches. &lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;The economics of outsourcing your computing infrastructure
   and certain applications is compelling as Nicholas Carr has argued.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;Companies will be able to vary capacity as needed. They
   can focus scarce economic resources on building the software the&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;organization
   needs, as opposed to the specialized skills needed to run computing infrastructure.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Many
   small and mid-sized companies already using hosting companies to run their applications.
   The next logical step is for hosting on an operating system in the cloud. &lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;Salesforce.com has already proven the viability of hosted
   CRM applications.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If I am a small business
   and I need Microsoft Exchange,&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I have
   several choices. I can hire somebody who knows how to run an Exchange server. I can
   take one my already overburdened computer people and hope they can become expert enough
   on Exchange to run it without problems. Or I can outsource to a company that knows
   about Exchange,&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;the appropriate patches,
   security issues, and how to get it to scale. The choice seems pretty clear to most
   businesses.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;We are at the beginning of the cloud computing wave,
   and there are many legitimate concerns. What about service outages as Amazon and Salesforce.com
   have had that prevent us from accessing our critical applications and data? What about
   privacy issues? I have discussed the &lt;a href="http://www.podango.com/podcast_episode/2415/83715/OnMicrosoft_video/OnMicrosoft__Privacy_and_Cloud_Computing_with_Michael_Stiefel"&gt;cloud
   privacy issue &lt;/a&gt;in a podcast&lt;/font&gt;&lt;font face="Times New Roman"&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;People
   are concerned about the ownership of information in the cloud.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;All these are legitimate concerns. But we have faced
   these issues before. Think of the electric power industry. We produce and consume
   all kinds of products and services using electric power. Electric power is reliable
   enough that nobody produces their own power any more. Even survivalists still get
   their usual power from the grid. &lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;This did not happen over night. Their were bitter arguments
   over the AC and DC standards for electric power transmission. Thomas Edison (the champion
   of DC power) built an alternating current electric chair for executing prisoners&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;to
   demonstrate the "horrors" of Nikola Tesla's approach. There were bitter financial
   struggles between competing companies. Read Thomas Parke Hughes' classic work "Networks
   of power: Electrification in Western society 1880-1930". Yet in the end we have reliable
   electric power.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;Large scale computing utilities could provide computation
   much more efficiently than individual business. Compare the energy and pollution efficiency
   of large scale electric utilities with individual automobiles.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;Large companies
   with the ability to hire and retain infrastructure professionals might decide to build
   rather than outsource. Some companies may decide to do their own hosting for their
   own individual reasons.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;You probably already have information in the cloud if
   you have ever used Amazon.com. You have already given plenty of information to banks,
   credit card companies, and other companies you have dealt with. This information surely
   already resides on a computer somewhere. Life is full of trust decisions that you
   make without realizing it.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;Very few people grow their own food, sew their own clothes,
   build their own houses, or (even in these tenuous financial times)&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;keep
   their money in their mattresses any more. We have learnt to trust in an economic system
   to provide these things. This too did not happen overnight.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;I personally believe that Internet connectivity will
   never be 100% reliable, but how much reliability will be needed depends on the mission
   criticality of an application. That is why there will always be a role for rich clients
   and synchronization services.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;Hosting companies will have to be large to have the financial
   stability to handle law suits and survive for the long term. We will have to develop
   the institutional and legal infrastructure to handle what happens to data and applications
   when a hosting company fails. We learned how to do this with bank failures and&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;we
   will learn how to do this with hosting companies.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;This could easily take 50 years with many false starts.
   People tend to overestimate what will happen in 5 years, and underestimate what will
   happen in 10-15 years.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face="Times New Roman"&gt;Azure, the color Microsoft picked for the name of its
   platform, is the color of a bright, cloudless day.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Interesting
   metaphor for a cloud computing platform. Is the future of clouds clear?&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=560ad329-a24c-414b-88d8-49bacf5429d7" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,560ad329-a24c-414b-88d8-49bacf5429d7.aspx</comments>
      <category>All;Microsoft .NET;SOA;Software Development;Cloud Computing</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=33393c0f-3629-49f5-a6c1-4e2d63fa67c6</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,33393c0f-3629-49f5-a6c1-4e2d63fa67c6.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,33393c0f-3629-49f5-a6c1-4e2d63fa67c6.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=33393c0f-3629-49f5-a6c1-4e2d63fa67c6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font face="Times New Roman" size="3">"Software + Services" is Microsoft's representation
      of what a large part of the future of computing is going to be. Microsoft, however,
      has not done a great job of explaining what "Software + Services" is.</font>
        </p>
        <p>
          <font face="Times New Roman" size="3">Based on what I have read and heard, let me
      try to explain it as I see it.</font>
        </p>
        <p>
          <font face="Times New Roman" size="3">The fundamental question that one has to ask
      is "<strong>Where does computation happen?"</strong></font>
        </p>
        <p>
          <font face="Times New Roman" size="3">The obvious answer to everyone today is: "<strong>Everywhere</strong>".</font>
        </p>
        <p>
          <font face="Times New Roman" size="3"> We compute on mobile devices, appliances, desktops
      and laptops, and remote computers. We communicate with text and voice.</font>
        </p>
        <p>
          <font face="Times New Roman" size="3">Everybody understand this. The key question
      is: "<strong>Why?</strong>"</font>
        </p>
        <p>
          <font face="Times New Roman" size="3">I think the answer is because "<strong>Hardware
      is cheap, and data is expensive to move</strong>."</font>
        </p>
        <p>
          <font face="Times New Roman" size="3">The late Jim Gray did an analysis<sup>1 </sup>of
      the economics of distributed computing. His analysis came to two conclusions:</font>
        </p>
        <p>
          <font face="Times New Roman" size="3">1. Put the computation near the data. Unless
      you have something that is very compute intensive, it is much cheaper to not move
      the data.<br />
      2. If you need data from multiple sites, push the processing closer to the data source
      by filtering the data early.</font>
        </p>
        <p>
          <font face="Times New Roman" size="3">The assumption here is that telecommunication
      prices drop slower than Moore's Law.  So far this has always been the case.</font>
        </p>
        <p>
          <font face="Times New Roman" size="3">The natural conclusion is to <strong>do the
      computation where the data naturally resides</strong>. In other words: Do what makes
      sense. Some things will be in the cloud, some things will still be on the desktop.
      As long as Internet connectivity is not ubiquitous, and not always connected, you
      may have to cache data somewhere. Depending on the mission criticality of your application,
      a few seconds could be a long time.</font>
        </p>
        <p>
          <font face="Times New Roman" size="3">As Ray Ozzie put it in his MIX Keynote, we live
      in a "World of small pieces loosely joined."</font>
        </p>
        <p>
          <font face="Times New Roman" color="#000000" size="3">Software + Services means some
      things will be services in the cloud, others will be software as we know it today. 
      That includes mobile devices and appliances that we are learning to love and hate,
      just as we have always done with traditional software.</font>
        </p>
        <p>
          <font face="Times New Roman" color="#000000" size="3">
          </font> 
   </p>
        <p>
          <font face="Times New Roman" color="#000000" size="3">1. MSR-TR-2003-24 "Distributed
      Computing Economics"<br /></font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=33393c0f-3629-49f5-a6c1-4e2d63fa67c6" />
      </body>
      <title>What is "Software + Services?</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,33393c0f-3629-49f5-a6c1-4e2d63fa67c6.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,33393c0f-3629-49f5-a6c1-4e2d63fa67c6.aspx</link>
      <pubDate>Tue, 23 Sep 2008 01:26:57 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font face="Times New Roman" size=3&gt;"Software + Services" is Microsoft's representation
   of what a large part of the future of computing is going to be. Microsoft, however,
   has not done a great job of explaining what "Software + Services" is.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Times New Roman" size=3&gt;Based on what I have read and heard, let me try
   to explain it as I see it.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Times New Roman" size=3&gt;The fundamental question that one has to ask is
   "&lt;strong&gt;Where does computation happen?"&lt;/strong&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Times New Roman" size=3&gt;The obvious answer to everyone today is: "&lt;strong&gt;Everywhere&lt;/strong&gt;".&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Times New Roman" size=3&gt;&amp;nbsp;We compute on mobile devices,&amp;nbsp;appliances,&amp;nbsp;desktops
   and laptops,&amp;nbsp;and remote computers. We communicate with text and voice.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Times New Roman" size=3&gt;Everybody understand this. The key question is:
   "&lt;strong&gt;Why?&lt;/strong&gt;"&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Times New Roman" size=3&gt;I think the answer is because "&lt;strong&gt;Hardware
   is cheap, and data is expensive to move&lt;/strong&gt;."&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Times New Roman" size=3&gt;The late Jim Gray did an analysis&lt;sup&gt;1 &lt;/sup&gt;of
   the economics of distributed computing. His analysis came to two conclusions:&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Times New Roman" size=3&gt;1. Put the computation near the data. Unless you
   have something that is very compute intensive, it is much cheaper to not move the
   data.&lt;br&gt;
   2. If you need data from multiple sites, push the processing closer to the data source
   by filtering the data early.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Times New Roman" size=3&gt;The assumption here is that telecommunication
   prices drop slower than Moore's Law.&amp;nbsp; So far this has always been the case.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Times New Roman" size=3&gt;The natural conclusion is to &lt;strong&gt;do the computation
   where the data naturally resides&lt;/strong&gt;. In other words: Do what makes sense. Some
   things will be in the cloud, some things will still be on the desktop. As long as
   Internet connectivity is not ubiquitous, and not always connected, you may have to
   cache data somewhere. Depending on the mission criticality of your application, a
   few seconds could be a long time.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Times New Roman" size=3&gt;As Ray Ozzie put it in his MIX Keynote, we live
   in a "World of small pieces loosely joined."&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Times New Roman" color=#000000 size=3&gt;Software + Services means some things
   will be services in the cloud, others will be software as we know it today.&amp;nbsp;
   That includes mobile devices and appliances that we are learning to love and hate,
   just as we have always done with traditional software.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Times New Roman" color=#000000 size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Times New Roman" color=#000000 size=3&gt;1. MSR-TR-2003-24 "Distributed Computing
   Economics"&lt;br&gt;
   &lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=33393c0f-3629-49f5-a6c1-4e2d63fa67c6" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,33393c0f-3629-49f5-a6c1-4e2d63fa67c6.aspx</comments>
      <category>All;SOA;Software Development;Cloud Computing</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=6507b2c6-473e-4ddc-9e66-8a161e5df6e9</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,6507b2c6-473e-4ddc-9e66-8a161e5df6e9.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,6507b2c6-473e-4ddc-9e66-8a161e5df6e9.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=6507b2c6-473e-4ddc-9e66-8a161e5df6e9</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <ul style="margin-left: 0.0201in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in;">
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">To further simplify the example,
         let us assume that the we want to use the certificate to encrypt a message from the
         client to the service. It is easy to apply what we discuss here to other scenarios.</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">As we discussed in the<a href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,c953fbc9-34f2-48d4-ba33-55d621a48d7f.aspx"> previous
         post</a>, we need to generate two certificates, the root certificate that represents
         the Certificate Authority, and the certificate that represents the identity of the
         client or service. We will also create a Certificate Revocation List (CRL).</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">We will use a tool called makeCert
         to generate our certificates. Makecert, which ships with the .NET platform,<span style="">  </span>allows
         you to build an X509 certificate that can be used for development and testing. It
         does three things:</font>
          </p>
          <ol style="margin-left: 0.375in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in; font-family: Calibri; font-size: 11pt;" type="1">
            <li value="1" style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle;">
              <p>
                <font color="#000000" size="3" face="Times New Roman">
                  <span style="font-family: Calibri; font-size: 11pt;">Generates
               a public and private key</span>
                </font>
              </p>
            </li>
            <li value="2" style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle;">
              <p>
                <font color="#000000" size="3" face="Times New Roman">
                  <span style="font-family: Calibri; font-size: 11pt;">It
               associates the key pair with a name</span>
                </font>
              </p>
            </li>
            <li value="3" style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle;">
              <p>
                <font color="#000000" size="3" face="Times New Roman">
                  <span style="font-family: Calibri; font-size: 11pt;">It
               binds the name with the public key.</span>
                </font>
              </p>
            </li>
          </ol>
          <p style="margin: 0in 0in 0in 0.375in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">Many of the published examples
         use makecert to both create and install the certificate. We will do the installation
         in a separate step because this approach is closer to the use of real certificates.<span style="">  </span>Separating
         the certificates also allows the certificates to be installed on many machines instead
         of just one. This makes distributing certificates to developer machines much easier. </font>
          </p>
          <p style="margin: 0in 0in 0in 0.375in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">First we will create the Root
         Certificate with the following command:</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in 0in 0in 0.375in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">makecert -sv RootCATest.pvk
         -r -n "CN=RootCATest" RootCATest.cer</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">-n specifies the name for the
         root certificate authority. The convention is to prefix the name with "CN=" where
         CN stands for "Common Name"</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">-r indicates that the certificate
         will be a root certificate because it is self-signed.</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">-sv specifies the file that
         contains the private key. The private key will be used for signing certificates issued
         by this certificate authority. Makecert will ask you for a password to protect the
         private key in the file.</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">The file RootCATest.cer will
         just have the public key. It is in the<span style="">  </span>Canonical Encoding
         Rules (CER) format. This is the file that will be installed on machines as the root
         of the trust chain.</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">Next we will create a certificate
         revocation list.</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">makecert -crl -n "CN=RootCATest"
         -r -sv RootCATest.pvk RootCATest.crl</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">-crl indicates we are creating
         a revocation list</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">-n is the name of the root certificate
         authority</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">-r indicates that this is the
         CRL for the root certificate, it is self-signed</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">-sv indicates the file that
         contains the private key</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">RootCATest.crl is the name of
         the CRL file.</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">At this point we could install
         the root certificate, but we will wait until we finish with the certificate we will
         use in our scenario.<span style="">  </span>Here we need two files. We will need
         a CER file for the client machine so that we can install the public key associated
         with the service. Then we will create a PKCS12<span style="">  </span>format
         file that will be used to install the public and private key in the service.</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">The initial step is :</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">makecert -ic RootCATest.cer
         -iv RootCATest.pvk -n "CN=TempCert" -sv<span style="">  </span>TempCert.pvk -pe
         -sky exchange TempCert.cer</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">-n specifies the name for the
         certificate</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">-sv specifies the file for the
         certificate. This must be unique for each certificate created. If you try to reuse
         a name, you will get an error message .</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">-iv specifies the name of the
         container file for the private key of the root certificate created in the first step.</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">-ic specifies the name of the
         root certificate file created in the first step</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">-sky specifies what kind of
         key we are creating. Using the exchange option enables the certificate to be used
         for signing and encrypting the message.</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">-pe specifies that the private
         key is exportable and is included with the certificate. For message security is this
         required because you need the corresponding private key.<span style="">  </span></font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">The name of the CER file for
         the certificate is specified at the end of the command.</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">Now we need to create the PKCS12
         file. We will use a the Software Publisher Certificate Test Tool to create a Software
         Publisher's Certificate. You use this format to create the PKCS12 file using the pvkimprt
         tool. </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">cert2spc TempCert.cer TempCert.spc </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">pvkimprt -pfx TempCert.spc TempCert.pvk</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">We now have four files:</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">RootCATest.cer</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">RootCATest.crl</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">TempCert.cer</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">TempCert.pvk</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">The next step is to install
         these on the appropriate machines. I could not get certmgr to work properly to do
         an automated install.<span style="">  </span>The Winhttpcertcfg tool works for
         PKCS12 format files, but not CER format files. We will use the MMC snap-in for this.</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">Run the mmc snapin tool (type
         mmc in the Run menu). First we will open the Certificates snap-in.<span style="">  </span>Choose:
         Add/Remove Snap-In.</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
        </ul>
        <p>
          <font color="#000000" size="3" face="Times New Roman">
            <img src="content/binary/MMC1.bmp" border="0" />
          </font>
        </p>
        <ul style="margin-left: 0.0201in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in;">
          <p style="margin: 0in;">
            <font color="#000000" size="3" face="Times New Roman">
              <br />
            </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">Then Add the Certficate Snap-In.</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
        </ul>
        <p>
          <font color="#000000" size="3" face="Times New Roman">
            <img src="content/binary/MMC2.bmp" border="0" />
          </font>
        </p>
        <ul style="margin-left: 0.0201in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in;">
          <p style="margin: 0in;">
            <font color="#000000" size="3" face="Times New Roman">
              <br />
            </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">When you add the snap-in, choose
         local computer account for the computer you want to install the certificate (usually
         the local one).</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">
              <br />
            </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">We want to install the root
         certificate on both the client and service machines<span style="">  </span>in
         the Trusted Root Certificate Store.<span style="">  </span></font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
        </ul>
        <p>
          <font color="#000000" size="3" face="Times New Roman">
            <img src="content/binary/MMC3.bmp" border="0" />
          </font>
        </p>
        <ul style="margin-left: 0.0201in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in;">
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">Select that store, right mouse
         click and install both the RootCATest.cer and RootCATest.crl files.<span style="">  </span>On
         the client side you want to install only the public key in the TempCert.cer file.<span style="">  </span>On
         the service side only you want to install the PKCS12 format file (TempCert.pvk) which
         has the private key for the certificate. Install that in the Personal store. For private
         key installation you will have to provide the password for the PKCS12 file.</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">On the service side, we need
         to give the identity of the running process (NETWORK SERVICE) the rights to read the
         private key. We use two tools FindPrivateKey and cacls to do this. Run the following
         command:</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">for /F "delims=" %%i in ('FindPrivateKey.exe
         My LocalMachine -n "CN=TempITNCert" -a') do (cacls.exe "%%i" /E /G "NT AUTHORITY\NETWORK
         SERVICE":R)</font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman"> </font>
          </p>
          <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
            <font color="#000000" size="3" face="Times New Roman">Remember to delete these certificates
         when you are finished with them.</font>
          </p>
        </ul>
        <p style="margin: 0in;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p>
          <font color="#000000" size="3" face="Times New Roman">
            <br />
          </font>
        </p>
        <br />
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=6507b2c6-473e-4ddc-9e66-8a161e5df6e9" />
      </body>
      <title>Developing with X509 Certificates</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,6507b2c6-473e-4ddc-9e66-8a161e5df6e9.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,6507b2c6-473e-4ddc-9e66-8a161e5df6e9.aspx</link>
      <pubDate>Wed, 10 Sep 2008 01:07:45 GMT</pubDate>
      <description>&lt;ul style="margin-left: 0.0201in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in;"&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;To further simplify the example,
      let us assume that the we want to use the certificate to encrypt a message from the
      client to the service. It is easy to apply what we discuss here to other scenarios.&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;As we discussed in the&lt;a href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,c953fbc9-34f2-48d4-ba33-55d621a48d7f.aspx"&gt; previous
      post&lt;/a&gt;, we need to generate two certificates, the root certificate that represents
      the Certificate Authority, and the certificate that represents the identity of the
      client or service. We will also create a Certificate Revocation List (CRL).&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;We will use a tool called makeCert
      to generate our certificates. Makecert, which ships with the .NET platform,&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;allows
      you to build an X509 certificate that can be used for development and testing. It
      does three things:&lt;/font&gt;
   &lt;/p&gt;
   &lt;ol style="margin-left: 0.375in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in; font-family: Calibri; font-size: 11pt;" type="1"&gt;
      &lt;li value="1" style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle;"&gt;
         &lt;p&gt;
            &lt;font color="#000000" size="3" face="Times New Roman"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;Generates
            a public and private key&lt;/span&gt;&lt;/font&gt;
         &lt;/p&gt;
      &lt;/li&gt;
      &lt;li value="2" style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle;"&gt;
         &lt;p&gt;
            &lt;font color="#000000" size="3" face="Times New Roman"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;It
            associates the key pair with a name&lt;/span&gt;&lt;/font&gt;
         &lt;/p&gt;
      &lt;/li&gt;
      &lt;li value="3" style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle;"&gt;
         &lt;p&gt;
            &lt;font color="#000000" size="3" face="Times New Roman"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;It
            binds the name with the public key.&lt;/span&gt;&lt;/font&gt;
         &lt;/p&gt;
      &lt;/li&gt;
   &lt;/ol&gt;
   &lt;p style="margin: 0in 0in 0in 0.375in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;Many of the published examples
      use makecert to both create and install the certificate. We will do the installation
      in a separate step because this approach is closer to the use of real certificates.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Separating
      the certificates also allows the certificates to be installed on many machines instead
      of just one. This makes distributing certificates to developer machines much easier. &lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in 0in 0in 0.375in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;First we will create the Root
      Certificate with the following command:&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in 0in 0in 0.375in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;makecert -sv RootCATest.pvk
      -r -n "CN=RootCATest" RootCATest.cer&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;-n specifies the name for the
      root certificate authority. The convention is to prefix the name with "CN=" where
      CN stands for "Common Name"&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;-r indicates that the certificate
      will be a root certificate because it is self-signed.&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;-sv specifies the file that
      contains the private key. The private key will be used for signing certificates issued
      by this certificate authority. Makecert will ask you for a password to protect the
      private key in the file.&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;The file RootCATest.cer will
      just have the public key. It is in the&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Canonical Encoding
      Rules (CER) format. This is the file that will be installed on machines as the root
      of the trust chain.&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;Next we will create a certificate
      revocation list.&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;makecert -crl -n "CN=RootCATest"
      -r -sv RootCATest.pvk RootCATest.crl&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;-crl indicates we are creating
      a revocation list&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;-n is the name of the root certificate
      authority&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;-r indicates that this is the
      CRL for the root certificate, it is self-signed&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;-sv indicates the file that
      contains the private key&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;RootCATest.crl is the name of
      the CRL file.&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;At this point we could install
      the root certificate, but we will wait until we finish with the certificate we will
      use in our scenario.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Here we need two files. We will need
      a CER file for the client machine so that we can install the public key associated
      with the service. Then we will create a PKCS12&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;format
      file that will be used to install the public and private key in the service.&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;The initial step is :&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;makecert -ic RootCATest.cer
      -iv RootCATest.pvk -n "CN=TempCert" -sv&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;TempCert.pvk -pe
      -sky exchange TempCert.cer&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;-n specifies the name for the
      certificate&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;-sv specifies the file for the
      certificate. This must be unique for each certificate created. If you try to reuse
      a name, you will get an error message .&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;-iv specifies the name of the
      container file for the private key of the root certificate created in the first step.&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;-ic specifies the name of the
      root certificate file created in the first step&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;-sky specifies what kind of
      key we are creating. Using the exchange option enables the certificate to be used
      for signing and encrypting the message.&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;-pe specifies that the private
      key is exportable and is included with the certificate. For message security is this
      required because you need the corresponding private key.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;The name of the CER file for
      the certificate is specified at the end of the command.&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;Now we need to create the PKCS12
      file. We will use a the Software Publisher Certificate Test Tool to create a Software
      Publisher's Certificate. You use this format to create the PKCS12 file using the pvkimprt
      tool. &lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;cert2spc TempCert.cer TempCert.spc &lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;pvkimprt -pfx TempCert.spc TempCert.pvk&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;We now have four files:&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;RootCATest.cer&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;RootCATest.crl&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;TempCert.cer&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;TempCert.pvk&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;The next step is to install
      these on the appropriate machines. I could not get certmgr to work properly to do
      an automated install.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The Winhttpcertcfg tool works for
      PKCS12 format files, but not CER format files. We will use the MMC snap-in for this.&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;Run the mmc snapin tool (type
      mmc in the Run menu). First we will open the Certificates snap-in.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Choose:
      Add/Remove Snap-In.&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&lt;img src="content/binary/MMC1.bmp" border="0"&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;ul style="margin-left: 0.0201in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in;"&gt;
   &lt;p style="margin: 0in;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;
      &lt;br&gt;
      &lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;Then Add the Certficate Snap-In.&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&lt;img src="content/binary/MMC2.bmp" border="0"&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;ul style="margin-left: 0.0201in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in;"&gt;
   &lt;p style="margin: 0in;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;
      &lt;br&gt;
      &lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;When you add the snap-in, choose
      local computer account for the computer you want to install the certificate (usually
      the local one).&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;
      &lt;br&gt;
      &lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;We want to install the root
      certificate on both the client and service machines&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;in
      the Trusted Root Certificate Store.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&lt;img src="content/binary/MMC3.bmp" border="0"&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;ul style="margin-left: 0.0201in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in;"&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;Select that store, right mouse
      click and install both the RootCATest.cer and RootCATest.crl files.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;On
      the client side you want to install only the public key in the TempCert.cer file.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;On
      the service side only you want to install the PKCS12 format file (TempCert.pvk) which
      has the private key for the certificate. Install that in the Personal store. For private
      key installation you will have to provide the password for the PKCS12 file.&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;On the service side, we need
      to give the identity of the running process (NETWORK SERVICE) the rights to read the
      private key. We use two tools FindPrivateKey and cacls to do this. Run the following
      command:&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;for /F "delims=" %%i in ('FindPrivateKey.exe
      My LocalMachine -n "CN=TempITNCert" -a') do (cacls.exe "%%i" /E /G "NT AUTHORITY\NETWORK
      SERVICE":R)&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/p&gt;
   &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
      &lt;font color="#000000" size="3" face="Times New Roman"&gt;Remember to delete these certificates
      when you are finished with them.&lt;/font&gt;
   &lt;/p&gt;
&lt;/ul&gt;
&lt;p style="margin: 0in;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;
   &lt;br&gt;
   &lt;/font&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=6507b2c6-473e-4ddc-9e66-8a161e5df6e9" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,6507b2c6-473e-4ddc-9e66-8a161e5df6e9.aspx</comments>
      <category>Microsoft .NET;SOA;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=c953fbc9-34f2-48d4-ba33-55d621a48d7f</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,c953fbc9-34f2-48d4-ba33-55d621a48d7f.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,c953fbc9-34f2-48d4-ba33-55d621a48d7f.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=c953fbc9-34f2-48d4-ba33-55d621a48d7f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman">Working with X509 certificates
      can be very frustrating for WCF developers. </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman">This is the first of two posts.
      In this post I will explain just enough of the background for X509 certificates so
      that I can explain in the next post how to create and use certificates during .NET
      development with WCF.   The second post is <a href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,6507b2c6-473e-4ddc-9e66-8a161e5df6e9.aspx">here</a>.<br /></font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman">I do not know any good books
      for a developer that explains how to use certificates. Even the excellent books on
      WCF just give you the certificates you need to get the sample code to work. They do
      not really explain to you why you are installing different certificates into different
      stores, or how to generate the certificates you need to get your software to work.
      Very often the examples run on one machine with the client and service sharing the
      same store. This is not a realistic scenario.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman">Obviously I cannot explain all
      about certificates in one blog post. I just wish to share some knowledge. Hopefully
      it will spare you some grief.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman">Here is the problem I want to
      solve. </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman">Suppose you have a set of web
      services that is accessed by either an ASP.NET or rich client. The service requires
      the client application to use an X509 certificate to access the service. This could
      be to encrypt the data, to identify the client, to sign the data to avoid repudiation,
      or for a number of other reasons. How do you install the certificates on the client
      and service machines?</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman">Certificate technology is based
      on <a target="_blank" href="http://en.wikipedia.org/wiki/Public-key_cryptography">asymmetric
      encryption</a>.<span style="">  </span></font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman">In the encryption scenario,
      the client would use the public key of the service to encrypt the traffic.<span style="">  </span>The
      service would use its private key to decrypt the message.<span style="">  </span>In
      the identification scenario the service would use the public key of the client to
      identify a message signed with the client's private key.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman">One of the key issues is how
      you can be sure that the public key is associated with a given identity. Perhaps somebody
      substituted their key for the one you should be using.<span style="">  </span>Perhaps
      somebody is hijacking calls to the service, or you made a mistake in the address of
      the service.<span style="">  </span>A classic example of these types of vulnerabilities<span style="">  </span>is
      the "<a target="_blank" href="http://en.wikipedia.org/wiki/Man-in-the-middle_attack">man
      in the middle attack</a>".<span style="">  </span>Another key issue is that the
      private key cannot be read or modified by unauthorized parties.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman">Public Key Infrastructure (PKI)
      is the name for a technology that uses a certificate authority (CA) to bind the public
      key to an identity. This identity is unique to the certificate authority. X509 is
      a standard for implementing a PKI.<span style="">  </span>An X509 certificate
      represents an association between an identity and a public key.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman">An X509 certificate is issued
      by a given Certificate Authority to represent its guarantee that a public key is associated
      with a particular identity. Depending on how much you trust the CA, and the amount
      of identity verification the CA did, would determine how much trust you have in the
      certificate. For example VeriSign issues different types of certificates depending
      on how much verification was done. Sometimes organizations will be their own certificate
      authorities and issues certificates because they want the maximum amount of control.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman">This relationship between a
      CA and its issued certificates is represented in the "chain of trust". Each X509 certificate
      is signed with the private key of the CA. In order to verify the chain of trust you
      need the CA's public key.<span style="">  </span>If you are your own CA authority
      you can distribute the X509 certificate representing this "root certificate".<span style="">  </span>Some
      browsers and operating systems install root certificates as part of their setup. So
      the manufacturer of the browser or operating system is part of the chain of trust.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman">The X509 standard also includes
      a certificate revocation list (CRL) which is a mechanism for checking whether a certificate
      has been revoked by the CA.<span style="">  </span>The standard does not specify
      how often this checking is done. By default, Internet Explorer and Firefox do not
      check for certificate revocation. Certificates also contain an expiration date.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman">Another approach to trust is
      called "<a target="_blank" href="http://en.wikipedia.org/wiki/Web_of_trust">peer to
      peer</a>" trust, or "web of trust".<span style="">  </span>Given the difficulties
      of peer trust it is not practical for most Internet applications. It can, however,
      make development scenarios simpler. Your development environment, however,<span style="">  </span>should
      mimic your deployment environment.<span style="">  </span>Hence I do not recommend
      using peer to peer trust unless that is practical for your deployed solution.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman">There are various protocols
      for transmitting certificates.<span style="">  </span>We will be interested in
      two of them.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman">The Canonical Encoding Rules
      (CER) protocol will be used to digitally transmit the public key of a given identity.
      The PKCS12 protocol will be used to transmit the public and private keys. The private
      key will be password protected.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" size="3" face="Times New Roman">The next post will describe
      the mechanisms for creating and installing certificates in a .NET development environment.</font>
        </p>
        <p>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=c953fbc9-34f2-48d4-ba33-55d621a48d7f" />
      </body>
      <title>X509 Certificates for Developers </title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,c953fbc9-34f2-48d4-ba33-55d621a48d7f.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,c953fbc9-34f2-48d4-ba33-55d621a48d7f.aspx</link>
      <pubDate>Sun, 24 Aug 2008 14:02:20 GMT</pubDate>
      <description>&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;Working with X509 certificates
   can be very frustrating for WCF developers. &lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;This is the first of two posts.
   In this post I will explain just enough of the background for X509 certificates so
   that I can explain in the next post how to create and use certificates during .NET
   development with WCF.&amp;nbsp;&amp;nbsp; The second post is &lt;a href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,6507b2c6-473e-4ddc-9e66-8a161e5df6e9.aspx"&gt;here&lt;/a&gt;.&lt;br&gt;
   &lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;I do not know any good books
   for a developer that explains how to use certificates. Even the excellent books on
   WCF just give you the certificates you need to get the sample code to work. They do
   not really explain to you why you are installing different certificates into different
   stores, or how to generate the certificates you need to get your software to work.
   Very often the examples run on one machine with the client and service sharing the
   same store. This is not a realistic scenario.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;Obviously I cannot explain all
   about certificates in one blog post. I just wish to share some knowledge. Hopefully
   it will spare you some grief.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;Here is the problem I want to
   solve. &lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;Suppose you have a set of web
   services that is accessed by either an ASP.NET or rich client. The service requires
   the client application to use an X509 certificate to access the service. This could
   be to encrypt the data, to identify the client, to sign the data to avoid repudiation,
   or for a number of other reasons. How do you install the certificates on the client
   and service machines?&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;Certificate technology is based
   on &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Public-key_cryptography"&gt;asymmetric
   encryption&lt;/a&gt;.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;In the encryption scenario,
   the client would use the public key of the service to encrypt the traffic.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The
   service would use its private key to decrypt the message.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;In
   the identification scenario the service would use the public key of the client to
   identify a message signed with the client's private key.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;One of the key issues is how
   you can be sure that the public key is associated with a given identity. Perhaps somebody
   substituted their key for the one you should be using.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Perhaps
   somebody is hijacking calls to the service, or you made a mistake in the address of
   the service.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;A classic example of these types of vulnerabilities&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;is
   the "&lt;a target="_blank" href="http://en.wikipedia.org/wiki/Man-in-the-middle_attack"&gt;man
   in the middle attack&lt;/a&gt;".&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Another key issue is that the
   private key cannot be read or modified by unauthorized parties.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;Public Key Infrastructure (PKI)
   is the name for a technology that uses a certificate authority (CA) to bind the public
   key to an identity. This identity is unique to the certificate authority. X509 is
   a standard for implementing a PKI.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;An X509 certificate
   represents an association between an identity and a public key.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;An X509 certificate is issued
   by a given Certificate Authority to represent its guarantee that a public key is associated
   with a particular identity. Depending on how much you trust the CA, and the amount
   of identity verification the CA did, would determine how much trust you have in the
   certificate. For example VeriSign issues different types of certificates depending
   on how much verification was done. Sometimes organizations will be their own certificate
   authorities and issues certificates because they want the maximum amount of control.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;This relationship between a
   CA and its issued certificates is represented in the "chain of trust". Each X509 certificate
   is signed with the private key of the CA. In order to verify the chain of trust you
   need the CA's public key.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;If you are your own CA authority
   you can distribute the X509 certificate representing this "root certificate".&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Some
   browsers and operating systems install root certificates as part of their setup. So
   the manufacturer of the browser or operating system is part of the chain of trust.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;The X509 standard also includes
   a certificate revocation list (CRL) which is a mechanism for checking whether a certificate
   has been revoked by the CA.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The standard does not specify
   how often this checking is done. By default, Internet Explorer and Firefox do not
   check for certificate revocation. Certificates also contain an expiration date.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;Another approach to trust is
   called "&lt;a target="_blank" href="http://en.wikipedia.org/wiki/Web_of_trust"&gt;peer to
   peer&lt;/a&gt;" trust, or "web of trust".&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Given the difficulties
   of peer trust it is not practical for most Internet applications. It can, however,
   make development scenarios simpler. Your development environment, however,&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;should
   mimic your deployment environment.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Hence I do not recommend
   using peer to peer trust unless that is practical for your deployed solution.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;There are various protocols
   for transmitting certificates.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;We will be interested in
   two of them.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;The Canonical Encoding Rules
   (CER) protocol will be used to digitally transmit the public key of a given identity.
   The PKCS12 protocol will be used to transmit the public and private keys. The private
   key will be password protected.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" size="3" face="Times New Roman"&gt;The next post will describe
   the mechanisms for creating and installing certificates in a .NET development environment.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=c953fbc9-34f2-48d4-ba33-55d621a48d7f" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,c953fbc9-34f2-48d4-ba33-55d621a48d7f.aspx</comments>
      <category>Microsoft .NET;SOA;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=1fa49845-b93c-425f-ab56-224694398cf0</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,1fa49845-b93c-425f-ab56-224694398cf0.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,1fa49845-b93c-425f-ab56-224694398cf0.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=1fa49845-b93c-425f-ab56-224694398cf0</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">On Friday, June 6 of Microsoft's Tech-Ed
   I will be hosting a Birds of a Feather Session on the topic "Software + Services is
   For Small Companies Too". It will be held in Room S330 E at noon.<br /><br />
   To continue the conversation, please add your comments and opinions to this blog post.
   If you are unable to attend feel free to add your thoughts as well here.<br /><br />
   Here are some questions to get you started thinking about the topic:<br /><br />
   What is Software + Services?          
   <br />
             
   <br />
   Are small companies afraid of software + services? Are they afraid of cloud computing?
   Why?          
   <br />
             
   <br />
   Doesn't cloud computing leverage the efforts of small companies? If cloud computing
   makes IT a commodity, doesn't this allow small companies to be even more nimble in
   their development efforts?          
   <br />
             
   <br />
   What are the real advantages that large companies have over small companies? What
   about the innovators dillemma? How do large companies keep their current customers
   happy and assure future growth through innovation?  Doesn't this help small companies.
   Doesn't cloud computing help small companies innovate even more?<br /><br /><p></p><a href="http://teched2008.leveragesoftware.com/profile_view.aspx?customerid=michaelstiefel"><img src="http://teched2008.leveragesoftware.com/businesscard.aspx?customerid=michaelstiefel" alt="Join Me at Tech·Ed Connect!" border="0" /></a><img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=1fa49845-b93c-425f-ab56-224694398cf0" /></body>
      <title>Software + Services Is For Small Companies Too</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,1fa49845-b93c-425f-ab56-224694398cf0.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,1fa49845-b93c-425f-ab56-224694398cf0.aspx</link>
      <pubDate>Mon, 02 Jun 2008 02:47:05 GMT</pubDate>
      <description>On Friday, June 6 of Microsoft's Tech-Ed I will be hosting a Birds of a Feather Session on the topic "Software + Services is For Small Companies Too". It will be held in Room S330 E at noon.&lt;br&gt;
&lt;br&gt;
To continue the conversation, please add your comments and opinions to this blog post.
If you are unable to attend feel free to add your thoughts as well here.&lt;br&gt;
&lt;br&gt;
Here are some questions to get you started thinking about the topic:&lt;br&gt;
&lt;br&gt;
What is Software + Services?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp; 
&lt;br&gt;
Are small companies afraid of software + services? Are they afraid of cloud computing?
Why?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp; 
&lt;br&gt;
Doesn't cloud computing leverage the efforts of small companies? If cloud computing
makes IT a commodity, doesn't this allow small companies to be even more nimble in
their development efforts?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp; 
&lt;br&gt;
What are the real advantages that large companies have over small companies? What
about the innovators dillemma? How do large companies keep their current customers
happy and assure future growth through innovation?&amp;nbsp; Doesn't this help small companies.
Doesn't cloud computing help small companies innovate even more?&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;a href="http://teched2008.leveragesoftware.com/profile_view.aspx?customerid=michaelstiefel"&gt;&lt;img src="http://teched2008.leveragesoftware.com/businesscard.aspx?customerid=michaelstiefel" alt="Join Me at Tech·Ed Connect!" border="0"&gt;&lt;/a&gt; &lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=1fa49845-b93c-425f-ab56-224694398cf0" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,1fa49845-b93c-425f-ab56-224694398cf0.aspx</comments>
      <category>Microsoft .NET;SOA;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=457b4176-fa3c-45c8-8927-31a3b5126dab</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,457b4176-fa3c-45c8-8927-31a3b5126dab.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,457b4176-fa3c-45c8-8927-31a3b5126dab.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=457b4176-fa3c-45c8-8927-31a3b5126dab</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">I have put my VSLive! talk, explaining
   how to use Windows Comunication Foundation and Windows Workflow Foundation together
   to create distributed applications in the Presentations section of my web site.<br /><p></p><img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=457b4176-fa3c-45c8-8927-31a3b5126dab" /></body>
      <title>Workflow Services Using WCF and WF Uploaded</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,457b4176-fa3c-45c8-8927-31a3b5126dab.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,457b4176-fa3c-45c8-8927-31a3b5126dab.aspx</link>
      <pubDate>Fri, 04 Apr 2008 02:36:37 GMT</pubDate>
      <description>I have put my VSLive! talk, explaining how to use Windows Comunication Foundation and Windows Workflow Foundation together to create distributed applications in the Presentations section of my web site.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=457b4176-fa3c-45c8-8927-31a3b5126dab" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,457b4176-fa3c-45c8-8927-31a3b5126dab.aspx</comments>
      <category>All;Microsoft .NET;SOA;Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=fe8fda89-cbf3-4f8e-82c2-b199e37bf19d</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,fe8fda89-cbf3-4f8e-82c2-b199e37bf19d.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,fe8fda89-cbf3-4f8e-82c2-b199e37bf19d.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=fe8fda89-cbf3-4f8e-82c2-b199e37bf19d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Quick answer: When I don't know about it?
   When two experienced co-workers do not know also?<br /><br />
   I was working on a workflow code sample for an upcoming talk, when I started getting
   ridculous compilation errors. 
   <br /><br />
   The compiler could not find the rules definition file when it was clearly available.
   The workflow designer could find it because I could associate it with a policy activity.
   The compiler falsely complained about an incorrect type association in a data bind,
   but it was clearly correct. Once again the designer had no problem doing the data
   bind.<br /><br />
   I tried to find an answer on Google with little success. After two hours of experimenting,
   I tried a different Google query and came up with the following link: <a href="https://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=612335&amp;SiteID=1">https://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=612335&amp;SiteID=1.</a><br /><br />
   The essence of the solution is the following:<br /><p><font color="#000000">"this is a well-known problem with code files that have
      desigable classes in them - the class that is to be designed has to be the first class
      in the file.  If you do the same thing in windows forms you get the following
      error: the class Form1 can be designed, but is not the first class in the file. Visual
      Studio requires that designers use the first class in the file. Move the class code
      so that it is the first class in the file and try loading the designer again."</font></p><p><font color="#000000">It turns out I had changed a struct that was defined first in
      my file to a class. I moved that class to the end of the file and "mirabile dictu"
      everything worked.</font></p><p><font color="#000000">So if this is a well known problem, why can't we get an error
      message just like in the Windows Forms case? 
      <br /></font></p><p><font color="#000000">While it was clearly my mistake, Microsoft has a share of the
      blame here. Clearly this requirement makes it easier to build the workflow designer.
      It would have been just as easy to check if this class was not defined first, and
      issue an error message.</font><br /></p><font color="#000000"><span></span></font><p></p><img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=fe8fda89-cbf3-4f8e-82c2-b199e37bf19d" /></body>
      <title>When Is a Well Known Problem Not Well Known?</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,fe8fda89-cbf3-4f8e-82c2-b199e37bf19d.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,fe8fda89-cbf3-4f8e-82c2-b199e37bf19d.aspx</link>
      <pubDate>Fri, 28 Mar 2008 18:03:06 GMT</pubDate>
      <description>Quick answer: When I don't know about it? When two experienced co-workers do not know also?&lt;br&gt;
&lt;br&gt;
I was working on a workflow code sample for an upcoming talk, when I started getting
ridculous compilation errors. 
&lt;br&gt;
&lt;br&gt;
The compiler could not find the rules definition file when it was clearly available.
The workflow designer could find it because I could associate it with a policy activity.
The compiler falsely complained about an incorrect type association in a data bind,
but it was clearly correct. Once again the designer had no problem doing the data
bind.&lt;br&gt;
&lt;br&gt;
I tried to find an answer on Google with little success. After two hours of experimenting,
I tried a different Google query and came up with the following link: &lt;a href="https://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=612335&amp;amp;SiteID=1"&gt;https://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=612335&amp;amp;SiteID=1.&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
The essence of the solution is the following:&lt;br&gt;
&lt;p&gt;
   &lt;font color="#000000"&gt;"this is a well-known problem with&amp;nbsp;code files that have
   desigable classes in them - the class that is to be designed has to be the first class
   in the file.&amp;nbsp; If you do the same thing in windows forms you get the following
   error: the class Form1 can be designed, but is not the first class in the file. Visual
   Studio requires that designers use the first class in the file. Move the class code
   so that it is the first class in the file and try loading the designer again."&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font color="#000000"&gt;It turns out I had changed a struct that was defined first in
   my file to a class. I moved that class to the end of the file and "mirabile dictu"
   everything worked.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font color="#000000"&gt;So if this is a well known problem, why can't we get an error
   message just like in the Windows Forms case? 
   &lt;br&gt;
   &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font color="#000000"&gt;While it was clearly my mistake, Microsoft has a share of the
   blame here. Clearly this requirement makes it easier to build the workflow designer.
   It would have been just as easy to check if this class was not defined first, and
   issue an error message.&lt;/font&gt;
   &lt;br&gt;
&lt;/p&gt;
&lt;font color="#000000"&gt;&lt;span&gt; &lt;/span&gt;&lt;/font&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=fe8fda89-cbf3-4f8e-82c2-b199e37bf19d" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,fe8fda89-cbf3-4f8e-82c2-b199e37bf19d.aspx</comments>
      <category>All;Microsoft .NET;Software Development;Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=de4bd4fe-242d-494c-b13f-1d77f01dfc9b</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,de4bd4fe-242d-494c-b13f-1d77f01dfc9b.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,de4bd4fe-242d-494c-b13f-1d77f01dfc9b.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=de4bd4fe-242d-494c-b13f-1d77f01dfc9b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I did a short <a href="http://www.cstechcast.com/home.aspx?Episode=14">podcast </a>for
   Consortio Services about Software as a Service as part of their weekly techcast. 
   <br /><br />
   I very briefly cover what SaaS is about and some of the critical issues facing organizations
   looking at delivering services using the SaaS model.<p></p><img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=de4bd4fe-242d-494c-b13f-1d77f01dfc9b" /></body>
      <title>SaaS Podcast</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,de4bd4fe-242d-494c-b13f-1d77f01dfc9b.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,de4bd4fe-242d-494c-b13f-1d77f01dfc9b.aspx</link>
      <pubDate>Thu, 06 Mar 2008 05:42:48 GMT</pubDate>
      <description>I did a short &lt;a href="http://www.cstechcast.com/home.aspx?Episode=14"&gt;podcast &lt;/a&gt;for
Consortio Services about Software as a Service as part of their weekly techcast. 
&lt;br&gt;
&lt;br&gt;
I very briefly cover what SaaS is about and some of the critical issues facing organizations
looking at delivering services using the SaaS model.&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=de4bd4fe-242d-494c-b13f-1d77f01dfc9b" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,de4bd4fe-242d-494c-b13f-1d77f01dfc9b.aspx</comments>
      <category>All;SOA;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=5b1e5222-d09f-4000-a9ef-e3cd200dd5ef</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,5b1e5222-d09f-4000-a9ef-e3cd200dd5ef.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,5b1e5222-d09f-4000-a9ef-e3cd200dd5ef.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=5b1e5222-d09f-4000-a9ef-e3cd200dd5ef</wfw:commentRss>
      <title>Speaking at VSLive! in San Francisco April 1-3.</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,5b1e5222-d09f-4000-a9ef-e3cd200dd5ef.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,5b1e5222-d09f-4000-a9ef-e3cd200dd5ef.aspx</link>
      <pubDate>Tue, 04 Mar 2008 17:24:29 GMT</pubDate>
      <description>I am going to be giving two talks and a workshop at VS Live! in San Francisco.&lt;br&gt;
&lt;br&gt;
The first talk is an &lt;a href="http://vslive.com/2008/sf/corenet.aspx#vc7"&gt;"Introduction
to Windows Workflow Foundation"&lt;/a&gt; where I explain both the business reasons why
Microsoft developed Workflow Foundation as well as the technical fundamentals. This
talk will help you understand not only how to build workflows, but when it makes sense
to do so and when to use some other technology.&lt;br&gt;
&lt;br&gt;
The second is "&lt;a href="http://vslive.com/2008/sf/corenet.aspx#vc63"&gt;Workflow Services
Using WCF and WWF&lt;/a&gt;". WCF allows you to encapsulate business functionality into
a service. Windows Workflow Foundation allows you to integrate these services into
long running business processes. The latest version of the .NET Framework (3.5) makes
it much easier to use these technologies together to build some very powerful business
applications.&lt;br&gt;
&lt;br&gt;
On Thursday I will give a &lt;a href="http://vslive.com/2008/sf/workshops.aspx#vpo2"&gt;whole
day tutorial&lt;/a&gt; on Workflow Foundation where will dive into the details of how to
use this technology to build business applications.&lt;br&gt;
&lt;br&gt;
Other speakers will talk about VSTS, ALM, Silverlight, AJAX, .NET Framework 3.0 and
3.5, Sharepoint 2007, Windows WF, Visual Studio 2008, SQL Server 2008, and much more.&lt;br&gt;
&lt;br&gt;
If you have not already registered for VSLive San Francisco, you can receive a $695
discount on the Gold Passport if you register using priority code&lt;font color="#000000" face="Times New Roman" size="3"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt; &lt;span style="color: red;"&gt;SPSTI&lt;/span&gt;.
More at &lt;a title="blocked::http://www.vslive.com/sf" href="http://www.vslive.com/sf"&gt;www.vslive.com/sf&lt;/a&gt; 
&lt;o:p&gt;
   &lt;br&gt;
   &lt;br&gt;
&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;&lt;font color="#000000" face="Times New Roman" size="3"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;.&lt;/span&gt;&lt;/font&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img src="http://www.reliablesoftware.com/DasBlog/content/binary/VSSF08_SeeMe_SPSTI.gif" border="0"&gt;&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=5b1e5222-d09f-4000-a9ef-e3cd200dd5ef" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,5b1e5222-d09f-4000-a9ef-e3cd200dd5ef.aspx</comments>
      <category>All;Microsoft .NET;SOA;Software Development;Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=96a71539-a8f8-4259-9b87-61111ef1cb8a</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,96a71539-a8f8-4259-9b87-61111ef1cb8a.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,96a71539-a8f8-4259-9b87-61111ef1cb8a.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=96a71539-a8f8-4259-9b87-61111ef1cb8a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">One of the great features in Visual Studio
   is the ability to startup more than one project at the same time. You do not need
   to create two solutions, for example, for a client and a server to be able to debug
   them both.<br /><br />
   I thought everybody knew how to do this, but when I found out that two members of
   a project team I am working with did not, I decided to blog how to do this.<br /><br />
   Select the solution in the Solution Explorer, right mouse click and you will see the
   following menu:<br /><p></p><img src="http://www.reliablesoftware.com/DasBlog/content/binary/StartupProjects.bmp" border="0" /><br /><br />
   Select the Set Startup Projects menu item, and a property page will appear that lists
   all the properties in the project. For example:<br /><br /><img src="content/binary/StartupProjectsPropertyPage1.bmp" border="0" /><br /><br />
   You can associate an action with each of the projects: None, Start, or Start without
   debugging.<br /><br /><img src="http://www.reliablesoftware.com/DasBlog/content/binary/StartupProjectsPropertyPageDropdown.bmp" border="0" /><br /><br />
   When you start execution, the projects that you wanted to startup will begin execution.
   If you allowed debugging, and set breakpoints, the debugger will stop at the appropriate
   places.<br /><img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=96a71539-a8f8-4259-9b87-61111ef1cb8a" /></body>
      <title>Starting Up Multiple Projects in Visual Studio 2008</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,96a71539-a8f8-4259-9b87-61111ef1cb8a.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,96a71539-a8f8-4259-9b87-61111ef1cb8a.aspx</link>
      <pubDate>Tue, 12 Feb 2008 20:13:48 GMT</pubDate>
      <description>One of the great features in Visual Studio is the ability to startup more than one project at the same time. You do not need to create two solutions, for example, for a client and a server to be able to debug them both.&lt;br&gt;
&lt;br&gt;
I thought everybody knew how to do this, but when I found out that two members of
a project team I am working with did not, I decided to blog how to do this.&lt;br&gt;
&lt;br&gt;
Select the solution in the Solution Explorer, right mouse click and you will see the
following menu:&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img src="http://www.reliablesoftware.com/DasBlog/content/binary/StartupProjects.bmp" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
Select the Set Startup Projects menu item, and a property page will appear that lists
all the properties in the project. For example:&lt;br&gt;
&lt;br&gt;
&lt;img src="content/binary/StartupProjectsPropertyPage1.bmp" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
You can associate an action with each of the projects: None, Start, or Start without
debugging.&lt;br&gt;
&lt;br&gt;
&lt;img src="http://www.reliablesoftware.com/DasBlog/content/binary/StartupProjectsPropertyPageDropdown.bmp" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
When you start execution, the projects that you wanted to startup will begin execution.
If you allowed debugging, and set breakpoints, the debugger will stop at the appropriate
places.&lt;br&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=96a71539-a8f8-4259-9b87-61111ef1cb8a" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,96a71539-a8f8-4259-9b87-61111ef1cb8a.aspx</comments>
      <category>All;Microsoft .NET;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=731a52aa-4ecb-4a59-97da-f45aa10a1503</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,731a52aa-4ecb-4a59-97da-f45aa10a1503.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,731a52aa-4ecb-4a59-97da-f45aa10a1503.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=731a52aa-4ecb-4a59-97da-f45aa10a1503</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div class="ItemText">
          <p>
            <font color="#000000" size="3">My Windows Workflow Shortcuts are now available on
         Amazon's Kindle Reader!</font>
          </p>
          <p>
            <font color="#000000" size="3">
              <a href="http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S70O/ref=sr_1_3/104-7015412-8703104?ie=UTF8&amp;s=books&amp;qid=1202776042&amp;sr=8-3">http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S70O/ref=sr_1_3/104-7015412-8703104?ie=UTF8&amp;s=books&amp;qid=1202776042&amp;sr=8-3</a>
              <br />
              <a href="http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S70Y/ref=sr_1_12/104-7015412-8703104?ie=UTF8&amp;s=books&amp;qid=1202776042&amp;sr=8-12">http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S70Y/ref=sr_1_12/104-7015412-8703104?ie=UTF8&amp;s=books&amp;qid=1202776042&amp;sr=8-12</a>
              <br />
              <a href="http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S71I/ref=sr_1_14/104-7015412-8703104?ie=UTF8&amp;s=books&amp;qid=1202776042&amp;sr=8-14">http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S71I/ref=sr_1_14/104-7015412-8703104?ie=UTF8&amp;s=books&amp;qid=1202776042&amp;sr=8-14</a>
              <br />
              <a href="http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S6Z0/ref=sr_1_10/104-7015412-8703104?ie=UTF8&amp;s=books&amp;qid=1202776042&amp;sr=8-10">http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S6Z0/ref=sr_1_10/104-7015412-8703104?ie=UTF8&amp;s=books&amp;qid=1202776042&amp;sr=8-10<br /></a>
              <br />
            </font>
          </p>
          <p>
            <font color="#000000" size="3">The associated source code (and links to the shortcuts
         on Safari) are still on my </font>
            <a href="ct.ashx?id=bcce3b20-c995-4c52-82ee-b140a6d33fc0&amp;url=http%3a%2f%2fwww.reliablesoftware.com%2fbook.html">
              <font color="#000000" size="3">web
         site</font>
            </a>
            <font color="#000000" size="3">. </font>
          </p>
          <p>
            <font color="#000000" size="3">This experiment is my first foray into the world of
         digital publishing and it will be interesting to see how it turns out. As of the moment,
         Amazon has no more Kindles <a href="http://www.amazon.com/Kindle-Amazons-Wireless-Reading-Device/dp/B000FI73MA">left</a>.
         If and when you use Kindle, let me know what you think of it as a mechanism for distributing
         technical content.<br /></font>
          </p>
          <p>
            <br />
          </p>
        </div>
        <p>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=731a52aa-4ecb-4a59-97da-f45aa10a1503" />
      </body>
      <title>Windows Workflow Shortcuts Now Available on Amazon Kindle</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,731a52aa-4ecb-4a59-97da-f45aa10a1503.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,731a52aa-4ecb-4a59-97da-f45aa10a1503.aspx</link>
      <pubDate>Tue, 12 Feb 2008 00:45:21 GMT</pubDate>
      <description>&lt;div class="ItemText"&gt;
   &lt;p&gt;
      &lt;font color="#000000" size="3"&gt;My Windows Workflow Shortcuts are now available on
      Amazon's Kindle Reader!&lt;/font&gt;
   &lt;/p&gt;
   &lt;p&gt;
      &lt;font color="#000000" size="3"&gt;&lt;a href="http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S70O/ref=sr_1_3/104-7015412-8703104?ie=UTF8&amp;amp;s=books&amp;amp;qid=1202776042&amp;amp;sr=8-3"&gt;http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S70O/ref=sr_1_3/104-7015412-8703104?ie=UTF8&amp;amp;s=books&amp;amp;qid=1202776042&amp;amp;sr=8-3&lt;/a&gt;
      &lt;br&gt;
      &lt;a href="http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S70Y/ref=sr_1_12/104-7015412-8703104?ie=UTF8&amp;amp;s=books&amp;amp;qid=1202776042&amp;amp;sr=8-12"&gt;http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S70Y/ref=sr_1_12/104-7015412-8703104?ie=UTF8&amp;amp;s=books&amp;amp;qid=1202776042&amp;amp;sr=8-12&lt;/a&gt;
      &lt;br&gt;
      &lt;a href="http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S71I/ref=sr_1_14/104-7015412-8703104?ie=UTF8&amp;amp;s=books&amp;amp;qid=1202776042&amp;amp;sr=8-14"&gt;http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S71I/ref=sr_1_14/104-7015412-8703104?ie=UTF8&amp;amp;s=books&amp;amp;qid=1202776042&amp;amp;sr=8-14&lt;/a&gt;
      &lt;br&gt;
      &lt;a href="http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S6Z0/ref=sr_1_10/104-7015412-8703104?ie=UTF8&amp;amp;s=books&amp;amp;qid=1202776042&amp;amp;sr=8-10"&gt;http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S6Z0/ref=sr_1_10/104-7015412-8703104?ie=UTF8&amp;amp;s=books&amp;amp;qid=1202776042&amp;amp;sr=8-10&lt;br&gt;
      &lt;/a&gt;
      &lt;br&gt;
      &lt;/font&gt;
   &lt;/p&gt;
   &lt;p&gt;
      &lt;font color="#000000" size="3"&gt;The associated source code (and links to the shortcuts
      on Safari) are still on my &lt;/font&gt;&lt;a href="ct.ashx?id=bcce3b20-c995-4c52-82ee-b140a6d33fc0&amp;amp;url=http%3a%2f%2fwww.reliablesoftware.com%2fbook.html"&gt;&lt;font color="#000000" size="3"&gt;web
      site&lt;/font&gt;&lt;/a&gt;&lt;font color="#000000" size="3"&gt;. &lt;/font&gt;
   &lt;/p&gt;
   &lt;p&gt;
      &lt;font color="#000000" size="3"&gt;This experiment is my first foray into the world of
      digital publishing and it will be interesting to see how it turns out. As of the moment,
      Amazon has no more Kindles &lt;a href="http://www.amazon.com/Kindle-Amazons-Wireless-Reading-Device/dp/B000FI73MA"&gt;left&lt;/a&gt;.
      If and when you use Kindle, let me know what you think of it as a mechanism for distributing
      technical content.&lt;br&gt;
      &lt;/font&gt;
   &lt;/p&gt;
   &lt;p&gt;
      &lt;br&gt;
   &lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=731a52aa-4ecb-4a59-97da-f45aa10a1503" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,731a52aa-4ecb-4a59-97da-f45aa10a1503.aspx</comments>
      <category>All;Microsoft .NET;Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=306e3133-8cd0-4e5a-9aa1-ad4fc7d14c92</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,306e3133-8cd0-4e5a-9aa1-ad4fc7d14c92.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,306e3133-8cd0-4e5a-9aa1-ad4fc7d14c92.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=306e3133-8cd0-4e5a-9aa1-ad4fc7d14c92</wfw:commentRss>
      <title>Debugging .NET Framework Libraries</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,306e3133-8cd0-4e5a-9aa1-ad4fc7d14c92.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,306e3133-8cd0-4e5a-9aa1-ad4fc7d14c92.aspx</link>
      <pubDate>Thu, 17 Jan 2008 14:28:02 GMT</pubDate>
      <description>&lt;p class="MsoNormal"&gt;
   &lt;font face="Times New Roman" size="3"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font color="#000000" face="Times New Roman" size="3"&gt;You
   can use the debugger in Visual Studio 2008 to step into some of the .NET Enterprise
   Libraries. This is a feature I asked for a number of years ago. Scott Guthrie just
   blogged about this. Here is his post and it includes &lt;/font&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;font face="Times New Roman" size="3"&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   the list of libraries to which this applies and some information about how to do it:&lt;/font&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;font face="Arial" size="2"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;a title="blocked::http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx" href="http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx&lt;/a&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;font face="Times New Roman" size="3"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
   &lt;/span&gt;&lt;/font&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;font face="Times New Roman" size="3"&gt;Here
   is a short MSDN video about this:&lt;/font&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;
      &lt;br&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;font face="Arial" size="2"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;a title="blocked::http://www.microsoft.com/uk/msdn/screencasts/screencast/304/Debugging-Into-the-NET-Framework-Source-Code-with-Visual-Studio-2008.aspx" href="http://www.microsoft.com/uk/msdn/screencasts/screencast/304/Debugging-Into-the-NET-Framework-Source-Code-with-Visual-Studio-2008.aspx"&gt;http://www.microsoft.com/uk/msdn/screencasts/screencast/304/Debugging-Into-the-NET-Framework-Source-Code-with-Visual-Studio-2008.aspx&lt;/a&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;font face="Arial" size="2"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
   &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=306e3133-8cd0-4e5a-9aa1-ad4fc7d14c92" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,306e3133-8cd0-4e5a-9aa1-ad4fc7d14c92.aspx</comments>
      <category>All;Microsoft .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=50e845e2-7de7-4834-9728-637c4406903a</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,50e845e2-7de7-4834-9728-637c4406903a.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,50e845e2-7de7-4834-9728-637c4406903a.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=50e845e2-7de7-4834-9728-637c4406903a</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font color="#000000" face="Times New Roman" size="3">The Windows Workflow Foundation
      (WF) ships with a Policy Activity that allows you to execute a set of rules against
      your workflow. This activity contains a design time rules editor that allows you to
      create a set of rules. At run time, the Policy Activity runs these rules using the
      WF Rules engine. </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3">Among other features, the rules
      engine allows you to prioritize rules and to set a chaining policy to govern rules
      evaluation.<span style="">  </span>The rules engine uses a set of Code DOM expressions
      to represent the rules. These rules can be run against any managed object, not just
      a workflow. Hence, the mechanisms of the rules engine have nothing to do with workflow.
      You can actually instantiate and use this rules engine without having to embed it
      inside of a workflow. You can use this rules engine to build rules-driven .NET applications.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3">I gave a <a href="../presentations.html##Workflow">talk</a> at
      the last Las Vegas VSLive! that demonstrates how to do this. The first sample in the
      talk uses a workflow to demonstrate the power of the rules engine. The second and
      third samples use a very simple example to demonstrate how to use the engine outside
      of a workflow.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3">Two problems have to be solved.<span style="">  </span>You
      have to create a set of Code DOM expressions for the rules. You have to host the engine
      and supply it the rules and the object to run the rules against. </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3">While the details are in the
      slides and the examples, here is the gist of the solution. </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3">To use the rules engine at runtime,
      you pull the workflow rules out of some storage mechanism. The first sample uses a
      file. A WorkflowMarkupSerializer instance deserializes the stored rules to an instance
      of the RuleSet class.<span style="">  </span>A RuleValidation instance validates
      the rules against the type of the business object against which you will run the rules
      against. The Execute method on the RuleExecution class is used to invoke the rules
      engine and run the rules.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3">How do you create the rules?
      Ideally you would use some domain language, or domain based application, that would
      generate the rules as Code DOM expressions. If you were masochistic enough, you could
      create those expressions by hand. </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3">As an alternative, the second
      sample hosts the Workflow rules editor dialog (RuleSetDialog class) to let you create
      the rules. Unfortunately, like the workflow designer, this is a programmer's tool,
      not a business analyst's tool. <span style=""></span>A WorkflowMarkupSerializer
      instance is used to serialize the rules to the appropriate storage.<br /></font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3">I would be interested in hearing
      about how people use this engine to build rules driven applications.</font>
        </p>
        <p>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=50e845e2-7de7-4834-9728-637c4406903a" />
      </body>
      <title>Using the WF Rules Engine Outside of a Workflow</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,50e845e2-7de7-4834-9728-637c4406903a.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,50e845e2-7de7-4834-9728-637c4406903a.aspx</link>
      <pubDate>Thu, 22 Nov 2007 19:23:55 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font color="#000000" face="Times New Roman" size="3"&gt;The Windows Workflow Foundation
   (WF) ships with a Policy Activity that allows you to execute a set of rules against
   your workflow. This activity contains a design time rules editor that allows you to
   create a set of rules. At run time, the Policy Activity runs these rules using the
   WF Rules engine. &lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" face="Times New Roman" size="3"&gt;Among other features, the rules
   engine allows you to prioritize rules and to set a chaining policy to govern rules
   evaluation.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The rules engine uses a set of Code DOM expressions
   to represent the rules. These rules can be run against any managed object, not just
   a workflow. Hence, the mechanisms of the rules engine have nothing to do with workflow.
   You can actually instantiate and use this rules engine without having to embed it
   inside of a workflow. You can use this rules engine to build rules-driven .NET applications.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" face="Times New Roman" size="3"&gt;I gave a &lt;a href="../presentations.html##Workflow"&gt;talk&lt;/a&gt; at
   the last Las Vegas VSLive! that demonstrates how to do this. The first sample in the
   talk uses a workflow to demonstrate the power of the rules engine. The second and
   third samples use a very simple example to demonstrate how to use the engine outside
   of a workflow.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" face="Times New Roman" size="3"&gt;Two problems have to be solved.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;You
   have to create a set of Code DOM expressions for the rules. You have to host the engine
   and supply it the rules and the object to run the rules against. &lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" face="Times New Roman" size="3"&gt;While the details are in the
   slides and the examples, here is the gist of the solution. &lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" face="Times New Roman" size="3"&gt;To use the rules engine at runtime,
   you pull the workflow rules out of some storage mechanism. The first sample uses a
   file. A WorkflowMarkupSerializer instance deserializes the stored rules to an instance
   of the RuleSet class.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;A RuleValidation instance validates
   the rules against the type of the business object against which you will run the rules
   against. The Execute method on the RuleExecution class is used to invoke the rules
   engine and run the rules.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" face="Times New Roman" size="3"&gt;How do you create the rules?
   Ideally you would use some domain language, or domain based application, that would
   generate the rules as Code DOM expressions. If you were masochistic enough, you could
   create those expressions by hand. &lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" face="Times New Roman" size="3"&gt;As an alternative, the second
   sample hosts the Workflow rules editor dialog (RuleSetDialog class) to let you create
   the rules. Unfortunately, like the workflow designer, this is a programmer's tool,
   not a business analyst's tool.&amp;nbsp;&lt;span style=""&gt;&lt;/span&gt;A WorkflowMarkupSerializer
   instance is used to serialize the rules to the appropriate storage.&lt;br&gt;
   &lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;
   &lt;font color="#000000" face="Times New Roman" size="3"&gt;I would be interested in hearing
   about how people use this engine to build rules driven applications.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=50e845e2-7de7-4834-9728-637c4406903a" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,50e845e2-7de7-4834-9728-637c4406903a.aspx</comments>
      <category>All;Microsoft .NET;SOA;Software Development;Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=33ae57d1-2a6c-44a5-bb60-5f65325bfe28</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,33ae57d1-2a6c-44a5-bb60-5f65325bfe28.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,33ae57d1-2a6c-44a5-bb60-5f65325bfe28.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=33ae57d1-2a6c-44a5-bb60-5f65325bfe28</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Meditation is supposed to develop awareness,
   help focus your attention, and relax while increasing your focus. At one of my current
   clients we are developing a Software as a Service (SaaS) application. We have developed
   the following "meditative principles":<br /><br />
   1. It's not done until the tests are done.<br />
   2. If it's broke, fix it first.<br />
   3. If it's not in a script or code, it doesn't exist.<br />
   4. Don't explain, do it (but ask questions if you don't understand).<br /><br />
   And finally (with apologies to Bobby McFerrin),<br /><br />
    "Don't worry, be agile".<br /><br />
   Here is a little song I wrote<br />
   You might want to sing it note for note<br />
   Don't worry be agile<br />
   In every software we have some trouble<br />
   When you worry you make it double<br />
   Don't worry, be agile<br /><br />
   Ain't got no place to lay your head<br />
   Somebody came and took your machine<br />
   Don't worry, be agile<br />
   The manager say your code is late<br />
   He may have to litigate<br />
   Don't worry, be agile<br />
   Look at me I refactor<br />
   Don't worry, be agile<br />
   Here I give you my url<br />
   When you worry call me<br />
   I make you agile<br />
   Don't worry, be agile<br />
   Ain't got no time ain't got no style<br />
   Ain't got not money to make you smile<br />
   But don't worry self organize<br />
   Cause when you worry<br />
   Your face will frown<br />
   And that will bring everybody down<br />
   So don't worry, be agile (now)<br /><br />
   There is this little song I wrote<br />
   I hope you learn it note for note<br />
   Like good little developers<br />
   Don't worry, be agile<br />
   Listen to what I say<br />
   In your software expect some trouble<br />
   But when you worry<br />
   You make it double<br />
   Don't worry, be agile<br />
   Don't worry don't do it, be agile<br />
   Put a smile on your face<br />
   Don't bring everybody down like this<br />
   Don't worry, it will soon pass<br />
   Whatever it is<br />
   Don't worry, be agile<br /><br /><p></p><img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=33ae57d1-2a6c-44a5-bb60-5f65325bfe28" /></body>
      <title>Developer Meditations</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,33ae57d1-2a6c-44a5-bb60-5f65325bfe28.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,33ae57d1-2a6c-44a5-bb60-5f65325bfe28.aspx</link>
      <pubDate>Wed, 31 Oct 2007 17:32:21 GMT</pubDate>
      <description>Meditation is supposed to develop awareness, help focus your attention, and relax while increasing your focus. At one of my current clients we are developing a Software as a Service (SaaS) application. We have developed the following "meditative principles":&lt;br&gt;
&lt;br&gt;
1. It's not done until the tests are done.&lt;br&gt;
2. If it's broke, fix it first.&lt;br&gt;
3. If it's not in a script or code, it doesn't exist.&lt;br&gt;
4. Don't explain, do it (but ask questions if you don't understand).&lt;br&gt;
&lt;br&gt;
And finally (with apologies to Bobby McFerrin),&lt;br&gt;
&lt;br&gt;
&amp;nbsp;"Don't worry, be agile".&lt;br&gt;
&lt;br&gt;
Here is a little song I wrote&lt;br&gt;
You might want to sing it note for note&lt;br&gt;
Don't worry be agile&lt;br&gt;
In every software we have some trouble&lt;br&gt;
When you worry you make it double&lt;br&gt;
Don't worry, be agile&lt;br&gt;
&lt;br&gt;
Ain't got no place to lay your head&lt;br&gt;
Somebody came and took your machine&lt;br&gt;
Don't worry, be agile&lt;br&gt;
The manager say your code is late&lt;br&gt;
He may have to litigate&lt;br&gt;
Don't worry, be agile&lt;br&gt;
Look at me I refactor&lt;br&gt;
Don't worry, be agile&lt;br&gt;
Here I give you my url&lt;br&gt;
When you worry call me&lt;br&gt;
I make you agile&lt;br&gt;
Don't worry, be agile&lt;br&gt;
Ain't got no time ain't got no style&lt;br&gt;
Ain't got not money to make you smile&lt;br&gt;
But don't worry self organize&lt;br&gt;
Cause when you worry&lt;br&gt;
Your face will frown&lt;br&gt;
And that will bring everybody down&lt;br&gt;
So don't worry, be agile (now)&lt;br&gt;
&lt;br&gt;
There is this little song I wrote&lt;br&gt;
I hope you learn it note for note&lt;br&gt;
Like good little developers&lt;br&gt;
Don't worry, be agile&lt;br&gt;
Listen to what I say&lt;br&gt;
In your software expect some trouble&lt;br&gt;
But when you worry&lt;br&gt;
You make it double&lt;br&gt;
Don't worry, be agile&lt;br&gt;
Don't worry don't do it, be agile&lt;br&gt;
Put a smile on your face&lt;br&gt;
Don't bring everybody down like this&lt;br&gt;
Don't worry, it will soon pass&lt;br&gt;
Whatever it is&lt;br&gt;
Don't worry, be agile&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=33ae57d1-2a6c-44a5-bb60-5f65325bfe28" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,33ae57d1-2a6c-44a5-bb60-5f65325bfe28.aspx</comments>
      <category>All;SOA;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=bcce3b20-c995-4c52-82ee-b140a6d33fc0</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,bcce3b20-c995-4c52-82ee-b140a6d33fc0.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,bcce3b20-c995-4c52-82ee-b140a6d33fc0.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=bcce3b20-c995-4c52-82ee-b140a6d33fc0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font color="#000000" size="3">My series of four digitial articles have been published
      by Addison-Wesley. You can get the links to purchase them and the associated source
      code from my </font>
          <a href="http://www.reliablesoftware.com/book.html">
            <font color="#000000" size="3">web
      site</font>
          </a>
          <font color="#000000" size="3">. </font>
        </p>
        <p>
          <font color="#000000" size="3">I have tried to explain, in practical terms, what you
      need to know to actually build real world software using Windows Workflow. There is
      a tiny amount of theory to explain the underpinnings. The vast majority of the explanation
      uses code examples to illustrate all the key points. The last shortcut in the series
      has two extended examples that illustrate how to build custom activities.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=bcce3b20-c995-4c52-82ee-b140a6d33fc0" />
      </body>
      <title>Microsoft Windows Workflow Foundation Digital Shortcuts Finally Finished</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,bcce3b20-c995-4c52-82ee-b140a6d33fc0.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,bcce3b20-c995-4c52-82ee-b140a6d33fc0.aspx</link>
      <pubDate>Tue, 21 Aug 2007 02:31:31 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font color=#000000 size=3&gt;My series of four digitial articles have been published
   by Addison-Wesley. You can get the links to purchase them and the associated source
   code from my &lt;/font&gt;&lt;a href="http://www.reliablesoftware.com/book.html"&gt;&lt;font color=#000000 size=3&gt;web
   site&lt;/font&gt;&lt;/a&gt;&lt;font color=#000000 size=3&gt;. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font color=#000000 size=3&gt;I have tried to explain, in practical terms, what you need
   to know to actually build real world software using Windows Workflow. There is a tiny
   amount of theory to explain the underpinnings. The vast majority of the explanation
   uses code examples to illustrate all the key points. The last shortcut in the series
   has two extended examples that illustrate how to build custom activities.&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=bcce3b20-c995-4c52-82ee-b140a6d33fc0" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,bcce3b20-c995-4c52-82ee-b140a6d33fc0.aspx</comments>
      <category>All;Microsoft .NET;Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=6ad53956-fadf-46b4-80b2-495c5bc7c51c</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,6ad53956-fadf-46b4-80b2-495c5bc7c51c.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,6ad53956-fadf-46b4-80b2-495c5bc7c51c.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=6ad53956-fadf-46b4-80b2-495c5bc7c51c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">If you were to believe some of the more
      vocal advocates of the agile approach to building software, you would think that the
      word planning is evil. If you change the comparison to agility and discipline, then
      the contrast is more interesting.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">This is exactly what Barry Boehm and
      Richard Turner do in their book "</font>
          <a href="http://www.amazon.com/Balancing-Agility-Discipline-Guide-Perplexed/dp/0321186125/ref=pd_bbs_sr_1/102-5557133-3566512?ie=UTF8&amp;s=books&amp;qid=1179706435&amp;sr=8-1">
            <font face="Verdana" color="#0000ff" size="3">Balancing
      Agility and Discipline</font>
          </a>
          <font face="Verdana" color="#000000" size="3">".
      They argue that the agile approach to software development, and the discipline approach
      to software development have much to teach each other. Any given project must achieve
      the right mix of agility and discipline based on the nature of the project.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">One of the more interesting graphs in
      their book makes this point clear:</font>
        </p>
        <p style="MARGIN: 0in">
       
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <img style="WIDTH: 778px; HEIGHT: 520px" height="568" src="http://www.reliablesoftware.com/DasBlog/content/binary/AgilityDiscipline.bmp" width="757" border="0" />
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
       
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">You have to understand:</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">How mission critical your project is?</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">How many people are on the project?</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">How experienced are your people?</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">Do the people on your project handle
      uncertainty well, or do they prefer order?</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">How dynamic can the changes to requirements
      be?<span style="mso-spacerun: yes">  </span>Do you understand the domain model
      well?</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">As the graph makes clear, the more experienced
      developers you have that can handle vagueness and ambiguity, the more likely you can
      use more agile methods. On the other hand, the more mission critical, the more lives
      at stake, and the larger the project, the more project discipline you need.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">This is not an all or nothing choice.
      As the book makes clear, most of your projects will need some combination of agility
      and discipline. Nonetheless, no method is a silver bullet.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">Arthur Pyster (the Deputy Chief Information
      Officer for the FAA) writes in his foreword that even building air traffic control
      systems can incorporate some agile processes.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">I had not read their book in 2005 when
      I made this entry to my blog: </font>
          <a href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,847f84e5-3629-400b-807b-c6f8a1345454.aspx">
            <font face="Verdana" color="#0000ff" size="3">http://www.reliablesoftware.com/DasBlog/PermaLink,guid,847f84e5-3629-400b-807b-c6f8a1345454.aspx</font>
          </a>
          <font face="Verdana" color="#000000" size="3">.
      Reading this book reinforced my belief that one must continually evaluate the risk
      associated with a project, and adopt the appropriate methods that reduce that risk.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">
          </font> 
   </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=6ad53956-fadf-46b4-80b2-495c5bc7c51c" />
      </body>
      <title>Agility vs. Planning</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,6ad53956-fadf-46b4-80b2-495c5bc7c51c.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,6ad53956-fadf-46b4-80b2-495c5bc7c51c.aspx</link>
      <pubDate>Mon, 21 May 2007 00:48:02 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;If you were to believe some of the more vocal
   advocates of the agile approach to building software, you would think that the word
   planning is evil. If you change the comparison to agility and discipline, then the
   contrast is more interesting.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;This is exactly what Barry Boehm and Richard
   Turner do in their book "&lt;/font&gt;&lt;a href="http://www.amazon.com/Balancing-Agility-Discipline-Guide-Perplexed/dp/0321186125/ref=pd_bbs_sr_1/102-5557133-3566512?ie=UTF8&amp;amp;s=books&amp;amp;qid=1179706435&amp;amp;sr=8-1"&gt;&lt;font face=Verdana color=#0000ff size=3&gt;Balancing
   Agility and Discipline&lt;/font&gt;&lt;/a&gt;&lt;font face=Verdana color=#000000 size=3&gt;". They argue
   that the agile approach to software development, and the discipline approach to software
   development have much to teach each other. Any given project must achieve the right
   mix of agility and discipline based on the nature of the project.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;One of the more interesting graphs in their
   book makes this point clear:&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;img style="WIDTH: 778px; HEIGHT: 520px" height=568 src="http://www.reliablesoftware.com/DasBlog/content/binary/AgilityDiscipline.bmp" width=757 border=0&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;You have to understand:&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;How mission critical your project is?&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;How many people are on the project?&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;How experienced are your people?&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;Do the people on your project handle uncertainty
   well, or do they prefer order?&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;How dynamic can the changes to requirements
   be?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Do you understand the domain model
   well?&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;As the graph makes clear, the more experienced
   developers you have that can handle vagueness and ambiguity, the more likely you can
   use more agile methods. On the other hand, the more mission critical, the more lives
   at stake, and the larger the project, the more project discipline you need.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;This is not an all or nothing choice. As the
   book makes clear, most of your projects will need some combination of agility and
   discipline. Nonetheless, no method is a silver bullet.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;Arthur Pyster (the Deputy Chief Information
   Officer for the FAA) writes in his foreword that even building air traffic control
   systems can incorporate some agile processes.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;I had not read their book in 2005 when I made
   this entry to my blog: &lt;/font&gt;&lt;a href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,847f84e5-3629-400b-807b-c6f8a1345454.aspx"&gt;&lt;font face=Verdana color=#0000ff size=3&gt;http://www.reliablesoftware.com/DasBlog/PermaLink,guid,847f84e5-3629-400b-807b-c6f8a1345454.aspx&lt;/font&gt;&lt;/a&gt;&lt;font face=Verdana color=#000000 size=3&gt;.
   Reading this book reinforced my belief that one must continually evaluate the risk
   associated with a project, and adopt the appropriate methods that reduce that risk.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;
   &lt;font face=Verdana color=#000000 size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=6ad53956-fadf-46b4-80b2-495c5bc7c51c" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,6ad53956-fadf-46b4-80b2-495c5bc7c51c.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=f9d82815-27ed-4cce-9417-bf08913b2b31</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f9d82815-27ed-4cce-9417-bf08913b2b31.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,f9d82815-27ed-4cce-9417-bf08913b2b31.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=f9d82815-27ed-4cce-9417-bf08913b2b31</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Here are good instructions on how to install RC1 for the .NET Framework
      3.0: </font>
          <a href="http://blogs.msdn.com/pandrew/archive/2006/09/07/745701.aspx">
            <font size="3">http://blogs.msdn.com/pandrew/archive/2006/09/07/745701.aspx</font>
          </a>
          <font size="3">.
      People, including myself, have been having problems getting the Workflow Extensions
      for Visual Studio 2005 installed. I moved the installer file (Visual Studio 2005 Extensions
      for Windows Workflow Foundation RC5(EN).exe) to a different directory from the other
      installation files. The workflow extensions then installed just fine.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=f9d82815-27ed-4cce-9417-bf08913b2b31" />
      </body>
      <title>Installing NET Framework 3.0 RC1</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f9d82815-27ed-4cce-9417-bf08913b2b31.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f9d82815-27ed-4cce-9417-bf08913b2b31.aspx</link>
      <pubDate>Mon, 30 Oct 2006 01:39:59 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=3&gt;Here are good instructions on how to install RC1 for the .NET Framework
   3.0: &lt;/font&gt;&lt;a href="http://blogs.msdn.com/pandrew/archive/2006/09/07/745701.aspx"&gt;&lt;font size=3&gt;http://blogs.msdn.com/pandrew/archive/2006/09/07/745701.aspx&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt;.
   People, including myself,&amp;nbsp;have been having problems getting the Workflow Extensions
   for Visual Studio 2005 installed. I moved the installer file (Visual Studio 2005 Extensions
   for Windows Workflow Foundation RC5(EN).exe) to a different directory from the other
   installation files. The workflow extensions then installed just fine.&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=f9d82815-27ed-4cce-9417-bf08913b2b31" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,f9d82815-27ed-4cce-9417-bf08913b2b31.aspx</comments>
      <category>All;Microsoft .NET;Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=95a481ff-c079-4bba-b7ad-dc35524e6b44</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,95a481ff-c079-4bba-b7ad-dc35524e6b44.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,95a481ff-c079-4bba-b7ad-dc35524e6b44.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=95a481ff-c079-4bba-b7ad-dc35524e6b44</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">David Chappell (</font>
          <a href="http://www.davidchappell.com/HTML_email/Opinari_No16_8_06.html">
            <font size="3">http://www.davidchappell.com/HTML_email/Opinari_No16_8_06.html</font>
          </a>
          <font size="3">)
      argues that SOA may not foster the service reuse that everyone has been hoping for.
      I think his analysis is correct, but I think with business services we at least
      have a reasonable hope of achieving reuse. Here we are least dealing with the way
      things actually happen in the world as opposed to programmer abstractions such as
      objects or components. That combined with the looser coupling of services gives me
      some hope.<br /><br />
      The reason why frameworks like .NET are successful is they reflect years and years
      of experience with programming problems. Many examples of reuse (such as file systems
      and compilers) are so embedded in our experience that we no longer see them for what
      they are.<br /><br />
      Reuse may fail here as well for all the reasons mentioned in David Chappell's analysis.
      At least now I feel we are on the right track.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=95a481ff-c079-4bba-b7ad-dc35524e6b44" />
      </body>
      <title>Software Reuse and SOA</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,95a481ff-c079-4bba-b7ad-dc35524e6b44.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,95a481ff-c079-4bba-b7ad-dc35524e6b44.aspx</link>
      <pubDate>Fri, 29 Sep 2006 22:00:37 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=3&gt;David Chappell (&lt;/font&gt;&lt;a href="http://www.davidchappell.com/HTML_email/Opinari_No16_8_06.html"&gt;&lt;font size=3&gt;http://www.davidchappell.com/HTML_email/Opinari_No16_8_06.html&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt;)
   argues that SOA may not foster the service reuse that everyone has been hoping for.
   I think his&amp;nbsp;analysis is correct, but I think with business services we at least
   have a reasonable hope of achieving reuse. Here we are least dealing with the way
   things actually happen in the world as opposed to programmer abstractions such as
   objects or components. That combined with the looser coupling of services gives me
   some hope.&lt;br&gt;
   &lt;br&gt;
   The reason why frameworks like .NET are successful is they reflect years and years
   of experience with programming problems. Many examples of reuse (such as file systems
   and compilers) are so embedded in our experience that we no longer see them for what
   they are.&lt;br&gt;
   &lt;br&gt;
   Reuse may fail here as well for all the reasons mentioned in David Chappell's analysis.
   At least now I feel we are on the right track.&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=95a481ff-c079-4bba-b7ad-dc35524e6b44" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,95a481ff-c079-4bba-b7ad-dc35524e6b44.aspx</comments>
      <category>All;SOA</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=8bc3f62a-4c3f-48d0-878b-7eb96746bc30</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,8bc3f62a-4c3f-48d0-878b-7eb96746bc30.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,8bc3f62a-4c3f-48d0-878b-7eb96746bc30.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=8bc3f62a-4c3f-48d0-878b-7eb96746bc30</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">The </font>
          <a href="http://www.oasis-open.org/committees/download.php/19361/soa-rm-cs.pdf">
            <font size="3">Reference
      Model for Service Oriented Architecture </font>
          </a>
          <font size="3">defines a vocabulary
      for building service-oriented systems. Put together by a technical committee operating
      under the auspices of the OASIS standards organization, it is the result of individuals
      and organizations representing vendors, users, governments, consulting organizations,
      and academic institutions.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">The Reference Model (RM) sees SOA as a means for organizing and using
      distributed capabilities that may be under the control of different ownership domains.
      The RM is not an architecture. It does not attempt to make any architecture normative.
      It does not try to make any standard or set of standards normative. </font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">It does provide a common set of semantics that can be used across different
      implementations. This does sound rather fancy. Nonetheless, just like Moliere's bourgeois
      gentlemen that found out he was speaking prose all his life, many industries have
      been using reference models all along. They just never had to define them explicitly.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">An architect for a residential dwelling knows that if they use the
      term door or window, the builder will understand what is meant. There are widely varied
      implementations of doors and windows depending, for example, if you are building a
      space station or an igloo. Nonetheless, everyone knows what the terms mean. Many of
      these terms are codified in building codes, and by standards bodies, and have evolved
      over the years. The software architecture community moves too quickly for such evolution;
      this is where standards organizations can help.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">Software architectures, for sure,<span style="mso-spacerun: yes"> </span>can
      have </font>
          <a href="http://www.opengroup.org/architecture/togaf8-doc/arch/chap31.html#tag_32_02">
            <font size="3">views
      and viewpoints</font>
          </a>
          <font size="3">, but the terms in which they are discussed
      have to be understood.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">The core concepts that the RM discusses are service, visibility, execution
      context,<span style="mso-spacerun: yes">  </span>service description, real world
      effect,<span style="mso-spacerun: yes">  </span>interaction, and contract and
      policy.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">I will discuss these core concepts over the next few posts.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">None of this work is going on in isolation, or is it intended to denigrate
      other work such as the WS* specifications, or organizations such as the ISO, IEEE,
      IETF, the Ontolog Forum or other groups. The reference model just supplies standard
      definitions so that it becomes easier for each group to communicate with the others.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=8bc3f62a-4c3f-48d0-878b-7eb96746bc30" />
      </body>
      <title>SOA Reference Model Committee Standard</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,8bc3f62a-4c3f-48d0-878b-7eb96746bc30.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,8bc3f62a-4c3f-48d0-878b-7eb96746bc30.aspx</link>
      <pubDate>Fri, 01 Sep 2006 16:32:59 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font size=3&gt;The &lt;/font&gt;&lt;a href="http://www.oasis-open.org/committees/download.php/19361/soa-rm-cs.pdf"&gt;&lt;font size=3&gt;Reference
   Model for Service Oriented Architecture &lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt;defines a vocabulary
   for building service-oriented systems. Put together by a technical committee operating
   under the auspices of the OASIS standards organization, it is the result of individuals
   and organizations representing vendors, users, governments, consulting organizations,
   and academic institutions.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font size=3&gt;The Reference Model (RM) sees SOA as a means for organizing and using
   distributed capabilities that may be under the control of different ownership domains.
   The RM is not an architecture. It does not attempt to make any architecture normative.
   It does not try to make any standard or set of standards normative. &lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font size=3&gt;It does provide a common set of semantics that can be used across different
   implementations. This does sound rather fancy. Nonetheless, just like Moliere's bourgeois
   gentlemen that found out he was speaking prose all his life, many industries have
   been using reference models all along. They just never had to define them explicitly.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font size=3&gt;An architect for a residential dwelling knows that if they use the term
   door or window, the builder will understand what is meant. There are widely varied
   implementations of doors and windows depending, for example, if you are building a
   space station or an igloo. Nonetheless, everyone knows what the terms mean. Many of
   these terms are codified in building codes, and by standards bodies, and have evolved
   over the years. The software architecture community moves too quickly for such evolution;
   this is where standards organizations can help.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font size=3&gt;Software architectures, for sure,&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;can
   have &lt;/font&gt;&lt;a href="http://www.opengroup.org/architecture/togaf8-doc/arch/chap31.html#tag_32_02"&gt;&lt;font size=3&gt;views
   and viewpoints&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt;, but the terms in which they are discussed
   have to be understood.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font size=3&gt;The core concepts that the RM discusses are service, visibility, execution
   context,&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;service description, real world
   effect,&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;interaction, and contract and
   policy.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font size=3&gt;I will discuss these core concepts over the next few posts.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font size=3&gt;None of this work is going on in isolation, or is it intended to denigrate
   other work such as the WS* specifications, or organizations such as the ISO, IEEE,
   IETF, the Ontolog Forum or other groups. The reference model just supplies standard
   definitions so that it becomes easier for each group to communicate with the others.&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=8bc3f62a-4c3f-48d0-878b-7eb96746bc30" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,8bc3f62a-4c3f-48d0-878b-7eb96746bc30.aspx</comments>
      <category>All;SOA</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=52c84cb4-43a2-4135-8994-36456bdad96b</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,52c84cb4-43a2-4135-8994-36456bdad96b.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,52c84cb4-43a2-4135-8994-36456bdad96b.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=52c84cb4-43a2-4135-8994-36456bdad96b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">I have updated the workflow examples on my site to the most recent
      Workflow version.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=52c84cb4-43a2-4135-8994-36456bdad96b" />
      </body>
      <title>Workflow Samples Updated</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,52c84cb4-43a2-4135-8994-36456bdad96b.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,52c84cb4-43a2-4135-8994-36456bdad96b.aspx</link>
      <pubDate>Tue, 15 Aug 2006 04:03:15 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=3&gt;I have updated the workflow examples on my site to the most recent Workflow
   version.&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=52c84cb4-43a2-4135-8994-36456bdad96b" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,52c84cb4-43a2-4135-8994-36456bdad96b.aspx</comments>
      <category>All;Microsoft .NET;Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=567cb193-ccdf-44da-a8d4-5721ac7d2b91</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,567cb193-ccdf-44da-a8d4-5721ac7d2b91.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,567cb193-ccdf-44da-a8d4-5721ac7d2b91.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=567cb193-ccdf-44da-a8d4-5721ac7d2b91</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">I would like to thank all those who helped me achieve an Microsoft
      MVP award for Visual Developer - Solutions Architect.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=567cb193-ccdf-44da-a8d4-5721ac7d2b91" />
      </body>
      <title>Visual Developer - Solutions Architect Award</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,567cb193-ccdf-44da-a8d4-5721ac7d2b91.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,567cb193-ccdf-44da-a8d4-5721ac7d2b91.aspx</link>
      <pubDate>Tue, 04 Jul 2006 01:08:26 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=3&gt;I would like to thank all those who helped me achieve an Microsoft MVP
   award for Visual Developer - Solutions Architect.&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=567cb193-ccdf-44da-a8d4-5721ac7d2b91" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,567cb193-ccdf-44da-a8d4-5721ac7d2b91.aspx</comments>
      <category>All;Microsoft .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=9f769974-8f06-444d-abe6-ce7fd7c6bdb8</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,9f769974-8f06-444d-abe6-ce7fd7c6bdb8.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,9f769974-8f06-444d-abe6-ce7fd7c6bdb8.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=9f769974-8f06-444d-abe6-ce7fd7c6bdb8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in 0in 0in 0.5in; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-outline-level: 2">
          <font face="Verdana" color="#000000">"You are so young; you stand before beginnings.
      I would like to beg of you,</font>
        </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in 0in 0in 0.5in; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-outline-level: 2">
          <font face="Verdana" color="#000000">dear friend, as well as I can, to have patience
      with everything that remains unsolved in your heart. Try to love the questions themselves,
      like locked rooms and like books written in foreign languages. Do not now look for
      the answers. They cannot now be given to you because you could not live them. At present
      you need to live the question."</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana; mso-outline-level: 2">
          <font color="#000000" size="3">
          </font> 
   </p>
        <ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 1.5in; DIRECTION: ltr; unicode-bidi: embed" type="disc">
          <li style="MARGIN-TOP: 0px; FONT-SIZE: 12pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 3">
            <span style="FONT-STYLE: italic; FONT-FAMILY: Arial">
              <font face="Verdana" color="#000000">Rainer
         Maria Rilke, Letters to a Young Poet</font>
            </span>
          </li>
        </ul>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: Verdana; mso-outline-level: 3">
       
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1">
          <font face="Verdana" color="#000000">I learned programming in high school from a Fortran
      IV manual, which was like learning how to drive a car from the owner's manual—unexciting.
      Later, after taking an operating systems course at MIT, I gave up entirely on programming
      as a profession. I did not want to spend my life doing the same thing over and over
      again.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font color="#000000" size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1">
          <font face="Verdana" color="#000000">What made me change my mind and become a professional
      programmer? In large part it was Gerald M. Weinberg's <span style="FONT-STYLE: italic">The
      Psychology of Computer Programming</span>, which I first read in 1982. Weinberg not
      only demonstrated that programming was more than technology, it is a <span style="FONT-STYLE: italic">social</span> activity,
      but he showed how the social element related to the technical. In essence, he identified
      and addressed the types of fundamental questions that Rilke advised the young poet
      Franz Kappus to study. Such as:</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font color="#000000" size="3">
          </font> 
   </p>
        <ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 1in; DIRECTION: ltr; unicode-bidi: embed" type="disc">
          <li style="MARGIN-TOP: 0px; FONT-SIZE: 12pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 2">
            <span style="FONT-FAMILY: Arial">
              <font face="Verdana" color="#000000">“What does it
         mean when we say a program is good?” I learned from Weinberg that a good program is
         as much a matter of cultural fit as technological merit. A designer has to understand
         that tradeoffs are made not only among technical factors, but among technical, social
         and economic constraints. Too often, I have seen engineers try to build the “perfect”
         product while ignoring ease of use or budget constraints.</font>
            </span>
          </li>
        </ul>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana; mso-outline-level: 2">
          <font color="#000000" size="3">
          </font> 
   </p>
        <ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 1in; DIRECTION: ltr; unicode-bidi: embed" type="disc">
          <li style="MARGIN-TOP: 0px; FONT-SIZE: 12pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 2">
            <span style="FONT-FAMILY: Arial">
              <font face="Verdana" color="#000000">“How do you
         get programmers to work together as a team?” One programmer cannot do it all. Different
         people have different skills, different skills are needed at different parts of the
         project. </font>
            </span>
          </li>
        </ul>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana; mso-outline-level: 2">
          <font color="#000000">
          </font> 
   </p>
        <ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 1in; DIRECTION: ltr; unicode-bidi: embed" type="disc">
          <li style="MARGIN-TOP: 0px; FONT-SIZE: 12pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 2">
            <span style="FONT-FAMILY: Arial">
              <font face="Verdana" color="#000000">“What is leadership
         all about?” How do you manage change and performance? Why do many managers manipulate
         programmers and tread them poorly and then wonder why they get poor results? </font>
            </span>
          </li>
          <li style="MARGIN-TOP: 0px; FONT-SIZE: 12pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 2">
            <font color="#000000">
            </font>
          </li>
          <li style="MARGIN-TOP: 0px; FONT-SIZE: 12pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 2">
            <span style="FONT-FAMILY: Arial">
              <font face="Verdana" color="#000000">“How do you
         find good programmers?” And just what does it mean to be a good programmer? Weinberg
         was one of the first to point out the stupidity of aptitude testing for programmers,
         and the importance of understanding individual psychology in dealing with programmers.</font>
            </span>
          </li>
        </ul>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana; mso-outline-level: 2">
       
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1">
          <font face="Verdana">Weinberg confirmed my own intuition that software could have
      an enormous impact on society, and his discussion of programming as a social activity
      helped explain much of the “strange behavior” I saw around me as I began working on
      my first programs. For example, during one of my first projects, I saw that the inability
      of certain people to work together had more impact on the project’s outcome than the
      technological issues being debated.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1">
          <font face="Verdana">Weinberg examined what a naïve programmer would consider just
      technical topics and demonstrated how the elements of human personality and interactions
      between people had just as much, if not more influence over the outcome of a computer
      programming project than the technical issues and debates.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1">
          <font face="Verdana">By understanding the importance of questions such as these, even
      if not every question can be answered in every situation, my value as a programmer
      and designer transcends whatever today’s <span style="FONT-STYLE: italic">technology
      du jour</span> happens to be. I would have to say that Weinberg’s book took years
      off my apprenticeship, and saved me much aggravation.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1">
          <font face="Verdana">To this day, I view programming primarily as a human activity,
      with the technical merits secondary. This does not mean you can ignore the technical
      merits. What makes a programmer really great is not technical genius, but an understanding
      of the human context of what he or she is doing. Any programmer who creates a truly
      revolutionary and world-changing program understands this. Others did not, or did
      not care to, and their contributions are hidden behind or overwhelmed by others’ accomplishments.</font>
        </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
       
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1">
          <font face="Verdana">It is incredible that a twenty-five year old programming text
      containing examples illustrated with technologies that many programmers today cannot
      even conceive of—I recently taught a programming class where not one of the students
      had any idea what a punched card or paper tape was—is still a great book. </font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=9f769974-8f06-444d-abe6-ce7fd7c6bdb8" />
      </body>
      <title>My Thoughts on Weinberg's the Psychology of Computer Programming</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,9f769974-8f06-444d-abe6-ce7fd7c6bdb8.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,9f769974-8f06-444d-abe6-ce7fd7c6bdb8.aspx</link>
      <pubDate>Wed, 28 Jun 2006 18:35:20 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in 0in 0in 0.5in; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-outline-level: 2"&gt;
   &lt;font face=Verdana color=#000000&gt;"You are so young; you stand before beginnings. I
   would like to beg of you,&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in 0in 0in 0.5in; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-outline-level: 2"&gt;
   &lt;font face=Verdana color=#000000&gt;dear friend, as well as I can, to have patience with
   everything that remains unsolved in your heart. Try to love the questions themselves,
   like locked rooms and like books written in foreign languages. Do not now look for
   the answers. They cannot now be given to you because you could not live them. At present
   you need to live the question."&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana; mso-outline-level: 2"&gt;
   &lt;font color=#000000 size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 1.5in; DIRECTION: ltr; unicode-bidi: embed" type=disc&gt;
   &lt;li style="MARGIN-TOP: 0px; FONT-SIZE: 12pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 3"&gt;
      &lt;span style="FONT-STYLE: italic; FONT-FAMILY: Arial"&gt;&lt;font face=Verdana color=#000000&gt;Rainer
      Maria Rilke, Letters to a Young Poet&lt;/font&gt;&lt;/span&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: Verdana; mso-outline-level: 3"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1"&gt;
   &lt;font face=Verdana color=#000000&gt;I learned programming in high school from a Fortran
   IV manual, which was like learning how to drive a car from the owner's manual—unexciting.
   Later, after taking an operating systems course at MIT, I gave up entirely on programming
   as a profession. I did not want to spend my life doing the same thing over and over
   again.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font color=#000000 size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1"&gt;
   &lt;font face=Verdana color=#000000&gt;What made me change my mind and become a professional
   programmer? In large part it was Gerald M. Weinberg's &lt;span style="FONT-STYLE: italic"&gt;The
   Psychology of Computer Programming&lt;/span&gt;, which I first read in 1982. Weinberg not
   only demonstrated that programming was more than technology, it is a &lt;span style="FONT-STYLE: italic"&gt;social&lt;/span&gt; activity,
   but he showed how the social element related to the technical. In essence, he identified
   and addressed the types of fundamental questions that Rilke advised the young poet
   Franz Kappus to study. Such as:&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font color=#000000 size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 1in; DIRECTION: ltr; unicode-bidi: embed" type=disc&gt;
   &lt;li style="MARGIN-TOP: 0px; FONT-SIZE: 12pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 2"&gt;
      &lt;span style="FONT-FAMILY: Arial"&gt;&lt;font face=Verdana color=#000000&gt;“What does it mean
      when we say a program is good?” I learned from Weinberg that a good program is as
      much a matter of cultural fit as technological merit. A designer has to understand
      that tradeoffs are made not only among technical factors, but among technical, social
      and economic constraints. Too often, I have seen engineers try to build the “perfect”
      product while ignoring ease of use or budget constraints.&lt;/font&gt;&lt;/span&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana; mso-outline-level: 2"&gt;
   &lt;font color=#000000 size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 1in; DIRECTION: ltr; unicode-bidi: embed" type=disc&gt;
   &lt;li style="MARGIN-TOP: 0px; FONT-SIZE: 12pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 2"&gt;
      &lt;span style="FONT-FAMILY: Arial"&gt;&lt;font face=Verdana color=#000000&gt;“How do you get
      programmers to work together as a team?” One programmer cannot do it all. Different
      people have different skills, different skills are needed at different parts of the
      project. &lt;/font&gt;&lt;/span&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana; mso-outline-level: 2"&gt;
   &lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 1in; DIRECTION: ltr; unicode-bidi: embed" type=disc&gt;
   &lt;li style="MARGIN-TOP: 0px; FONT-SIZE: 12pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 2"&gt;
      &lt;span style="FONT-FAMILY: Arial"&gt;&lt;font face=Verdana color=#000000&gt;“What is leadership
      all about?” How do you manage change and performance? Why do many managers manipulate
      programmers and tread them poorly and then wonder why they get poor results? &lt;/font&gt;&lt;/span&gt; 
   &lt;li style="MARGIN-TOP: 0px; FONT-SIZE: 12pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 2"&gt;
      &lt;font color=#000000&gt;&lt;/font&gt; 
   &lt;li style="MARGIN-TOP: 0px; FONT-SIZE: 12pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 2"&gt;
      &lt;span style="FONT-FAMILY: Arial"&gt;&lt;font face=Verdana color=#000000&gt;“How do you find
      good programmers?” And just what does it mean to be a good programmer? Weinberg was
      one of the first to point out the stupidity of aptitude testing for programmers, and
      the importance of understanding individual psychology in dealing with programmers.&lt;/font&gt;&lt;/span&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana; mso-outline-level: 2"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1"&gt;
   &lt;font face=Verdana&gt;Weinberg confirmed my own intuition that software could have an
   enormous impact on society, and his discussion of programming as a social activity
   helped explain much of the “strange behavior” I saw around me as I began working on
   my first programs. For example, during one of my first projects, I saw that the inability
   of certain people to work together had more impact on the project’s outcome than the
   technological issues being debated.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1"&gt;
   &lt;font face=Verdana&gt;Weinberg examined what a naïve programmer would consider just technical
   topics and demonstrated how the elements of human personality and interactions between
   people had just as much, if not more influence over the outcome of a computer programming
   project than the technical issues and debates.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1"&gt;
   &lt;font face=Verdana&gt;By understanding the importance of questions such as these, even
   if not every question can be answered in every situation, my value as a programmer
   and designer transcends whatever today’s &lt;span style="FONT-STYLE: italic"&gt;technology
   du jour&lt;/span&gt; happens to be. I would have to say that Weinberg’s book took years
   off my apprenticeship, and saved me much aggravation.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;font size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1"&gt;
   &lt;font face=Verdana&gt;To this day, I view programming primarily as a human activity,
   with the technical merits secondary. This does not mean you can ignore the technical
   merits. What makes a programmer really great is not technical genius, but an understanding
   of the human context of what he or she is doing. Any programmer who creates a truly
   revolutionary and world-changing program understands this. Others did not, or did
   not care to, and their contributions are hidden behind or overwhelmed by others’ accomplishments.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1"&gt;
   &lt;font face=Verdana&gt;It is incredible that a twenty-five year old programming text containing
   examples illustrated with technologies that many programmers today cannot even conceive
   of—I recently taught a programming class where not one of the students had any idea
   what a punched card or paper tape was—is still a great book. &lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=9f769974-8f06-444d-abe6-ce7fd7c6bdb8" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,9f769974-8f06-444d-abe6-ce7fd7c6bdb8.aspx</comments>
      <category>All;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=0b6338de-88db-464f-9795-99f264181c87</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,0b6338de-88db-464f-9795-99f264181c87.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,0b6338de-88db-464f-9795-99f264181c87.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=0b6338de-88db-464f-9795-99f264181c87</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Here is my final dnrTV session: <font color="#003300"><a href="http://dnrtv.com/default.aspx?showID=24">http://dnrtv.com/default.aspx?showID=24</a></font><font color="#000000">.
      It covers advanced topics in Windows Workflow Foundation such as synchronization,
      transactions, and compensation.</font></font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=0b6338de-88db-464f-9795-99f264181c87" />
      </body>
      <title>Last dnrTV Workflow session on Advanced Workflow Topics</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,0b6338de-88db-464f-9795-99f264181c87.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,0b6338de-88db-464f-9795-99f264181c87.aspx</link>
      <pubDate>Mon, 26 Jun 2006 18:40:34 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=3&gt;Here is my final dnrTV session: &lt;font color=#003300&gt;&lt;a href="http://dnrtv.com/default.aspx?showID=24"&gt;http://dnrtv.com/default.aspx?showID=24&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt;.
   It covers advanced topics in Windows Workflow Foundation such as synchronization,
   transactions, and compensation.&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=0b6338de-88db-464f-9795-99f264181c87" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,0b6338de-88db-464f-9795-99f264181c87.aspx</comments>
      <category>All;Microsoft .NET;Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=38ada118-f397-4ea7-bb00-9efe438c6a17</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,38ada118-f397-4ea7-bb00-9efe438c6a17.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,38ada118-f397-4ea7-bb00-9efe438c6a17.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=38ada118-f397-4ea7-bb00-9efe438c6a17</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">I have signed the petition at: </font>
          <a href="http://www.mwdadvisors.com/resources/stop-the-madness.php">
            <font size="3">http://www.mwdadvisors.com/resources/stop-the-madness.php</font>
          </a>
          <font size="3">.
      SOA does not need another buzz word. I think SOA 2.0 ranks belong even ESB on the
      buzz word list.</font>
        </p>
        <p>
          <font size="3">This is also an experiment. We have heard of viral marketing. Let us
      see if we can have viral common sense.</font>
        </p>
        <p>
       
   </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=38ada118-f397-4ea7-bb00-9efe438c6a17" />
      </body>
      <title>SOA 2.0 is Madness</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,38ada118-f397-4ea7-bb00-9efe438c6a17.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,38ada118-f397-4ea7-bb00-9efe438c6a17.aspx</link>
      <pubDate>Wed, 21 Jun 2006 19:09:40 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=3&gt;I have signed the petition at: &lt;/font&gt;&lt;a href="http://www.mwdadvisors.com/resources/stop-the-madness.php"&gt;&lt;font size=3&gt;http://www.mwdadvisors.com/resources/stop-the-madness.php&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt;.
   SOA does not need another buzz word. I think SOA 2.0 ranks belong even ESB on the
   buzz word list.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;This is also an experiment. We have heard of viral marketing. Let us
   see if we can have viral common sense.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=38ada118-f397-4ea7-bb00-9efe438c6a17" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,38ada118-f397-4ea7-bb00-9efe438c6a17.aspx</comments>
      <category>All;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=d755fc13-aafe-4960-a2c2-5989f648a8d3</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,d755fc13-aafe-4960-a2c2-5989f648a8d3.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,d755fc13-aafe-4960-a2c2-5989f648a8d3.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=d755fc13-aafe-4960-a2c2-5989f648a8d3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
      How do workflow and service oriented architecture relate?
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
       
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
      The real question is how service oriented architecture (SOA) and business processes
      relate.
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
       
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
      Service orientation is about how to organize and utilize distributed capabilities
      that could be under the control of different owners.<sup>1</sup> Business Process
      Management (BPM) is about modeling, designing, deploying and managing business processes.<sup>2</sup><span style="mso-spacerun: yes">  </span>Business
      processes are the capabilities, or the users of those capabilities. Workflow is a
      technology that builds the automated part of a business process. It integrates human
      decision with synchronous and asynchronous software systems. Of course this is somewhat
      recursive because a workflow could use other services in its implementation. 
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
       
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
      For me, SOA and BPM are not in conflict. People talk about layering BPM on top of
      SOA. Or that SOA is for IT folks, and BPM is for business people. In today's world,
      business cannot afford to have people who just think IT, or just think business. Given
      the way the human mind works, multiple models are often needed to think about certain
      problems.<sup>3</sup> SOA and BPM are two different ways to think about the same problem:
      how organizations can best accomplish their missions. Thinking about business process
      will transform how you architect your services. Architecting your services will impact
      how you model your business processes.
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
       
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
       
   </p>
        <p style="MARGIN: 0in; VERTICAL-ALIGN: super; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <span style="FONT-SIZE: 12pt">
            <sup>1</sup>
          </span>
          <span style="FONT-SIZE: 10pt">
          </span>
          <span style="FONT-SIZE: 12pt">For
      more information about service oriented architecture take a look at the Reference
      Model that the OASIS TC that I am a member of has produced:<span style="mso-spacerun: yes">  </span></span>
          <a href="http://www.oasis-open.org/committees/download.php/18486/pr-2changes.pdf">
            <span style="FONT-SIZE: 12pt">http://www.oasis-open.org/committees/download.php/18486/pr-2changes.pdf</span>
          </a>
        </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
       
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; VERTICAL-ALIGN: super; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <sup>2</sup> See <a href="http://ww6.infoworld.com/products/print_friendly.jsp?link=/article/06/02/20/75095_08FEbpmmap_1.html">http://ww6.infoworld.com/products/print_friendly.jsp?link=/article/06/02/20/75095_08FEbpmmap_1.html</a></p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
       
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; VERTICAL-ALIGN: super; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <sup>3</sup> See "Mental Models" by P.N. Johnson-Laird in <span style="FONT-STYLE: italic">Foundations
      of Cognitive Science </span>edited by Michael I. Posner
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
       
   </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=d755fc13-aafe-4960-a2c2-5989f648a8d3" />
      </body>
      <title>Workflow and Service Orientation</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,d755fc13-aafe-4960-a2c2-5989f648a8d3.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,d755fc13-aafe-4960-a2c2-5989f648a8d3.aspx</link>
      <pubDate>Wed, 21 Jun 2006 18:54:58 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   How do workflow and service oriented architecture relate?
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   The real question is how service oriented architecture (SOA) and business processes
   relate.
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   Service orientation is about how to organize and utilize distributed capabilities
   that could be under the control of different owners.&lt;sup&gt;1&lt;/sup&gt; Business Process
   Management (BPM) is about modeling, designing, deploying and managing business processes.&lt;sup&gt;2&lt;/sup&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Business
   processes are the capabilities, or the users of those capabilities. Workflow is a
   technology that builds the automated part of a business process. It integrates human
   decision with synchronous and asynchronous software systems. Of course this is somewhat
   recursive because a workflow could use other services in its implementation. 
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   For me, SOA and BPM are not in conflict. People talk about layering BPM on top of
   SOA. Or that SOA is for IT folks, and BPM is for business people. In today's world,
   business cannot afford to have people who just think IT, or just think business. Given
   the way the human mind works, multiple models are often needed to think about certain
   problems.&lt;sup&gt;3&lt;/sup&gt; SOA and BPM are two different ways to think about the same problem:
   how organizations can best accomplish their missions. Thinking about business process
   will transform how you architect your services. Architecting your services will impact
   how you model your business processes.
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0in; VERTICAL-ALIGN: super; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;span style="FONT-SIZE: 12pt"&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt"&gt;For
   more information about service oriented architecture take a look at the Reference
   Model that the OASIS TC that I am a member of has produced:&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.oasis-open.org/committees/download.php/18486/pr-2changes.pdf"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;http://www.oasis-open.org/committees/download.php/18486/pr-2changes.pdf&lt;/span&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; VERTICAL-ALIGN: super; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;sup&gt;2&lt;/sup&gt; See &lt;a href="http://ww6.infoworld.com/products/print_friendly.jsp?link=/article/06/02/20/75095_08FEbpmmap_1.html"&gt;http://ww6.infoworld.com/products/print_friendly.jsp?link=/article/06/02/20/75095_08FEbpmmap_1.html&lt;/a&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; VERTICAL-ALIGN: super; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &lt;sup&gt;3&lt;/sup&gt; See "Mental Models" by P.N. Johnson-Laird in &lt;span style="FONT-STYLE: italic"&gt;Foundations
   of Cognitive Science &lt;/span&gt;edited by Michael I. Posner
&lt;/p&gt;
&lt;p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=d755fc13-aafe-4960-a2c2-5989f648a8d3" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,d755fc13-aafe-4960-a2c2-5989f648a8d3.aspx</comments>
      <category>All;Software Development;Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=f10f690b-ba63-46d5-af63-59a06766f504</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f10f690b-ba63-46d5-af63-59a06766f504.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,f10f690b-ba63-46d5-af63-59a06766f504.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=f10f690b-ba63-46d5-af63-59a06766f504</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">I was interviewed by Carl Franklin and Richard Campbell on .NET Rocks: </font>
          <a href="http://dotnetrocks.com/default.aspx?showID=183">
            <font size="3">http://dotnetrocks.com/default.aspx?showID=183</font>
          </a>. <font size="3">Yes
      we talked about Workflow and SOA. But we touched on other topics such as the failure
      of technology to really make foreign language learning any better.</font></p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=f10f690b-ba63-46d5-af63-59a06766f504" />
      </body>
      <title>.NET Rocks Interview</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f10f690b-ba63-46d5-af63-59a06766f504.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f10f690b-ba63-46d5-af63-59a06766f504.aspx</link>
      <pubDate>Mon, 19 Jun 2006 15:55:37 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=3&gt;I was interviewed by Carl Franklin and Richard Campbell on .NET Rocks: &lt;/font&gt;&lt;a href="http://dotnetrocks.com/default.aspx?showID=183"&gt;&lt;font size=3&gt;http://dotnetrocks.com/default.aspx?showID=183&lt;/font&gt;&lt;/a&gt;. &lt;font size=3&gt;Yes
   we talked about Workflow and SOA. But we touched on other topics such as the failure
   of technology to really make foreign language learning any better.&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=f10f690b-ba63-46d5-af63-59a06766f504" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,f10f690b-ba63-46d5-af63-59a06766f504.aspx</comments>
      <category>Microsoft .NET;Software Development;Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=ac32f567-205a-4439-9724-7cf34294aaa2</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,ac32f567-205a-4439-9724-7cf34294aaa2.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,ac32f567-205a-4439-9724-7cf34294aaa2.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=ac32f567-205a-4439-9724-7cf34294aaa2</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Here is part three of the Workflow Webcast series: <a href="http://dnrtv.com/default.aspx?showID=23">http://dnrtv.com/default.aspx?showID=23</a></font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=ac32f567-205a-4439-9724-7cf34294aaa2" />
      </body>
      <title>Workflow Webcast Part 3</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,ac32f567-205a-4439-9724-7cf34294aaa2.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,ac32f567-205a-4439-9724-7cf34294aaa2.aspx</link>
      <pubDate>Fri, 16 Jun 2006 15:43:27 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=3&gt;Here is part three of the Workflow Webcast series: &lt;a href="http://dnrtv.com/default.aspx?showID=23"&gt;http://dnrtv.com/default.aspx?showID=23&lt;/a&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=ac32f567-205a-4439-9724-7cf34294aaa2" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,ac32f567-205a-4439-9724-7cf34294aaa2.aspx</comments>
      <category>All;Microsoft .NET;Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=7a34e404-cc3f-4d1c-9162-87a66e4f590e</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,7a34e404-cc3f-4d1c-9162-87a66e4f590e.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,7a34e404-cc3f-4d1c-9162-87a66e4f590e.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=7a34e404-cc3f-4d1c-9162-87a66e4f590e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Here is the second talk on Workflow Foundation on Carl Franklin's
      dnrTV:</font>
        </p>
        <p>
          <a href="http://dnrtv.com/default.aspx?showID=22">
            <font color="#0000ff" size="3">http://dnrtv.com/default.aspx?showID=22</font>
          </a>
        </p>
        <p>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=7a34e404-cc3f-4d1c-9162-87a66e4f590e" />
      </body>
      <title>Workflow Webcast Part 2</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,7a34e404-cc3f-4d1c-9162-87a66e4f590e.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,7a34e404-cc3f-4d1c-9162-87a66e4f590e.aspx</link>
      <pubDate>Fri, 09 Jun 2006 14:30:19 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=3&gt;Here is the second talk on&amp;nbsp;Workflow Foundation on Carl Franklin's
   dnrTV:&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://dnrtv.com/default.aspx?showID=22"&gt;&lt;font color=#0000ff size=3&gt;http://dnrtv.com/default.aspx?showID=22&lt;/font&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=7a34e404-cc3f-4d1c-9162-87a66e4f590e" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,7a34e404-cc3f-4d1c-9162-87a66e4f590e.aspx</comments>
      <category>All;Microsoft .NET;Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=7594b6d6-c632-409a-88f5-122937000802</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,7594b6d6-c632-409a-88f5-122937000802.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,7594b6d6-c632-409a-88f5-122937000802.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=7594b6d6-c632-409a-88f5-122937000802</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Here is the first of four talks on Microsoft Windows Workflow Foundation
      that are appearing on Carl Franklin's dnrTV. This one was broadcast on June 2. Each
      of the following ones should appear in subsequent weeks.</font>
        </p>
        <p>
          <font color="#000000">
            <a href="http://dnrtv.com/default.aspx?showID=21">
              <font size="3">http://dnrtv.com/default.aspx?showID=2</font>
            </a>
          </font>
          <font size="3">1</font>
        </p>
        <a href="http://www.intellectualhedonism.com/2006/06/02/dnrTV21MichaelStiefelOnWindowsWorkflowFoundation1Of4.aspx">
          <font size="3">
          </font>
        </a>
        <p>
          <font size="3">
          </font> 
   </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=7594b6d6-c632-409a-88f5-122937000802" />
      </body>
      <title>Workflow Talk on dnrTV</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,7594b6d6-c632-409a-88f5-122937000802.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,7594b6d6-c632-409a-88f5-122937000802.aspx</link>
      <pubDate>Mon, 05 Jun 2006 04:06:36 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=3&gt;Here is the first of four talks on Microsoft Windows Workflow Foundation
   that are appearing on Carl Franklin's dnrTV. This one was broadcast on June 2. Each
   of the following ones should appear in subsequent weeks.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font color=#000000&gt;&lt;a href="http://dnrtv.com/default.aspx?showID=21"&gt;&lt;font size=3&gt;http://dnrtv.com/default.aspx?showID=2&lt;/font&gt;
   &lt;/font&gt;&lt;font size=3&gt;1&lt;/font&gt;&gt;
&lt;/p&gt;
&lt;a href="http://www.intellectualhedonism.com/2006/06/02/dnrTV21MichaelStiefelOnWindowsWorkflowFoundation1Of4.aspx"&gt;&lt;font size=3&gt;&lt;/font&gt;&lt;/a&gt; 
&lt;p&gt;
   &lt;font size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=7594b6d6-c632-409a-88f5-122937000802" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,7594b6d6-c632-409a-88f5-122937000802.aspx</comments>
      <category>All;Microsoft .NET;Workflow</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=82106fb4-7271-42a2-b2f2-9be19da24bdb</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,82106fb4-7271-42a2-b2f2-9be19da24bdb.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,82106fb4-7271-42a2-b2f2-9be19da24bdb.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=82106fb4-7271-42a2-b2f2-9be19da24bdb</wfw:commentRss>
      <title>A Software System is Not a Tree and Why Service Orientation Can Be a Good Thing</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,82106fb4-7271-42a2-b2f2-9be19da24bdb.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,82106fb4-7271-42a2-b2f2-9be19da24bdb.aspx</link>
      <pubDate>Tue, 07 Feb 2006 16:29:24 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="TEXT-ALIGN: center" align=center&gt;
   &lt;font size=3&gt;(Apologies to Christopher Alexander)&lt;/font&gt; 
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
   &lt;span&gt;&lt;font size=3&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
   &lt;font size=3&gt;Christopher Alexander, the architect who inspired the Design Patterns
   movement, wrote a two part article that appeared in the April and May 1965 issues
   of Architectural Forum entitled &lt;/font&gt;&lt;a href="http://www.rudi.net/node/317" target=_blank&gt;&lt;font size=3&gt;“The
   City is Not a Tree.”&lt;/font&gt; &lt;/a&gt;&lt;font size=3&gt;The tree in the title is not a biological
   tree, but refers to a hierarchy being used as a way to organize how modern cities
   are built.&lt;/font&gt; 
&lt;/p&gt;
&lt;p class=MsoNormal&gt;&lt;?XML:NAMESPACE PREFIX = O /&gt;
   &lt;o:p&gt;
      &lt;font size=3&gt;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
   &lt;font size=3&gt;We all try to organize the world into neat categories. It helps us make
   sense of the world. Unfortunately, those categories and subcategories force us to
   view the world as a set of hierarchical categories. Alexander argued that architects
   who think that way produce buildings and cities that are sterile and unlivable. For
   example, zoning that refuses to mix residential, industrial and commercial use has
   some very severe drawbacks in transportation, living conditions, and tax policy.&lt;/font&gt; 
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
   &lt;o:p&gt;
      &lt;font size=3&gt;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
   &lt;font size=3&gt;The world has too many interrelationships to be viewed as a hierarchy,
   it is really a semi-lattice. Now there are parts of the world that are hierarchies.
   But a hierarchy is a semi-lattice, but the reverse is not true. The point is that
   if you view the world as a hierarchy you miss the true picture.&lt;/font&gt; 
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
   &lt;o:p&gt;
      &lt;font size=3&gt;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
   &lt;font size=3&gt;Software often has to model some part of the world. The World Wide Web
   is a semi-lattice. Image what the Web would be like if it could only be structured
   as a hierarchical directory such as Yahoo. Don’t get me wrong; neat categories are
   often useful. But Search has become such an important part of the Web because it allows
   you to capture the relationships in a semi-lattice.&lt;/font&gt; 
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
   &lt;o:p&gt;
      &lt;font size=3&gt;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
   &lt;font size=3&gt;Take the classic example I used to give my software engineering students
   when teaching them about abstraction and object-oriented systems: How do you define
   a chair? Of course they start out with a standard definition. A chair has a back,
   a seat, and four legs. But what about a bean bag? Or even a table? In the end, what
   emerges is that a chair is about a relationship between a piece of anatomy and surface
   that can support it.&lt;span&gt;&lt;/span&gt;It is a relationship, not an object with constraints.&lt;/font&gt; 
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
   &lt;o:p&gt;
      &lt;font size=3&gt;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
   &lt;font size=3&gt;This is what led Alexander to focus on patterns and not components. Of
   course, some patterns could become components. But components (software or otherwise)
   are packaging artifacts, not fundamental abstractions. This is why the authors of &lt;i&gt;Design
   Patterns&lt;/i&gt; have the principle of "Favor object composition over class inheritance."
   Class inheritance is a hierarchy. Object composition allows you to build a semi-lattice
   if that is appropriate.&lt;/font&gt; 
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
   &lt;o:p&gt;
      &lt;font size=3&gt;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
   &lt;font size=3&gt;Focusing on relationships means you focus on behavior, on what happens
   in the real world. Systems built on behavior are more flexible and more scalable than
   those based on constrained objects. Of course not all systems have to be flexible
   and scalable. Flexible and scalable often conflict with other desired goals such as
   performance.&lt;/font&gt; 
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
   &lt;o:p&gt;
      &lt;font size=3&gt;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
   &lt;font size=3&gt;Service orientation is based on focusing on the relationships or behaviors
   between the capabilities of distributed services because ultimately, a service performs
   some action in the real world. &lt;span&gt;&lt;/span&gt;In service oriented systems you do not
   focus on constrained objects. You try to model the world as the semi-lattice it really
   is. 1&lt;br&gt;
   &lt;br&gt;
   [1] Look at &lt;/font&gt;&lt;a href="http://polaris.gseis.ucla.edu/pagre/simon.html"&gt;&lt;font size=3&gt;http://polaris.gseis.ucla.edu/pagre/simon.html&lt;/font&gt; &lt;/a&gt;&lt;font size=3&gt;for
   another interesting perspective.&lt;/font&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=82106fb4-7271-42a2-b2f2-9be19da24bdb" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,82106fb4-7271-42a2-b2f2-9be19da24bdb.aspx</comments>
      <category>All;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=dfd0d8ff-a9f3-49d5-8d75-054c638f7dc6</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,dfd0d8ff-a9f3-49d5-8d75-054c638f7dc6.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,dfd0d8ff-a9f3-49d5-8d75-054c638f7dc6.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=dfd0d8ff-a9f3-49d5-8d75-054c638f7dc6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">
            <span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana">One of the dogmas
      of messaging technology is that the "truth is always on the wire." In the context
      of interoperability that is certainly true. The message, not the platform object model
      that generated the message, is all that really exists between a service provider and
      consumer.</span>
            <br />
            <span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana">
            </span>
            <br />
            <span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana">Like all principles it has its
      limits. The statement the "truth is on the wire" only means that using an agreed upon
      message format is equivalent to a using a common syntax for a language such as English.
      It does not matter how you define the message format. XML Schema, RelaxNG, or just
      "ask Alice" are all equivalent. Humans are better at handling ambiguity than machines,
      hence English syntax can be a lot looser than a message format. Nonetheless, the point
      remains valid.</span>
            <br />
            <span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana">
            </span>
            <br />
            <span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana">Syntax tells you nothing about
      the semantics of the message. For those of you who abhor fancy terminology, semantics
      means nothing more or less than the real world actions that arise from processing
      the message.</span>
            <br />
            <span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana">
            </span>
            <br />
            <span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana">Just like you can misunderstand
      an English sentence, you can "misunderstand" a SOAP message. This misunderstanding
      may be a programming error, or a misunderstood or mismatched policy.</span>
            <br />
            <span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana">
            </span>
            <br />
            <span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana">For example, I send to my bank
      a correctly formatted message that says transfer $1000 from my cash reserve to my
      checking account. If the bank transfers the money from savings to checking, that is
      a programming error. The "wire truth" however was not violated.</span>
            <br />
            <span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana">
            </span>
            <br />
            <span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana">Now suppose that the bank made
      the correct transfer, but the bank's policy (which I did not know of at the time)
      was to report such transfers to a credit bureau. My altered credit score resulted
      in a higher interest rate on the loan I was applying for. Understanding a service's
      policy is as important as understanding the message format.</span>
            <br />
            <span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana">
            </span>
            <br />
            <span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana">Truth is not on the wire, truth
      is the real world effect of what happens when a SOAP message is processed. Truth is
      semantics.</span>
            <br />
            <span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana">
            </span>
          </font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=dfd0d8ff-a9f3-49d5-8d75-054c638f7dc6" />
      </body>
      <title>The Truth is Not Always on the Wire</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,dfd0d8ff-a9f3-49d5-8d75-054c638f7dc6.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,dfd0d8ff-a9f3-49d5-8d75-054c638f7dc6.aspx</link>
      <pubDate>Sat, 19 Nov 2005 16:27:35 GMT</pubDate>
      <description>
		&lt;p&gt;
   &lt;font size="3"&gt; &lt;span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana"&gt;One of the dogmas
   of messaging technology is that the "truth is always on the wire." In the context
   of interoperability that is certainly true. The message, not the platform object model
   that generated the message, is all that really exists between a service provider and
   consumer.&lt;/span&gt; 
   &lt;br /&gt;
   &lt;span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana"&gt; &lt;/span&gt; 
   &lt;br /&gt;
   &lt;span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana"&gt;Like all principles it has its
   limits. The statement the "truth is on the wire" only means that using an agreed upon
   message format is equivalent to a using a common syntax for a language such as English.
   It does not matter how you define the message format. XML Schema, RelaxNG, or just
   "ask Alice" are all equivalent. Humans are better at handling ambiguity than machines,
   hence English syntax can be a lot looser than a message format. Nonetheless, the point
   remains valid.&lt;/span&gt; 
   &lt;br /&gt;
   &lt;span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana"&gt; &lt;/span&gt; 
   &lt;br /&gt;
   &lt;span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana"&gt;Syntax tells you nothing about
   the semantics of the message. For those of you who abhor fancy terminology, semantics
   means nothing more or less than the real world actions that arise from processing
   the message.&lt;/span&gt; 
   &lt;br /&gt;
   &lt;span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana"&gt; &lt;/span&gt; 
   &lt;br /&gt;
   &lt;span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana"&gt;Just like you can misunderstand
   an English sentence, you can "misunderstand" a SOAP message. This misunderstanding
   may be a programming error, or a misunderstood or mismatched policy.&lt;/span&gt; 
   &lt;br /&gt;
   &lt;span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana"&gt; &lt;/span&gt; 
   &lt;br /&gt;
   &lt;span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana"&gt;For example, I send to my bank
   a correctly formatted message that says transfer $1000 from my cash reserve to my
   checking account. If the bank transfers the money from savings to checking, that is
   a programming error. The "wire truth" however was not violated.&lt;/span&gt; 
   &lt;br /&gt;
   &lt;span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana"&gt; &lt;/span&gt; 
   &lt;br /&gt;
   &lt;span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana"&gt;Now suppose that the bank made
   the correct transfer, but the bank's policy (which I did not know of at the time)
   was to report such transfers to a credit bureau. My altered credit score resulted
   in a higher interest rate on the loan I was applying for. Understanding a service's
   policy is as important as understanding the message format.&lt;/span&gt; 
   &lt;br /&gt;
   &lt;span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana"&gt; &lt;/span&gt; 
   &lt;br /&gt;
   &lt;span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana"&gt;Truth is not on the wire, truth
   is the real world effect of what happens when a SOAP message is processed. Truth is
   semantics.&lt;/span&gt; 
   &lt;br /&gt;
   &lt;span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana"&gt; &lt;/span&gt; &lt;/font&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=dfd0d8ff-a9f3-49d5-8d75-054c638f7dc6" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,dfd0d8ff-a9f3-49d5-8d75-054c638f7dc6.aspx</comments>
      <category>All;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=847f84e5-3629-400b-807b-c6f8a1345454</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,847f84e5-3629-400b-807b-c6f8a1345454.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,847f84e5-3629-400b-807b-c6f8a1345454.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=847f84e5-3629-400b-807b-c6f8a1345454</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Agile based software development methodologies often remind me of the
      story about the person who jumps off a 100 story building, and passing the 45th floor
      yells out "No problems yet!"<br /><br />
      Agile based software methods have many good ideas. Their critique of the waterfall
      method has great merit. The best documentation is the code itself. Document based
      solutions do not work. But it does no good to demolish one myth only to have it be
      replaced by another.<br /><br />
      To imagine that because the attempt to completely design everything up front is futile,
      the idea that you can iterate every few weeks and wind up with an adequate design
      is often wrong. That might work for a project that is strongly user interface or end-user
      driven. I doubt it would work for designing an air traffic control system, or system
      software such as Microsoft's Windows Communication Foundation. These kinds of projects
      have strong lifecycle requirements about safety, security, performance, or scalability.
      Often they require individuals to acquire new areas of knowledge or expertise.<br /><br />
      Barry Boehm's spiral model of software development is a much better approach.<sup>1</sup> The
      idea behind the spiral model is that at each choice point in the software development
      process one assess the risk that the project could fail to meet its goals. Based on
      that analysis the next step is to mitigate that risk. It might mean doing a prototype,
      refining the requirements, or doing more testing. Some of these tasks may be done
      concurrently. Analyzing the results of these steps might cause the development process
      to backtrack. In all cases, the views of all the project stakeholders (customers,
      developers, marketing, etc.) are considered at each analysis point.<br /><br />
      Given this approach, the classic view (from Boehm's original paper) looks like a spiral:<br /><br /></font>
          <a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.reliablesoftware.com/weblog/uploaded_images/spiral-712085.bmp">
            <font size="3">
              <img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://www.reliablesoftware.com/weblog/uploaded_images/spiral-707720.bmp" border="0" />
            </font>
          </a>
          <br />
          <br />
          <font size="3">Since the spiral model is a risk driven process, some circumstances
      might dictate an agile methodology. Other cases would require other approaches. By
      making risk the focus, rather than a </font>
          <a href="http://agilemanifesto.org/" target="_blank">
            <font size="3">manifesto
      of principles</font>
          </a>
          <font size="3">there is a higher probability of making the
      correct choices.<br /><br />
      Let risk mitigation guide your development process.<br /><br />
      1. Boehm's original paper appeared in IEEE Computer 21(5) 61-72 in 1988. In 2000 he </font>
          <a href="http://www.sei.cmu.edu/pub/documents/00.reports/pdf/00sr008.pdf" target="_blank">
            <font size="3">updated</font>
          </a>
          <font size="3">the
      model at the "Spiral Development: Experience, Principles, and Refinements Spiral Development
      Workshop". </font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=847f84e5-3629-400b-807b-c6f8a1345454" />
      </body>
      <title>Risk Based Software Development</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,847f84e5-3629-400b-807b-c6f8a1345454.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,847f84e5-3629-400b-807b-c6f8a1345454.aspx</link>
      <pubDate>Mon, 24 Oct 2005 15:26:08 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=3&gt;Agile based software development methodologies often remind me of the
   story about the person who jumps off a 100 story building, and passing the 45th floor
   yells out "No problems yet!"&lt;br&gt;
   &lt;br&gt;
   Agile based software methods have many good ideas. Their critique of the waterfall
   method has great merit. The best documentation is the code itself. Document based
   solutions do not work. But it does no good to demolish one myth only to have it be
   replaced by another.&lt;br&gt;
   &lt;br&gt;
   To imagine that because the attempt to completely design everything up front is futile,
   the idea that you can iterate every few weeks and wind up with an adequate design
   is often wrong. That might work for a project that is strongly user interface or end-user
   driven. I doubt it would work for designing an air traffic control system, or system
   software such as Microsoft's Windows Communication Foundation. These kinds of projects
   have strong lifecycle requirements about safety, security, performance, or scalability.
   Often they require individuals to acquire new areas of knowledge or expertise.&lt;br&gt;
   &lt;br&gt;
   Barry Boehm's spiral model of software development is a much better approach.&lt;sup&gt;1&lt;/sup&gt; The
   idea behind the spiral model is that at each choice point in the software development
   process one assess the risk that the project could fail to meet its goals. Based on
   that analysis the next step is to mitigate that risk. It might mean doing a prototype,
   refining the requirements, or doing more testing. Some of these tasks may be done
   concurrently. Analyzing the results of these steps might cause the development process
   to backtrack. In all cases, the views of all the project stakeholders (customers,
   developers, marketing, etc.) are considered at each analysis point.&lt;br&gt;
   &lt;br&gt;
   Given this approach, the classic view (from Boehm's original paper) looks like a spiral:&lt;br&gt;
   &lt;br&gt;
   &lt;/font&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.reliablesoftware.com/weblog/uploaded_images/spiral-712085.bmp"&gt;&lt;font size=3&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://www.reliablesoftware.com/weblog/uploaded_images/spiral-707720.bmp" border=0&gt; &lt;/font&gt;&lt;/a&gt;
   &lt;br&gt;
   &lt;br&gt;
   &lt;font size=3&gt;Since the spiral model is a risk driven process, some circumstances might
   dictate an agile methodology. Other cases would require other approaches. By making
   risk the focus, rather than a &lt;/font&gt;&lt;a href="http://agilemanifesto.org/" target=_blank&gt;&lt;font size=3&gt;manifesto
   of principles&lt;/font&gt; &lt;/a&gt;&lt;font size=3&gt;there is a higher probability of making the
   correct choices.&lt;br&gt;
   &lt;br&gt;
   Let risk mitigation guide your development process.&lt;br&gt;
   &lt;br&gt;
   1. Boehm's original paper appeared in IEEE Computer 21(5) 61-72 in 1988. In 2000 he &lt;/font&gt;&lt;a href="http://www.sei.cmu.edu/pub/documents/00.reports/pdf/00sr008.pdf" target=_blank&gt;&lt;font size=3&gt;updated&lt;/font&gt; &lt;/a&gt;&lt;font size=3&gt;the
   model at the "Spiral Development: Experience, Principles, and Refinements Spiral Development
   Workshop". &lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=847f84e5-3629-400b-807b-c6f8a1345454" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,847f84e5-3629-400b-807b-c6f8a1345454.aspx</comments>
      <category>All;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=aae83ad1-4c79-450c-b71f-14bb0e0720c1</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,aae83ad1-4c79-450c-b71f-14bb0e0720c1.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,aae83ad1-4c79-450c-b71f-14bb0e0720c1.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=aae83ad1-4c79-450c-b71f-14bb0e0720c1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">One of the benefits of service oriented systems is that they are loosely
      coupled. 
      <br /><br /></font>
          <a href="http://www.webservices.org/index.php/ws/content/view/full/39666">
            <font size="3">David
      Orchard</font>
          </a>
          <font size="3"> analyzes what loose coupling means from the perspective
      of the Web services stack. A human being can recognize that a field in a form is misplaced,
      software cannot. So for a particular message invocation, early binding is necessary.
      This is certainly true for standards. There needs to be a defined place for addresses
      and security tokens.<br /><br />
      Orchard asks us to imagine Purchase Order system. A particular piece of information
      in a particular message must be bound to the appropriate programming types. If you
      need to know the name of the purchaser, you must early bind to the format of that
      name. Or to use fancy language, the service must understand its semantics. But it
      is only necessary for those programming types that the service needs to understand.
      Here is where building service interactions as messages rather than as remote procedure
      calls (RPC) is important.<br /><br />
      If a service interaction is defined in terms of RPC, then if you change the semantics,
      you must change the service interface. As long as one type of the method call changes,
      the whole interface is broken. If you send messages (concretely XML messages), so
      long as the service can find the information it needs, the service is not bound to
      a particular message format. Other information can change, but the service does not
      care.<br /><br />
      For example, if a service processing a message does not care about security, they
      can ignore the WS-Security SOAP headers. Those headers can change and the service
      can ignore all the security possibilities. The inventory service does not care if
      the credit information changes.<br /><br />
      True, if XPath is used you are dependent on a certain structure to find information,
      but if you mark your documents with its version, or associated XML Schema, you could
      use the appropriate location path for the document. Or if you want to bind everything
      to type you can use the appropriate XML Schema instance to serialize the message to
      the appropriate programming types.<br /><br />
      Loose coupling at the application level is about inserting levels of indirection to
      handle versioning (so what else is new?). But a message can do this because at the
      service interface the message is opaque. A RPC is not opaque.<br /><br />
      At the application level loose coupling is how easy is to make a change that does
      not impact other parts of the system. With opaque messaging, a new version can be
      added without impacting other clients. If a service wants to reject a version it no
      longer supports, or does not yet support, it can do so without impacting other clients.
      In this restricted, but vitally important sense, semantic meaning in a Web service
      can be late bound.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=aae83ad1-4c79-450c-b71f-14bb0e0720c1" />
      </body>
      <title>What is Loose Coupling?</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,aae83ad1-4c79-450c-b71f-14bb0e0720c1.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,aae83ad1-4c79-450c-b71f-14bb0e0720c1.aspx</link>
      <pubDate>Fri, 05 Aug 2005 15:23:35 GMT</pubDate>
      <description>
		&lt;p&gt;
   &lt;font size="3"&gt;One of the benefits of service oriented systems is that they are loosely
   coupled. 
   &lt;br /&gt;
   &lt;br /&gt;
   &lt;/font&gt; &lt;a href="http://www.webservices.org/index.php/ws/content/view/full/39666"&gt; &lt;font size="3"&gt;David
   Orchard&lt;/font&gt; &lt;/a&gt; &lt;font size="3"&gt; analyzes what loose coupling means from the perspective
   of the Web services stack. A human being can recognize that a field in a form is misplaced,
   software cannot. So for a particular message invocation, early binding is necessary.
   This is certainly true for standards. There needs to be a defined place for addresses
   and security tokens.&lt;br /&gt;
   &lt;br /&gt;
   Orchard asks us to imagine Purchase Order system. A particular piece of information
   in a particular message must be bound to the appropriate programming types. If you
   need to know the name of the purchaser, you must early bind to the format of that
   name. Or to use fancy language, the service must understand its semantics. But it
   is only necessary for those programming types that the service needs to understand.
   Here is where building service interactions as messages rather than as remote procedure
   calls (RPC) is important.&lt;br /&gt;
   &lt;br /&gt;
   If a service interaction is defined in terms of RPC, then if you change the semantics,
   you must change the service interface. As long as one type of the method call changes,
   the whole interface is broken. If you send messages (concretely XML messages), so
   long as the service can find the information it needs, the service is not bound to
   a particular message format. Other information can change, but the service does not
   care.&lt;br /&gt;
   &lt;br /&gt;
   For example, if a service processing a message does not care about security, they
   can ignore the WS-Security SOAP headers. Those headers can change and the service
   can ignore all the security possibilities. The inventory service does not care if
   the credit information changes.&lt;br /&gt;
   &lt;br /&gt;
   True, if XPath is used you are dependent on a certain structure to find information,
   but if you mark your documents with its version, or associated XML Schema, you could
   use the appropriate location path for the document. Or if you want to bind everything
   to type you can use the appropriate XML Schema instance to serialize the message to
   the appropriate programming types.&lt;br /&gt;
   &lt;br /&gt;
   Loose coupling at the application level is about inserting levels of indirection to
   handle versioning (so what else is new?). But a message can do this because at the
   service interface the message is opaque. A RPC is not opaque.&lt;br /&gt;
   &lt;br /&gt;
   At the application level loose coupling is how easy is to make a change that does
   not impact other parts of the system. With opaque messaging, a new version can be
   added without impacting other clients. If a service wants to reject a version it no
   longer supports, or does not yet support, it can do so without impacting other clients.
   In this restricted, but vitally important sense, semantic meaning in a Web service
   can be late bound.&lt;/font&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=aae83ad1-4c79-450c-b71f-14bb0e0720c1" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,aae83ad1-4c79-450c-b71f-14bb0e0720c1.aspx</comments>
      <category>All;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=c2893d4c-2942-4989-bfd2-05bffecfdaf9</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,c2893d4c-2942-4989-bfd2-05bffecfdaf9.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,c2893d4c-2942-4989-bfd2-05bffecfdaf9.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=c2893d4c-2942-4989-bfd2-05bffecfdaf9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Sarbanes-Oxley mandates that public companies should be able to produce
      all materially relevant transactions during an audit. 
      <br /><br />
      In the world of service oriented architecture, huge volumes of business documents
      flow freely as messages between services. These services are orchestrated (or choreographed
      if you wish) to produced business processes. To give you some idea of the volume,
      some people fear that the volume of XML is starting to take larger and larger fractions
      of network bandwidth. This is why some are starting to push the use of Binary XML
      for SOA messages.<br /><br />
      In this world of huge stores of electronic messages and documents, how in the world
      do you find all the relevant ones? This is where XML Schema comes to the rescue. Your
      XML documents should be defined with schema, and hence subject to validation. Performance
      considerations may dictate that you do not validate your documents during message
      processing. Nonetheless, with schema definitions you should be able to query your
      messages to search and find the relevant documents.<br /><br />
      For example, if you need to find all transactions with a given company worth over
      a certain threshold, you have to the tools to find it.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=c2893d4c-2942-4989-bfd2-05bffecfdaf9" />
      </body>
      <title>Sarbanes Oxley and XML Schema</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,c2893d4c-2942-4989-bfd2-05bffecfdaf9.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,c2893d4c-2942-4989-bfd2-05bffecfdaf9.aspx</link>
      <pubDate>Tue, 29 Mar 2005 16:22:15 GMT</pubDate>
      <description>
		&lt;p&gt;
   &lt;font size="3"&gt;Sarbanes-Oxley mandates that public companies should be able to produce
   all materially relevant transactions during an audit. 
   &lt;br /&gt;
   &lt;br /&gt;
   In the world of service oriented architecture, huge volumes of business documents
   flow freely as messages between services. These services are orchestrated (or choreographed
   if you wish) to produced business processes. To give you some idea of the volume,
   some people fear that the volume of XML is starting to take larger and larger fractions
   of network bandwidth. This is why some are starting to push the use of Binary XML
   for SOA messages.&lt;br /&gt;
   &lt;br /&gt;
   In this world of huge stores of electronic messages and documents, how in the world
   do you find all the relevant ones? This is where XML Schema comes to the rescue. Your
   XML documents should be defined with schema, and hence subject to validation. Performance
   considerations may dictate that you do not validate your documents during message
   processing. Nonetheless, with schema definitions you should be able to query your
   messages to search and find the relevant documents.&lt;br /&gt;
   &lt;br /&gt;
   For example, if you need to find all transactions with a given company worth over
   a certain threshold, you have to the tools to find it.&lt;/font&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=c2893d4c-2942-4989-bfd2-05bffecfdaf9" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,c2893d4c-2942-4989-bfd2-05bffecfdaf9.aspx</comments>
      <category>All;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=6a2d683a-059a-4c72-8cc4-b06fa503d03d</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,6a2d683a-059a-4c72-8cc4-b06fa503d03d.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,6a2d683a-059a-4c72-8cc4-b06fa503d03d.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=6a2d683a-059a-4c72-8cc4-b06fa503d03d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Microsoft's Indigo platform will unify all the divergent transport
      technologies (ASMX, WSE, COM+, MSMQ, Remoting) that are in use today. For building
      a service on the .NET platform this is the technology you will use.<br /><br />
      What technology should you use today?<br /><br />
      The ASMX platform's programming model is the same as Indigo's. Attributes, indicating
      what technologies (security, reliability, etc.) you want the infrastructure to use
      are applied to methods. Hence, a converter will be provided to convert ASMX code to
      Indigo code.<br /><br />
      Does this mean ASMX should be the technology of choice? I would argue that WSE is
      the better technology to use. WSE's programming model is not that of Indigo. Classes
      and inheritance are used to interact with the WSE infrastructure. WSE will interoperate
      with Indigo. Nonetheless, the conceptual model of WSE is identical to that of Indigo.<br /><br />
      ASMX is tied to the HTTP transport and its request / response protocol. It encourages
      programmers to think of a service call as a remote procedure call with programming
      types, not as an interoperable, versioned XML document message validated by XML Schema. 
      <br /><br />
      Service developers need to think of request / response as one of several possible
      message exchange patterns (MEP). The most fundamental MEP, the one all MEPs are built
      from, as the WS-Addressing spec makes clear, is the one-way asynchronous message.
      Business services tend to be asynchronous; you apply for a loan and you do not hear
      back for days.<br /><br />
      Service messages can go through intermediaries before reaching the ultimate recipient.
      Each message segment may go over transports other than HTTP.<br /><br />
      WSE's transport classes allow you to build services that use different MEPs over various
      transports. The SOAP envelope classes make it easy to build the SOAP message body
      as XML, or serialized XML objects. You learn to think in terms of XML documents and
      messages, not execution environment dependent types.<br /><br />
      Using this conceptual model your services will last longer, and be easier to evolve
      in a business environment. That will be of more use to your business than using a
      technology that has a better upgrade path, but will have to be rewritten sooner because
      it is poorly designed and implemented.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=6a2d683a-059a-4c72-8cc4-b06fa503d03d" />
      </body>
      <title>Indigo, WSE, or ASMX for Developing .NET Web Services</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,6a2d683a-059a-4c72-8cc4-b06fa503d03d.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,6a2d683a-059a-4c72-8cc4-b06fa503d03d.aspx</link>
      <pubDate>Tue, 08 Mar 2005 16:21:11 GMT</pubDate>
      <description>
		&lt;p&gt;
   &lt;font size="3"&gt;Microsoft's Indigo platform will unify all the divergent transport
   technologies (ASMX, WSE, COM+, MSMQ, Remoting) that are in use today. For building
   a service on the .NET platform this is the technology you will use.&lt;br /&gt;
   &lt;br /&gt;
   What technology should you use today?&lt;br /&gt;
   &lt;br /&gt;
   The ASMX platform's programming model is the same as Indigo's. Attributes, indicating
   what technologies (security, reliability, etc.) you want the infrastructure to use
   are applied to methods. Hence, a converter will be provided to convert ASMX code to
   Indigo code.&lt;br /&gt;
   &lt;br /&gt;
   Does this mean ASMX should be the technology of choice? I would argue that WSE is
   the better technology to use. WSE's programming model is not that of Indigo. Classes
   and inheritance are used to interact with the WSE infrastructure. WSE will interoperate
   with Indigo. Nonetheless, the conceptual model of WSE is identical to that of Indigo.&lt;br /&gt;
   &lt;br /&gt;
   ASMX is tied to the HTTP transport and its request / response protocol. It encourages
   programmers to think of a service call as a remote procedure call with programming
   types, not as an interoperable, versioned XML document message validated by XML Schema. 
   &lt;br /&gt;
   &lt;br /&gt;
   Service developers need to think of request / response as one of several possible
   message exchange patterns (MEP). The most fundamental MEP, the one all MEPs are built
   from, as the WS-Addressing spec makes clear, is the one-way asynchronous message.
   Business services tend to be asynchronous; you apply for a loan and you do not hear
   back for days.&lt;br /&gt;
   &lt;br /&gt;
   Service messages can go through intermediaries before reaching the ultimate recipient.
   Each message segment may go over transports other than HTTP.&lt;br /&gt;
   &lt;br /&gt;
   WSE's transport classes allow you to build services that use different MEPs over various
   transports. The SOAP envelope classes make it easy to build the SOAP message body
   as XML, or serialized XML objects. You learn to think in terms of XML documents and
   messages, not execution environment dependent types.&lt;br /&gt;
   &lt;br /&gt;
   Using this conceptual model your services will last longer, and be easier to evolve
   in a business environment. That will be of more use to your business than using a
   technology that has a better upgrade path, but will have to be rewritten sooner because
   it is poorly designed and implemented.&lt;/font&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=6a2d683a-059a-4c72-8cc4-b06fa503d03d" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,6a2d683a-059a-4c72-8cc4-b06fa503d03d.aspx</comments>
      <category>All;Microsoft .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=7e081bf2-31d8-4325-82bf-a37880998a01</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,7e081bf2-31d8-4325-82bf-a37880998a01.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,7e081bf2-31d8-4325-82bf-a37880998a01.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=7e081bf2-31d8-4325-82bf-a37880998a01</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Grady Booch has </font>
          <a href="http://www.theserverside.net/news/thread.tss?thread_id=30539#149250">
            <font size="3">fired</font>
          </a>
          <font size="3"> another
      attacking missile in the great debate over software factories, and the idea's defenders
      have replied. Microsoft's view of the world is outlined in a series of articles by
      Jack Greenfield on the MSDN site:<br /></font>
          <a href="http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnmaj/html/aj3softfac.asp">
            <font size="3">http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnmaj/html/aj3softfac.asp</font>
          </a>
          <font size="3">
          </font>
          <a href="http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnbda/html/softwarefactwo.asp">
            <font size="3">http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnbda/html/softwarefactwo.asp</font>
          </a>
          <font size="3">
          </font>
          <a href="http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnbda/html/softfact3.asp">
            <font size="3">http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnbda/html/softfact3.asp</font>
          </a>
          <br />
          <br />
          <font size="3">The basic idea behind software factories is to move the production
      of software from a craft to an industry resembling manufacturing. This is not a new
      idea. In the second article, after reviewing why these efforts have failed in the
      past, Greenfield says:<br /><br />
      "We are unable to achieve commercially significant levels of reuse beyond platform
      technology. The primary cause of this problem is that we develop most software products
      as individuals in isolation from other software products. We treat every software
      product as unique, although most are more similar to others than they are different
      from them. Return on investment in software development would be far higher if multiple
      versions or multiple products were taken into account during software product planning.
      Consequently, we rarely make commercially significant investments in identifying,
      harvesting, packaging and distributing reusable assets. The reuse that does occur
      is ad hoc, rather than systematic. Given the low probably that a component can be
      reused in a context other than the one for which it was designed, ad hoc reuse is
      almost an oxymoron. Reuse rarely occurs unless it is explicitly planned in advance."<br /><br />
      I agree as far as he goes, but I do not think he fully comes to grips with why the
      idea of software factories has a long way to go. No doubt part of the reason is that
      the idea of a software factory resembles the idea of artificial intelligence. Every
      success redefines the goal. Nonetheless, I think there is a more fundamental reason.<br /><br />
      Programming has always been a labor intensive activity. As a result, from the very
      start people have tried to figure out how to automate as much of the process as possible.
      Compilers were one of the very first attempts to automate software development. Today
      we take them for granted, but well into the 1970s people were still arguing over whether
      a good human assembly language programmer could code better than a compiler. Debuggers,
      linkers, loaders, file systems, operating systems, distributed transaction coordinators,
      were all invented to automate parts of the software development. How long did it take
      for the idea of a virtual machine (as in Java or .NET) to become practical for most
      software development?<br /><br />
      You can, as Greenfield does, view these artifacts as improved abstractions. Abstractions
      are very critical to software development. I view these developments differently.
      I see them as automating what we understand how to automate. Code libraries such as
      for .NET and Java are in the same category. After years of experience we now understand
      enough of some of the critical elements of certain parts of software development to
      encapsulate them in libraries.<br /><br />
      But software is not like other engineering pursuits such as bridge building. Most
      bridges, although they look different, are really one a few basic kinds. Because you
      cannot copy a bridge like you can copy a program, you need to build a new bridge at
      every place you need to cross a river. Hence you can much more easily replicate what
      you did before, or learn from experience.<br /><br />
      This really came became clear to me when I was a graduate student in nuclear engineering.
      In the reactor design course final exam we were asked to design a cooling system for
      a nuclear reactor. We were not, however, to use our fundamental understanding of physics
      and engineering to do this. We were to apply the American Society of Mechanical Engineering
      (AMSE) standards for cooling systems to do the design.<br /><br />
      Why has this been so difficult to do with software? Since software is easy to copy,
      you only need to create a new piece of software when you need to do something new.
      Automation is about understanding what you have done in the past. You cannot automate
      what you do not understand. So much of software development is done for things we
      have not done before. We do not know, or do not fully understand the domain models
      that Greenfield relies on for the idea of software factories. This is why the CASE
      tools, or the code generators of the past have not provided any reduction in cost
      and time. This is why I think UML based code generators will not be wildly successful
      either.<br /><br />
      Of course you need to understand the domain models. It is just that in a dynamic economic
      environment, you do not arrive at the knowledge in time to automate the process until
      it becomes yesterday's understanding. As yesterday's understanding it will take a
      while to see if it is fundamental enough to be worth automating.<br /><br />
      So long as software is about innovation, or doing what we do not yet understand how
      to do, it will always have a large craft component. Maybe automation will decrease
      the need for programmers, and thus reduce the labor cost. So far this has not happened
      in 60 years. People may use cheaper programmers, but that is another story for another
      time.<br /></font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=7e081bf2-31d8-4325-82bf-a37880998a01" />
      </body>
      <title>Software Factories Again</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,7e081bf2-31d8-4325-82bf-a37880998a01.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,7e081bf2-31d8-4325-82bf-a37880998a01.aspx</link>
      <pubDate>Fri, 24 Dec 2004 16:13:00 GMT</pubDate>
      <description>
		&lt;p&gt;
   &lt;font size="3"&gt;Grady Booch has &lt;/font&gt; &lt;a href="http://www.theserverside.net/news/thread.tss?thread_id=30539#149250"&gt; &lt;font size="3"&gt;fired&lt;/font&gt; &lt;/a&gt; &lt;font size="3"&gt; another
   attacking missile in the great debate over software factories, and the idea's defenders
   have replied. Microsoft's view of the world is outlined in a series of articles by
   Jack Greenfield on the MSDN site:&lt;br /&gt;
   &lt;/font&gt; &lt;a href="http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnmaj/html/aj3softfac.asp"&gt; &lt;font size="3"&gt;http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnmaj/html/aj3softfac.asp&lt;/font&gt; &lt;/a&gt; &lt;font size="3"&gt; &lt;/font&gt; &lt;a href="http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnbda/html/softwarefactwo.asp"&gt; &lt;font size="3"&gt;http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnbda/html/softwarefactwo.asp&lt;/font&gt; &lt;/a&gt; &lt;font size="3"&gt; &lt;/font&gt; &lt;a href="http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnbda/html/softfact3.asp"&gt; &lt;font size="3"&gt;http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnbda/html/softfact3.asp&lt;/font&gt; &lt;/a&gt; 
   &lt;br /&gt;
   &lt;br /&gt;
   &lt;font size="3"&gt;The basic idea behind software factories is to move the production
   of software from a craft to an industry resembling manufacturing. This is not a new
   idea. In the second article, after reviewing why these efforts have failed in the
   past, Greenfield says:&lt;br /&gt;
   &lt;br /&gt;
   "We are unable to achieve commercially significant levels of reuse beyond platform
   technology. The primary cause of this problem is that we develop most software products
   as individuals in isolation from other software products. We treat every software
   product as unique, although most are more similar to others than they are different
   from them. Return on investment in software development would be far higher if multiple
   versions or multiple products were taken into account during software product planning.
   Consequently, we rarely make commercially significant investments in identifying,
   harvesting, packaging and distributing reusable assets. The reuse that does occur
   is ad hoc, rather than systematic. Given the low probably that a component can be
   reused in a context other than the one for which it was designed, ad hoc reuse is
   almost an oxymoron. Reuse rarely occurs unless it is explicitly planned in advance."&lt;br /&gt;
   &lt;br /&gt;
   I agree as far as he goes, but I do not think he fully comes to grips with why the
   idea of software factories has a long way to go. No doubt part of the reason is that
   the idea of a software factory resembles the idea of artificial intelligence. Every
   success redefines the goal. Nonetheless, I think there is a more fundamental reason.&lt;br /&gt;
   &lt;br /&gt;
   Programming has always been a labor intensive activity. As a result, from the very
   start people have tried to figure out how to automate as much of the process as possible.
   Compilers were one of the very first attempts to automate software development. Today
   we take them for granted, but well into the 1970s people were still arguing over whether
   a good human assembly language programmer could code better than a compiler. Debuggers,
   linkers, loaders, file systems, operating systems, distributed transaction coordinators,
   were all invented to automate parts of the software development. How long did it take
   for the idea of a virtual machine (as in Java or .NET) to become practical for most
   software development?&lt;br /&gt;
   &lt;br /&gt;
   You can, as Greenfield does, view these artifacts as improved abstractions. Abstractions
   are very critical to software development. I view these developments differently.
   I see them as automating what we understand how to automate. Code libraries such as
   for .NET and Java are in the same category. After years of experience we now understand
   enough of some of the critical elements of certain parts of software development to
   encapsulate them in libraries.&lt;br /&gt;
   &lt;br /&gt;
   But software is not like other engineering pursuits such as bridge building. Most
   bridges, although they look different, are really one a few basic kinds. Because you
   cannot copy a bridge like you can copy a program, you need to build a new bridge at
   every place you need to cross a river. Hence you can much more easily replicate what
   you did before, or learn from experience.&lt;br /&gt;
   &lt;br /&gt;
   This really came became clear to me when I was a graduate student in nuclear engineering.
   In the reactor design course final exam we were asked to design a cooling system for
   a nuclear reactor. We were not, however, to use our fundamental understanding of physics
   and engineering to do this. We were to apply the American Society of Mechanical Engineering
   (AMSE) standards for cooling systems to do the design.&lt;br /&gt;
   &lt;br /&gt;
   Why has this been so difficult to do with software? Since software is easy to copy,
   you only need to create a new piece of software when you need to do something new.
   Automation is about understanding what you have done in the past. You cannot automate
   what you do not understand. So much of software development is done for things we
   have not done before. We do not know, or do not fully understand the domain models
   that Greenfield relies on for the idea of software factories. This is why the CASE
   tools, or the code generators of the past have not provided any reduction in cost
   and time. This is why I think UML based code generators will not be wildly successful
   either.&lt;br /&gt;
   &lt;br /&gt;
   Of course you need to understand the domain models. It is just that in a dynamic economic
   environment, you do not arrive at the knowledge in time to automate the process until
   it becomes yesterday's understanding. As yesterday's understanding it will take a
   while to see if it is fundamental enough to be worth automating.&lt;br /&gt;
   &lt;br /&gt;
   So long as software is about innovation, or doing what we do not yet understand how
   to do, it will always have a large craft component. Maybe automation will decrease
   the need for programmers, and thus reduce the labor cost. So far this has not happened
   in 60 years. People may use cheaper programmers, but that is another story for another
   time.&lt;br /&gt;
   &lt;/font&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=7e081bf2-31d8-4325-82bf-a37880998a01" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,7e081bf2-31d8-4325-82bf-a37880998a01.aspx</comments>
      <category>All;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=1ebd58df-4ad8-4db6-9d91-926098cdcc97</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,1ebd58df-4ad8-4db6-9d91-926098cdcc97.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,1ebd58df-4ad8-4db6-9d91-926098cdcc97.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=1ebd58df-4ad8-4db6-9d91-926098cdcc97</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <font size="3">Adam Bosworth has given a talk (discussed in his </font>
        <a href="http://www.adambosworth.net/archives/000031.html">
          <font size="3">blog </font>
        </a>
        <font size="3">entry)
   that has received a lot of attention and comment. He argues that software programs
   and their tools are way too complex and should be simple.<br /><br />
   The problem I have with his argument (and arguments similar to that) is that it posits
   a false binary choice: either be complex or simple. Complexity is a continuum. Bosworth
   argues against sophisticated abstractions. But it is sophisticated abstractions that
   make simplicity possible.<br /><br />
   After all, the computer is just atomic particles. Does any programmer worry about
   that? Or the gotos/branches that are all over the microcode? What about the instruction
   pipeline? That is all abstracted away in the "hardware". How many programmers worry
   about exactly how the operating system scheduler works? The whole idea behind class
   libraries that come with Java and .NET is to allow the programmer to concentrate on
   the business logic and not worry about the "plumbing code". 
   <br /><br />
   Occasionally we have to break through that abstraction and worry about exactly how
   things work. I discovered that when I wrote my first test code to test the performance
   of the first MIPS machines back in the 1980s. I found that if I did not return a value
   from my test routine, the loops would be optimized out. Most of the time we can remain
   blissfully ignorant of the abstractions. Performance, scalability, and most important
   of all security, are problems that are classic examples of where we often have to
   worry about complexity and look at the abstractions. The solutions to those problems
   are sometimes simple, but more often than not messy.<br /><br />
   You cannot divorce simplicity from abstraction. People dealing with complicated things
   need complicated abstractions. Engineers often make products and technologies that
   are too geeky, but sometimes things are too simple. After all, the Swiss Army knife
   comes in several sizes. You can match the level of simplicity that you need.<br /><br />
   The Swiss Army knife analogy strikes at the heart of the issue for me. You need to
   keep it simple enough. Saint-Exupery's famous saying applies here. Perfection is achieved
   in design when there is nothing more to take away, not when you have nothing more
   to add. In other words you have to keep it simple, but it still has to accomplish
   the task. The issue is to make it simple enough for your user, whether they be a writer
   of a blog, or a user of a class library. But even the simple user to be effective
   has to understand the limits of the tool, or to be more sophisticated, the abstractions
   and assumptions used. This applies to all sophisticated problems whether they be the
   accuracy of a medical test, the stability of Social Security, or the usefulness of
   Atom or RSS.<br /><br />
   Bosworth speaks about the virtue of "keeping it simple and sloppy and its effect on
   computing on the internet." Well if you have to be HIPPA compliant you cannot be sloppy
   and forgiving of human foibles and weaknesses. Human weaknesses and foibles are precisely
   the problem, and they cannot be abstracted or assumed away to achieve simplicity.
   If you do so, you will have a system so rigid, so bureaucratic, it would be unusable.<br /><br />
   Bosworth concludes by talking about achieving simplicity in the information search
   space to avoid information overload. He talks about data mining, and machine learning
   as the potential solutions. But they all rely on abstractions about what is important,
   and what is not. Users better understand how they work. I cannot wait for the day
   when the social scientists start deconstructing data mining and machine learning for
   their social assumptions. At that point both humans and machines will prove once again
   what Hobbes argued so many years ago. Knowledge and the assumptions that go with it
   are the product of human actions. Knowledge is partly determined by our social relationships
   and what we assume. Simplicity results from assumptions and abstractions. But we cannot
   hide from the mess in the name of simplicity.<br /></font>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=1ebd58df-4ad8-4db6-9d91-926098cdcc97" />
      </body>
      <title>Abstraction and Simplicity</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,1ebd58df-4ad8-4db6-9d91-926098cdcc97.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,1ebd58df-4ad8-4db6-9d91-926098cdcc97.aspx</link>
      <pubDate>Thu, 16 Dec 2004 15:52:47 GMT</pubDate>
      <description>
		&lt;font size="3"&gt;Adam Bosworth has given a talk (discussed in his &lt;/font&gt; &lt;a href="http://www.adambosworth.net/archives/000031.html"&gt; &lt;font size="3"&gt;blog &lt;/font&gt; &lt;/a&gt; &lt;font size="3"&gt;entry)
that has received a lot of attention and comment. He argues that software programs
and their tools are way too complex and should be simple.&lt;br /&gt;
&lt;br /&gt;
The problem I have with his argument (and arguments similar to that) is that it posits
a false binary choice: either be complex or simple. Complexity is a continuum. Bosworth
argues against sophisticated abstractions. But it is sophisticated abstractions that
make simplicity possible.&lt;br /&gt;
&lt;br /&gt;
After all, the computer is just atomic particles. Does any programmer worry about
that? Or the gotos/branches that are all over the microcode? What about the instruction
pipeline? That is all abstracted away in the "hardware". How many programmers worry
about exactly how the operating system scheduler works? The whole idea behind class
libraries that come with Java and .NET is to allow the programmer to concentrate on
the business logic and not worry about the "plumbing code". 
&lt;br /&gt;
&lt;br /&gt;
Occasionally we have to break through that abstraction and worry about exactly how
things work. I discovered that when I wrote my first test code to test the performance
of the first MIPS machines back in the 1980s. I found that if I did not return a value
from my test routine, the loops would be optimized out. Most of the time we can remain
blissfully ignorant of the abstractions. Performance, scalability, and most important
of all security, are problems that are classic examples of where we often have to
worry about complexity and look at the abstractions. The solutions to those problems
are sometimes simple, but more often than not messy.&lt;br /&gt;
&lt;br /&gt;
You cannot divorce simplicity from abstraction. People dealing with complicated things
need complicated abstractions. Engineers often make products and technologies that
are too geeky, but sometimes things are too simple. After all, the Swiss Army knife
comes in several sizes. You can match the level of simplicity that you need.&lt;br /&gt;
&lt;br /&gt;
The Swiss Army knife analogy strikes at the heart of the issue for me. You need to
keep it simple enough. Saint-Exupery's famous saying applies here. Perfection is achieved
in design when there is nothing more to take away, not when you have nothing more
to add. In other words you have to keep it simple, but it still has to accomplish
the task. The issue is to make it simple enough for your user, whether they be a writer
of a blog, or a user of a class library. But even the simple user to be effective
has to understand the limits of the tool, or to be more sophisticated, the abstractions
and assumptions used. This applies to all sophisticated problems whether they be the
accuracy of a medical test, the stability of Social Security, or the usefulness of
Atom or RSS.&lt;br /&gt;
&lt;br /&gt;
Bosworth speaks about the virtue of "keeping it simple and sloppy and its effect on
computing on the internet." Well if you have to be HIPPA compliant you cannot be sloppy
and forgiving of human foibles and weaknesses. Human weaknesses and foibles are precisely
the problem, and they cannot be abstracted or assumed away to achieve simplicity.
If you do so, you will have a system so rigid, so bureaucratic, it would be unusable.&lt;br /&gt;
&lt;br /&gt;
Bosworth concludes by talking about achieving simplicity in the information search
space to avoid information overload. He talks about data mining, and machine learning
as the potential solutions. But they all rely on abstractions about what is important,
and what is not. Users better understand how they work. I cannot wait for the day
when the social scientists start deconstructing data mining and machine learning for
their social assumptions. At that point both humans and machines will prove once again
what Hobbes argued so many years ago. Knowledge and the assumptions that go with it
are the product of human actions. Knowledge is partly determined by our social relationships
and what we assume. Simplicity results from assumptions and abstractions. But we cannot
hide from the mess in the name of simplicity.&lt;br /&gt;
&lt;/font&gt; &lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=1ebd58df-4ad8-4db6-9d91-926098cdcc97" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,1ebd58df-4ad8-4db6-9d91-926098cdcc97.aspx</comments>
      <category>All;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=f5c71ead-5eeb-49ce-b4ab-4a6a4f863ed2</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f5c71ead-5eeb-49ce-b4ab-4a6a4f863ed2.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,f5c71ead-5eeb-49ce-b4ab-4a6a4f863ed2.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=f5c71ead-5eeb-49ce-b4ab-4a6a4f863ed2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">David Chappell, </font>
          <a href="http://www.davidchappell.com/" target="_blank">
            <font size="3">in
      his latest newsletter</font>
          </a>
          <font size="3">, argues that Service Oriented Architecture
      (SOA) promotes software reuse far better than objects do. For him, object reuse usually
      fails for two reasons. First, in an evolving business environment it is difficult
      to come up with a good definition of a business object such as a customer. Second,
      software developers seem to catch the not-invented-here plague fairly easily.<br /><br />
      I certainly agree with this.<br /><br />
      One of my favorite questions when discussing object oriented design with students
      is to ask for the definition of a chair. Invariably, the answers will include legs.
      Then I ask them if an ottoman or a bean bag chair fits their definition. Coming up
      with good class definitions is hard. I have been involved in software development
      long enough to have frequently seen the not-invented-here syndrome.<br /><br />
      He also argues that the best examples of reuse occur with applications such as PeopleSoft
      or SAP. SOA reuse resembles application reuse. I certainly agree with this as well.<br /><br />
      But, in my opinion, the fundamental reason that reuse with SOA will be more frequent
      than with objects is that SOA reuse is loosely-coupled black box reuse, most object
      reuse is tightly-coupled white box reuse. SOA is a design pattern that has benefited
      from our struggles with object-oriented approaches.<br /><br />
      When you treat a component as a black box you interact with it through its external
      properties, or as we say in the programming world, its interfaces. You do not have
      to understand how a fork is built or what it is composed of. If you do not like your
      two-pronged desert fork, you get a three-pronged fork to eat your peas. You do not
      try to modify the two-pronged fork. The real world is loosely coupled.<br /><br />
      With inheritance you must understand the object's implementation. You must always
      be aware of the fragile base class problem. You can change the behavior of existing
      programs if you are not careful. This only reinforces the not-invented-here syndrome
      because it is perceived to be easier to write classes from scratch, than to try to
      understand another programmer's code. Objects are tightly coupled because they are
      connected through a stack and a linker/loader.<br /><br />
      Modern object oriented practitioners have realized this. The design patterns community
      emphasizes composition/delegation over inheritance, and interfaces over implementation.
      You use the component through its interface treating it as a black box. Interfaces
      produce looser coupling.<br /><br />
      SOA is a design pattern for building business process in the real world. It does not
      tell you how to architect your application. It does not provide an implementation.
      It does tell you to construct your services completely independent of each other.
      Services are independently deployed. Code or database tables are not shared between
      services. Services in a SOA interact through a loosely coupled interface that is defined
      as a series of messages.<br /><br />
      SOA is a continuation in the large of what good object oriented designs have started
      to become: less emphasis on the classes, and more emphasis on the loose coupling provided
      by interfaces. Obviously objects provide the actual implementation, but that is not
      how the users of those implementations view them. They view them as black box interfaces.<br /><br />
      Class frameworks such as J2EE and .NET have been successful. Both those frameworks,
      encapsulate stable, well-understood problems that the software world has been working
      on for over 50 years. Not only are the problems of business not well understood, the
      environment is quite dynamic. Services in a SOA are loosely coupled black boxes because
      they reflect the loosely coupled real world.<br /></font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=f5c71ead-5eeb-49ce-b4ab-4a6a4f863ed2" />
      </body>
      <title>Service Oriented Architecture and Reuse</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f5c71ead-5eeb-49ce-b4ab-4a6a4f863ed2.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f5c71ead-5eeb-49ce-b4ab-4a6a4f863ed2.aspx</link>
      <pubDate>Mon, 01 Nov 2004 15:51:38 GMT</pubDate>
      <description>
		&lt;p&gt;
   &lt;font size="3"&gt;David Chappell, &lt;/font&gt; &lt;a href="http://www.davidchappell.com/" target="_blank"&gt; &lt;font size="3"&gt;in
   his latest newsletter&lt;/font&gt; &lt;/a&gt; &lt;font size="3"&gt;, argues that Service Oriented Architecture
   (SOA) promotes software reuse far better than objects do. For him, object reuse usually
   fails for two reasons. First, in an evolving business environment it is difficult
   to come up with a good definition of a business object such as a customer. Second,
   software developers seem to catch the not-invented-here plague fairly easily.&lt;br /&gt;
   &lt;br /&gt;
   I certainly agree with this.&lt;br /&gt;
   &lt;br /&gt;
   One of my favorite questions when discussing object oriented design with students
   is to ask for the definition of a chair. Invariably, the answers will include legs.
   Then I ask them if an ottoman or a bean bag chair fits their definition. Coming up
   with good class definitions is hard. I have been involved in software development
   long enough to have frequently seen the not-invented-here syndrome.&lt;br /&gt;
   &lt;br /&gt;
   He also argues that the best examples of reuse occur with applications such as PeopleSoft
   or SAP. SOA reuse resembles application reuse. I certainly agree with this as well.&lt;br /&gt;
   &lt;br /&gt;
   But, in my opinion, the fundamental reason that reuse with SOA will be more frequent
   than with objects is that SOA reuse is loosely-coupled black box reuse, most object
   reuse is tightly-coupled white box reuse. SOA is a design pattern that has benefited
   from our struggles with object-oriented approaches.&lt;br /&gt;
   &lt;br /&gt;
   When you treat a component as a black box you interact with it through its external
   properties, or as we say in the programming world, its interfaces. You do not have
   to understand how a fork is built or what it is composed of. If you do not like your
   two-pronged desert fork, you get a three-pronged fork to eat your peas. You do not
   try to modify the two-pronged fork. The real world is loosely coupled.&lt;br /&gt;
   &lt;br /&gt;
   With inheritance you must understand the object's implementation. You must always
   be aware of the fragile base class problem. You can change the behavior of existing
   programs if you are not careful. This only reinforces the not-invented-here syndrome
   because it is perceived to be easier to write classes from scratch, than to try to
   understand another programmer's code. Objects are tightly coupled because they are
   connected through a stack and a linker/loader.&lt;br /&gt;
   &lt;br /&gt;
   Modern object oriented practitioners have realized this. The design patterns community
   emphasizes composition/delegation over inheritance, and interfaces over implementation.
   You use the component through its interface treating it as a black box. Interfaces
   produce looser coupling.&lt;br /&gt;
   &lt;br /&gt;
   SOA is a design pattern for building business process in the real world. It does not
   tell you how to architect your application. It does not provide an implementation.
   It does tell you to construct your services completely independent of each other.
   Services are independently deployed. Code or database tables are not shared between
   services. Services in a SOA interact through a loosely coupled interface that is defined
   as a series of messages.&lt;br /&gt;
   &lt;br /&gt;
   SOA is a continuation in the large of what good object oriented designs have started
   to become: less emphasis on the classes, and more emphasis on the loose coupling provided
   by interfaces. Obviously objects provide the actual implementation, but that is not
   how the users of those implementations view them. They view them as black box interfaces.&lt;br /&gt;
   &lt;br /&gt;
   Class frameworks such as J2EE and .NET have been successful. Both those frameworks,
   encapsulate stable, well-understood problems that the software world has been working
   on for over 50 years. Not only are the problems of business not well understood, the
   environment is quite dynamic. Services in a SOA are loosely coupled black boxes because
   they reflect the loosely coupled real world.&lt;br /&gt;
   &lt;/font&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=f5c71ead-5eeb-49ce-b4ab-4a6a4f863ed2" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,f5c71ead-5eeb-49ce-b4ab-4a6a4f863ed2.aspx</comments>
      <category>All;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=4ff24f38-3e75-4e01-9755-92e5a585806c</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,4ff24f38-3e75-4e01-9755-92e5a585806c.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,4ff24f38-3e75-4e01-9755-92e5a585806c.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=4ff24f38-3e75-4e01-9755-92e5a585806c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Everybody talks about how the New England Patriots Super Bowl win last
      year was a team effort. Whether it was the backup quarterback imitating Peyton Manning
      on the scout team, the statisticians, the players, the coach, or the personnel guy,
      everybody contributed.<br /><br />
      Teamwork, of course, is one the perennial topics du jour in the software world. Demarco
      and Lister’s classic Peopleware talks about it, introducing the concept of a “jelled”
      team. All the variants of Extreme Programming rave about it.<br /><br />
      But what makes a team good? It is difficult to have a good discussion about software
      teams because there are not enough public concrete case studies. Could sports teams
      provide a basis for such a discussion?<br /><br />
      Peter Drucker, the management expert, thought so. In a <a href="http://web.cba.neu.edu/%7Eewertheim/teams/drucker.htm">Wall
      Street Journal essay</a> written several years ago,</font>
          <a href="http://web.cba.neu.edu/%7Eewertheim/teams/drucker.htm">
          </a>
          <font size="3"> he
      discussed three paradigmatic teams: baseball, football and tennis.<br /><br />
      What type of team does your organization have? As Drucker makes clear in his essay
      these teams are distinct alternatives. They have unique strengths and weaknesses,
      but attempts to combine parts of each are a recipe for disaster.<br /><br />
      I bet a lot of traditional software organizations have baseball style teams. You do
      not play as baseball team, you are a member of the team. The third baseman never pitches,
      the tester does not do development. Designers do not have much interaction with developers.
      This is the old-style Detroit assembly line. The big advantage to this team is that
      it makes it easy to train and evaluate personnel. Everybody can be a "star" no matter
      how difficult they are to get along with. On many plays, certain players are not important.
      The left fielder does not do much on a routine ground ball to the second baseman.
      Symphony orchestras are like this as well.<br /><br />
      This approach works well when the task is well understood and can be reduced to "routine".
      Here one can understand the drive to outsource and offshore software tasks. If things
      are well defined, and competence exists elsewhere, then price drives all.<br /><br />
      The problem comes when you need to innovate quickly.<br /><br />
      Football teams are more flexible. There is no equivalent to the halfback option pass
      in baseball. On almost every play, every player is necessary, if for no other reason
      then to prevent some other player from getting to the ball carrier, or the quarterback.
      Everybody works in parallel. Unlike baseball, everybody has to follow the coach's
      orders or else the team will not win. You have to train together to be effective.<br /><br />
      How do you evaluate and train people? An individual's value is often related to how
      they complement the rest of the team, not only on their individual strengths and weaknesses.
      Play without a linebacker or a safety, and you will fail just as if you played without
      a quarterback. But why do quarterbacks get more money? Why do they both get more money
      than teachers? This is the old <a href="http://en.wikipedia.org/wiki/Paradox_of_value" target="_blank">diamond-water
      paradox </a>in economics</font>
          <font size="3">. Here you have to reward people based
      on their marginal value to your team, not on some absolute scale. It is much harder
      to outsource, much less offshore if you live in this world.<br /><br />
      You still need, as Drucker points out, a score to evaluate how well the team is doing.
      Though as any football fan will tell you, the score does not relate well to how an
      individual player is doing. That is why you have to "watch film" to evaluate players,
      something baseball sabermetricians (</font>
          <a class="" title="" href="http://www-math.bgsu.edu/%7Ealbert/papers/saber.html" target="_blank">
            <font size="3">http://www-math.bgsu.edu/~albert/papers/saber.html</font>
          </a>
          <font size="3">)
      do not have to do. Software managers in this world really have to understand what
      is going on in order to evaluate and train their people.<br /><br />
      Finally there are tennis doubles teams (or jazz combos). There are no clear players,
      only roles to be filled by different team members at different times. This is the
      ultimate in flexibility and adoptability to changing circumstances. But there really
      has to be a fit here. How do you train and compensate in such a world where you can
      succeed or fail, but there is no score. It is hard to relate the end result to the
      individual. You certainly cannot outsource or offshore here.<br /><br />
      As Drucker says, teams are tools, and you have to understand your environment and
      pick the appropriate approach. This is what management is all about.<br /></font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=4ff24f38-3e75-4e01-9755-92e5a585806c" />
      </body>
      <title>Should Software Imitate Sports?</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,4ff24f38-3e75-4e01-9755-92e5a585806c.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,4ff24f38-3e75-4e01-9755-92e5a585806c.aspx</link>
      <pubDate>Wed, 11 Aug 2004 14:15:58 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=3&gt;Everybody talks about how the New England Patriots Super Bowl win last
   year was a team effort. Whether it was the backup quarterback imitating Peyton Manning
   on the scout team, the statisticians, the players, the coach, or the personnel guy,
   everybody contributed.&lt;br&gt;
   &lt;br&gt;
   Teamwork, of course, is one the perennial topics du jour in the software world. Demarco
   and Lister’s classic Peopleware talks about it, introducing the concept of a “jelled”
   team. All the variants of Extreme Programming rave about it.&lt;br&gt;
   &lt;br&gt;
   But what makes a team good? It is difficult to have a good discussion about software
   teams because there are not enough public concrete case studies. Could sports teams
   provide a basis for such a discussion?&lt;br&gt;
   &lt;br&gt;
   Peter Drucker, the management expert, thought so. In a &lt;a href="http://web.cba.neu.edu/%7Eewertheim/teams/drucker.htm"&gt;Wall
   Street Journal essay&lt;/a&gt; written several years ago,&lt;/font&gt;&lt;a href="http://web.cba.neu.edu/%7Eewertheim/teams/drucker.htm"&gt;&lt;/a&gt;&lt;font size=3&gt; he
   discussed three paradigmatic teams: baseball, football and tennis.&lt;br&gt;
   &lt;br&gt;
   What type of team does your organization have? As Drucker makes clear in his essay
   these teams are distinct alternatives. They have unique strengths and weaknesses,
   but attempts to combine parts of each are a recipe for disaster.&lt;br&gt;
   &lt;br&gt;
   I bet a lot of traditional software organizations have baseball style teams. You do
   not play as baseball team, you are a member of the team. The third baseman never pitches,
   the tester does not do development. Designers do not have much interaction with developers.
   This is the old-style Detroit assembly line. The big advantage to this team is that
   it makes it easy to train and evaluate personnel. Everybody can be a "star" no matter
   how difficult they are to get along with. On many plays, certain players are not important.
   The left fielder does not do much on a routine ground ball to the second baseman.
   Symphony orchestras are like this as well.&lt;br&gt;
   &lt;br&gt;
   This approach works well when the task is well understood and can be reduced to "routine".
   Here one can understand the drive to outsource and offshore software tasks. If things
   are well defined, and competence exists elsewhere, then price drives all.&lt;br&gt;
   &lt;br&gt;
   The problem comes when you need to innovate quickly.&lt;br&gt;
   &lt;br&gt;
   Football teams are more flexible. There is no equivalent to the halfback option pass
   in baseball. On almost every play, every player is necessary, if for no other reason
   then to prevent some other player from getting to the ball carrier, or the quarterback.
   Everybody works in parallel. Unlike baseball, everybody has to follow the coach's
   orders or else the team will not win. You have to train together to be effective.&lt;br&gt;
   &lt;br&gt;
   How do you evaluate and train people? An individual's value is often related to how
   they complement the rest of the team, not only on their individual strengths and weaknesses.
   Play without a linebacker or a safety, and you will fail just as if you played without
   a quarterback. But why do quarterbacks get more money? Why do they both get more money
   than teachers? This is the old &lt;a href="http://en.wikipedia.org/wiki/Paradox_of_value" target=_blank&gt;diamond-water
   paradox &lt;/a&gt;in economics&lt;/font&gt;&lt;font size=3&gt;. Here you have to reward people based
   on their marginal value to your team, not on some absolute scale. It is much harder
   to outsource, much less offshore if you live in this world.&lt;br&gt;
   &lt;br&gt;
   You still need, as Drucker points out, a score to evaluate how well the team is doing.
   Though as any football fan will tell you, the score does not relate well to how an
   individual player is doing. That is why you have to "watch film" to evaluate players,
   something baseball sabermetricians (&lt;/font&gt; &lt;a class="" title="" href="http://www-math.bgsu.edu/%7Ealbert/papers/saber.html" target=_blank&gt;&lt;font size=3&gt;http://www-math.bgsu.edu/~albert/papers/saber.html&lt;/font&gt; &lt;/a&gt;&lt;font size=3&gt;)
   do not have to do. Software managers in this world really have to understand what
   is going on in order to evaluate and train their people.&lt;br&gt;
   &lt;br&gt;
   Finally there are tennis doubles teams (or jazz combos). There are no clear players,
   only roles to be filled by different team members at different times. This is the
   ultimate in flexibility and adoptability to changing circumstances. But there really
   has to be a fit here. How do you train and compensate in such a world where you can
   succeed or fail, but there is no score. It is hard to relate the end result to the
   individual. You certainly cannot outsource or offshore here.&lt;br&gt;
   &lt;br&gt;
   As Drucker says, teams are tools, and you have to understand your environment and
   pick the appropriate approach. This is what management is all about.&lt;br&gt;
   &lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=4ff24f38-3e75-4e01-9755-92e5a585806c" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,4ff24f38-3e75-4e01-9755-92e5a585806c.aspx</comments>
      <category>All;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=1b33c1df-1a33-4baf-a477-ac7431313d06</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,1b33c1df-1a33-4baf-a477-ac7431313d06.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,1b33c1df-1a33-4baf-a477-ac7431313d06.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=1b33c1df-1a33-4baf-a477-ac7431313d06</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">One of the recently discovered Internet Explorer bugs allows malicious
      sites to install key stroke recording code on your system. This certainly has got
      a lot of press and deservedly so because of the widespread presence of IE as a browser.<br /><br />
      Every time this happens I wonder, does open source produce more secure code? Do “more
      eyeballs” reviewing the code produce better code? Looking over the list of vulnerabilities
      on the US-Cert Issues Advisory list makes me doubt that this is true.<br /><br />
      Based on my experience, too many reviewers often make for poorer reviews. Remember
      the last time you had to sign off on a document with a long list of reviewers? The
      early reviewers glance at the document knowing more reviewers will look at it later.
      The later reviewers assume the early reviewers did most of the work already. The result
      is a lackadaisical, poor job of reviewing. You cannot tell me that the open source
      community is immune from the natural tendencies of human nature.<br /><br />
      Approval by committee is no different than design by committee. Just because the committee
      is larger does not automatically make the review better.<br /></font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=1b33c1df-1a33-4baf-a477-ac7431313d06" />
      </body>
      <title>The More Eyes the Merrier?</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,1b33c1df-1a33-4baf-a477-ac7431313d06.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,1b33c1df-1a33-4baf-a477-ac7431313d06.aspx</link>
      <pubDate>Wed, 30 Jun 2004 14:14:21 GMT</pubDate>
      <description>
		&lt;p&gt;
   &lt;font size="3"&gt;One of the recently discovered Internet Explorer bugs allows malicious
   sites to install key stroke recording code on your system. This certainly has got
   a lot of press and deservedly so because of the widespread presence of IE as a browser.&lt;br /&gt;
   &lt;br /&gt;
   Every time this happens I wonder, does open source produce more secure code? Do “more
   eyeballs” reviewing the code produce better code? Looking over the list of vulnerabilities
   on the US-Cert Issues Advisory list makes me doubt that this is true.&lt;br /&gt;
   &lt;br /&gt;
   Based on my experience, too many reviewers often make for poorer reviews. Remember
   the last time you had to sign off on a document with a long list of reviewers? The
   early reviewers glance at the document knowing more reviewers will look at it later.
   The later reviewers assume the early reviewers did most of the work already. The result
   is a lackadaisical, poor job of reviewing. You cannot tell me that the open source
   community is immune from the natural tendencies of human nature.&lt;br /&gt;
   &lt;br /&gt;
   Approval by committee is no different than design by committee. Just because the committee
   is larger does not automatically make the review better.&lt;br /&gt;
   &lt;/font&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=1b33c1df-1a33-4baf-a477-ac7431313d06" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,1b33c1df-1a33-4baf-a477-ac7431313d06.aspx</comments>
      <category>All;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=d4d2311b-fad4-49c5-b600-e35782e75654</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,d4d2311b-fad4-49c5-b600-e35782e75654.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,d4d2311b-fad4-49c5-b600-e35782e75654.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=d4d2311b-fad4-49c5-b600-e35782e75654</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Driving on the highway around Boston I was wondering about its virtual
      counterpart, the Information Superhighway. Massachusetts’s accident rate is the highest
      in the country. People mutter in frustration, “You can’t get there from here” as they
      navigate streets that look as if cow meanderings determined their path. Yet people
      and commerce move with an ease and openness that can only imagined on the Information
      Superhighway.<br /><br />
      What makes one so open and the other not? Some might proclaim “Heed the Three Opens
      of Modern Enterprise Architecture: Open Source, Open Standards, and Open Data.” In
      my mind I compared the concrete and virtual parallels.<br /><br />
      The most obvious analogy is Open Standards. Traffic laws allow for vehicles to travel.
      Vehicles must be able to signal turns. Vehicles have to stay in lane. They have stop
      lights and backup lights. In fact any vehicle that follows these standards is allowed
      on the road. Much to the chagrin of many drivers, following these standards allows
      bicycles on the road. Standards can even allow for varying defaults. Everywhere but
      New York City has “right turn on red” as the default. When vehicles arrive at their
      destination then the work begins.<br /><br />
      Vehicles are similar to messages. Open standards define the contents of a message
      and allow them to get to their proper destination. When the messages arrive at their
      destination, the actual work begins. Here Web Services standards (SOAP, WSDL, WS-Security,
      etc.) seem to have reached critical mass. While much more work needs to be done, the
      industry seems to understand what must be done (routing, federated security, etc.),
      although in some areas, such as transactions, it is not clear what the right approach
      is.<br /><br />
      Applications create these messages. Viewed in this light, the dispute over Open Source
      does not seem as important as Open Standards. How the vehicles are built is not as
      important as their ability to interoperate on the open road. Yes, both the real and
      virtual counterparts have to be reliable and economic. You have to be able to upgrade
      and maintain them. But how that is accomplished is not critical to either superhighway.
      Some drive a BMW, others a Ford Escort. Different cars perform differently, they just
      have to perform. The success of the Information Superhighway does not depend on the
      success or failure of Open Source.<br /><br />
      What does matter is what happens when the message or vehicle arrives at its destination.
      This is where commerce, recreation, or whatever occurs. In the real world, human beings
      can interpret the ambiguity of their interaction. To sign into a building, a security
      guard can judge whether the picture on your driver’s license (your federated security
      id) matches the person in front of them. A human can interpret the way you write out
      your address, or whether you put dashes or dots in your phone number. Data need not
      be strongly typed in the real world.<br /><br />
      The data that moves on the Information Superhighway is different. If two applications
      have a different way of encoding an address, or a list of drug interactions in a data
      structure, these applications cannot interoperate even if they can exchange messages.
      Without Open Data information cannot easily move.<br /><br />
      There is much sound and fury over Open Source, much love and singing kumbaya with
      Open Standards, and confusion over Open Data. Open Source and Open Standards people
      understand. But what is this “Open Data” concept? Look at one of the great intellectual
      popularity contests of our generation, Google (6/4/2004) by searching on the terms
      “open source”, “open standards” and “open data” and see the quality of what comes
      back, the first two are understood terms, the latter is not.<br /><br />
      XML by itself does not help here. A customer record, or an address, or a list of drug
      interactions can be encoded in any one of several posssible sets of XML elements.
      Open Data requires XML Schema so that XML can be typed. If organizations can agree
      on the appropriate schemas they will be able to transform the content of their messages
      into their applications data structures.<br /><br />
      Open Data is the missing link to make the Information Superhighway a reality. How
      can you integrate business services unless you have Open Data? You can talk about
      Service Oriented Architecture (SOA) until you are blue in the face, but without Open
      Data it will all be pointless. SOA is a way to build flexible, evolvable applications,
      but it is the moving of data that makes the building of services a useful endeavor.<br /><br />
      It will take a while before enterprises learn how to achieve Open Data. On the other
      hand, do not be overly discouraged. Our automotive superhighway was like that once.
      Imagine what driving across the country in the late 19th or early 20th century was
      like. There were only 150 miles of paved road in the US in 1903. It was an adventure.
      Read books such as “Horatio’s Drive: America’s First Road Trip” by Dayton Duncan and
      Ken Burns, or “Coast to Coast by Automobile” by Curt McConnell and compare those experiences
      with ours today. We tend to forget how far we came, and how long it took us.<br /></font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=d4d2311b-fad4-49c5-b600-e35782e75654" />
      </body>
      <title>The Information Superhighway</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,d4d2311b-fad4-49c5-b600-e35782e75654.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,d4d2311b-fad4-49c5-b600-e35782e75654.aspx</link>
      <pubDate>Mon, 14 Jun 2004 14:11:38 GMT</pubDate>
      <description>
		&lt;p&gt;
   &lt;font size="3"&gt;Driving on the highway around Boston I was wondering about its virtual
   counterpart, the Information Superhighway. Massachusetts’s accident rate is the highest
   in the country. People mutter in frustration, “You can’t get there from here” as they
   navigate streets that look as if cow meanderings determined their path. Yet people
   and commerce move with an ease and openness that can only imagined on the Information
   Superhighway.&lt;br /&gt;
   &lt;br /&gt;
   What makes one so open and the other not? Some might proclaim “Heed the Three Opens
   of Modern Enterprise Architecture: Open Source, Open Standards, and Open Data.” In
   my mind I compared the concrete and virtual parallels.&lt;br /&gt;
   &lt;br /&gt;
   The most obvious analogy is Open Standards. Traffic laws allow for vehicles to travel.
   Vehicles must be able to signal turns. Vehicles have to stay in lane. They have stop
   lights and backup lights. In fact any vehicle that follows these standards is allowed
   on the road. Much to the chagrin of many drivers, following these standards allows
   bicycles on the road. Standards can even allow for varying defaults. Everywhere but
   New York City has “right turn on red” as the default. When vehicles arrive at their
   destination then the work begins.&lt;br /&gt;
   &lt;br /&gt;
   Vehicles are similar to messages. Open standards define the contents of a message
   and allow them to get to their proper destination. When the messages arrive at their
   destination, the actual work begins. Here Web Services standards (SOAP, WSDL, WS-Security,
   etc.) seem to have reached critical mass. While much more work needs to be done, the
   industry seems to understand what must be done (routing, federated security, etc.),
   although in some areas, such as transactions, it is not clear what the right approach
   is.&lt;br /&gt;
   &lt;br /&gt;
   Applications create these messages. Viewed in this light, the dispute over Open Source
   does not seem as important as Open Standards. How the vehicles are built is not as
   important as their ability to interoperate on the open road. Yes, both the real and
   virtual counterparts have to be reliable and economic. You have to be able to upgrade
   and maintain them. But how that is accomplished is not critical to either superhighway.
   Some drive a BMW, others a Ford Escort. Different cars perform differently, they just
   have to perform. The success of the Information Superhighway does not depend on the
   success or failure of Open Source.&lt;br /&gt;
   &lt;br /&gt;
   What does matter is what happens when the message or vehicle arrives at its destination.
   This is where commerce, recreation, or whatever occurs. In the real world, human beings
   can interpret the ambiguity of their interaction. To sign into a building, a security
   guard can judge whether the picture on your driver’s license (your federated security
   id) matches the person in front of them. A human can interpret the way you write out
   your address, or whether you put dashes or dots in your phone number. Data need not
   be strongly typed in the real world.&lt;br /&gt;
   &lt;br /&gt;
   The data that moves on the Information Superhighway is different. If two applications
   have a different way of encoding an address, or a list of drug interactions in a data
   structure, these applications cannot interoperate even if they can exchange messages.
   Without Open Data information cannot easily move.&lt;br /&gt;
   &lt;br /&gt;
   There is much sound and fury over Open Source, much love and singing kumbaya with
   Open Standards, and confusion over Open Data. Open Source and Open Standards people
   understand. But what is this “Open Data” concept? Look at one of the great intellectual
   popularity contests of our generation, Google (6/4/2004) by searching on the terms
   “open source”, “open standards” and “open data” and see the quality of what comes
   back, the first two are understood terms, the latter is not.&lt;br /&gt;
   &lt;br /&gt;
   XML by itself does not help here. A customer record, or an address, or a list of drug
   interactions can be encoded in any one of several posssible sets of XML elements.
   Open Data requires XML Schema so that XML can be typed. If organizations can agree
   on the appropriate schemas they will be able to transform the content of their messages
   into their applications data structures.&lt;br /&gt;
   &lt;br /&gt;
   Open Data is the missing link to make the Information Superhighway a reality. How
   can you integrate business services unless you have Open Data? You can talk about
   Service Oriented Architecture (SOA) until you are blue in the face, but without Open
   Data it will all be pointless. SOA is a way to build flexible, evolvable applications,
   but it is the moving of data that makes the building of services a useful endeavor.&lt;br /&gt;
   &lt;br /&gt;
   It will take a while before enterprises learn how to achieve Open Data. On the other
   hand, do not be overly discouraged. Our automotive superhighway was like that once.
   Imagine what driving across the country in the late 19th or early 20th century was
   like. There were only 150 miles of paved road in the US in 1903. It was an adventure.
   Read books such as “Horatio’s Drive: America’s First Road Trip” by Dayton Duncan and
   Ken Burns, or “Coast to Coast by Automobile” by Curt McConnell and compare those experiences
   with ours today. We tend to forget how far we came, and how long it took us.&lt;br /&gt;
   &lt;/font&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=d4d2311b-fad4-49c5-b600-e35782e75654" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,d4d2311b-fad4-49c5-b600-e35782e75654.aspx</comments>
      <category>All;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=f98939d1-41f2-46a8-ad1f-ab3c2305bca9</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f98939d1-41f2-46a8-ad1f-ab3c2305bca9.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,f98939d1-41f2-46a8-ad1f-ab3c2305bca9.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=f98939d1-41f2-46a8-ad1f-ab3c2305bca9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Over lunch the other day, a programmer mentioned that Gamma, et.al’s
      book <em>Design Patterns </em>revolutionized his thinking about software development.
      He asked me what programming books revolutionized my thinking. I agreed that <em>Design
      Patterns </em>changed the way I think about software, but I did not consider it revolutionary.<br /><br />
      Thinking about this later, I realized that the most important books that I had read
      were not about the mechanics of programming itself, or about designing, or architecting
      software. They were about the <strong>cultural anthropology </strong>of programmers.<br /><br />
      Cultural anthropology studies the patterns of human relationships in areas such as
      language, communication, socialization, relationships, and politics. Cultural anthropologists
      try to relate the organization of a person’s mind to their behavior. Books that helped
      me understand the programmer’s mind, and how it relates to their behavior have revolutionized
      the way I think about software development.<br /><br />
      The success or failure of programming projects that I have been part of usually has
      less to do with the technology, than of the patterns of human relationships. One of
      my favorite examples is the software project whose architecture followed the corporate
      structure – the application groups designed the applications, the graphics group the
      graphics, the database group the database, and the user interface group the user interface.
      The resulting program was like feudal Europe; it did not work well together.<br /><br />
      Here, in no particular order, are the books that have really influenced me.<br /><br /><em>The Mythical Man-Month</em> by Frederick P. Brooks - pure wisdom about why software
      projects succeed or fail. See my review of it </font>
          <a href="http://www.reliablesoftware.com/reviews/manmonth.html">
            <font size="3">here</font>
          </a>
          <font size="3">.<br /><br /><em>The Psychology of Computer Programming</em> by Gerald M. Weinberg - the first
      book that got me to see programming as a human activity, and why understanding human
      behavior is important to understanding how to build better software.<br /><br />
      Both these books have been republished with new material. Get the latest editions.<br /><br /><em>Peopleware </em>by Tom Demarco and Timothy Lister - a great book on the workplace
      and software teams. This is a book your supervisor should read as well. There is a
      second edition of the book, but I have not read it.<br /><br />
      Donald E. Knuth wrote two essays that strongly influenced me. While dated, and I do
      not recommend them as strongly as the others, I feel obliged to mention them. The
      first, "Structured Programming with goto statements", written in 1974, made me realize
      the importance of thinking about software structure, and not language constructs.
      The point of the article is not that gotos are great things; but that the correct
      level of abstraction is critical to writing good programs. The second, “Literate Programming”,
      written in 1984, got me to realize that software programs could be written clearly
      using literary concepts. Programs that are clear to human readers are better programs
      because they are clear about what they want to accomplish. Both essays have been reprinted
      in the book <em>Literate Programming</em>.</font>
          <br />
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=f98939d1-41f2-46a8-ad1f-ab3c2305bca9" />
      </body>
      <title>Books That Have Influenced Me</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f98939d1-41f2-46a8-ad1f-ab3c2305bca9.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f98939d1-41f2-46a8-ad1f-ab3c2305bca9.aspx</link>
      <pubDate>Sun, 14 Mar 2004 15:09:47 GMT</pubDate>
      <description>
		&lt;p&gt;
   &lt;font size="3"&gt;Over lunch the other day, a programmer mentioned that Gamma, et.al’s
   book &lt;em&gt;Design Patterns &lt;/em&gt;revolutionized his thinking about software development.
   He asked me what programming books revolutionized my thinking. I agreed that &lt;em&gt;Design
   Patterns &lt;/em&gt;changed the way I think about software, but I did not consider it revolutionary.&lt;br /&gt;
   &lt;br /&gt;
   Thinking about this later, I realized that the most important books that I had read
   were not about the mechanics of programming itself, or about designing, or architecting
   software. They were about the &lt;strong&gt;cultural anthropology &lt;/strong&gt;of programmers.&lt;br /&gt;
   &lt;br /&gt;
   Cultural anthropology studies the patterns of human relationships in areas such as
   language, communication, socialization, relationships, and politics. Cultural anthropologists
   try to relate the organization of a person’s mind to their behavior. Books that helped
   me understand the programmer’s mind, and how it relates to their behavior have revolutionized
   the way I think about software development.&lt;br /&gt;
   &lt;br /&gt;
   The success or failure of programming projects that I have been part of usually has
   less to do with the technology, than of the patterns of human relationships. One of
   my favorite examples is the software project whose architecture followed the corporate
   structure – the application groups designed the applications, the graphics group the
   graphics, the database group the database, and the user interface group the user interface.
   The resulting program was like feudal Europe; it did not work well together.&lt;br /&gt;
   &lt;br /&gt;
   Here, in no particular order, are the books that have really influenced me.&lt;br /&gt;
   &lt;br /&gt;
   &lt;em&gt;The Mythical Man-Month&lt;/em&gt; by Frederick P. Brooks - pure wisdom about why software
   projects succeed or fail. See my review of it &lt;/font&gt; &lt;a href="http://www.reliablesoftware.com/reviews/manmonth.html"&gt; &lt;font size="3"&gt;here&lt;/font&gt; &lt;/a&gt; &lt;font size="3"&gt;.&lt;br /&gt;
   &lt;br /&gt;
   &lt;em&gt;The Psychology of Computer Programming&lt;/em&gt; by Gerald M. Weinberg - the first
   book that got me to see programming as a human activity, and why understanding human
   behavior is important to understanding how to build better software.&lt;br /&gt;
   &lt;br /&gt;
   Both these books have been republished with new material. Get the latest editions.&lt;br /&gt;
   &lt;br /&gt;
   &lt;em&gt;Peopleware &lt;/em&gt;by Tom Demarco and Timothy Lister - a great book on the workplace
   and software teams. This is a book your supervisor should read as well. There is a
   second edition of the book, but I have not read it.&lt;br /&gt;
   &lt;br /&gt;
   Donald E. Knuth wrote two essays that strongly influenced me. While dated, and I do
   not recommend them as strongly as the others, I feel obliged to mention them. The
   first, "Structured Programming with goto statements", written in 1974, made me realize
   the importance of thinking about software structure, and not language constructs.
   The point of the article is not that gotos are great things; but that the correct
   level of abstraction is critical to writing good programs. The second, “Literate Programming”,
   written in 1984, got me to realize that software programs could be written clearly
   using literary concepts. Programs that are clear to human readers are better programs
   because they are clear about what they want to accomplish. Both essays have been reprinted
   in the book &lt;em&gt;Literate Programming&lt;/em&gt;.&lt;/font&gt; 
   &lt;br /&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=f98939d1-41f2-46a8-ad1f-ab3c2305bca9" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,f98939d1-41f2-46a8-ad1f-ab3c2305bca9.aspx</comments>
      <category>All;Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.reliablesoftware.com/DasBlog/Trackback.aspx?guid=3119b45c-0a34-4cb5-bdfa-c65d01261264</trackback:ping>
      <pingback:server>http://www.reliablesoftware.com/DasBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,3119b45c-0a34-4cb5-bdfa-c65d01261264.aspx</pingback:target>
      <dc:creator>weblogcomments@reliablesoftware.com (Michael Stiefel)</dc:creator>
      <wfw:comment>http://www.reliablesoftware.com/DasBlog/CommentView,guid,3119b45c-0a34-4cb5-bdfa-c65d01261264.aspx</wfw:comment>
      <wfw:commentRss>http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=3119b45c-0a34-4cb5-bdfa-c65d01261264</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="4">
            <font size="3">When the speakers on the .NET track of the Syscon Edge
      2004 conference got together, Carl Franklin and I were talking about why people think
      that C# is the "official language" for .NET. I told him that even though most of my
      consulting is in C#, I think that attitude is wrong. I believe it is important to
      elaborate why I feel this way.<br /><br />
      People who feel that VB.NET is an inferior language to C#, or that somehow C# is a
      "better language", or the "official language" for accessing the .NET Framework Class
      Library are just plain wrong. My personal opinion is that I prefer C# to VB.NET because
      I like the compact syntax among other things, but that is a personal judgement.<br /><br />
      People who talk that way about VB.NET are confusing three issues. 
      <br /><br />
      First suitability to access the Framework Class Library (FCL). Every example in my
      book "Application Development Using C# and .NET" has been translated into VB.NET and
      works exactly the same way. I have used the same courseware for both C# training and
      VB.NET training with the only difference that the examples were in the different languages.
      From the point of view of the FCL, everything C# can do, VB.NET can do as well. 
      <br /><br />
      Second issue: suitability to a given task. Equality before the FCL, or the Common
      Language Runtime is not everything. Perl.NET can do things that C# cannot. Does that
      make Perl.NET a better language than C#? No. It just makes it a better choice in some
      cases. If you need to use unsafe mode, you need C#. You cannot overload operators
      in VB.NET. You might find VB.NET's late binding feature more convenient than using
      the reflection API in C#. You might like background compilation in VB.NET. It is is
      possible, that for certain features the IL that C# generates is more efficient than
      the IL that VB.NET does. I do not know if this is true, but even if it is, it probably
      does not matter for most applications. After all, in some performance situations managed
      C++ is better than C#. For people interested in the differences between the languages
      look at O'Reilly's <em>C# and VB.NET Conversion</em> pocket reference.<br /><br />
      FInally: de gustibus non disputandum est, there are matters of personal preference.
      I like C#'s compactness. I think it has certain advantages, but that is a matter of
      taste. Taste is important even in technical matters, but do not confuse taste with
      other factors, or mistake taste for intuition.<br /><br />
      I wish VB.NET programmers a long and productive life. VB.NET programmers should not
      feel inferior</font>.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=3119b45c-0a34-4cb5-bdfa-c65d01261264" />
      </body>
      <title>Does .NET Have an "Official Language"?</title>
      <guid>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,3119b45c-0a34-4cb5-bdfa-c65d01261264.aspx</guid>
      <link>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,3119b45c-0a34-4cb5-bdfa-c65d01261264.aspx</link>
      <pubDate>Mon, 01 Mar 2004 04:01:16 GMT</pubDate>
      <description>
		&lt;p&gt;
   &lt;font size="4"&gt; &lt;font size="3"&gt;When the speakers on the .NET track of the Syscon Edge
   2004 conference got together, Carl Franklin and I were talking about why people think
   that C# is the "official language" for .NET. I told him that even though most of my
   consulting is in C#, I think that attitude is wrong. I believe it is important to
   elaborate why I feel this way.&lt;br /&gt;
   &lt;br /&gt;
   People who feel that VB.NET is an inferior language to C#, or that somehow C# is a
   "better language", or the "official language" for accessing the .NET Framework Class
   Library are just plain wrong. My personal opinion is that I prefer C# to VB.NET because
   I like the compact syntax among other things, but that is a personal judgement.&lt;br /&gt;
   &lt;br /&gt;
   People who talk that way about VB.NET are confusing three issues. 
   &lt;br /&gt;
   &lt;br /&gt;
   First suitability to access the Framework Class Library (FCL). Every example in my
   book "Application Development Using C# and .NET" has been translated into VB.NET and
   works exactly the same way. I have used the same courseware for both C# training and
   VB.NET training with the only difference that the examples were in the different languages.
   From the point of view of the FCL, everything C# can do, VB.NET can do as well. 
   &lt;br /&gt;
   &lt;br /&gt;
   Second issue: suitability to a given task. Equality before the FCL, or the Common
   Language Runtime is not everything. Perl.NET can do things that C# cannot. Does that
   make Perl.NET a better language than C#? No. It just makes it a better choice in some
   cases. If you need to use unsafe mode, you need C#. You cannot overload operators
   in VB.NET. You might find VB.NET's late binding feature more convenient than using
   the reflection API in C#. You might like background compilation in VB.NET. It is is
   possible, that for certain features the IL that C# generates is more efficient than
   the IL that VB.NET does. I do not know if this is true, but even if it is, it probably
   does not matter for most applications. After all, in some performance situations managed
   C++ is better than C#. For people interested in the differences between the languages
   look at O'Reilly's &lt;em&gt;C# and VB.NET Conversion&lt;/em&gt; pocket reference.&lt;br /&gt;
   &lt;br /&gt;
   FInally: de gustibus non disputandum est, there are matters of personal preference.
   I like C#'s compactness. I think it has certain advantages, but that is a matter of
   taste. Taste is important even in technical matters, but do not confuse taste with
   other factors, or mistake taste for intuition.&lt;br /&gt;
   &lt;br /&gt;
   I wish VB.NET programmers a long and productive life. VB.NET programmers should not
   feel inferior&lt;/font&gt;.&lt;/font&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=3119b45c-0a34-4cb5-bdfa-c65d01261264" /&gt;</description>
      <comments>http://www.reliablesoftware.com/DasBlog/CommentView,guid,3119b45c-0a34-4cb5-bdfa-c65d01261264.aspx</comments>
      <category>All;Microsoft .NET</category>
    </item>
  </channel>
</rss>