<?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:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" version="2.0">
  <channel>
    <title>.NET Musings</title>
    <link>http://www.vergentsoftware.com/blogs/ckinsman/</link>
    <description>Musings about my daily development experiences with this thing we call .NET</description>
    <language>en-us</language>
    <copyright>Chris Kinsman</copyright>
    <lastBuildDate>Fri, 30 Mar 2012 03:11:29 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>ckinsman@vergentsoftware.com</managingEditor>
    <webMaster>ckinsman@vergentsoftware.com</webMaster>
    <item>
      <trackback:ping>http://www.vergentsoftware.com/blogs/ckinsman/Trackback.aspx?guid=6789c04f-6637-4117-aada-06762d34b453</trackback:ping>
      <pingback:server>http://www.vergentsoftware.com/blogs/ckinsman/pingback.aspx</pingback:server>
      <pingback:target>http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,6789c04f-6637-4117-aada-06762d34b453.aspx</pingback:target>
      <dc:creator>Chris Kinsman</dc:creator>
      <wfw:comment>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,6789c04f-6637-4117-aada-06762d34b453.aspx</wfw:comment>
      <wfw:commentRss>http://www.vergentsoftware.com/blogs/ckinsman/SyndicationService.asmx/GetEntryCommentsRss?guid=6789c04f-6637-4117-aada-06762d34b453</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you have downloaded the Visual Studio 11 you have may noticed that ASP.NET MVC
4 defaults to a new Membership Provider.  Instead of SqlMembershipProvider it
uses the new DefaultMembershipProvider.
</p>
        <p>
DefaultMembershipProvider is a cleaned up version of the membership provider that
will work again SQL Azure or SQL Server or SQL Express or SQL Compact, etc. 
Scott Hanselman talks about it <a href="http://www.hanselman.com/blog/IntroducingSystemWebProvidersASPNETUniversalProvidersForSessionMembershipRolesAndUserProfileOnSQLCompactAndSQLAzure.aspx">here</a>. 
If you dig into DefaultMembership provider you will notice is has vastly simplified
the SQL schema.  There were compatibility issues with a number of the SQL Server
features the original version used.  
</p>
        <ol>
          <li>
The new version has eliminated the assorted lowered* columns in the tables. 
</li>
          <li>
The new version has eliminated all the stored procedures. 
</li>
          <li>
The new version has eliminated all the views</li>
        </ol>
        <p>
When you fire up a site configured with the new provider it automatically creates
tables in your ApplicationServices database without you having to run aspnet_regsql. 
When it does this it creates all the tables without the aspnet_ prefix that SqlMembershipProvider
used.  It is also smart enough to not drop any tables that may be present if
there is a naming conflict with a table it uses.  In this case it just silently
fails to create the table. This is nice as it preserves the old Membership data and
doesn’t put any of your data at risk if you didn’t realize that migrating your MVC
3 application to MVC 4 was going to cause this change in behavior.
</p>
        <p>
When I saw all of these changes I wanted to adopt the new provider so I could use
the same Membership schema on premise or in Azure. Unfortunately it appears that Microsoft
doesn’t provide a script to migrate your data from the old schema to the new one. 
So I walked through creating a script that adds the new objects, moves the data from
the old objects to the new ones and drops the old objects. I don’t even begin to claim
to be a SQL Wizard but I am posting the script to save anyone else the wasted 30 minutes
of their life creating it.  
</p>
        <p>
          <a href="http://www.vergentsoftware.com/downloads/SystemWebProvidersSchemaUpdateGeneric.zip">http://www.vergentsoftware.com/downloads/SystemWebProvidersSchemaUpdateGeneric.zip</a>
        </p>
        <p>
Once you run the script you will find that you still can’t login.  Membership.ValidateUser()
will fail when trying to authenticate the user.  Spent some time spelunking through
this and couldn’t figure out the issue at first.  A great friend at Microsoft
put me in touch with the developer who wrote the code and he insisted that DefaultMembershipProvider
is not backward compatible with SqlMembershipProvider.  I certainly understood
this from the standpoint of the schema changes mentioned above but suspected that
I was still missing something.
</p>
        <p>
I had just seen Scott’s x2 announcement <a href="http://weblogs.asp.net/scottgu/archive/2012/03/27/asp-net-mvc-web-api-razor-and-open-source.aspx">here</a> and <a href="http://www.hanselman.com/blog/ASPNETMVC4ASPNETWebAPIAndASPNETWebPagesV2RazorNowAllOpenSourceWithContributions.aspx">here</a> about
the <a href="http://aspnetwebstack.codeplex.com/">aspnetwebstack.codeplex.com</a> site
so I fired up <a href="https://github.com/">GIT</a> and did a clone of the source
code. Unfortunately System.Web.Providers is not only largely undocumented on MSDN
and elsewhere it also is not included in the source code that has been made public
as part of aspnetwebstack. Really unfortunate and I <a href="http://aspnetwebstack.codeplex.com/discussions/350572">posted</a> a
request that it be added to the codeplex site.  Still trying to figure out what
had changed I decided to decompile DefaultMembershipProvider and compare it to SqlMembershipProvider
to see if I could find a work around.  I went and grabbed my copy of <a href="http://www.telerik.com">Telerik</a><a href="http://www.telerik.com/products/decompiler.aspx">Just
Decompile</a> (my Reflector had expired and I wasn’t willing to drop some coin just
to decompile .NET code) and started spelunking.
</p>
        <p>
After an hour or so I finally found the culprit.  Both providers have a method
called GetHashAlgorithmType() that returns the hashing algorithm used to hash the
combined password and salt.  In SqlMembershipProvider there is a check of several
flags to determine if it should use SHA1 instead of whatever the configured hash algorithm
is:
</p>
        <pre class="brush: csharp; toolbar: false;">private HashAlgorithm GetHashAlgorithm()
{
    if (this.s_HashAlgorithm == null)
    {
        string hashAlgorithmType = Membership.HashAlgorithmType;
        if (this._LegacyPasswordCompatibilityMode == MembershipPasswordCompatibilityMode.Framework20 &amp;&amp; 
            !Membership.IsHashAlgorithmFromMembershipConfig &amp;&amp; hashAlgorithmType != "MD5")
        {
            hashAlgorithmType = "SHA1";
        }
        HashAlgorithm hashAlgorithm = HashAlgorithm.Create(hashAlgorithmType);
        if (hashAlgorithm == null)
        {
            RuntimeConfig.GetAppConfig().Membership.ThrowHashAlgorithmException();
        }
        this.s_HashAlgorithm = hashAlgorithmType;
        return hashAlgorithm;
    }
    else
    {
        return HashAlgorithm.Create(this.s_HashAlgorithm);
    }
}</pre>
        <p>
Notice Line 6?  It reverts to SHA1 if a number of conditions hold true. 
Now compare it to the following code snippet from DefaultMembershipProvider:
</p>
        <pre class="brush: csharp; toolbar: false;">private HashAlgorithm GetHashAlgorithm()
{
    if (this._HashAlgorithm == null)
    {
        string hashAlgorithmType = Membership.HashAlgorithmType;
        HashAlgorithm hashAlgorithm = HashAlgorithm.Create(hashAlgorithmType);
        if (hashAlgorithm != null)
        {
            this._HashAlgorithm = hashAlgorithmType;
            return hashAlgorithm;
        }
        else
        {
            object[] objArray = new object[1];
            objArray[0] = this._HashAlgorithm;
            throw new ConfigurationErrorsException(string.Format(CultureInfo.CurrentCulture, 
                ProviderResources.Invalid_hash_algorithm, objArray));
        }
    }
    else
    {
        return HashAlgorithm.Create(this._HashAlgorithm);
    }
}
</pre>
        <p>
Notice it just uses whatever the default hash algorithm is.  This led me to the
final part of the solution.  If you don’t specify a hashing algorithm when configuring
the Membership provider it defaults to HMACSHA256.  SqlMembershipProvider in
many cases defaults back to SHA1 as it was in my case.  You can change your web.config
to force the Membership system to use SHA1 like so:
</p>
        <pre class="brush: xml; toolbar: false;">&lt;membership defaultProvider="DefaultMembershipProvider" hashAlgorithmType="SHA1"&gt;</pre>
        <p>
This fixed the issue for me and I am now up and running with the DefaultMembershipProvider! 
Your mileage may vary and use at your own risk, etc.
</p>
        <img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=6789c04f-6637-4117-aada-06762d34b453" />
      </body>
      <title>System.Web.Providers DefaultMembershipProvider behavior change</title>
      <guid isPermaLink="false">http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,6789c04f-6637-4117-aada-06762d34b453.aspx</guid>
      <link>http://www.vergentsoftware.com/blogs/ckinsman/SystemWebProvidersDefaultMembershipProviderBehaviorChange.aspx</link>
      <pubDate>Fri, 30 Mar 2012 03:11:29 GMT</pubDate>
      <description>&lt;p&gt;
If you have downloaded the Visual Studio 11 you have may noticed that ASP.NET MVC
4 defaults to a new Membership Provider.&amp;nbsp; Instead of SqlMembershipProvider it
uses the new DefaultMembershipProvider.
&lt;/p&gt;
&lt;p&gt;
DefaultMembershipProvider is a cleaned up version of the membership provider that
will work again SQL Azure or SQL Server or SQL Express or SQL Compact, etc.&amp;nbsp;
Scott Hanselman talks about it &lt;a href="http://www.hanselman.com/blog/IntroducingSystemWebProvidersASPNETUniversalProvidersForSessionMembershipRolesAndUserProfileOnSQLCompactAndSQLAzure.aspx"&gt;here&lt;/a&gt;.&amp;nbsp;
If you dig into DefaultMembership provider you will notice is has vastly simplified
the SQL schema.&amp;nbsp; There were compatibility issues with a number of the SQL Server
features the original version used.&amp;nbsp; 
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
The new version has eliminated the assorted lowered* columns in the tables. 
&lt;li&gt;
The new version has eliminated all the stored procedures. 
&lt;li&gt;
The new version has eliminated all the views&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
When you fire up a site configured with the new provider it automatically creates
tables in your ApplicationServices database without you having to run aspnet_regsql.&amp;nbsp;
When it does this it creates all the tables without the aspnet_ prefix that SqlMembershipProvider
used.&amp;nbsp; It is also smart enough to not drop any tables that may be present if
there is a naming conflict with a table it uses.&amp;nbsp; In this case it just silently
fails to create the table. This is nice as it preserves the old Membership data and
doesn’t put any of your data at risk if you didn’t realize that migrating your MVC
3 application to MVC 4 was going to cause this change in behavior.
&lt;/p&gt;
&lt;p&gt;
When I saw all of these changes I wanted to adopt the new provider so I could use
the same Membership schema on premise or in Azure. Unfortunately it appears that Microsoft
doesn’t provide a script to migrate your data from the old schema to the new one.&amp;nbsp;
So I walked through creating a script that adds the new objects, moves the data from
the old objects to the new ones and drops the old objects. I don’t even begin to claim
to be a SQL Wizard but I am posting the script to save anyone else the wasted 30 minutes
of their life creating it.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.vergentsoftware.com/downloads/SystemWebProvidersSchemaUpdateGeneric.zip"&gt;http://www.vergentsoftware.com/downloads/SystemWebProvidersSchemaUpdateGeneric.zip&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Once you run the script you will find that you still can’t login.&amp;nbsp; Membership.ValidateUser()
will fail when trying to authenticate the user.&amp;nbsp; Spent some time spelunking through
this and couldn’t figure out the issue at first.&amp;nbsp; A great friend at Microsoft
put me in touch with the developer who wrote the code and he insisted that DefaultMembershipProvider
is not backward compatible with SqlMembershipProvider.&amp;nbsp; I certainly understood
this from the standpoint of the schema changes mentioned above but suspected that
I was still missing something.
&lt;/p&gt;
&lt;p&gt;
I had just seen Scott’s x2 announcement &lt;a href="http://weblogs.asp.net/scottgu/archive/2012/03/27/asp-net-mvc-web-api-razor-and-open-source.aspx"&gt;here&lt;/a&gt; and &lt;a href="http://www.hanselman.com/blog/ASPNETMVC4ASPNETWebAPIAndASPNETWebPagesV2RazorNowAllOpenSourceWithContributions.aspx"&gt;here&lt;/a&gt; about
the &lt;a href="http://aspnetwebstack.codeplex.com/"&gt;aspnetwebstack.codeplex.com&lt;/a&gt; site
so I fired up &lt;a href="https://github.com/"&gt;GIT&lt;/a&gt; and did a clone of the source
code. Unfortunately System.Web.Providers is not only largely undocumented on MSDN
and elsewhere it also is not included in the source code that has been made public
as part of aspnetwebstack. Really unfortunate and I &lt;a href="http://aspnetwebstack.codeplex.com/discussions/350572"&gt;posted&lt;/a&gt; a
request that it be added to the codeplex site.&amp;nbsp; Still trying to figure out what
had changed I decided to decompile DefaultMembershipProvider and compare it to SqlMembershipProvider
to see if I could find a work around.&amp;nbsp; I went and grabbed my copy of &lt;a href="http://www.telerik.com"&gt;Telerik&lt;/a&gt; &lt;a href="http://www.telerik.com/products/decompiler.aspx"&gt;Just
Decompile&lt;/a&gt; (my Reflector had expired and I wasn’t willing to drop some coin just
to decompile .NET code) and started spelunking.
&lt;/p&gt;
&lt;p&gt;
After an hour or so I finally found the culprit.&amp;nbsp; Both providers have a method
called GetHashAlgorithmType() that returns the hashing algorithm used to hash the
combined password and salt.&amp;nbsp; In SqlMembershipProvider there is a check of several
flags to determine if it should use SHA1 instead of whatever the configured hash algorithm
is:
&lt;/p&gt;
&lt;pre class="brush: csharp; toolbar: false;"&gt;private HashAlgorithm GetHashAlgorithm()
{
    if (this.s_HashAlgorithm == null)
    {
        string hashAlgorithmType = Membership.HashAlgorithmType;
        if (this._LegacyPasswordCompatibilityMode == MembershipPasswordCompatibilityMode.Framework20 &amp;amp;&amp;amp; 
            !Membership.IsHashAlgorithmFromMembershipConfig &amp;amp;&amp;amp; hashAlgorithmType != "MD5")
        {
            hashAlgorithmType = "SHA1";
        }
        HashAlgorithm hashAlgorithm = HashAlgorithm.Create(hashAlgorithmType);
        if (hashAlgorithm == null)
        {
            RuntimeConfig.GetAppConfig().Membership.ThrowHashAlgorithmException();
        }
        this.s_HashAlgorithm = hashAlgorithmType;
        return hashAlgorithm;
    }
    else
    {
        return HashAlgorithm.Create(this.s_HashAlgorithm);
    }
}&lt;/pre&gt;
&lt;p&gt;
Notice Line 6?&amp;nbsp; It reverts to SHA1 if a number of conditions hold true.&amp;nbsp;
Now compare it to the following code snippet from DefaultMembershipProvider:
&lt;/p&gt;
&lt;pre class="brush: csharp; toolbar: false;"&gt;private HashAlgorithm GetHashAlgorithm()
{
    if (this._HashAlgorithm == null)
    {
        string hashAlgorithmType = Membership.HashAlgorithmType;
        HashAlgorithm hashAlgorithm = HashAlgorithm.Create(hashAlgorithmType);
        if (hashAlgorithm != null)
        {
            this._HashAlgorithm = hashAlgorithmType;
            return hashAlgorithm;
        }
        else
        {
            object[] objArray = new object[1];
            objArray[0] = this._HashAlgorithm;
            throw new ConfigurationErrorsException(string.Format(CultureInfo.CurrentCulture, 
                ProviderResources.Invalid_hash_algorithm, objArray));
        }
    }
    else
    {
        return HashAlgorithm.Create(this._HashAlgorithm);
    }
}
&lt;/pre&gt;
&lt;p&gt;
Notice it just uses whatever the default hash algorithm is.&amp;nbsp; This led me to the
final part of the solution.&amp;nbsp; If you don’t specify a hashing algorithm when configuring
the Membership provider it defaults to HMACSHA256.&amp;nbsp; SqlMembershipProvider in
many cases defaults back to SHA1 as it was in my case.&amp;nbsp; You can change your web.config
to force the Membership system to use SHA1 like so:
&lt;/p&gt;
&lt;pre class="brush: xml; toolbar: false;"&gt;&amp;lt;membership defaultProvider="DefaultMembershipProvider" hashAlgorithmType="SHA1"&amp;gt;&lt;/pre&gt;
&lt;p&gt;
This fixed the issue for me and I am now up and running with the DefaultMembershipProvider!&amp;nbsp;
Your mileage may vary and use at your own risk, etc.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=6789c04f-6637-4117-aada-06762d34b453" /&gt;</description>
      <comments>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,6789c04f-6637-4117-aada-06762d34b453.aspx</comments>
      <category>.NET Architecture</category>
    </item>
    <item>
      <trackback:ping>http://www.vergentsoftware.com/blogs/ckinsman/Trackback.aspx?guid=28653721-5d0b-4774-99f0-a2470d2a6b91</trackback:ping>
      <pingback:server>http://www.vergentsoftware.com/blogs/ckinsman/pingback.aspx</pingback:server>
      <pingback:target>http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,28653721-5d0b-4774-99f0-a2470d2a6b91.aspx</pingback:target>
      <dc:creator>Chris Kinsman</dc:creator>
      <wfw:comment>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,28653721-5d0b-4774-99f0-a2470d2a6b91.aspx</wfw:comment>
      <wfw:commentRss>http://www.vergentsoftware.com/blogs/ckinsman/SyndicationService.asmx/GetEntryCommentsRss?guid=28653721-5d0b-4774-99f0-a2470d2a6b91</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have been spinning up on writing Metro applications and wanted to try pulling in
WNS and Azure.  Unfortunately I couldn’t get all of the bits to play together
correctly in Windows 8.
</p>
        <p>
Started searching around and found a list of instructions to get Windows Azure development
tools up and running on Windows 8.  Check it out <a href="https://www.windowsazure.com/en-us/develop/net/other-resources/windows-azure-on-windows-8/">here</a>.
If you want to install VS 2010 and Dev 11 check <a href="https://www.windowsazure.com/en-us/develop/vs11/">here</a> instead.
</p>
        <p>
In a nutshell Web Platform Installer will not install the Windows Azure SDK on Windows
8.
</p>
        <p>
If installing Visual Studio 10 on Windows 8 you need to manually install Visual Studio
Express SP1 prior to installing Visual Studio.
</p>
        <p>
Finally Windows Azure .NET applications can only target .NET Framework 3.5 or 4.0. 
.NET Framework 4.5 is unsupported on Windows Azure.
</p>
        <img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=28653721-5d0b-4774-99f0-a2470d2a6b91" />
      </body>
      <title>Windows 8 and Windows Azure SDK</title>
      <guid isPermaLink="false">http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,28653721-5d0b-4774-99f0-a2470d2a6b91.aspx</guid>
      <link>http://www.vergentsoftware.com/blogs/ckinsman/Windows8AndWindowsAzureSDK.aspx</link>
      <pubDate>Thu, 22 Mar 2012 06:26:36 GMT</pubDate>
      <description>&lt;p&gt;
I have been spinning up on writing Metro applications and wanted to try pulling in
WNS and Azure.&amp;nbsp; Unfortunately I couldn’t get all of the bits to play together
correctly in Windows 8.
&lt;/p&gt;
&lt;p&gt;
Started searching around and found a list of instructions to get Windows Azure development
tools up and running on Windows 8.&amp;nbsp; Check it out &lt;a href="https://www.windowsazure.com/en-us/develop/net/other-resources/windows-azure-on-windows-8/"&gt;here&lt;/a&gt;.
If you want to install VS 2010 and Dev 11 check &lt;a href="https://www.windowsazure.com/en-us/develop/vs11/"&gt;here&lt;/a&gt; instead.
&lt;/p&gt;
&lt;p&gt;
In a nutshell Web Platform Installer will not install the Windows Azure SDK on Windows
8.
&lt;/p&gt;
&lt;p&gt;
If installing Visual Studio 10 on Windows 8 you need to manually install Visual Studio
Express SP1 prior to installing Visual Studio.
&lt;/p&gt;
&lt;p&gt;
Finally Windows Azure .NET applications can only target .NET Framework 3.5 or 4.0.&amp;nbsp;
.NET Framework 4.5 is unsupported on Windows Azure.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=28653721-5d0b-4774-99f0-a2470d2a6b91" /&gt;</description>
      <comments>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,28653721-5d0b-4774-99f0-a2470d2a6b91.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.vergentsoftware.com/blogs/ckinsman/Trackback.aspx?guid=f0bb9e50-1f3c-4ffa-b509-8faeb2e6f035</trackback:ping>
      <pingback:server>http://www.vergentsoftware.com/blogs/ckinsman/pingback.aspx</pingback:server>
      <pingback:target>http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,f0bb9e50-1f3c-4ffa-b509-8faeb2e6f035.aspx</pingback:target>
      <dc:creator>Chris Kinsman</dc:creator>
      <wfw:comment>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,f0bb9e50-1f3c-4ffa-b509-8faeb2e6f035.aspx</wfw:comment>
      <wfw:commentRss>http://www.vergentsoftware.com/blogs/ckinsman/SyndicationService.asmx/GetEntryCommentsRss?guid=f0bb9e50-1f3c-4ffa-b509-8faeb2e6f035</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I finally broke down and did a full Windows 8 install on my secondary machine using
Boot to VHD.  
</p>
        <p>
Very easy to get up and running and Scott Hanselman has a great post <a href="http://www.hanselman.com/blog/GuideToInstallingAndBootingWindows8DeveloperPreviewOffAVHDVirtualHardDisk.aspx">here</a> and <a href="http://www.hanselman.com/blog/HowToGuideToInstallingAndBootingWindows8ConsumerPreviewOffAVHDVirtualHardDisk.aspx">here</a> with
all the steps.
</p>
        <p>
Now that I have it up and running I decided to go fire off the Windows Experience
Index and found that it wouldn’t complete since I was booting off a VHD.
</p>
        <p>
Searching around I found that WEI is just a shell around WinSat.exe.  You can
open up an administrative command prompt and fire off Winsat dwm to let the desktop
window manager measure your performance and decide which features to enable.
</p>
        <img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=f0bb9e50-1f3c-4ffa-b509-8faeb2e6f035" />
      </body>
      <title>WEI and Boot to VHD</title>
      <guid isPermaLink="false">http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,f0bb9e50-1f3c-4ffa-b509-8faeb2e6f035.aspx</guid>
      <link>http://www.vergentsoftware.com/blogs/ckinsman/WEIAndBootToVHD.aspx</link>
      <pubDate>Wed, 21 Mar 2012 18:26:03 GMT</pubDate>
      <description>&lt;p&gt;
I finally broke down and did a full Windows 8 install on my secondary machine using
Boot to VHD.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Very easy to get up and running and Scott Hanselman has a great post &lt;a href="http://www.hanselman.com/blog/GuideToInstallingAndBootingWindows8DeveloperPreviewOffAVHDVirtualHardDisk.aspx"&gt;here&lt;/a&gt; and &lt;a href="http://www.hanselman.com/blog/HowToGuideToInstallingAndBootingWindows8ConsumerPreviewOffAVHDVirtualHardDisk.aspx"&gt;here&lt;/a&gt; with
all the steps.
&lt;/p&gt;
&lt;p&gt;
Now that I have it up and running I decided to go fire off the Windows Experience
Index and found that it wouldn’t complete since I was booting off a VHD.
&lt;/p&gt;
&lt;p&gt;
Searching around I found that WEI is just a shell around WinSat.exe.&amp;nbsp; You can
open up an administrative command prompt and fire off Winsat dwm to let the desktop
window manager measure your performance and decide which features to enable.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=f0bb9e50-1f3c-4ffa-b509-8faeb2e6f035" /&gt;</description>
      <comments>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,f0bb9e50-1f3c-4ffa-b509-8faeb2e6f035.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.vergentsoftware.com/blogs/ckinsman/Trackback.aspx?guid=c0df2ecf-09d8-4693-b839-48839d54cd0f</trackback:ping>
      <pingback:server>http://www.vergentsoftware.com/blogs/ckinsman/pingback.aspx</pingback:server>
      <pingback:target>http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,c0df2ecf-09d8-4693-b839-48839d54cd0f.aspx</pingback:target>
      <dc:creator>Chris Kinsman</dc:creator>
      <wfw:comment>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,c0df2ecf-09d8-4693-b839-48839d54cd0f.aspx</wfw:comment>
      <wfw:commentRss>http://www.vergentsoftware.com/blogs/ckinsman/SyndicationService.asmx/GetEntryCommentsRss?guid=c0df2ecf-09d8-4693-b839-48839d54cd0f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Saw an interesting presentation mentioned about what does it mean to have a small
team?  What does it mean to have a faster team?  What are the traits of
a great developer?
</p>
        <p>
          <a title="http://speakerdeck.com/u/searls/p/the-mythical-team-month" href="http://speakerdeck.com/u/searls/p/the-mythical-team-month">http://speakerdeck.com/u/searls/p/the-mythical-team-month</a>
        </p>
        <img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=c0df2ecf-09d8-4693-b839-48839d54cd0f" />
      </body>
      <title>The Mythical Team-Month</title>
      <guid isPermaLink="false">http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,c0df2ecf-09d8-4693-b839-48839d54cd0f.aspx</guid>
      <link>http://www.vergentsoftware.com/blogs/ckinsman/TheMythicalTeamMonth.aspx</link>
      <pubDate>Wed, 14 Mar 2012 04:19:01 GMT</pubDate>
      <description>&lt;p&gt;
Saw an interesting presentation mentioned about what does it mean to have a small
team?&amp;nbsp; What does it mean to have a faster team?&amp;nbsp; What are the traits of
a great developer?
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://speakerdeck.com/u/searls/p/the-mythical-team-month" href="http://speakerdeck.com/u/searls/p/the-mythical-team-month"&gt;http://speakerdeck.com/u/searls/p/the-mythical-team-month&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=c0df2ecf-09d8-4693-b839-48839d54cd0f" /&gt;</description>
      <comments>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,c0df2ecf-09d8-4693-b839-48839d54cd0f.aspx</comments>
      <category>ALM</category>
    </item>
    <item>
      <trackback:ping>http://www.vergentsoftware.com/blogs/ckinsman/Trackback.aspx?guid=f029f854-7950-428f-83e6-821e837ee277</trackback:ping>
      <pingback:server>http://www.vergentsoftware.com/blogs/ckinsman/pingback.aspx</pingback:server>
      <pingback:target>http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,f029f854-7950-428f-83e6-821e837ee277.aspx</pingback:target>
      <dc:creator>Chris Kinsman</dc:creator>
      <wfw:comment>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,f029f854-7950-428f-83e6-821e837ee277.aspx</wfw:comment>
      <wfw:commentRss>http://www.vergentsoftware.com/blogs/ckinsman/SyndicationService.asmx/GetEntryCommentsRss?guid=f029f854-7950-428f-83e6-821e837ee277</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have a customer who is a consulting firm that does quite a bit of .NET, Sharepoint,
and Mobile work. They have various remote developers throughout the United States
and have opened an office in Vietnam to offshore some of the work.
</p>
        <p>
They currently have a server sitting in a co-location running Hyper-V with about a
dozen or so VMs. The VMs are typically staging and integration environments where
they deploy their work and then allow their customers to connect in and check things
out, typically over HTTP. They have found they have just about hit the limit of their
existing hardware and we were chatting about whether it made sense to purchase some
new hardware or purchase VMs from any number of cloud providers like RackSpace or
Amazon EC2.
</p>
        <p>
While looking at this question I remembered about a local company, <a href="http://www.skytap.com">SkyTap</a>,
here in Seattle that I had looked at when in a former job. I was debating moving our
development and testing lab into the cloud.  At the time I didn’t pull the trigger
as we ended up getting some decommissioned hardware from our production data center
that we used to fill the gap.  
</p>
        <p>
Now with all the folks offering cloud based virtual instances I was curious what was
so unique about SkyTap.  I gave them a call to get some pricing and they offered
to sit down and walk me through their offering.
</p>
        <p>
First off SkyTap isn’t trying to compete with <a href="http://www.windowsazure.com">Microsoft
Windows Azure</a>, <a href="http://aws.amazon.com/ec2/">Amazon EC2</a> or <a href="http://www.rackspace.com/cloud/">Rackspace</a> to
run your production applications.  They see their niche as providing elastic
capacity to corporations for non-production needs.  Complete environment for
Development, Quality Assurance, Training, and Sales.  Their secret sauce is how
quickly they can get a particular environment up and running for you. 
</p>
        <p>
The interface to their offering is completely web based and browser/platform agnostic. 
The demo I received was done under OS X in Google Chrome. To quickly get started you
start by creating a new VM from a template. They offer a large number of preconfigured
templates for most of the operating systems out there.  Windows XP, Windows 7,
Windows 2008R2, Ubuntu, Red Hat, etc.  They provide pre-configured templates
at each patch/service pack level.  The combination of base platform + service
pack means out of the box they offer a few 100 templates to get you started.
</p>
        <p>
Select a template, ask it to create a VM and 15-20 seconds later you have a spun up
instance of the operating system that is just waiting for you to personalize it with
things like the machine name, license key, etc.
</p>
        <p>
When you spin up a new VM it comes up in a “Configuration” or environment that is
isolated from all other VMs in the system as well as the internet. You can modify
the default configuration and add CPU, Memory, NICs, Disk, etc. This is similar to
the "Network Fence” concept in Visual Studio Lab Management.  Each configuration
may contain one or more virtual networks to allow you to reproduce your desired application
deployment architecture.  Configurations can be connected to one another to simulate
distributed architectures.
</p>
        <p>
You can connect directly to the machine in two ways.  They provide a web based
Java plugin they call the SRA that is essentially a Virtual KVM that allows you “bare
metal” access to all of your VMs.  Alternatively you can expose the VM to the
internet for RDP or SSH access via NAT.  The endpoint used to access the VM is
shown in the management web site.
</p>
        <p>
If you want to make the applications running on the machine actually accessible to
the internet you can map public IP addresses to the configuration and then map them
to networks internal to the configuration.
</p>
        <p>
Once you have your application deployed SkyTap has a number of very cool features
you can leverage.
</p>
        <p>
How many times have you gotten an email like this: “Testing a breaking change in QA1. 
Will have environment back up and running in 30 minutes.”  With SkyTap the individual
who needs to run the test can click a button and in a couple of minutes clone the
entire environment and have it up and running in a new configuration alongside the
old one.  She can do her tests and then delete the configuration.
</p>
        <p>
If you have a complication application setup that you need to spin up on a regular
basis you can get if configured and installed and then with the press of a button
indicate to SkyTap that you would like this to be created as a new template. 
This will allow you to create a new configuration from the template in minutes and
have a complete multi-VM configuration spun up.  Great for load testing where
you may want to spin up a Test Controller and multiple load agents all at once.
</p>
        <p>
Similar to the other cloud services you are billed based on how many resources you
use.  SkyTap introduces the concept of a SVM (SkyTap Virtual Machine). 
It isn’t what you would think.  Each VM uses a variable number of SVMs based
on how many CPUs or how many gigabytes of memory the machine has allocated. 
The VM is billed based on the greater of number of CPUs or allocated memory. 
</p>
        <p>
A machine with 4 CPUs and 2GB of memory would be 4 SVMs.  A machine with 2 CPUs
and 4GB of memory would also be 4 SVMs.
</p>
        <p>
Customers purchase a number of SVM hours and a quantity of disk space each month on
a subscription basis.  This is the one unfortunate aspect of the SkyTap model. 
I pay a fixed price per month + overage charges as opposed to paying for exactly what
I use.
</p>
        <p>
This means the question ultimately comes down to whether or not the convenience oriented
features that allow you quickly create, clone, and reuse complete environments are
worth the increased cost.  SkyTap doesn’t publish prices on their website so
if you are interesting in the convenience features give them a call.
</p>
        <p>
FYI: I am not a skytap customer nor do I even have a demo account.  Just thought
I would share what I learned.
</p>
        <img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=f029f854-7950-428f-83e6-821e837ee277" />
      </body>
      <title>Why would you use SkyTap over Amazon EC2?</title>
      <guid isPermaLink="false">http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,f029f854-7950-428f-83e6-821e837ee277.aspx</guid>
      <link>http://www.vergentsoftware.com/blogs/ckinsman/WhyWouldYouUseSkyTapOverAmazonEC2.aspx</link>
      <pubDate>Sun, 11 Mar 2012 04:20:21 GMT</pubDate>
      <description>&lt;p&gt;
I have a customer who is a consulting firm that does quite a bit of .NET, Sharepoint,
and Mobile work. They have various remote developers throughout the United States
and have opened an office in Vietnam to offshore some of the work.
&lt;/p&gt;
&lt;p&gt;
They currently have a server sitting in a co-location running Hyper-V with about a
dozen or so VMs. The VMs are typically staging and integration environments where
they deploy their work and then allow their customers to connect in and check things
out, typically over HTTP. They have found they have just about hit the limit of their
existing hardware and we were chatting about whether it made sense to purchase some
new hardware or purchase VMs from any number of cloud providers like RackSpace or
Amazon EC2.
&lt;/p&gt;
&lt;p&gt;
While looking at this question I remembered about a local company, &lt;a href="http://www.skytap.com"&gt;SkyTap&lt;/a&gt;,
here in Seattle that I had looked at when in a former job. I was debating moving our
development and testing lab into the cloud.&amp;nbsp; At the time I didn’t pull the trigger
as we ended up getting some decommissioned hardware from our production data center
that we used to fill the gap.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Now with all the folks offering cloud based virtual instances I was curious what was
so unique about SkyTap.&amp;nbsp; I gave them a call to get some pricing and they offered
to sit down and walk me through their offering.
&lt;/p&gt;
&lt;p&gt;
First off SkyTap isn’t trying to compete with &lt;a href="http://www.windowsazure.com"&gt;Microsoft
Windows Azure&lt;/a&gt;, &lt;a href="http://aws.amazon.com/ec2/"&gt;Amazon EC2&lt;/a&gt; or &lt;a href="http://www.rackspace.com/cloud/"&gt;Rackspace&lt;/a&gt; to
run your production applications.&amp;nbsp; They see their niche as providing elastic
capacity to corporations for non-production needs.&amp;nbsp; Complete environment for
Development, Quality Assurance, Training, and Sales.&amp;nbsp; Their secret sauce is how
quickly they can get a particular environment up and running for you. 
&lt;/p&gt;
&lt;p&gt;
The interface to their offering is completely web based and browser/platform agnostic.&amp;nbsp;
The demo I received was done under OS X in Google Chrome. To quickly get started you
start by creating a new VM from a template. They offer a large number of preconfigured
templates for most of the operating systems out there.&amp;nbsp; Windows XP, Windows 7,
Windows 2008R2, Ubuntu, Red Hat, etc.&amp;nbsp; They provide pre-configured templates
at each patch/service pack level.&amp;nbsp; The combination of base platform + service
pack means out of the box they offer a few 100 templates to get you started.
&lt;/p&gt;
&lt;p&gt;
Select a template, ask it to create a VM and 15-20 seconds later you have a spun up
instance of the operating system that is just waiting for you to personalize it with
things like the machine name, license key, etc.
&lt;/p&gt;
&lt;p&gt;
When you spin up a new VM it comes up in a “Configuration” or environment that is
isolated from all other VMs in the system as well as the internet. You can modify
the default configuration and add CPU, Memory, NICs, Disk, etc. This is similar to
the "Network Fence” concept in Visual Studio Lab Management.&amp;nbsp; Each configuration
may contain one or more virtual networks to allow you to reproduce your desired application
deployment architecture.&amp;nbsp; Configurations can be connected to one another to simulate
distributed architectures.
&lt;/p&gt;
&lt;p&gt;
You can connect directly to the machine in two ways.&amp;nbsp; They provide a web based
Java plugin they call the SRA that is essentially a Virtual KVM that allows you “bare
metal” access to all of your VMs.&amp;nbsp; Alternatively you can expose the VM to the
internet for RDP or SSH access via NAT.&amp;nbsp; The endpoint used to access the VM is
shown in the management web site.
&lt;/p&gt;
&lt;p&gt;
If you want to make the applications running on the machine actually accessible to
the internet you can map public IP addresses to the configuration and then map them
to networks internal to the configuration.
&lt;/p&gt;
&lt;p&gt;
Once you have your application deployed SkyTap has a number of very cool features
you can leverage.
&lt;/p&gt;
&lt;p&gt;
How many times have you gotten an email like this: “Testing a breaking change in QA1.&amp;nbsp;
Will have environment back up and running in 30 minutes.”&amp;nbsp; With SkyTap the individual
who needs to run the test can click a button and in a couple of minutes clone the
entire environment and have it up and running in a new configuration alongside the
old one.&amp;nbsp; She can do her tests and then delete the configuration.
&lt;/p&gt;
&lt;p&gt;
If you have a complication application setup that you need to spin up on a regular
basis you can get if configured and installed and then with the press of a button
indicate to SkyTap that you would like this to be created as a new template.&amp;nbsp;
This will allow you to create a new configuration from the template in minutes and
have a complete multi-VM configuration spun up.&amp;nbsp; Great for load testing where
you may want to spin up a Test Controller and multiple load agents all at once.
&lt;/p&gt;
&lt;p&gt;
Similar to the other cloud services you are billed based on how many resources you
use.&amp;nbsp; SkyTap introduces the concept of a SVM (SkyTap Virtual Machine).&amp;nbsp;
It isn’t what you would think.&amp;nbsp; Each VM uses a variable number of SVMs based
on how many CPUs or how many gigabytes of memory the machine has allocated.&amp;nbsp;
The VM is billed based on the greater of number of CPUs or allocated memory. 
&lt;/p&gt;
&lt;p&gt;
A machine with 4 CPUs and 2GB of memory would be 4 SVMs.&amp;nbsp; A machine with 2 CPUs
and 4GB of memory would also be 4 SVMs.
&lt;/p&gt;
&lt;p&gt;
Customers purchase a number of SVM hours and a quantity of disk space each month on
a subscription basis.&amp;nbsp; This is the one unfortunate aspect of the SkyTap model.&amp;nbsp;
I pay a fixed price per month + overage charges as opposed to paying for exactly what
I use.
&lt;/p&gt;
&lt;p&gt;
This means the question ultimately comes down to whether or not the convenience oriented
features that allow you quickly create, clone, and reuse complete environments are
worth the increased cost.&amp;nbsp; SkyTap doesn’t publish prices on their website so
if you are interesting in the convenience features give them a call.
&lt;/p&gt;
&lt;p&gt;
FYI: I am not a skytap customer nor do I even have a demo account.&amp;nbsp; Just thought
I would share what I learned.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=f029f854-7950-428f-83e6-821e837ee277" /&gt;</description>
      <comments>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,f029f854-7950-428f-83e6-821e837ee277.aspx</comments>
      <category>ALM</category>
      <category>TFS</category>
    </item>
    <item>
      <trackback:ping>http://www.vergentsoftware.com/blogs/ckinsman/Trackback.aspx?guid=32e52fb9-36b0-47e2-8f06-1371e420c2a3</trackback:ping>
      <pingback:server>http://www.vergentsoftware.com/blogs/ckinsman/pingback.aspx</pingback:server>
      <pingback:target>http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,32e52fb9-36b0-47e2-8f06-1371e420c2a3.aspx</pingback:target>
      <dc:creator>Chris Kinsman</dc:creator>
      <wfw:comment>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,32e52fb9-36b0-47e2-8f06-1371e420c2a3.aspx</wfw:comment>
      <wfw:commentRss>http://www.vergentsoftware.com/blogs/ckinsman/SyndicationService.asmx/GetEntryCommentsRss?guid=32e52fb9-36b0-47e2-8f06-1371e420c2a3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
My main machine nowadays is a MacBook air running Windows 7 most of the time. Wish
I could get 8GB into it but other than that I really love the hardware. With the Windows
8 consumer preview out I had to give it a try. I was a little reticent given the Apple
hardware to install Windows 8 with bootcamp. Couldn’t find many examples of folks
who had done it yet. Figured I would wait for a few other folks to blaze that trail. 
</p>
        <p>
That left virtualization. I have seen a few posts from folks who have been disappointed
with the performance when Windows 8 is virtualized. Even Microsoft recommends against
it.
</p>
        <p>
I decided to forge ahead anyway using the new VMWare 8 since Hyper-V won’t run on
Windows 7 (can’t wait for Hyper-V in Windows 8!). Installed using the Windows 7 operating
system choice in VMware with no problems. Since the MacBook Air only has 4GB I limited
the VM to 1GB of memory. I was actually shocked at how quickly it installed, around
15 minutes from the USB key to the virtual disk sitting on my SSD. 
</p>
        <p>
At first I was a bit disappointed with the performance.  The graphics weren’t
that fluid.  Installed the VMWare Integration Services and what a huge difference. 
The Windows Experience Index shot up to a 5.3 for graphics and I got the fluidity
folks are talking about.
</p>
        <p>
Performance is pretty darn good in only a 1GB VM.  Quite usable. 
</p>
        <p>
Performance at first was not that great.
</p>
        <img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=32e52fb9-36b0-47e2-8f06-1371e420c2a3" />
      </body>
      <title>Windows 8 in a Virtual Machine</title>
      <guid isPermaLink="false">http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,32e52fb9-36b0-47e2-8f06-1371e420c2a3.aspx</guid>
      <link>http://www.vergentsoftware.com/blogs/ckinsman/Windows8InAVirtualMachine.aspx</link>
      <pubDate>Tue, 06 Mar 2012 14:21:00 GMT</pubDate>
      <description>&lt;p&gt;
My main machine nowadays is a MacBook air running Windows 7 most of the time. Wish
I could get 8GB into it but other than that I really love the hardware. With the Windows
8 consumer preview out I had to give it a try. I was a little reticent given the Apple
hardware to install Windows 8 with bootcamp. Couldn’t find many examples of folks
who had done it yet. Figured I would wait for a few other folks to blaze that trail. 
&lt;/p&gt;
&lt;p&gt;
That left virtualization. I have seen a few posts from folks who have been disappointed
with the performance when Windows 8 is virtualized. Even Microsoft recommends against
it.
&lt;/p&gt;
&lt;p&gt;
I decided to forge ahead anyway using the new VMWare 8 since Hyper-V won’t run on
Windows 7 (can’t wait for Hyper-V in Windows 8!). Installed using the Windows 7 operating
system choice in VMware with no problems. Since the MacBook Air only has 4GB I limited
the VM to 1GB of memory. I was actually shocked at how quickly it installed, around
15 minutes from the USB key to the virtual disk sitting on my SSD. 
&lt;/p&gt;
&lt;p&gt;
At first I was a bit disappointed with the performance.&amp;nbsp; The graphics weren’t
that fluid.&amp;nbsp; Installed the VMWare Integration Services and what a huge difference.&amp;nbsp;
The Windows Experience Index shot up to a 5.3 for graphics and I got the fluidity
folks are talking about.
&lt;/p&gt;
&lt;p&gt;
Performance is pretty darn good in only a 1GB VM.&amp;nbsp; Quite usable. 
&lt;/p&gt;
&lt;p&gt;
Performance at first was not that great.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=32e52fb9-36b0-47e2-8f06-1371e420c2a3" /&gt;</description>
      <comments>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,32e52fb9-36b0-47e2-8f06-1371e420c2a3.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.vergentsoftware.com/blogs/ckinsman/Trackback.aspx?guid=aa99d791-ec54-421f-9e28-5576618441ab</trackback:ping>
      <pingback:server>http://www.vergentsoftware.com/blogs/ckinsman/pingback.aspx</pingback:server>
      <pingback:target>http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,aa99d791-ec54-421f-9e28-5576618441ab.aspx</pingback:target>
      <dc:creator>Chris Kinsman</dc:creator>
      <wfw:comment>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,aa99d791-ec54-421f-9e28-5576618441ab.aspx</wfw:comment>
      <wfw:commentRss>http://www.vergentsoftware.com/blogs/ckinsman/SyndicationService.asmx/GetEntryCommentsRss?guid=aa99d791-ec54-421f-9e28-5576618441ab</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Grab your bits on MSDN.
</p>
        <p>
Then head <a href="http://blogs.msdn.com/b/briankel/archive/2011/09/16/visual-studio-11-application-lifecycle-management-virtual-machine-and-hands-on-labs-demo-scripts.aspx">here</a> to
download some hands on labs around the cool new features in TFS!
</p>
        <p>
Labs are available on: 
</p>
        <ul>
          <li>
            <a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Agile%20Project%20Management%20in%20Team%20Foundation%20Server%2011.docx">Agile
Project Management in Team Foundation Server 11</a>
          </li>
          <li>
            <a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Building%20the%20Right%20Software%20-%20Generating%20Storyboards%20and%20Collecting%20Stakeholder%20Feedback%20with%20Visual%20Studio%2011.docx">Building
the Right Software - Generating Storyboards and Collecting Stakeholder Feedback with
Visual Studio 11</a>
          </li>
          <li>
            <a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Diagnosing%20Issues%20in%20Production%20with%20IntelliTrace%20and%20Visual%20Studio%2011.docx">Diagnosing
Issues in Production with IntelliTrace and Visual Studio 11</a>
          </li>
          <li>
            <a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Exploratory%20Testing%20and%20Other%20Enhancements%20in%20Microsoft%20Test%20Manager%2011.docx">Exploratory
Testing and Other Enhancements in Microsoft Test Manager 11</a>
          </li>
          <li>
            <a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Making%20Developers%20More%20Productive%20with%20Team%20Foundation%20Server%2011.docx">Making
Developers More Productive with Team Foundation Server 11</a>
          </li>
          <li>
            <a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Unit%20Testing%20with%20Visual%20Studio%2011%20-%20MSTest,%20NUnit,%20xUnit.net,%20and%20Code%20Clone.docx">Unit
Testing with Visual Studio 11 - MSTest, NUnit, xUnit.net, and Code Clone</a>
          </li>
        </ul>
        <p>
Microsoft even provides a Virtual Machine with all the bits pre-installed, a solution
to walk through and even process data loaded into the TFS instance so you can look
at backlogs, stories, etc.
</p>
        <p>
Good stuff.
</p>
        <img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=aa99d791-ec54-421f-9e28-5576618441ab" />
      </body>
      <title>VS11 Beta and VS11 TFS are now available for download</title>
      <guid isPermaLink="false">http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,aa99d791-ec54-421f-9e28-5576618441ab.aspx</guid>
      <link>http://www.vergentsoftware.com/blogs/ckinsman/VS11BetaAndVS11TFSAreNowAvailableForDownload.aspx</link>
      <pubDate>Sat, 03 Mar 2012 04:10:00 GMT</pubDate>
      <description>&lt;p&gt;
Grab your bits on MSDN.
&lt;/p&gt;
&lt;p&gt;
Then head &lt;a href="http://blogs.msdn.com/b/briankel/archive/2011/09/16/visual-studio-11-application-lifecycle-management-virtual-machine-and-hands-on-labs-demo-scripts.aspx"&gt;here&lt;/a&gt; to
download some hands on labs around the cool new features in TFS!
&lt;/p&gt;
&lt;p&gt;
Labs are available on: 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Agile%20Project%20Management%20in%20Team%20Foundation%20Server%2011.docx"&gt;Agile
Project Management in Team Foundation Server 11&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Building%20the%20Right%20Software%20-%20Generating%20Storyboards%20and%20Collecting%20Stakeholder%20Feedback%20with%20Visual%20Studio%2011.docx"&gt;Building
the Right Software - Generating Storyboards and Collecting Stakeholder Feedback with
Visual Studio 11&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Diagnosing%20Issues%20in%20Production%20with%20IntelliTrace%20and%20Visual%20Studio%2011.docx"&gt;Diagnosing
Issues in Production with IntelliTrace and Visual Studio 11&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Exploratory%20Testing%20and%20Other%20Enhancements%20in%20Microsoft%20Test%20Manager%2011.docx"&gt;Exploratory
Testing and Other Enhancements in Microsoft Test Manager 11&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Making%20Developers%20More%20Productive%20with%20Team%20Foundation%20Server%2011.docx"&gt;Making
Developers More Productive with Team Foundation Server 11&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Unit%20Testing%20with%20Visual%20Studio%2011%20-%20MSTest,%20NUnit,%20xUnit.net,%20and%20Code%20Clone.docx"&gt;Unit
Testing with Visual Studio 11 - MSTest, NUnit, xUnit.net, and Code Clone&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Microsoft even provides a Virtual Machine with all the bits pre-installed, a solution
to walk through and even process data loaded into the TFS instance so you can look
at backlogs, stories, etc.
&lt;/p&gt;
&lt;p&gt;
Good stuff.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=aa99d791-ec54-421f-9e28-5576618441ab" /&gt;</description>
      <comments>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,aa99d791-ec54-421f-9e28-5576618441ab.aspx</comments>
      <category>TFS</category>
    </item>
    <item>
      <trackback:ping>http://www.vergentsoftware.com/blogs/ckinsman/Trackback.aspx?guid=595a46c5-497a-4452-9440-13ad61166e4f</trackback:ping>
      <pingback:server>http://www.vergentsoftware.com/blogs/ckinsman/pingback.aspx</pingback:server>
      <pingback:target>http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,595a46c5-497a-4452-9440-13ad61166e4f.aspx</pingback:target>
      <dc:creator>Chris Kinsman</dc:creator>
      <wfw:comment>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,595a46c5-497a-4452-9440-13ad61166e4f.aspx</wfw:comment>
      <wfw:commentRss>http://www.vergentsoftware.com/blogs/ckinsman/SyndicationService.asmx/GetEntryCommentsRss?guid=595a46c5-497a-4452-9440-13ad61166e4f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Grab your bits on MSDN.
</p>
        <p>
Then head <a href="http://blogs.msdn.com/b/briankel/archive/2011/09/16/visual-studio-11-application-lifecycle-management-virtual-machine-and-hands-on-labs-demo-scripts.aspx">here</a> to
download some hands on labs around the cool new features in TFS!
</p>
        <p>
Labs are available on: 
</p>
        <ul>
          <li>
            <a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Agile%20Project%20Management%20in%20Team%20Foundation%20Server%2011.docx">Agile
Project Management in Team Foundation Server 11</a>
          </li>
          <li>
            <a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Building%20the%20Right%20Software%20-%20Generating%20Storyboards%20and%20Collecting%20Stakeholder%20Feedback%20with%20Visual%20Studio%2011.docx">Building
the Right Software - Generating Storyboards and Collecting Stakeholder Feedback with
Visual Studio 11</a>
          </li>
          <li>
            <a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Diagnosing%20Issues%20in%20Production%20with%20IntelliTrace%20and%20Visual%20Studio%2011.docx">Diagnosing
Issues in Production with IntelliTrace and Visual Studio 11</a>
          </li>
          <li>
            <a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Exploratory%20Testing%20and%20Other%20Enhancements%20in%20Microsoft%20Test%20Manager%2011.docx">Exploratory
Testing and Other Enhancements in Microsoft Test Manager 11</a>
          </li>
          <li>
            <a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Making%20Developers%20More%20Productive%20with%20Team%20Foundation%20Server%2011.docx">Making
Developers More Productive with Team Foundation Server 11</a>
          </li>
          <li>
            <a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Unit%20Testing%20with%20Visual%20Studio%2011%20-%20MSTest,%20NUnit,%20xUnit.net,%20and%20Code%20Clone.docx">Unit
Testing with Visual Studio 11 - MSTest, NUnit, xUnit.net, and Code Clone</a>
          </li>
        </ul>
        <p>
Microsoft even provides a Virtual Machine with all the bits pre-installed, a solution
to walk through and even process data loaded into the TFS instance so you can look
at backlogs, stories, etc.
</p>
        <p>
Good stuff.
</p>
        <img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=595a46c5-497a-4452-9440-13ad61166e4f" />
      </body>
      <title>VS11 Beta and VS11 TFS are now available for download</title>
      <guid isPermaLink="false">http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,595a46c5-497a-4452-9440-13ad61166e4f.aspx</guid>
      <link>http://www.vergentsoftware.com/blogs/ckinsman/VS11BetaAndVS11TFSAreNowAvailableForDownload.aspx</link>
      <pubDate>Sat, 03 Mar 2012 04:10:00 GMT</pubDate>
      <description>&lt;p&gt;
Grab your bits on MSDN.
&lt;/p&gt;
&lt;p&gt;
Then head &lt;a href="http://blogs.msdn.com/b/briankel/archive/2011/09/16/visual-studio-11-application-lifecycle-management-virtual-machine-and-hands-on-labs-demo-scripts.aspx"&gt;here&lt;/a&gt; to
download some hands on labs around the cool new features in TFS!
&lt;/p&gt;
&lt;p&gt;
Labs are available on: 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Agile%20Project%20Management%20in%20Team%20Foundation%20Server%2011.docx"&gt;Agile
Project Management in Team Foundation Server 11&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Building%20the%20Right%20Software%20-%20Generating%20Storyboards%20and%20Collecting%20Stakeholder%20Feedback%20with%20Visual%20Studio%2011.docx"&gt;Building
the Right Software - Generating Storyboards and Collecting Stakeholder Feedback with
Visual Studio 11&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Diagnosing%20Issues%20in%20Production%20with%20IntelliTrace%20and%20Visual%20Studio%2011.docx"&gt;Diagnosing
Issues in Production with IntelliTrace and Visual Studio 11&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Exploratory%20Testing%20and%20Other%20Enhancements%20in%20Microsoft%20Test%20Manager%2011.docx"&gt;Exploratory
Testing and Other Enhancements in Microsoft Test Manager 11&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Making%20Developers%20More%20Productive%20with%20Team%20Foundation%20Server%2011.docx"&gt;Making
Developers More Productive with Team Foundation Server 11&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Unit%20Testing%20with%20Visual%20Studio%2011%20-%20MSTest,%20NUnit,%20xUnit.net,%20and%20Code%20Clone.docx"&gt;Unit
Testing with Visual Studio 11 - MSTest, NUnit, xUnit.net, and Code Clone&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Microsoft even provides a Virtual Machine with all the bits pre-installed, a solution
to walk through and even process data loaded into the TFS instance so you can look
at backlogs, stories, etc.
&lt;/p&gt;
&lt;p&gt;
Good stuff.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=595a46c5-497a-4452-9440-13ad61166e4f" /&gt;</description>
      <comments>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,595a46c5-497a-4452-9440-13ad61166e4f.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.vergentsoftware.com/blogs/ckinsman/Trackback.aspx?guid=409e0ab0-f78d-4886-818f-b57b049d2687</trackback:ping>
      <pingback:server>http://www.vergentsoftware.com/blogs/ckinsman/pingback.aspx</pingback:server>
      <pingback:target>http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,409e0ab0-f78d-4886-818f-b57b049d2687.aspx</pingback:target>
      <dc:creator>Chris Kinsman</dc:creator>
      <wfw:comment>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,409e0ab0-f78d-4886-818f-b57b049d2687.aspx</wfw:comment>
      <wfw:commentRss>http://www.vergentsoftware.com/blogs/ckinsman/SyndicationService.asmx/GetEntryCommentsRss?guid=409e0ab0-f78d-4886-818f-b57b049d2687</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 
</p>
        <p>
Grab your bits on MSDN!
</p>
        <p>
Then head <a href="http://blogs.msdn.com/b/briankel/archive/2011/09/16/visual-studio-11-application-lifecycle-management-virtual-machine-and-hands-on-labs-demo-scripts.aspx">here</a> to
download some hands on labs around the cool new features in TFS!
</p>
        <p>
Labs are available on: 
</p>
        <ul>
          <li>
            <a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Agile%20Project%20Management%20in%20Team%20Foundation%20Server%2011.docx">Agile
Project Management in Team Foundation Server 11</a>
          </li>
          <li>
            <a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Building%20the%20Right%20Software%20-%20Generating%20Storyboards%20and%20Collecting%20Stakeholder%20Feedback%20with%20Visual%20Studio%2011.docx">Building
the Right Software - Generating Storyboards and Collecting Stakeholder Feedback with
Visual Studio 11</a>
          </li>
          <li>
            <a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Diagnosing%20Issues%20in%20Production%20with%20IntelliTrace%20and%20Visual%20Studio%2011.docx">Diagnosing
Issues in Production with IntelliTrace and Visual Studio 11</a>
          </li>
          <li>
            <a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Exploratory%20Testing%20and%20Other%20Enhancements%20in%20Microsoft%20Test%20Manager%2011.docx">Exploratory
Testing and Other Enhancements in Microsoft Test Manager 11</a>
          </li>
          <li>
            <a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Making%20Developers%20More%20Productive%20with%20Team%20Foundation%20Server%2011.docx">Making
Developers More Productive with Team Foundation Server 11</a>
          </li>
          <li>
            <a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Unit%20Testing%20with%20Visual%20Studio%2011%20-%20MSTest,%20NUnit,%20xUnit.net,%20and%20Code%20Clone.docx">Unit
Testing with Visual Studio 11 - MSTest, NUnit, xUnit.net, and Code Clone</a>
          </li>
        </ul>
        <p>
Microsoft even provides a Virtual Machine with all the bits pre-installed, a solution
to walk through and even process data loaded into the TFS instance so you can look
at backlogs, stories, etc.
</p>
        <p>
Good stuff.
</p>
        <img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=409e0ab0-f78d-4886-818f-b57b049d2687" />
      </body>
      <title>VS11 and TFS Beta available now</title>
      <guid isPermaLink="false">http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,409e0ab0-f78d-4886-818f-b57b049d2687.aspx</guid>
      <link>http://www.vergentsoftware.com/blogs/ckinsman/VS11AndTFSBetaAvailableNow.aspx</link>
      <pubDate>Fri, 02 Mar 2012 20:51:16 GMT</pubDate>
      <description>&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Grab your bits on MSDN!
&lt;/p&gt;
&lt;p&gt;
Then head &lt;a href="http://blogs.msdn.com/b/briankel/archive/2011/09/16/visual-studio-11-application-lifecycle-management-virtual-machine-and-hands-on-labs-demo-scripts.aspx"&gt;here&lt;/a&gt; to
download some hands on labs around the cool new features in TFS!
&lt;/p&gt;
&lt;p&gt;
Labs are available on: 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Agile%20Project%20Management%20in%20Team%20Foundation%20Server%2011.docx"&gt;Agile
Project Management in Team Foundation Server 11&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Building%20the%20Right%20Software%20-%20Generating%20Storyboards%20and%20Collecting%20Stakeholder%20Feedback%20with%20Visual%20Studio%2011.docx"&gt;Building
the Right Software - Generating Storyboards and Collecting Stakeholder Feedback with
Visual Studio 11&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Diagnosing%20Issues%20in%20Production%20with%20IntelliTrace%20and%20Visual%20Studio%2011.docx"&gt;Diagnosing
Issues in Production with IntelliTrace and Visual Studio 11&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Exploratory%20Testing%20and%20Other%20Enhancements%20in%20Microsoft%20Test%20Manager%2011.docx"&gt;Exploratory
Testing and Other Enhancements in Microsoft Test Manager 11&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Making%20Developers%20More%20Productive%20with%20Team%20Foundation%20Server%2011.docx"&gt;Making
Developers More Productive with Team Foundation Server 11&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://download.microsoft.com/download/A/9/2/A9253B14-5F23-4BC8-9C7E-F5199DB5F831/Unit%20Testing%20with%20Visual%20Studio%2011%20-%20MSTest,%20NUnit,%20xUnit.net,%20and%20Code%20Clone.docx"&gt;Unit
Testing with Visual Studio 11 - MSTest, NUnit, xUnit.net, and Code Clone&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Microsoft even provides a Virtual Machine with all the bits pre-installed, a solution
to walk through and even process data loaded into the TFS instance so you can look
at backlogs, stories, etc.
&lt;/p&gt;
&lt;p&gt;
Good stuff.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=409e0ab0-f78d-4886-818f-b57b049d2687" /&gt;</description>
      <comments>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,409e0ab0-f78d-4886-818f-b57b049d2687.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.vergentsoftware.com/blogs/ckinsman/Trackback.aspx?guid=268c693e-da13-45ab-8878-9d02aa13f1c3</trackback:ping>
      <pingback:server>http://www.vergentsoftware.com/blogs/ckinsman/pingback.aspx</pingback:server>
      <pingback:target>http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,268c693e-da13-45ab-8878-9d02aa13f1c3.aspx</pingback:target>
      <dc:creator>Chris Kinsman</dc:creator>
      <wfw:comment>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,268c693e-da13-45ab-8878-9d02aa13f1c3.aspx</wfw:comment>
      <wfw:commentRss>http://www.vergentsoftware.com/blogs/ckinsman/SyndicationService.asmx/GetEntryCommentsRss?guid=268c693e-da13-45ab-8878-9d02aa13f1c3</wfw:commentRss>
      <title>How to be a program manager by Joel Spolsky</title>
      <guid isPermaLink="false">http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,268c693e-da13-45ab-8878-9d02aa13f1c3.aspx</guid>
      <link>http://www.vergentsoftware.com/blogs/ckinsman/HowToBeAProgramManagerByJoelSpolsky.aspx</link>
      <pubDate>Fri, 13 Mar 2009 14:48:34 GMT</pubDate>
      <description>&lt;a href="http://www.joelonsoftware.com/items/2009/03/09.html"&gt;How to be a program
manager&lt;/a&gt; by Joel Spolsky&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;
Having a good program manager is one of the secret formulas to making really great
software. And you probably don't have one on your team, because most teams don't.
&lt;/p&gt;
&lt;p&gt;
Charles Simonyi, the brilliant programmer who co-invented WYSIWYG word processing,
dated Martha Stewart, made a billion dollars off of Microsoft stock and went into
space, first tried to solve the &lt;a href="http://www.amazon.com/gp/product/0201835959?ie=UTF8&amp;amp;tag=joelonsoftware&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0201835959"&gt;Mythical
Man Month&lt;/a&gt; problem of organizing really big software teams by creating one super
duper Ã&amp;frac14;berprogrammer writing the top-level functions, while handing off the
implementation of the lower-level functions to a team of grunt junior-programmers
as needed. They called this position &lt;em&gt;program manager. &lt;/em&gt;Simonyi is brilliant,
but this idea, not so much. Nobody wanted to be a grunt junior programmer, I guess. 
&lt;/p&gt;
&lt;blockquote class="textmessage"&gt;For more on the history, read William Poundstone's &lt;a href="http://www.amazon.com/gp/product/0316778494?ie=UTF8&amp;amp;tag=joelonsoftware&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0316778494"&gt;How
Would You Move Mount Fuji?&lt;/a&gt;&lt;/blockquote&gt; 
&lt;p&gt;
Jabe Blumenthal, a programmer on the Mac Excel team in the late 80s, recycled the
title for a different job. He had noticed that software development was getting so
complicated that none of the programmers had the time to figure out how to make software
that was either usable or useful. The marketing team was ranting and raving about
customer needs and nobody had time to talk to them or translate their MBA-speak into
actual features. There was a lot of product design stuff that took a lot of work:
talking to users, running usability tests, reviewing competitive products, and thinking
hard about how to make things easier, and most programmers just didn't have the time
(nor were they particularly good at it). Blumenthal took the title "Program Manager,"
but reinvented the job completely.
&lt;/p&gt;
&lt;h3&gt;What does a program manager do?
&lt;/h3&gt;
&lt;p&gt;
Henceforth, a program manager would:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Design UIs 
&lt;/li&gt;
&lt;li&gt;
Write functional specs&lt;/li&gt;
&lt;li&gt;
Coordinate teams&lt;/li&gt;
&lt;li&gt;
Serve as the customer advocate, and&lt;/li&gt;
&lt;li&gt;
Wear Banana Republic chinos&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
On small products, you might just have one program manager, but on larger products,
you would probably have more than one. Each can be responsible for some subset of
the features. A good rule of thumb is that it takes about one program manager for
every four programmers. If you're having trouble dividing up the work, one approach
I learned from Mike Conte is to &lt;a href="http://www.joelonsoftware.com/uibook/chapters/fog0000000065.html"&gt;divide
up the product according to user activities&lt;/a&gt;. For example, Twitter could be divided
into four user activities:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Registering and getting started&lt;/li&gt;
&lt;li&gt;
Posting messages and reading replies&lt;/li&gt;
&lt;li&gt;
Configuring your account&lt;/li&gt;
&lt;li&gt;
Searching for news&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;span style="DISPLAY: block; FLOAT: right; MARGIN: 0px 0px 0.25ex 1em; POSITION: relative"&gt;&lt;a href="http://www.joelonsoftware.com/items/2009/03/09Meeting.jpg"&gt;&lt;img style="BORDER-RIGHT: #666 1px solid; BORDER-TOP: #666 1px solid; BORDER-LEFT: #666 1px solid; BORDER-BOTTOM: #666 1px solid" alt="" src="http://www.joelonsoftware.com/items/2009/03/09Meeting-thumbnail.jpg" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;span style="MARGIN-TOP: -1em; DISPLAY: block; FONT-SIZE: 60%; FLOAT: right; COLOR: #666; FONT-FAMILY: Helvetica,Arial,Sans-Serif"&gt;Tyler
Griffin Hicks-Wright&lt;/span&gt;&lt;/span&gt;My first program management assignment at Microsoft
was on Excel, working on the user activity called "customization," i.e., scripting
and macros. The first thing I had to do was figure out what customers needed, which
I did by talking to as many customers as I could until I started to get kind of bored
because I kept hearing the same thing. I spent a lot of time talking to the development
team to figure out what would be possible and reasonable to implement in a single
18 month release, and I spent a lot of time talking to the Visual Basic team to see
if they could supply a compiler, code editor, and dialog box editor that could be
used in Excel for our macro language. I also had to talk to Apple, which was developing
their own universal macro language called AppleScript, and the other application teams
at Microsoft, mainly Word, Access, Project, and Mail, who generally did whatever Excel
did. Most of this process consisted of talking. Meetings, email, phone calls. I am
scarred for life from this, and now cower in my office in fear that the phone will
ring.
&lt;/p&gt;
&lt;p&gt;
The second step was writing a vision statement: sort of a broad document that said,
this is how Visual Basic would work in Excel, this is what some sample macros would
look like, these are the major pieces we would need to build, and this is how it would
solve customers' problems. When that didn't generate too many objections, I started
working on a much more detailed spec, which explained, down to the smallest detail,
how everything looked to the user.
&lt;/p&gt;
&lt;p&gt;
This was a functional spec, not a technical spec, which means, all it talked about
was what the user saw, not how it was implemented. (&lt;a href="http://www.joelonsoftware.com/articles/fog0000000036.html"&gt;Read
all about functional specs here&lt;/a&gt;.) A program manager doesn't care how the development
team implements things internally. As I sent chapters of the spec to Ben Waldman,
the development lead, he and his team sat down and figured out what they had to do
internally to make it work. They came up with a rather brilliant and very compact
table that mapped the object-oriented interface I was defining onto internal Excel
functions, but that really wasn't my business. I didn't know too much about Excel
internals and didn't really know how things should be implemented.
&lt;/p&gt;
&lt;p&gt;
Truth be told, I didn't know anything about anything. Fresh out of college, I didn't
have enough experience to develop the code, test the code, write the documentation,
market the product, or do the usability tests. Luckily, Microsoft had seriously experienced
gurus in each of those positions, who taught me everything I know today, and who did
the real work of producing an awesome product. For example, I knew that users would
want to copy the value of a spreadsheet cell into a variable:
&lt;/p&gt;
&lt;pre&gt;x = [A1] 
&lt;/pre&gt;
&lt;p&gt;
had to work. The trouble was that a cell could hold a number or a string, but Basic
was early boundâ&amp;euro;&amp;brvbar; you had to DIM x as an Integer, Float or String before
you could use it.
&lt;/p&gt;
&lt;p&gt;
Basic had to get some kind of dynamic types, but I wasn't smart enough to figure out
how to do that. Didn't matter. Tom Corbett, a programmer on the Visual Basic team, &lt;a href="http://www.patentstorm.us/patents/5689709/description.html"&gt;figured
out how&lt;/a&gt;. And thus Variants and IDispatch were born, and Basic became a dynamic
language with what you kids now call "duck typing". The point being, my job wasn't
necessarily to solve problems, it was to figure out what customers needed and make
sure that programmers figured out how to solve them.
&lt;/p&gt;
&lt;p&gt;
Once the spec was finished and the development team got down to work, I had two responsibilities:
resolving any questions that came up about the design, and talking to all the other
teams so that the developers didn't have to. I met with the testers explaining how
things were supposed to work and helping them plan how to test everything. I met with
the documentation team, making sure they understood how to write a good tutorial and
reference for Excel Basic. I met with localization experts to figure out a localization
strategy. I sat down with marketing to explain the marketing benefits of VBA. I worked
with usability experts to set up usability tests.
&lt;/p&gt;
&lt;p&gt;
A program manager does go to a lot of meetings, but doesn't produce much other than
that written spec, which is why as a twerp fresh out of school I was still able to
do the job. You don't have to be a 14-year veteran programmer to work as a program
manager (in fact, with 14 years of programming experience, you might know too much
to be a good user advocate.)
&lt;/p&gt;
&lt;h3&gt;Conflict
&lt;/h3&gt;
&lt;p&gt;
&lt;span style="DISPLAY: block; FLOAT: right; MARGIN: 0px 0px 0.25ex 1em; POSITION: relative"&gt;&lt;a href="http://www.ok-cancel.com/comic/4.html"&gt;&lt;img style="BORDER-RIGHT: #666 1px solid; BORDER-TOP: #666 1px solid; BORDER-LEFT: #666 1px solid; BORDER-BOTTOM: #666 1px solid" alt="" src="http://www.joelonsoftware.com/items/2009/03/09DevUI-thumbnail.png" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;span style="MARGIN-TOP: -1em; DISPLAY: block; FONT-SIZE: 60%; FLOAT: right; COLOR: #666; FONT-FAMILY: Helvetica,Arial,Sans-Serif"&gt;&lt;a href="http://www.ok-cancel.com/comic/4.html"&gt;Tom
Chi and Kevin Cheng&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;Lacking a program manager, your garden-variety
super-smart programmer is going to come up with a completely baffling user interface
that makes perfect sense IF YOU'RE A VULCAN (cf. git). The best programmers are notoriously
brilliant, and have some trouble imagining what it must be like not to be able to
memorize 16 one-letter command line arguments. These programmers then have a tendency
to get attached to their first ideas, especially when they've already written the
code.
&lt;/p&gt;
&lt;p&gt;
One of the best things a program manager can add to the software design process is
a second opinion as to how things should be designed, hopefully one that is more empathetic
to those RETARDED USERS with their pesky mental feebleness requiring that an application
be usable without reading the man page, writing a custom emacs-lisp function, or translating
numbers into octal in your head.
&lt;/p&gt;
&lt;p&gt;
A good program manager will come with her own ideas for how the UI should work, which
might be better, or worse, than the developer's idea. And then there's a long debate.
Typically, the program manager wants something simple and easy to understand for the
users, featuring a telepathic user interface and a 30" screen that nonetheless fits
in your pocket, while the developer wants something that is trivial to implement in
code, with a command-line interface ("what's so unusable about that?") and Python
bindings.
&lt;/p&gt;
&lt;p&gt;
One of the most monumental debates I remember from the Excel 5 project was between
a developer who wanted pivot tables to float on the drawing layer above the spreadsheet,
and the program manager, who insisted that pivot tables live right in the cells on
the spreadsheet. This debate went on for a really, really long time, and eventually,
the program manager prevailed, but the final design came out much much better than
any one individual's design would have been.
&lt;/p&gt;
&lt;p&gt;
To make sure that the debate happens respectfully and on a rational basis of facts,
it's absolutely critical that the program managers and developers be &lt;em&gt;peers&lt;/em&gt;.
If developers report to the program manager, at some point during the debate the program
manager is going to get sick of the whole thing and just say, "OK, enough talking,
now we do it my way." When they're peers, this can never happen. It's a little bit
like courts of law: we don't allow a lawyer for one side to be the judge, and we work
on the theory that the truth is most likely to be uncovered through a process of debate
between equals. The debate can only be a fair one if neither side has an unfair advantage. 
&lt;/p&gt;
&lt;p&gt;
This is an important point, so if you were daydreaming about Sally in 11th grade,
wondering where she is now, snap out of it. She's a biotherapist in Scottsdale, and
a Republican. Now pay attention. Programmers &lt;em&gt;can't report to program managers&lt;/em&gt; which
means, among other things, that the development lead, or the CTO, or the CEO, can't
be the person who writes the specs.
&lt;/p&gt;
&lt;p&gt;
The &lt;em&gt;number one mistake&lt;/em&gt; most companies make is having the manager of the programmers
writing the specs and designing the product. This is a mistake because the design
does not get a fair trial, and is not born out of conflict and debate, so it's not
as good as it could be.
&lt;/p&gt;
&lt;p&gt;
I learned this the hard way. At Fog Creek Software, I did a lot of the program management
myself, and it was a constant battle to remind people that they were supposed to argue
with me when I said wrong things. We're not a big company but we are finally big enough
to have real program managers now, Dan and Jason, and the programmers &lt;em&gt;love&lt;/em&gt; arguing
with them.
&lt;/p&gt;
&lt;p&gt;
Of course, when programmers are peers of the program managers, the programmers tend
to have the upper hand. Here's something that has happened several times: a programmer
asks me to intervene in some debate he is having with a program manager. 
&lt;/p&gt;
&lt;p&gt;
&lt;span style="display: block; float: right; margin: 0px 0px 0.25ex 1em; position: relative"&gt;&lt;a href="http://www.joelonsoftware.com/items/2009/03/09tiara.jpg"&gt;&lt;img style="border-right: #666 1px solid; border-top: #666 1px solid; border-left: #666 1px solid; border-bottom: #666 1px solid" alt="" src="http://www.joelonsoftware.com/items/2009/03/09tiara-thumbnail.jpg"&gt;&lt;/a&gt;&lt;/span&gt;"Who
is going to write the code?" I asked.
&lt;/p&gt;
&lt;p&gt;
"I amâ&amp;euro;&amp;brvbar;"
&lt;/p&gt;
&lt;p&gt;
"OK, who checks things into source control?"
&lt;/p&gt;
&lt;p&gt;
"Me, I guess, â&amp;euro;&amp;brvbar;"
&lt;/p&gt;
&lt;p&gt;
"So what's the problem, exactly?" I asked. "You have absolute control over the state
of each and every bit in the final product. What else do you need? A tiara?"
&lt;/p&gt;
&lt;p&gt;
You see, it turns out that this system puts the burden on the program manager to persuade
the programmer, because at some point, the program manager runs the risk that the
programmer will give up and just do whatever the heck the programmer feels like. Thus,
being effective as a program manager means you have to (a) be right, and (b) earn
the respect of the programmers so that they concede that you're right.
&lt;/p&gt;
&lt;p&gt;
How do you earn this respect?
&lt;/p&gt;
&lt;p&gt;
It helps, as a program manager, to be pretty good at coding yourself. This is unfair.
Program managers aren't supposed to write code. But programmers tend to respect programmers
a lot more than non-programmers, no matter how smart they are. It is possible to be
an effective program manager without being a coder, but the burden of earning the
respect of the programming team will be higher.
&lt;/p&gt;
&lt;blockquote class=textmessage&gt;&lt;span style="font-weight: bold"&gt;flip the bozo bit &lt;/span&gt;&lt;span style="font-style: italic"&gt;v. &lt;/span&gt;Decide
that someone is a clown, and stop listening to them.&lt;/blockquote&gt; 
&lt;p&gt;
The other way to earn the programming team's respect is to demonstrate intelligence,
open-mindedness, and fairness in any debates that come up. If a program manager says
dumb things, the programmer might flip the bozo bit on them. If a program manager
becomes personally or emotionally attached to a certain way of doing things, to the
point at which they're being unreasonable, they're going to lose a lot of credibilityâ&amp;euro;&amp;brvbar;
both sides, but especially the program manager, need to be emotionally detached from
the debate and willing to consider new evidence and change their opinions when the
facts merit it. Finally, if a program manager is seen as playing politics, having
private meetings with the boss or trying to divide-and-conquer to win a debate instead
of debating on the merits, they're going to lose a lot of trust of the programmers.
&lt;/p&gt;
&lt;p&gt;
And when a program manager loses the programming team's trust, it's over. They're
not going to be effective. The programmers are going to tune them out and do whatever
they want anyway. This leads to worse code and wasted time, since not only are you
paying an ineffective program manager a salary, but that ineffective program manager
is calling meetings and soaking up everybody else's time even though they're not really
making the code any better.
&lt;/p&gt;
&lt;h3&gt;Specs? Really? That's so &lt;em&gt;unagile&lt;/em&gt;
&lt;/h3&gt;
&lt;p&gt;
&lt;span style="display: block; float: right; margin: 0px 0px 0.25ex 1em; position: relative"&gt;&lt;a href="http://www.joelonsoftware.com/items/2009/03/09interndesk.png"&gt;&lt;img style="border-right: #666 1px solid; border-top: #666 1px solid; border-left: #666 1px solid; border-bottom: #666 1px solid" alt="" src="http://www.joelonsoftware.com/items/2009/03/09interndesk-thumbnail.png"&gt;&lt;/a&gt;&lt;/span&gt;There
are so many development organizations where specs are a monument to mindless bureaucratic
paperwork that entire movements sprung up organized around the idea of not writing
specs. These people are misguided. Writing a functional specification is at the very
heart of agile development, because it lets you iterate rapidly over many possible
designs before you write code. Compared to code, a written spec is trivial to change.
The very act of writing a specification forces you to think through the design you
thought you had in your head, and helps you see the flaws in it quickly so that you
can iterate and try more designs. Teams that use functional specifications have better
designed products, because they had the opportunity to explore more possible solutions
quickly. They also write code faster, because they have a clearer picture when they
start of what's going to be needed. Functional specifications are so important one
of the few hard and fast rules at Fog Creek is "No Code Without Spec."
&lt;/p&gt;
&lt;p&gt;
The exact form the functional specification takes may vary. All a functional specification
has to do is explain how the program will behave. It doesn't say anything about how
the code will work internally. You start at the highest level: a vision statement,
no more than one page explaining the gist of the new feature. Once that's nailed down,
you can develop storyboardsâ&amp;euro;&amp;brvbar; mockups of the screens showing the user's
progression through the application, with detailed notes showing how they work. For
many types of functionality, especially UI-heavy functionality, once you have these
storyboards, you're done. That's your spec. &lt;a href="http://www.37signals.com/svn/archives/001050.php"&gt;Jason
Fried, you can go now&lt;/a&gt;.
&lt;/p&gt;
&lt;blockquote class=textmessage&gt;To learn how to write good functional specifications,
read my &lt;a href="http://www.joelonsoftware.com/articles/fog0000000036.html"&gt;four part
series&lt;/a&gt;. If you want to see a typical spec I wrote, you can download the full &lt;a href="http://www.joelonsoftware.com/articles/aardvarkspec.html"&gt;Fog
Creek Copilot spec&lt;/a&gt;.&lt;/blockquote&gt; 
&lt;p&gt;
For more complex functionality with hidden behavior that's not expressed in the UI
storyboards, you're going to want more details written down. In any case, the very
act of writing down a spec helps you discover problems, conflicts, and design issues
long before the first line of code is written, so when you do write the code, you
have far fewer unexpected issues popping up which might force a rewrite or, worse,
a suboptimal design.
&lt;/p&gt;
&lt;h3&gt;How do you learn to be a Program Manager?
&lt;/h3&gt;
&lt;p&gt;
Mostly, becoming a program manager is about learning: learning about technology, learning
about people, and learning how to be effective in a political organization. A good
program manager combines an engineer's approach to designing technology with a politician's
ability to build consensus and bring people together. While you're working on that,
though, there are a few books you should read:
&lt;/p&gt;
&lt;p&gt;
As far as I can tell, Scott Berkun's book &lt;a href="http://www.amazon.com/gp/product/0596517718?ie="UTF8&amp;amp;tag=joelonsoftware&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0596517718""&gt;Making
Things Happen&lt;/a&gt; is the only book that's been written that pretty much covers exactly
what a program manager has to do, so start with that. Scott was a program manager
on the Internet Explorer team for many years. 
&lt;/p&gt;
&lt;p&gt;
Another big part of the program manager's job is user interface design. Read Steve
Krug's &lt;a href="http://www.amazon.com/gp/product/0321344758?ie=UTF8&amp;amp;tag=joelonsoftware&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321344758"&gt;Don't
Make Me Think&lt;/a&gt;, then my own book &lt;a href="http://www.amazon.com/gp/product/1893115941?ie=UTF8&amp;amp;tag=joelonsoftware&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1893115941"&gt;User
Interface Design for Programmers&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Finally, and I know it sounds cheesy, but Dale Carnegie's 1937 book &lt;a href="http://www.amazon.com/gp/product/0671027034?ie=UTF8&amp;amp;tag=joelonsoftware&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0671027034"&gt;How
to Win Friends &amp;amp; Influence People&lt;/a&gt; is actually a fantastic introduction to
interpersonal skills. It's the first book I make all the management trainees at Fog
Creek read, before anything else, and they always snicker when I tell them to read
it, and love it when they're done.
&lt;/p&gt;
&lt;p&gt;
Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit
the &lt;a href="http://jobs.joelonsoftware.com/"&gt;Joel on Software Job Board&lt;/a&gt;: Great
software jobs, great people. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=268c693e-da13-45ab-8878-9d02aa13f1c3" /&gt;</description>
      <comments>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,268c693e-da13-45ab-8878-9d02aa13f1c3.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.vergentsoftware.com/blogs/ckinsman/Trackback.aspx?guid=455e6230-5040-4373-81c5-d5ed019dd428</trackback:ping>
      <pingback:server>http://www.vergentsoftware.com/blogs/ckinsman/pingback.aspx</pingback:server>
      <pingback:target>http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,455e6230-5040-4373-81c5-d5ed019dd428.aspx</pingback:target>
      <dc:creator>Chris Kinsman</dc:creator>
      <wfw:comment>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,455e6230-5040-4373-81c5-d5ed019dd428.aspx</wfw:comment>
      <wfw:commentRss>http://www.vergentsoftware.com/blogs/ckinsman/SyndicationService.asmx/GetEntryCommentsRss?guid=455e6230-5040-4373-81c5-d5ed019dd428</wfw:commentRss>
      <title>Interesting Take On The LdquoPrivate Cloudrdquo Conceptnbsp Not Sure If I Agree That The Main Thing Differentiating A</title>
      <guid isPermaLink="false">http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,455e6230-5040-4373-81c5-d5ed019dd428.aspx</guid>
      <link>http://www.vergentsoftware.com/blogs/ckinsman/InterestingTakeOnTheLdquoPrivateCloudrdquoConceptnbspNotSureIfIAgreeThatTheMainThingDifferentiatingA.aspx</link>
      <pubDate>Tue, 27 Jan 2009 22:07:25 GMT</pubDate>
      <description>&lt;p&gt;
Interesting take on the &amp;ldquo;Private Cloud&amp;rdquo; concept.&amp;nbsp; Not sure if I agree
that the main thing differentiating a &amp;ldquo;Cloud&amp;rdquo; is it&amp;rsquo;s scale.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://news.cnet.com/8301-13556_3-10150841-61.html?part=rss&amp;amp;subj=news&amp;amp;tag=2547-1_3-0-5"&gt;Just
don't call them private clouds&lt;/a&gt; 
&lt;br /&gt;
&lt;br /&gt;
Computing will take place both within and without enterprise data centers, but it's
not all cloud computing. The cloud concept should be applied more carefully. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=455e6230-5040-4373-81c5-d5ed019dd428" /&gt;</description>
      <comments>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,455e6230-5040-4373-81c5-d5ed019dd428.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.vergentsoftware.com/blogs/ckinsman/Trackback.aspx?guid=4390b75e-e54c-4925-9e0a-e6068d47b184</trackback:ping>
      <pingback:server>http://www.vergentsoftware.com/blogs/ckinsman/pingback.aspx</pingback:server>
      <pingback:target>http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,4390b75e-e54c-4925-9e0a-e6068d47b184.aspx</pingback:target>
      <dc:creator>Chris Kinsman</dc:creator>
      <wfw:comment>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,4390b75e-e54c-4925-9e0a-e6068d47b184.aspx</wfw:comment>
      <wfw:commentRss>http://www.vergentsoftware.com/blogs/ckinsman/SyndicationService.asmx/GetEntryCommentsRss?guid=4390b75e-e54c-4925-9e0a-e6068d47b184</wfw:commentRss>
      <title>Very Intersting Spin On VDInbsp Bears Some Watchinghellip A HrefhttpfeedsarstechnicacomrarstechnicaB</title>
      <guid isPermaLink="false">http://www.vergentsoftware.com/blogs/ckinsman/PermaLink,guid,4390b75e-e54c-4925-9e0a-e6068d47b184.aspx</guid>
      <link>http://www.vergentsoftware.com/blogs/ckinsman/VeryInterstingSpinOnVDInbspBearsSomeWatchinghellipAHrefhttpfeedsarstechnicacomrarstechnicaB.aspx</link>
      <pubDate>Tue, 27 Jan 2009 18:56:15 GMT</pubDate>
      <description>&lt;p&gt;
Very intersting spin on VDI.&amp;nbsp; Bears some watching&amp;hellip;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://feeds.arstechnica.com/~r/arstechnica/BAaf/~3/1YcuJaxsEQQ/20090122-citrix-intel-to-virtualize-the-desktop-with-new-hypervisor.html"&gt;Citrix,
Intel to virtualize the desktop with new hypervisor&lt;/a&gt; 
&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
Virtualizing servers to ease management and migration is commonplace for server infrastructure.
A newly-announced venture between Citrix and Intel could be the first step towards
bringing those same benefits to the desktop.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://arstechnica.com/news.ars/post/20090122-citrix-intel-to-virtualize-the-desktop-with-new-hypervisor.html"&gt;Read
More...&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://feedads.googleadservices.com/~at/tb0dGcdXT54tJceDXh2DirR_kHo/a"&gt;&lt;img ismap src="http://feedads.googleadservices.com/~at/tb0dGcdXT54tJceDXh2DirR_kHo/i" border="0" /&gt;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div class="feedflare"&gt;&lt;a href="http://feeds.arstechnica.com/~f/arstechnica/BAaf?a=fthG3PDk"&gt;&lt;img src="http://feeds2.feedburner.com/~f/arstechnica/BAaf?i=fthG3PDk" border="0" /&gt;&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~f/arstechnica/BAaf?a=wmUV9QxC"&gt;&lt;img src="http://feeds2.feedburner.com/~f/arstechnica/BAaf?d=50" border="0" /&gt;&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~f/arstechnica/BAaf?a=uSk0psx5"&gt;&lt;img src="http://feeds2.feedburner.com/~f/arstechnica/BAaf?d=41" border="0" /&gt;&gt;&lt;/a&gt; 
&lt;/div&gt;
&lt;img height="1" src="http://feeds2.feedburner.com/~r/arstechnica/BAaf/~4/1YcuJaxsEQQ" width="1" /&gt; &lt;img width="0" height="0" src="http://www.vergentsoftware.com/blogs/ckinsman/aggbug.ashx?id=4390b75e-e54c-4925-9e0a-e6068d47b184" /&gt;</description>
      <comments>http://www.vergentsoftware.com/blogs/ckinsman/CommentView,guid,4390b75e-e54c-4925-9e0a-e6068d47b184.aspx</comments>
    </item>
  </channel>
</rss>