<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Amit Chatterjee&amp;#39;s Blog</title><subtitle type="html">Visual Studio, Development and Testing, Virtualization, and other topics</subtitle><id>http://blogs.msdn.com/b/amit_chatterjee/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/b/amit_chatterjee/atom.aspx" /><generator uri="http://telligent.com" version="5.6.583.17018">Telligent Community 5.6.583.17018 (Build: 5.6.583.17018)</generator><updated>2009-12-07T16:22:00Z</updated><entry><title>Submitting the Windows Phone application to the Marketplace</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/07/30/submitting-the-windows-phone-application-to-the-marketplace.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2011/07/30/submitting-the-windows-phone-application-to-the-marketplace.aspx</id><published>2011-07-30T07:52:08Z</published><updated>2011-07-30T07:52:08Z</updated><content type="html">&lt;p&gt;The last several weeks have been quite busy at work. However, I finally found the time to publish my application to the market place and it now now live there, with a few downloads reported too! In this post I will walk you through the steps involved in submissions, and share with you my experience.&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;    &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;Registering at the App Hub&lt;/h2&gt;  &lt;p&gt;Before you can submit an app to the market place, you first need to register for “App Hub” membership. You do this by going to &lt;a href="http://create.msdn.com"&gt;http://create.msdn.com&lt;/a&gt;. This essentially is a vibrant community of app and game developers for both Windows Phone and XBOX live games. The hub provides free tools, information, and the community you need to create and publish beautiful apps and games that reach every Windows Phone user and XBOX live members worldwide. Here’s how the home screen looks before you sign up&lt;/p&gt;  &lt;p&gt;You first need to register for an annual subscription of $99 USD that gives you the following privileges for both the world of phone apps and XBOX.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6683.image_5F00_02078DB9.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5516.image_5F00_thumb_5F00_2CFF7BBE.png" width="554" height="196" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The registration itself is a 5 step process as noted below and is quite simple. I show some of the screens below as well&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2772.image_5F00_5B9584A0.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4431.image_5F00_thumb_5F00_0B702662.png" width="204" height="239" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7658.clip_5F00_image002_5F00_44A68D57.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/1385.clip_5F00_image002_5F00_thumb_5F00_0F1DA565.jpg" width="354" height="279" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/8306.clip_5F00_image00211_5F00_3A15936A.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002[11]" border="0" alt="clip_image002[11]" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5076.clip_5F00_image00211_5F00_thumb_5F00_6F5EA5CF.jpg" width="279" height="248" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/1348.clip_5F00_image00213_5F00_140FBD47.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002[13]" border="0" alt="clip_image002[13]" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4064.clip_5F00_image00213_5F00_thumb_5F00_56FB65E7.jpg" width="279" height="252" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Once signed up, the App Hub home screen now looks like the following. Notice the advertisement for the next version of Windows Phone, code named Mango! I can’t wait to upgrade my phone, and have been waiting to finish this tutorial and getting my application published!. My next app will be on Mango!&lt;/p&gt;  &lt;p&gt;Also notice that the action on the App Hub are different now – for example, you get the option of “Submitting for Windows Phone”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/1325.image_5F00_4295A05C.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/8357.image_5F00_thumb_5F00_2F349E23.png" width="554" height="302" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;The App Submission flow&lt;/h2&gt;  &lt;p&gt;The following diagram captures the flow involved in the app submission process&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4135.image_5F00_3E77DA65.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5102.image_5F00_thumb_5F00_43D6253C.png" width="554" height="573" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We have of course so far been focusing on the first step of the process – creating the application in Visual Studio. I have also been developing using the Emulator. Before submitting the application it is of course also very important to test on an actual device. To do this however you will need to “Unlock” the phone. To do this, connect a phone device to your laptop using the USB (charging) cable, and the run the “Windows Phone Developer Registration” application from the Windows Start menu (this application gets installed on your system when you download the phone development tool kit). The application looks like the following – it takes in your Live ID and then “Unlocks” the phone device so that Visual Studio can deploy the phone application binary directly onto the phone device. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0486.image_5F00_08FE5699.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/1070.image_5F00_thumb_5F00_59BC4534.png" width="404" height="367" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In Visual Studio you can select the “Windows Phone 7 Device” as the target for the publishing as shown in the Visual Studio Menu bar below. Now when you build and publish, the application will be deployed on the device and you can do your pre-certification device testing there. The application of course worked well for me there.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2626.image_5F00_7DF103E9.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0804.image_5F00_thumb_5F00_5AE09279.png" width="404" height="62" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;h6&gt;&lt;/h6&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;The Certification Process&lt;/h2&gt;  &lt;p&gt;The certification process is of course the most important part of the submission. The goal is to ensure that before any application or game is taken into the market place, it is certified that the application is reliable, it makes efficient use of device resources, the do not adversely interfere with the device functionality, and that they are free of any malicious software. &lt;/p&gt;  &lt;p&gt;The full certification and submission process is as outlined below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/3515.image_5F00_17B5144C.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0871.image_5F00_thumb_5F00_5FB32068.png" width="554" height="258" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4572.image_5F00_33D2A6AC.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0066.image_5F00_thumb_5F00_6D090DA1.png" width="554" height="130" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;The flow through the certification process&lt;/h2&gt;  &lt;p&gt;The following screen shots show the flow, as I proceeded with each step of the certification process. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7384.image22_5F00_498C693C.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4152.image22_5F00_thumb_5F00_6D25453C.png" width="554" height="348" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The submission process starts with the “Upload” step where you select the name of the application, give it a version number, and point to the .XAP file in the bin\release directory where Visual Studio builds the application. Note that the entire application is contained in single binary manifest file of extension XAP. This is shown below.&lt;/p&gt;  &lt;p&gt;On hitting next on this screen, the submission process found one error – that my application did not have the locale information marked correctly. At this point I had to add the following lines to the MainPage.xaml.cs to mark the locale as “English”, recompile the application to regenerate the XAP file, test it, and redo the application submission process.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5710.image_5F00_651D7D0D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2260.image_5F00_thumb_5F00_2AC2072C.png" width="404" height="77" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The next step is to describe the application by providing information that will later show up in the application market place.&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0508.image26_5F00_0889FBA6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0167.image26_5F00_thumb_5F00_6E396CB4.png" width="554" height="455" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This information will help potential buyers decide whether they want to try or buy your application or not. Here you choose to describe the category that best describes what the application does, a detailed description, and also key words that will lead an application search to your application. This essentially is your “marketing” collateral for your app.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5023.image30_5F00_701695F0.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2210.image30_5F00_thumb_5F00_0BE77F4F.png" width="554" height="458" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As part of this step, you are also needed to provide various icons and art work that are used in various places in the market place. Here note that the Large Mobile Tile app is really a mandatory image (as I would learn later) though it is not marked as such. This icon is used when you pin your application to the start page. Likewise the “Background Art” image is mandatory too – it will be used when your application shows up in the market place. You can also submit a set of screen shots for the application and these will further describe and “market” your app when listed in the market place. The most convenient place to capture the screenshots of course is when you test your application on the Emulator. You can use the Windows Snipping tool to capture the screen shots – however, be sure to avoid including any of the Emulator “chrome” in the screen shot – this too I found out later.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6560.image33_5F00_568E471C.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5700.image33_5F00_thumb_5F00_70BE8A73.png" width="554" height="585" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The next step is to select the price for your application, and also decide which market placed the app would be listed in. There are three different geographical regions as you see in the image below. Select carefully and check out the defaults – or your application may not show up in the right marketplaces. (Note, each phone user provides a Live ID when they configure their phone for us. The country the Live ID is associated with then becomes the default market place for the “Marketplace” application on the phone.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/8512.image38_5F00_747C2F43.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7115.image38_5F00_thumb_5F00_63A45EC8.png" width="554" height="517" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The next step is to call out a set of testing instructions that will be carried out in the “backend” to make a final validation that the application works as designed. You can also select the publishing option – for example, you can select that the app be published as soon as the validation and certification is done, without any further interventions from you.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/3718.image42_5F00_4027BA63.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6507.image42_5F00_thumb_5F00_6F29F63A.png" width="554" height="403" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The last step then is to click the “Submit” button and submit the application.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0245.image50_5F00_012613FB.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/1212.image50_5F00_thumb_5F00_095A3992.png" width="554" height="524" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can track the state of the submission on the “My Dashboard” page at “App Hub”. For example, a couple of days later I noticed that my submission had run into issues. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0724.image11_5F00_4CE1C4E7.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2376.image11_5F00_thumb_5F00_7192DC5E.png" width="404" height="540" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/1854.image_5F00_55357471.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/1348.image_5F00_thumb_5F00_361F2B06.png" width="554" height="444" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As shown above, the certification had run into errors, and clicking on the “View Error” page leads you to a PDF file with details about the errors. The PDF files looked as follows&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7612.image_5F00_2074CC9C.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4048.image_5F00_thumb_5F00_20D0D9C4.png" width="504" height="619" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In my case all of the errors were related to the images and iconography. I was missing the large mobile tile app, and the background art image, and the application screenshot included the chrome of the Emulator. Also, it called out that one of the icons in my application was still the generic Windows Sunburst icon. I then proceeded to fix the errors and in the process created my own custom icon and images (using Microsoft Paint, and saving them as .PNG files of the different dimensions necessary, as called out in the submission process).&lt;/p&gt;  &lt;p&gt;I also had to select the “United States” market place, as apparently in the last submission I had not selected it. &lt;/p&gt;  &lt;h2&gt;The submission goes through &lt;/h2&gt;  &lt;p&gt;This time the submission went through without errors – a couple of days later, it was nice to see on the “Dashboard” that the process had worked, the app was in the Marketplace and it showed there were a few downloads too. The dashboard provides you several reports and statistics of your application.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6675.image_5F00_68528D1E.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5125.image_5F00_thumb_5F00_05783529.png" width="554" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2134.image_5F00_6267C3B8.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/1070.image_5F00_thumb_5F00_2E532465.png" width="554" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7356.image_5F00_6C000C21.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6761.image_5F00_thumb_5F00_1044F0A4.png" width="554" height="247" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;The App shows up in the Marketplace&lt;/h2&gt;  &lt;p&gt;It was exciting to then checkout the Marketplace on my phone, search for “AmitC”, and have the app show up – and I could install it from there! To capture an image of the app in the market place, I launched the Zune application and searched for the app there – and there it was!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5661.image_5F00_146EC869.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/8054.image_5F00_thumb_5F00_72734017.png" width="554" height="387" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It felt great to build, blog, and publish about this simple Windows Phone application. I hope it has spurred some of the readers to write and publish your own application. I really liked the Visual Studio tooling experience and felt proud of my team which has developed this tooling!&lt;/p&gt;  &lt;p&gt;On now to the Mango version of Windows Phone!&lt;/p&gt;  &lt;p&gt;Cheers!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10191358" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author><category term="Manual Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Manual+Testing/" /><category term="Test Automation" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Test+Automation/" /><category term="Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Testing/" /><category term="Visual Studio Team System" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+System/" /><category term="Visual Studio Team Test" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+Test/" /><category term="Windows Phone 7 Applications" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Windows+Phone+7+Applications/" /><category term="Visual Studio" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio/" /><category term="Visual Studio ALM" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+ALM/" /></entry><entry><title>Unit Testing the Windows Phone 7 applications</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/06/26/unit-testing-the-windows-phone-7-applications.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2011/06/26/unit-testing-the-windows-phone-7-applications.aspx</id><published>2011-06-26T09:21:00Z</published><updated>2011-06-26T09:21:00Z</updated><content type="html">&lt;p&gt;It&amp;rsquo;s been a long while since my last blog post. With some additional responsibilities at work, and a long trip to the US, I just did not find the time to update the blog with the latest developments. But I am happy to find time this weekend to bring the Chronometer Windows Phone 7 application to a logical closure. In this post I will also concentrate on the topic of unit testing windows phone applications.&lt;/p&gt;
&lt;h1&gt;A functional change first &amp;ndash; clearing the history&lt;/h1&gt;
&lt;p&gt;However, before I get to unit testing, I would like to add a small feature to the application. This is about clearing the history of the events that get displayed in the Stopwatch page. I do this by adding a &amp;ldquo;Clear History&amp;rdquo; menu item to the AppBar and then add a handler for the menu item to do the job.&lt;/p&gt;
&lt;p&gt;Here is the change in the XAML to add the menu item &amp;ndash; notice the new ApplicationBar.MenuItem &amp;ndash; the auto-completion intellisense feature when editing the XAML directly makes is very easy to add these UI elements.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7608.image_5F00_7CA1A5EC.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0841.image_5F00_thumb_5F00_00CB7DB2.png" width="554" height="153" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The code for the click handler looks as follows:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5633.image_5F00_55B34412.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/8666.image_5F00_thumb_5F00_4557CC59.png" width="554" height="336" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The screens below capture how the menu item shows up, and (on clicking) clears up the event list history captured till that point.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/8738.image_5F00_73EDD53B.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7268.image_5F00_thumb_5F00_4179DBEF.png" width="279" height="516" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6663.image_5F00_7D75F7D7.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5102.image_5F00_thumb_5F00_24A01B40.png" width="279" height="520" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;Using Jeff Wilcox&amp;rsquo;s unit testing framework &amp;hellip;&lt;/h1&gt;
&lt;p&gt;For unit testing Windows Phone (and other Silverlight) applications, I recommend using Jeff Wilcox&amp;rsquo;s framework for unit testing. I highly recommend you watch Jeff&amp;rsquo;s MIX10 session on this topic from &lt;a href="http://www.jeff.wilcox.name/2010/03/mix10-testing-talk-online/"&gt;this&lt;/a&gt; link. There are some limitations in the here &amp;ndash; for example, you cannot unit test controls in the AppBar &amp;ndash; but this is a pretty nice framework, and served my purpose of unit testing the application.&lt;/p&gt;
&lt;p&gt;Jeff Wilcox&amp;rsquo;s &lt;a href="http://www.jeff.wilcox.name/2010/05/sl3-utf-bits/"&gt;blog&lt;/a&gt; explains the framework and you can also use this link to download the bits needed from the bottom of his blog page. Another useful link that helped me in setting up the framework was this &lt;a href="http://www.smartypantscoding.com/a-cheat-sheet-for-unit-testing-silverlight-apps-on-windows-phone-7"&gt;Cheat Sheet&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As explained in the cheat sheet, I add a new Windows Phone project to the solution called WP7ChronomterUT, add a dll folder where I download the unit testing framework (and unblock the files), add references to the two dlls there, and create a new file call MainPageUT.cs where I will add the unit test. I also add a reference to the WP7Chronometer project. Below is a snapshot of how the new project looks &amp;ndash; observe the references added.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2134.image_5F00_00B743E6.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2626.image_5F00_thumb_5F00_6C8E018F.png" width="404" height="546" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;&lt;/h1&gt;
&lt;h1&gt;Few more housekeeping things &amp;hellip;&lt;/h1&gt;
&lt;p&gt;I need to do a few more things before I get to the unit testing.&lt;/p&gt;
&lt;p&gt;First, I move the TimeSpanPicker1 style definition from app.xaml (application scope) to MainPage.xaml (main page scope). Please note that this needs to be included in the&amp;nbsp; &amp;lt;phone:PhoneApplicationPage.Resources&amp;gt; section and that entire section needs to be ahead of the Grid definition in MainPage.XAML. This scope change is being done to avoid some limitations of the unit testing framework.&lt;/p&gt;
&lt;p&gt;Second, we need to add a reference to the Coding4Fun.Phone.Controls.Toolkit that we installed via NuGet, to the new unit test project. To do this, you simply click on &amp;ldquo;Add Library Package Manager Reference&amp;rdquo; option for adding a new reference, and simply &amp;ldquo;install&amp;rdquo; the reference for the above toolkit from the list presented (note, the toolkit will already be listed there since we have installed is as part of the solution).&lt;/p&gt;
&lt;p&gt;Third, I need to allow the unit test project access to the internal UI elements in the main application. To allow this, I add the following line at the end of the AssemblyInfo.cs file under &amp;lsquo;Properties&amp;rsquo; node of the WP7Chronometer project (the main application)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5353.image_5F00_2CB3F53D.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2133.image_5F00_thumb_5F00_3D4BF02B.png" width="404" height="34" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;Launching the unit test framework &amp;hellip;&lt;/h1&gt;
&lt;p&gt;Since the project we are working on is specifically for unit testing, I would like &amp;ldquo;application&amp;rdquo; in this case to straightaway launch the unit testing framework and run the unit tests that I will write. To do this, I add the following code to the MainPage.xaml.cs file:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2133.image_5F00_61FD07A2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7317.image_5F00_thumb_5F00_0641EC25.png" width="554" height="350" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The above code instantiates the unit test framework, sets the root visual of the page to it (that is, what ever it will display), and also hooks up the back button to allow you to return back from drilling into test results.&lt;/p&gt;
&lt;p&gt;Note, I also hide the system tray, otherwise it will hide the top of the test results screen.&lt;/p&gt;
&lt;p&gt;I have also changed the page title and the application title in the MainPage.xaml file as follows:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4670.image_5F00_228F2E45.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7701.image_5F00_thumb_5F00_3901CCCC.png" width="554" height="219" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;Now we can write the actual unit tests &amp;hellip;&lt;/h1&gt;
&lt;p&gt;The framework, once launched as above, will look for a TestClass and TestMethods in the dll as is normal for unit testing. Below I have a set of simple unit tests written up, to verify some of the initial states of the Chronometer application&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7776.image_5F00_632154E7.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0116.image_5F00_thumb_5F00_1942CD37.png" width="554" height="297" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5126.image_5F00_1C943F12.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5873.image_5F00_thumb_5F00_44E37166.png" width="554" height="235" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The code above is pretty self-explanatory, and we are now ready to run the tests&lt;/p&gt;
&lt;h1&gt;&lt;/h1&gt;
&lt;h1&gt;Running the unit tests &amp;hellip;&lt;/h1&gt;
&lt;p&gt;Simply set the WP7ChoronometerUT project as the start up project in the solution, build the solution, and launch it. The unit test framework loads, based on the above start up code, and presents the initial page of instructions as shown on the left below. It allows you the option of choosing the set of tests you want to run via tags (and gives instructions on how the tags work), and also counts down five seconds to choose the default option of running all tests. The screen on the right shows that all of the tests have been run, and all have passed (the green bar at the top). Also note the statistics at the bottom where it says 5 out 5 tests have passed (BTW, to allow this display to come through we disabled the SystemTray earlier).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/8004.image_5F00_014BC044.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5758.image_5F00_thumb_5F00_0063348D.png" width="279" height="516" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5417.image_5F00_20DA4E72.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/1682.image_5F00_thumb_5F00_798FDF6F.png" width="274" height="514" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can drill down into the tests by clicking on the name MainPageUT (which is the file which has the tests), and you see the lists of tests in that set on the screen below left. You can drill down into each of the tests &amp;ndash; for example, clicking on the &amp;ldquo;CheckifTimerDisplayisZero&amp;rdquo; shows the screen on the bottom left. It tells you more information about the test, including pass/fail status, and start/end/duration for that test. Also notice that the back button on the phone allows you to navigate back to the previous screen.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6064.image_5F00_67EFCED7.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/8508.image_5F00_thumb_5F00_3D0744F8.png" width="279" height="516" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/3884.image_5F00_6B311AE5.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/8662.image_5F00_thumb_5F00_50E08BF4.png" width="279" height="524" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Just to give you a sense of how failing tests get reported, I can deliberately make one of the tests fails &amp;ndash; for example, changing the Assert.AreEqual in the &amp;lsquo;CheckifTimerDisplayisZero&amp;rdquo; to Assert.AreNotEqual, and then on building and running the application you get the screens below. The framework calls out the overall status as fail, calls out the test that has failed, and allows you to drill down into why it has failed.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5187.image_5F00_561F4CD8.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5001.image_5F00_thumb_5F00_63E16D06.png" width="184" height="342" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2330.image_5F00_79E7D898.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/1778.image_5F00_thumb_5F00_251C49D3.png" width="184" height="339" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2818.image_5F00_16FD5AD6.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5127.image_5F00_thumb_5F00_347F1008.png" width="184" height="339" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is all pretty neat! It felt great to experiment with the unit test framework for the phone!&lt;/p&gt;
&lt;p&gt;I am almost done with this set of blogs &amp;ndash; what remains is to create an account in the marketplace and actually deploy the app! I will come back shortly with that.&lt;/p&gt;
&lt;p&gt;Cheers!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10179129" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author><category term="Manual Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Manual+Testing/" /><category term="Test Automation" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Test+Automation/" /><category term="Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Testing/" /><category term="Visual Studio Team System" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+System/" /><category term="Visual Studio Team Test" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+Test/" /><category term="Windows Phone 7 Applications" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Windows+Phone+7+Applications/" /><category term="Visual Studio" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio/" /><category term="Visual Studio ALM" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+ALM/" /></entry><entry><title>Visual Studio ALM vNext announced at TechEd 2011, Atlanta</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/05/18/visual-studio-alm-vnext-announced-at-teched-2011-atlanta.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2011/05/18/visual-studio-alm-vnext-announced-at-teched-2011-atlanta.aspx</id><published>2011-05-18T11:52:58Z</published><updated>2011-05-18T11:52:58Z</updated><content type="html">&lt;p&gt;I am very excited – we just announced the vision for &lt;strong&gt;Application Life Cycle Management (ALM)&lt;/strong&gt; in the next version of Visual Studio, at TechEd 2011 North America, at Atlanta. In his key note address on May 16, Jason Zander shared the vision and the roadmap, and demonstrated some of the cool features you can expect in that release. &lt;/p&gt;  &lt;p&gt;As you know, we have been working on great tooling for ALM since 2005, and the last big release was Visual Studio 2010, released in April 2010. The next release that we are working on will continue to build on the strength of the past releases. Our tooling encompasses the entire lifecycle for application development, as shown in the graphic below&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6175.image_5F00_2D74E200.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2055.image_5F00_thumb_5F00_05FAC33E.png" width="554" height="302" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;With each release, our focus has been on reducing the major sources of failure and waste in the lifecycle. Continuing on that journey, we have major investments in TFS, Test, and advanced tooling coming in the next version. Jason showcased some of these in his keynote at TechEd 2011 Atlanta – please read his &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2011/05/16/announcing-alm-roadmap-in-visual-studio-vnext-at-teched.aspx"&gt;blog post&lt;/a&gt; on the vNext announcement. We have also put together a &lt;a href="http://go.microsoft.com/?linkid=9772730"&gt;whitepaper&lt;/a&gt; which provides a great overview of the motivation for vNext and captures some of the highlights and screenshots! &lt;/p&gt;  &lt;p&gt;We are continuing to refine the experiences that Jason talked about, and I look forward to writing more about vNext soon!&lt;/p&gt;  &lt;p&gt;Cheers!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10165786" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author><category term="Manual Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Manual+Testing/" /><category term="Test Automation" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Test+Automation/" /><category term="Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Testing/" /><category term="Visual Studio Team System" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+System/" /><category term="Visual Studio Team Test" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+Test/" /><category term="Lab Management" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Lab+Management/" /><category term="Visual Studio" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio/" /><category term="Visual Studio ALM" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+ALM/" /></entry><entry><title>Building Windows Phone 7 User Interface with Expression Blend</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/05/11/building-windows-phone-7-user-interface-with-expression-blend.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2011/05/11/building-windows-phone-7-user-interface-with-expression-blend.aspx</id><published>2011-05-11T12:44:59Z</published><updated>2011-05-11T12:44:59Z</updated><content type="html">&lt;p&gt;Microsoft Expression Blend is a great tool for designing user interfaces. Expression Blend 4 for Windows Phone provides a streamlined development workflow for Windows Phone 7 applications that was previously available for Silverlight and .NET applications only. You can refer to &lt;a href="http://www.microsoft.com/expression/phone.aspx"&gt;this&lt;/a&gt; link to figure out the version of the tool that best suits your purpose, including the option of the free version that is part of the Windows Phone 7 developer &lt;a href="http://www.microsoft.com/expression/windowsphone/"&gt;toolkit&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;I have used Expressions Blend in couple of places in the Chronometer application that I have been building. You will find a series of blog posts on the topic, starting &lt;a href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/03/26/building-a-windows-phone-7-application.aspx"&gt;here&lt;/a&gt;. I find that Blend is a great way to get the styles for the user interface controls just right – rather than simply using the properties of the control, or hand coding the XAML. For example, in the &lt;a href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/05/01/extending-the-chronometer-windows-phone-7-app-introducing-nuget-pivot-and-the-timespanpicker-control.aspx"&gt;last&lt;/a&gt; post, I had introduced the TimeSpanPicker control for the countdown timer feature of the application. The heart of the control is a TextBox control for the input of the initial value of the timer. If you remember, the default definition, and the default look of the control looked as below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/3617.image_5F00_3A6818F4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6443.image_5F00_thumb_5F00_0EE3AC60.png" width="554" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To make the display of the control consistent with the Stopwatch control, I need to change the background color to black, the font to Courier New, font size to 64, and font color to yellow. I could set most of these properties from the properties toolbox of the control in Visual Studio. However, the font size simply would not take effect. This is likely a bug in the phone toolkit, and I will look into it later. However, this led me to Expression Blend, and I found that you can create user interface styling in a really effective manner in there!&lt;/p&gt;  &lt;p&gt;To use Expression Blend for designing the UI, simply right click on the MainPage.xaml file and click the “Open in Expression Blend …” menu as shown below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/3125.image_5F00_6F7155CC.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4212.image_5F00_thumb_5F00_0C2ACAE2.png" width="554" height="196" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This launches&amp;#160; Blend in the full design mode for the xaml, as shown below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/3175.image_5F00_1C761CCE.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4572.image_5F00_thumb_5F00_213884F0.png" width="554" height="332" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can then navigate to the control you want, by expanding the Objects hierarchy in the bottom left of the tool. Below, I have navigated to the TimeSpanPicker control and have selected it. You can now see the properties of the control in the tool.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7652.image_5F00_01E5B850.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6278.image_5F00_thumb_5F00_3B487CAD.png" width="554" height="332" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Right click on the control, select “Edit Template” and then “Edit a Copy…”, as shown below&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4137.image16_5F00_07042D9A.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2084.image16_5F00_thumb_5F00_391B5817.png" width="254" height="255" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/1817.image19_5F00_56AD3316.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7128.image19_5F00_thumb_5F00_1B79574B.png" width="304" height="255" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note that in the dialog box on the right you have two options – to define a new style in the context of the application, or just for the page in question. This determines whether the style definition will go into the App.xaml file or in the MainPage.xaml file. I would really like to define the style so that it is available for the entire application, so I will select the “Application” radio button as shown below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/3010.image_5F00_390B324A.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2746.image_5F00_thumb_5F00_107C2A69.png" width="554" height="485" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2376.image_5F00_5D7C7434.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2705.image_5F00_thumb_5F00_0A150841.png" width="554" height="327" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Notice above that the Object hierarchy on the left now shows the components of the TimeSpanPicker control, and I have selected the DateTimeButton control to really select the specific control I want to change properties of. At this point, the properties palette on the right hand side makes it really easy to change the properties. In the screen below I show how I have changed the font to “Courier New” and the size to “48 points”. (I needed to resize the control size to accommodate the larger size).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/8270.image_5F00_4A1B71FB.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/3005.image_5F00_thumb_5F00_562CC655.png" width="554" height="327" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next, I change the text foreground to yellow. For this I select the “Foreground” field in the “Brushes” section at the top right of Blend, and then click the little square button next to “foreground”, select “Custom Expressions” and type “yellow” as shown below. As you see, the text changes to yellow.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5468.image_5F00_78C0DF03.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4810.image_5F00_thumb_5F00_0088D1A6.png" width="279" height="221" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/1777.image_5F00_6BB6D925.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6404.image_5F00_thumb_5F00_5EACD347.png" width="279" height="117" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To change the background, I click the button next to “Background” and this time I choose “System Resource” and then select “PhoneBackroundBrush” to ensure that the background of the control will match the background of the phone. At this point the control looks exactly the way I wanted it to be!   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6813.image_5F00_758BA4C3.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7002.image_5F00_thumb_5F00_4B4BD10E.png" width="554" height="405" /&gt;&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;That’s all we needed to do in Expression Blend. We simply hit “File.Save All” in Expression Blend and exit out of Blend. You will now get a pop-up i informing you that the xaml file was edited outside of Visual Studio, as shown below. We will of course accept this change by clicking “Yes to All”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/8407.image_5F00_4D58AA0A.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0167.image_5F00_thumb_5F00_7F03A192.png" width="554" height="192" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Notice that the designer in Visual Studio immediately displays the control in the new style.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/8030.image_5F00_532327D6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/8468.image_5F00_thumb_5F00_2A17C733.png" width="554" height="329" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Also, notice that the definition of the TimeSpanPicker control has also been automatically changed to reference the new static resource TimeSpanPickerStyle1 that we had created in Expression Blend!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2526.image_5F00_1220BA40.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7713.image_5F00_thumb_5F00_652B5764.png" width="554" height="125" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you remember, we had chosen to define the new style in the context of the full application. Hence the definition of the above new style is automatically incorporated in the App.xaml file – as shown below&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/8306.image_5F00_5B82E92E.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0572.image_5F00_thumb_5F00_439C0208.png" width="554" height="290" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That’s all. We now compile the application and a quick test shows that the timer functionality is working just fine, and the count down timer display shows correctly, and in the intended style, in both portrait and landscape modes&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4604.image_5F00_53E753F4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/3443.image_5F00_thumb_5F00_4D905799.png" width="204" height="376" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6278.image_5F00_6A49CCAE.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5621.image_5F00_thumb_5F00_36057D9B.png" width="314" height="169" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Expression Blend is very powerful designer tool, and it was fun dabbling with it a bit in building the Windows Phone 7 application!&lt;/p&gt;  &lt;p&gt;Cheers!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10163362" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Extending the Chronometer Windows Phone 7 app – introducing NuGet, Pivot, and the TimeSpanPicker control!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/05/01/extending-the-chronometer-windows-phone-7-app-introducing-nuget-pivot-and-the-timespanpicker-control.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2011/05/01/extending-the-chronometer-windows-phone-7-app-introducing-nuget-pivot-and-the-timespanpicker-control.aspx</id><published>2011-05-01T14:19:25Z</published><updated>2011-05-01T14:19:25Z</updated><content type="html">&lt;p&gt;I am back to coding this weekend, and would like to add a second feature to the Chronometer application – a countdown timer. You will remember that I started building the application a few weekends back, and you will find the opening post &lt;a href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/03/26/building-a-windows-phone-7-application.aspx"&gt;here&lt;/a&gt;. I have since added a series of posts that has introduced different concepts and evolved the app – you can find those posts on my blog as well.&lt;/p&gt;  &lt;p&gt;The concept of the Timer is of course very simple – you put in a text box with a value of hour : minute : second, and then put in some logic to change the values, and count it down to zero. However, I was looking for a control that would allow me to edit the countdown value with a nice experience – like you get when you set the alarm on the Windows phone 7!. I looked around, and found that there is control built by the community – called the TimeSpanPicker – which has the exact functionality I need. However, I would need to load the package, copy down the files, get any dependent packages (if any), add references to my project – and that is a lot of work!&lt;/p&gt;  &lt;p&gt;This then provided me the opportunity to talk about the &lt;strong&gt;NuGet&lt;/strong&gt; extension to Visual Studio. NuGet is a beautiful thing! You can read more about it &lt;a href="http://nuget.codeplex.com/documentation?title=Getting%20Started"&gt;here&lt;/a&gt;. It solves exactly the problem I have alluded to above, and I simply include an excerpt from the above link that explains the basic functionality.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5670.image_5F00_2B277718.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2870.image_5F00_thumb_5F00_73258334.png" width="554" height="279" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Let’s install the Library Package Manager (NuGet) extension. Click &lt;strong&gt;Tools&lt;/strong&gt; and the &lt;strong&gt;Extension Manager&lt;/strong&gt; – you can see below the packages I currently have installed. &lt;strong&gt;&amp;#160;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7673.image_5F00_6900BC3C.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5123.image_5F00_thumb_5F00_541E9DEF.png" width="554" height="357" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now, click the &lt;strong&gt;Online Gallery &lt;/strong&gt;tab. Visual Studio now searches the gallery and presents a list of packages, based on their ranking (the community rates the packages). The view on my system is displayed below, and you notice that the NuGet Package Manager is already listed at the top, with a 5-star rating from 70 voters!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4861.image_5F00_1993784E.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7288.image_5F00_thumb_5F00_45BFD965.png" width="554" height="352" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Simply click on the &lt;strong&gt;Download&lt;/strong&gt; button to download and install the &lt;strong&gt;NuGet Package Manager&lt;/strong&gt; package. It will download and install (once you accept the license agreement). After the installation you will be prompted to restart Visual Studio. If you now get back to the Extension Manager, you can see that the NuGet Package Manager is now installed.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0652.image_5F00_6ACCFE04.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/1830.image_5F00_thumb_5F00_23678245.png" width="554" height="352" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now we want to install the &lt;strong&gt;WP7 TimeSpanPicker &lt;/strong&gt;control. For this, we go to the &lt;strong&gt;Tool, Library Package Manager, Add Library Package Reference&lt;/strong&gt; option, and then select the &lt;strong&gt;Online&lt;/strong&gt; tab to be able to pick from a list of packages out there. In the &lt;strong&gt;Search&lt;/strong&gt; box now type “&lt;strong&gt;TimeSpan&lt;/strong&gt;”. I got the following search results&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/3302.image_5F00_6F233331.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6545.image_5F00_thumb_5F00_55AB0A2A.png" width="554" height="313" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I select the second one in the list (where the description says – “Just the timespan selector …”). &lt;/p&gt;  &lt;p&gt;That’s all! The NuGet Package manager now downloads the package and adds references to the control into our project automatically, making it very simple to use the package.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/1273.image_5F00_196F18B5.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6064.image_5F00_thumb_5F00_376D26A9.png" width="404" height="169" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I can now add the following line to the MainPage.xaml file to use the control in my layout – notice the last line in the xaml snippet below&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/3733.image_5F00_3B96FE6E.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/3326.image_5F00_thumb_5F00_474C45A0.png" width="554" height="107" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;Adding a Countdown timer to the Chronometer&lt;/h2&gt;  &lt;p&gt;We will now add a Countdown timer to the Chronometer. The way I want this to work is that the Stopwatch will still be the default functionality. However, I would like to slide the Stopwatch page out and get a new “page” where I will have a countdown timer functionality – that is, a control where I can set a time duration (hh : mm : ss), allow the user to start the timer, and then count it down to 00 : 00 : 00 and sound an alert. &lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;    &lt;h2&gt;Introducing a Pivot Control, and making the Stopwatch a PivotItem&lt;/h2&gt;  &lt;p&gt;Once I add the Countdown timer, the Chronometer application will have two discrete features – the Stopwatch and the Countdown timer. On the Windows Phone 7, we have two different controls – the &lt;strong&gt;Pivot&lt;/strong&gt; Control and the &lt;strong&gt;Panorama&lt;/strong&gt; Control – that will allow me to arrange these two discrete features horizontally in a virtual space that is several times wider than the width of the phone. I can then move through the controls – and hence the two feature areas – by simply sweeping the application surface with the fingers. Each control allows you to have a collection of items called &lt;strong&gt;PivotItem&lt;/strong&gt; and &lt;strong&gt;PanoramaItem&lt;/strong&gt;, respectively, to define the discrete feature areas &lt;/p&gt;  &lt;p&gt;I will use the &lt;strong&gt;Pivot&lt;/strong&gt; control rather than the &lt;strong&gt;Panorama&lt;/strong&gt; control for two specific reasons:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The Pivot control sweeps each control completely to the next, where as the Panorama allows the items to overlap on the display as they sweep them in. For this application, allowing each of the features the full viewing surface will give a better user experience&lt;/li&gt;    &lt;li&gt;More importantly, the Panorama control does not allow the Application Bar (at least, that is my understanding at this time), and I want that functionality. In fact, I will let each of the two features to have their own Application Bar&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So far, the structure of the MainPage.xaml file looks like the following – with the fully expanded tree of controls shown on the right&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5481.image_5F00_4456E0ED.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/1185.image_5F00_thumb_5F00_749DB5A3.png" width="404" height="272" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6560.image_5F00_382540F9.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/8228.image_5F00_thumb_5F00_63F594E8.png" width="229" height="270" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; I will now introduce the Pivot Control and Pivot Items, and move the earlier definition of the Stopwatch Layout inside it. This is done, by adding the following xaml code for the Pivot control and the PivotItem&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6560.image_5F00_12F7D0C0.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5482.image_5F00_thumb_5F00_178DDB7A.png" width="554" height="114" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note, that the name of the Pivot control has been set as the Name of the Application, and the PivotItem has the name of the first feature – the Stopwatch. The rest of the original layout of the Stopwatch feature is now included within the PivotItem definition, and the definition is then closed off with the following tags. (The only other change I did was to move the Stopwatch display time TextBlock control a bit to the left, as it had gotten moved because of the above embedding)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0537.image_5F00_663EF119.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6404.image_5F00_thumb_5F00_4BFE87F5.png" width="232" height="56" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Also, as the application will have one of two ApplicationBar controls, I am moving the definition of ApplicationBar items into a resource block as shown below, and will programmatically select the one that is the right one for the context. This is done by the following xaml code snippet&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2287.image_5F00_69FC95E9.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0647.image_5F00_thumb_5F00_357BC3A1.png" width="554" height="116" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;With this, the definition of the layout now looks as follow – contrast that with the one shown above.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5824.image_5F00_71E4127E.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/3617.image_5F00_thumb_5F00_1B0BAABD.png" width="324" height="252" /&gt;&lt;/a&gt;A&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0640.image_5F00_4DEB1557.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7506.image_5F00_thumb_5F00_4FD86460.png" width="189" height="253" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Also, since we will now explicitly need to set the ApplicationBar. To do this, we first create a handler for the &lt;strong&gt;SelectionChanged &lt;/strong&gt;event of the Pivot control. The code that sets the event handler and the code for the handler is shown below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7002.image_5F00_01EF8EDE.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/3201.image_5F00_thumb_5F00_00AAF5FF.png" width="554" height="32" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0181.image_5F00_7E8DF735.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5850.image_5F00_thumb_5F00_677F75F9.png" width="554" height="128" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A quick compilation of the code and running of the application shows that all of the functionality is intact – as shown below.&lt;/p&gt;              &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2158.image_5F00_02881F3B.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6862.image_5F00_thumb_5F00_3784889E.png" width="204" height="376" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2677.image_5F00_6DA600ED.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2677.image_5F00_thumb_5F00_06FDDE5B.png" width="304" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;h2&gt;Adding a second PivotItem for the Countdown timer&lt;/h2&gt;  &lt;p&gt;We will now introduce the Countdown timer as a second feature, by adding another PivotItem and including the &lt;strong&gt;TimeSpanPicker &lt;/strong&gt;control that we have installed above. This is very simply done with the following xaml code for adding a second PivotItem in the Pivot control xaml that was shown above.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5710.image_5F00_7D557024.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6708.image_5F00_thumb_5F00_7B38715B.png" width="554" height="103" /&gt;&lt;/a&gt;&lt;/p&gt;        &lt;p&gt;We then add a second ApplicationBar resource as shown below&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4336.image_5F00_464B6C1E.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5635.image_5F00_thumb_5F00_442E6D55.png" width="554" height="105" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here we have a two buttons – the play button to start the timer, and a cancel button to cancel the timer before it counts down. We have defined a handlers named “countdown_play_Click” and “countdown_cancel_Click”. We will add code for it soon, but for now, we will simply add the handler as an empty function (likewise for the other handler too). &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0844.image_5F00_283D385D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/8461.image_5F00_thumb_5F00_12071D0B.png" width="554" height="84" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note that the cancel button is disabled by default. Also, we have copied down the cancel icon into the images folder and have set the build action to content.&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;          &lt;h2&gt;Changing the properties of the TimeSpanPicker control&lt;/h2&gt;  &lt;p&gt;It is now time to beautify the TimeSpanPicker control and set some properties so that it is consistent with the properties we had set for the Stopwatch display timer TextBlock. If you click on the PivotItem in the xaml file that represents the TimeSpanPicker control, you will get it displayed in the designer mode as shown below&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0044.image_5F00_36B83482.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0385.image_5F00_thumb_5F00_702B1EAC.png" width="554" height="231" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To beautify the control, I would like to set the background color to black, the text color to yellow (just to add a bit of color, like we set Stopwatch display to blue), set the font to be a fixed width font (courier new), and set the font size to 64. &lt;/p&gt;  &lt;p&gt;As in the case of the Stopwatch Display Timer, I found the most effective way to do this is to create a style in Expression Blend and apply it to the control. Here is the style that I have created and saved in App.xaml file&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0385.image_5F00_50D8520C.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6266.image_5F00_thumb_5F00_77E2EB81.png" width="554" height="247" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I simply apply the style – TimeSpanPickerStyle2 to the TimeSpanPicker control, as shown below, and you can also see the control now looks a lot nicer in the design view. I have also adjusted the location of the TimeSpanPikcer control to be around the same place as the Stopwatch Display Timer control.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2477.image_5F00_3F281BA7.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2806.image_5F00_thumb_5F00_2FF0F133.png" width="554" height="265" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;          &lt;h2&gt;The beautiful editing capability of the TimeSpanPicker control&lt;/h2&gt;  &lt;p&gt;The TimeSpanPicker control has a very nice built-in editing capability for changing the hour, minute, second portions of the display. The display is a TextBox, but when the user selects it, you can change the values using the infinite scrolling capability that it provides, keeping in mind the range of the values for hour, minute and second!&lt;/p&gt;  &lt;p&gt;Notice below, how it looks like in real time. The picture on the left shows the display mode of the control. When you click on any of the three fields, it brings up the infinite scrolling control and you can get it scrolling by swiping it and then selecting the value you want. In this mode, the bottom of the screen shows the save and cancel buttons which can be used to save the new value. Thus, by clicking the save button, you get the new value for the control as shown in the right most image.,&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7612.image_5F00_571B149B.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5557.image_5F00_thumb_5F00_7CE11531.png" width="179" height="330" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6237.image_5F00_15FC6F6A.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4174.image_5F00_thumb_5F00_1ACEFD59.png" width="179" height="325" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/8228.image_5F00_710B8265.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4118.image_5F00_thumb_5F00_11829C4B.png" width="179" height="330" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;However, note that to get the save and cancel images to show properly, you have to few steps explicitly (I presume this is an issue with the control – it should really have done all of these at the time of the package installation time).&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Y&lt;/i&gt;ou have to create a folder at the top level of the solution called &amp;quot;Toolkit.Content&amp;quot; and put the icons in there. You will need to copy the icons from the Coding4Fun.Phone.TestApplication project. They need be named &amp;quot;ApplicationBar.Cancel.png&amp;quot; and &amp;quot;ApplicationBar.Check.png&amp;quot;, and the build action must be &amp;quot;Content&amp;quot;!&lt;/p&gt;      &lt;h2&gt;Finally, the logic for the Countdown timer&lt;/h2&gt;  &lt;p&gt;To keep the logic for the Countdown timer simple, here is what I will do:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Introduce a new DispatchTimer, let’s call it countdowntimer and a stopwatch called the countdownstopwatch. &lt;/li&gt;    &lt;li&gt;When the “play” button on the Timer screen is hit, we will&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Convert the value in the timer to number of ticks, saving it, and setting that as the timespan interval for the counter&lt;/li&gt;      &lt;li&gt;Set an event handler for the timer&lt;/li&gt;      &lt;li&gt;Start the timer and the stopwatch&lt;/li&gt;      &lt;li&gt;Disable the play button and enable the cancel button&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;In the event handler of the timer&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;We will get the elapsed timer time from the stopwatch, subtract it from the total number of ticks saved above to get the remaining time&lt;/li&gt;      &lt;li&gt;If the remaining time is still positive, we will set the value of the TimespanPicker control to the remaining time&lt;/li&gt;      &lt;li&gt;If the value has reached zero, we will stop the timer (we will soon sound a beep too)&lt;/li&gt;      &lt;li&gt;We will also enable the play button and disable the cancel button&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;When the cancel button is clicked, it simply resets the remaining time to zero and the event handlers take care of the rest&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The code looks as follows:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/1385.image_5F00_7CB0A3CA.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4527.image_5F00_thumb_5F00_1467DB31.png" width="554" height="75" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5123.image_5F00_1891B2F6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2772.image_5F00_thumb_5F00_75ED747A.png" width="554" height="160" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5826.image_5F00_52DD030A.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/2783.image_5F00_thumb_5F00_7F85BCE3.png" width="304" height="59" /&gt;&lt;/a&gt;&lt;/p&gt;        &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/3365.image_5F00_569AA7DA.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4442.image_5F00_thumb_5F00_0D28531F.png" width="554" height="235" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6114.image_5F00_29E1C834.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7103.image_5F00_thumb_5F00_6F865252.png" width="504" height="73" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Sounding a beep when the Countdown reaches zero&lt;/h2&gt;  &lt;p&gt;Playing a sound when the countdown goes down to zero turned out to be harder than I thought. I will investigate if there is an easier way, however, for now I am accomplishing this using XNA.&lt;/p&gt;  &lt;p&gt;First, I add couple of XNA class library references &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4861.image_5F00_066523CF.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0741.image_5F00_thumb_5F00_330DDDA8.png" width="304" height="45" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next, I add a audio file - Piano.wav - to the root of the Application. I also changed the “Piano.wav” as Content and “Always copy to Output Directory” in the properties of the .wav file. Finally, I add the code below when the countdown reaches zero.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0172.image_5F00_30F0DEDF.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/3005.image_5F00_thumb_5F00_1A4E9098.png" width="404" height="86" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;How does the application looks?&lt;/h2&gt;  &lt;p&gt;It is time now to build and show-off the features we have added. First notice the main screen of the application in the image shown on the left. You will notice that next to the “StopWatch” title, you will see a portion of the “Timer” feature shown in gray. This is a view of the Pivot control. It shows that there is another feature in the application! If you swipe the surface of the phone, it brings the second feature into view – as shown in the image on the right. Notice how the titles of the features are positioned – the Timer is now active, and the Stopwatch title shows partially and is grayed.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0268.image_5F00_5EAE81D7.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4810.image_5F00_thumb_5F00_311D3C47.png" width="279" height="516" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6153.image_5F00_269C6827.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6404.image_5F00_thumb_5F00_463B1C22.png" width="279" height="520" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I can use the TimeSpanPicker editing capabilities discussed earlier and set a countdown value – as shown on the left below. When we save the value, you get the second image from the left – notice that the play button is enabled and the cancel is disabled. I then hit the play button and the third picture shows the countdown in progress and I also show it in a flipped view. Notice that the cancel button is now enabled, and when I click that the count goes to zero, as shown in the last picture below, and the piano sound plays as well!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/4760.image_5F00_4847F51E.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/7418.image_5F00_thumb_5F00_2F3BFF0C.png" width="124" height="229" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5367.image_5F00_4CCDDA0B.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/3125.image_5F00_thumb_5F00_36F3CBE1.png" width="124" height="229" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6355.image_5F00_1B6EC9DE.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/0412.image_5F00_thumb_5F00_143F6799.png" width="194" height="106" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/6874.image_5F00_72075C12.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-15-68-metablogapi/5314.image_5F00_thumb_5F00_127E75F8.png" width="124" height="226" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That was truly a lot of fun! I have touched upon a ton of functionality, and I really enjoyed getting the application into shape and posting this!&lt;/p&gt;  &lt;p&gt;Cheers!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10159823" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author><category term="Manual Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Manual+Testing/" /><category term="Test Automation" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Test+Automation/" /><category term="Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Testing/" /><category term="Visual Studio Team System" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+System/" /><category term="Visual Studio Team Test" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+Test/" /><category term="Lab Management" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Lab+Management/" /><category term="Windows Phone 7 Applications" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Windows+Phone+7+Applications/" /></entry><entry><title>Continuing with the Windows Phone applications–.NET Serialization</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/04/23/continuing-with-the-windows-phone-applications-net-serialization.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2011/04/23/continuing-with-the-windows-phone-applications-net-serialization.aspx</id><published>2011-04-23T10:13:58Z</published><updated>2011-04-23T10:13:58Z</updated><content type="html">&lt;p&gt;The Chronometer application &lt;a href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/03/26/building-a-windows-phone-7-application.aspx"&gt;I have been building&lt;/a&gt; for Windows Phone 7 is coming along nicely! This has mostly been a weekend project, as I don’t find time to get to it during the working days. The Stopwatch functionality is almost complete. In the &lt;a href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/04/16/building-a-windows-phone-7-application-data-binding-and-persistence.aspx"&gt;last post&lt;/a&gt; I introduced the concept of data binding and persistence. I can now record a series of Stopwatch events, name the events, and when I exit (or tombstone) the application, I can persist them into a file. &lt;/p&gt;  &lt;p&gt;In this post I will incrementally refine the application in a few different areas. The first one is to make the code for saving / loading the timings to and from the file lot simpler, by leveraging the power of .NET serialization. &lt;/p&gt;  &lt;p&gt;If you remember, I had stored the timings from the Stopwatch in an in-memory data structure defined as follows:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0044.image_5F00_67ECC9E1.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8867.image_5F00_thumb_5F00_1E0E4231.png" width="504" height="25" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is essentially an ObservableCollection object which represents the collection of timings. The object itself takes care of providing notifications when items get added, removed, or when the whole list is refreshed. The definition above takes a template for the class &amp;lt;Timings&amp;gt; which represents individual elements in the collections.&amp;#160; The definition of the “Timings” class is shown below. Each element essentially is a tuple of two strings “EventName” for the name of the Stopwatch event, and “timingsinms” representing the time for the event.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8054.image_5F00_34ED13AD.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3107.image_5F00_thumb_5F00_24919BF4.png" width="554" height="504" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The code to then save and load the in-memory collection object into a persisting file was explicitly written as:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6330.image_5F00_68192749.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7206.image_5F00_thumb_5F00_3E55AC56.png" width="554" height="306" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3187.image_5F00_16CEBA1F.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2117.image_5F00_thumb_5F00_3F1DEC73.png" width="554" height="444" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;        &lt;h2&gt;Leveraging .NET Serialization&lt;/h2&gt;  &lt;p&gt;.NET provides the System.Xml.Serialization namespace that contains objects to help serialize objects into XML documents which can then be saved in files. Likewise, it provides classes for the deserialization too. You can read all of the details about .NET serialization &lt;a href="http://msdn.microsoft.com/en-us/library/system.xml.serialization(v=VS.95).aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;There are two options I can take - either to do an XMLSerialization or BinarySerialization. I am choosing XML since I could have a look at the file I need to and also tweak to choose the elements to be stored.&lt;/p&gt;  &lt;p&gt;Since we are using an ObservableCollection which is part of System.Collection and types in System.Collection and System.Collection.Generic are by default Serializable. So it’s east just to serialize the entire collection with one line of code.&lt;/p&gt;  &lt;p&gt;We first add System.Xml.Serialization as a reference, and include the name space in our project&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7801.image_5F00_3745D404.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7206.image_5F00_thumb_5F00_7637549F.png" width="279" height="26" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5658.image_5F00_34506F51.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8306.image_5F00_thumb_5F00_447C374A.png" width="279" height="200" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We then create an instance of the XmlSerializer class using the type of the object we want to serialize. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7416.image_5F00_7A9DAF99.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7318.image_5F00_thumb_5F00_1FBAFA06.png" width="554" height="41" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;With this, the saving and loading of the in memory collection to the file become a lot easier.&lt;/p&gt;  &lt;p&gt;To serialize to the file, the code now looks like the snippet shown below. We simply create a StreamWriter object for the file we have opened or created, and then serialize the instance of the XmlSerializer object (which has already been created of the write type), by calling the Serialize method, passing in the writer and the actual in memory collection as the parameters. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6648.image_5F00_0B55347B.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7737.image_5F00_thumb_5F00_1B80FC74.png" width="554" height="146" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Loading the collection back in to memory is equally simple.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6735.image_5F00_51A274C3.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5353.image_5F00_thumb_5F00_2F6A693D.png" width="554" height="139" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note that the ObservableCollection does not fire the NotifyPropertyChanged when the whole collection is deserialized. So we overcome that by setting the Itemsource of the TextBox to the Collection once again.&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;          &lt;h2&gt;Handling the Application state during Deactivate and Closed events&lt;/h2&gt;  &lt;p&gt;For the Main Application you will see there are four events that need to be handled and you can see the event handlers stubs already written for you in App.Xaml.cs. In our case we want to handle the case where when the user presses the back button or when the Windows button is pressed or when the user powers off the mobile when the app is in use, we want to store what we have in in memory list.&lt;/p&gt;  &lt;p&gt;Currently we just have one screen and we will handle the Deactivated and Closed events when the main screen is being tombstoned.&lt;/p&gt;  &lt;p&gt;Let’s first add the event for handling the de-activation. This is also an opportune time to show off a Visual Studio short cut mechanism to define and add these event handlers. Simply type:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;“PhoneApplicationService.Current.Deactivated +=” &lt;/h3&gt;  &lt;p&gt;Then hit the &amp;lt;tab&amp;gt; key twice. The code automatically expands to defining a default handler and setting the above event to the handler. See below&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8814.image_5F00_2C75048A.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6747.image_5F00_thumb_5F00_4353D606.png" width="554" height="105" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We will replace the default implementation with a call to “saveTimings” and likewise define and do the same for the Current.Closing event. The code for both is shown below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8308.image_5F00_4E9CEA43.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3122.image_5F00_thumb_5F00_0C49D200.png" width="554" height="277" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Since we are loading the timings when the application loads, and saving them when the application is deactivated, we no longer need to save the timings when the “Save” button is clicked – we will simply let the data structure build up in memory.&lt;/p&gt;  &lt;h2&gt;Formatting the time &lt;/h2&gt;  &lt;p&gt;Earlier we were calculating the time down to seconds and milliseconds by dividing the elapsedmilliseconds. We will now write it to the TImeSpan class and find out the Hours, minutes, seconds and milliseconds in one line of code.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2860.image_5F00_21E40A9D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6663.image_5F00_thumb_5F00_26E6484C.png" width="554" height="130" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&amp;#160;&lt;/h2&gt;  &lt;h2&gt;Fixing the font size and color of the timings&lt;/h2&gt;  &lt;p&gt;Finally some aesthetic changes. I had noticed that the display style of the event name and that of the timings string were not quite the same. I have fixed that by appropriately defining the foreground brush for the TextBlock and its font size too – as shown in the XAML snippet below&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7824.image_5F00_5D07C09B.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7245.image_5F00_thumb_5F00_08D8148B.png" width="554" height="89" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;That completes the Stopwatch functionality.&lt;/h2&gt;  &lt;p&gt;A quick test shows that the displays are looking much better, and the functionality is all intact&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7762.image_5F00_37DA5062.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3542.image_5F00_thumb_5F00_3E110123.png" width="179" height="330" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6607.image_5F00_2866A2B9.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8357.image_5F00_thumb_5F00_24D55B51.png" width="304" height="164" /&gt;&lt;/a&gt;&lt;/h2&gt;    &lt;p&gt;Hitting the back button or hitting the “windows” button to tombstone button and getting back to the application also shows that the timings data is correctly being persisted and restored back&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0250.image_5F00_7DBA9C0E.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2313.image_5F00_thumb_5F00_574892F6.png" width="279" height="516" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4162.image_5F00_4C5B8BE1.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6644.image_5F00_thumb_5F00_569C8A74.png" width="279" height="516" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;My goal for the next session and next post is to add another feature to the Stopwatch – that of a count down timer. That will need me to add another page to the application or perhaps a panoramic view – that will be fun!&lt;/p&gt;  &lt;p&gt;Cheers!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10157337" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author><category term="Manual Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Manual+Testing/" /><category term="Test Automation" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Test+Automation/" /><category term="Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Testing/" /><category term="Visual Studio Team System" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+System/" /><category term="Visual Studio Team Test" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+Test/" /><category term="Lab Management" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Lab+Management/" /><category term="Windows Phone 7 Applications" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Windows+Phone+7+Applications/" /></entry><entry><title>Building a Windows Phone 7 Application–Data Binding and Persistence!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/04/16/building-a-windows-phone-7-application-data-binding-and-persistence.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2011/04/16/building-a-windows-phone-7-application-data-binding-and-persistence.aspx</id><published>2011-04-16T17:38:41Z</published><updated>2011-04-16T17:38:41Z</updated><content type="html">&lt;p&gt;The &lt;a href="http://www.iplt20.com/"&gt;IPLT20&lt;/a&gt; cricket championship is currently in progress – this means there is a lot of cricket on Television. Usually a couple of games from 4pm to almost midnight! If you don’t have any other plans, these games are a great option to while away your evenings. I spend some time on the weekends watching these games. But I now have a happy solution to ensure watching the games doesn’t just become recreation but otherwise an unproductive use of time – I can continue to extend my Windows Phone Application and blog while I watch the games – woohoo! &lt;/p&gt;  &lt;p&gt;It is time to add some new functionality and new concepts to the Chronometer application I have been building. I have posted a set of three blogs so far on it, with the first one being &lt;a href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/03/26/building-a-windows-phone-7-application.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;h2&gt;The new functionality that I will add&lt;/h2&gt;  &lt;p&gt;In this post, I want to add the support of the “Save” functionality to the Stopwatch. If you remember, in the second post I had introduced the “Save” button in the Application Bar – however, I had not added any code for it. In this post I will add the following functionality.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The “Save” button will be enabled only when the Stopwatch is in paused state (disabled with the watch is running)&lt;/li&gt;    &lt;li&gt;When you hit “Save” it will do the following:&lt;/li&gt;    &lt;/ul&gt;&lt;ul&gt;     &lt;li&gt;“Copy” the time on the Stopwatch to a new line below the Stopwatch&lt;/li&gt;      &lt;li&gt;Any existing lines will be pushed down one row&lt;/li&gt;      &lt;li&gt;Each new line will have a default name, and the Stopwatch time against it&lt;/li&gt;      &lt;li&gt;The name of the line should be editable&amp;#160; &lt;/li&gt;      &lt;li&gt;The list of lines should be scrollable &lt;/li&gt;      &lt;li&gt;The “Save” button should also reset the Stopwatch to “00:00:00:00”&lt;/li&gt;   &lt;/ul&gt;   &lt;h2&gt;&amp;#160;&lt;/h2&gt;  &lt;h2&gt;Persistence and data binding too&lt;/h2&gt;  &lt;p&gt;It is important to mention here that, in the current release of the Windows Phone 7 only one application runs at a time. When you back out of your application, it gets suspended which is known as the “Tombstone” notion. While you get notifications of when the application gets tombstoned, but there is no guarantee that the application will be resumed from the same state when you go back to it. It may have gotten terminated (you would know that in the notification) and restarted. Hence it is important to take care of data persistence explicitly across tombstoning and restart. &lt;/p&gt;  &lt;p&gt;I would like to save the list of timings displayed above from session to session. &lt;/p&gt;  &lt;p&gt;For this, I will introduce the concept of persistence of the data in file, and I will also introduce the concept of data binding so that it makes it easy to associate and bind the data in the application screen to the file it is persisted in.&lt;/p&gt;  &lt;p&gt;I am looking forward to learning a lot as I do this!&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;Creating the visualization of the area where timings are saved&lt;/h2&gt;  &lt;p&gt;I want the timings to be displayed as below:&lt;/p&gt;  &lt;h2 align="center"&gt;&amp;lt;default timing name&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;hh1:mm1:ss1:ttt1&amp;gt;&lt;/h2&gt;  &lt;h2 align="center"&gt;&amp;lt;default timing name&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;hh2:mm2:ss1:ttt2&amp;gt;&lt;/h2&gt;  &lt;h2 align="center"&gt;……..&lt;/h2&gt;  &lt;h2 align="center"&gt;&amp;lt;default timing name&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;hhn:mmn:ssn:tttn&amp;gt;&lt;/h2&gt;  &lt;p align="left"&gt;While the name on each line starts with a default name (say “timing”), I want the name to be editable – so it needs to be TextBox. The actual value of the time however will be read-only (that value when save was hit) and hence it will be a TextBlock. &lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;First, a basic education in data binding to a control&lt;/h2&gt;  &lt;p&gt;Let us first understand how data binding to a control works. There is already an excellent MSDN article &lt;a href="http://create.msdn.com/en-US/education/quickstarts/Data_Binding_to_Controls"&gt;here&lt;/a&gt;.&amp;#160; Please study the article, especially the following concepts that we will use in our application. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You have source and targets for binding, and a target is setup for binding using the “{Binding}” attribute value&lt;/li&gt;    &lt;li&gt;There are two modes for binding – one way, and two way – via the BindingMode.OneWay (default) and BindingMode.TwoWay settings&lt;/li&gt;    &lt;li&gt;The DataContext property of a framework or ui element allows it to participate in binding&lt;/li&gt;    &lt;li&gt;The ObservableCollection&amp;lt;T&amp;gt; class that represents a dynamic data collection that provides notifications when items get added, removed, or when the entire list is refreshed&lt;/li&gt;    &lt;li&gt;The INotifyPropertyChanged interface that notifies clients that a property value had changed&lt;/li&gt;    &lt;li&gt;A DataTemplate that enables to customize how lists are displayed in a control, and ItemsControl.ItemTemplate that gets or sets the DataTemplate&lt;/li&gt;    &lt;li&gt;The ItemsControl that can be used to represent a collection of items&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;At this point we are ready for create the new visualization that we need for our feature&lt;/p&gt;  &lt;h2&gt;The main content display XAML&lt;/h2&gt;  &lt;p&gt;I have created the design for the new content, and the XAML for that is shown below. You will notice that we have the “TimerDisplay” TextBlock at the top – this is the main display for the Stopwatch which we had introduced in the earlier posts – nothing has changed, I have however taken it out of the Grid which defines the new visualization that I will introduce now (and adjusted it’s margins to re-align it to where it was in the earlier posts.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7120.image_5F00_4F19729B.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1460.image_5F00_thumb_5F00_7068F26A.png" width="554" height="284" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The new &amp;lt;Grid /&amp;gt; now introduces the new display. Notice the following carefully:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;For the make the entire Grid databound by marking &lt;font color="#c0504d"&gt;&lt;font color="#ff0000"&gt;DataContext&lt;/font&gt;=&lt;font color="#0000ff"&gt;”{&lt;/font&gt;Binding&lt;/font&gt;&lt;font color="#0000ff"&gt;}”&lt;/font&gt;&lt;font color="#000000"&gt;. &lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#000000"&gt;The Grid essentially contains a ListBox “MainListBox”, and note the ItemSource property and it is bound to “inmemList” which will be an in memory list&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;The ListBox has a StackPanel which essentially stacks up a TextBox for the name of the timings, and the TextBlock to save the time&lt;/li&gt;    &lt;li&gt;The “Text” property of the TextBox and TextBlock are set to data bound to EventName and timingsms variables.&lt;/li&gt;    &lt;li&gt;&lt;font color="#000000"&gt;Both of the above are set to TwoWay data binding&lt;/font&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;h2&gt;The data structure that will hold the list of timings in memory&lt;/h2&gt;  &lt;p&gt;As described earlier, the list of timings that the application will display is essentially a collection of tuples – with each tuple holding a string that represents the name of the event for which the Stopwatch was being used, and another string representing the timing value for that event. &lt;/p&gt;  &lt;p&gt;We want to represent this as an ObservableCollection object with a class that holds the above tuple strings. This object will also fire the INotifyPropertyChanged event when any of the strings are changed. The data structure is simply the following:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5460.image_5F00_7F037882.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7723.image_5F00_thumb_5F00_3D88C629.png" width="304" height="66" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1460.image_5F00_7416716D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5164.image_5F00_thumb_5F00_329BBF14.png" width="404" height="46" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5557.image_5F00_1063B38E.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4578.image_5F00_thumb_5F00_20234892.png" width="404" height="472" /&gt;&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4062.image_5F00_38D26FD5.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2818.image_5F00_thumb_5F00_489204D9.png" width="454" height="165" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Persisting the timings collection into a file&lt;/h2&gt;  &lt;p&gt;Now lets get to the code that saves the above data structure – the timings collection – into a file, which essentially will be our backing store&lt;/p&gt;  &lt;p&gt;The code for this is pretty simple and almost self explanatory. Here it is:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7608.image_5F00_1ECE89E6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5545.image_5F00_thumb_5F00_44580747.png" width="304" height="48" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3482.image_5F00_54179C4B.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0842.image_5F00_thumb_5F00_278E6C65.png" width="404" height="49" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3482.image_5F00_055660DF.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4666.image_5F00_thumb_5F00_2A73AB4B.png" width="404" height="74" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note, in the above code GetUserStoreForApplication essentially obtains a user-scoped isolated storage corresponding to the calling codes application identity. I will simply use a flat text file in the above storage for serializing and deserializing the timings collection data structure.&lt;/p&gt;  &lt;p&gt;Here is the code which saves the data structure into a file, one line per timing tuple. It creates the file “acstopwatch.txt” if it is not already on the device, or opens it if it is there. The function is called with the collection. It then simply enumerates each element in the collection and writes out a line with the EventName and the timingsinms strings, separated by a comma.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6710.image_5F00_083B9FC5.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6116.image_5F00_thumb_5F00_37AA0E91.png" width="554" height="306" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;The loading of the data structure from the file is likewise pretty simple. It opens the file, clears out the in-memory collection, reads one line at a time, and then splits the string at a comma to get the two texts stings that it creates a new Timing structure in the collection.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5127.image_5F00_0250D65F.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2084.image_5F00_thumb_5F00_51DA51E8.png" width="554" height="375" /&gt;&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;We will now do the initialization – where we will read the file, loading the in memory data structure, and set it as the data bound source for the MainListBox in our display that we created earlier in XAML. Note the last three lines in the code snipped below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1004.image_5F00_078F9743.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5127.image_5F00_thumb_5F00_2CACE1AF.png" width="504" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;The application visibly looks no different yet&lt;/h2&gt;  &lt;p&gt;At this point we will build and run the application – and as expected, the application is visibly no different. The screen shot is shown below, and is really still where we had left off in the last blog. This is because while we aren’t really creating items in the MainListBox yet – that is the logic we now need to build into the play and save buttons. That comes up next.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2313.image_5F00_7BCA2A43.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7774.image_5F00_thumb_5F00_37E5D01F.png" width="244" height="454" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h1&gt;Wiring in the new play/pause and save logic&lt;/h1&gt;  &lt;p&gt;First we add the save handler to the save button in the application bar. At this point I also take the opportunity to rename the handler for the play button to what I had in the previous post to the following:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4544.image_5F00_1F92B604.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5621.image_5F00_thumb_5F00_16567AC3.png" width="554" height="114" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The play_click logic keeps the save button disabled while the stopwatch is in play mode, and enables it when in the pause or stop mode&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6114.image_5F00_4801724B.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5102.image_5F00_thumb_5F00_4BBF171B.png" width="504" height="335" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The save logic is pretty simple – it adds a new item to the timings collection, gives it a default name based on the number of items in the collection, and resets the Stopwatch&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1586.image_5F00_08D01C23.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8741.image_5F00_thumb_5F00_4D9C4057.png" width="504" height="187" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Now we see the new UI and the Stopwatch logic is in place&lt;/h2&gt;  &lt;p&gt;We are now ready to run the application. The screen below shows the Stopwatch running – see the save button displayed, then the pause mode where the save button is enabled, and on clicking the save notice the new line which shows up below the display.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7356.image_5F00_3F7D515A.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6758.image_5F00_thumb_5F00_7ADD8A8D.png" width="184" height="339" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1300.image_5F00_37B20C60.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1464.image_5F00_thumb_5F00_658F394B.png" width="184" height="342" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6242.image_5F00_34AC81E0.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8080.image_5F00_thumb_5F00_2D7D1F9B.png" width="184" height="339" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Notice, since the event name is a text box, you can simply type in it to change the default name – as shown below&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4276.image_5F00_78901A5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0550.image_5F00_thumb_5F00_5FF05740.png" width="184" height="336" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4505.image_5F00_6105405F.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6646.image_5F00_thumb_5F00_7B3583B6.png" width="184" height="339" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;              &lt;h2&gt;Improving the style of the TextBox&lt;/h2&gt;  &lt;p&gt;I don’t like the default look of the TextBox – the gray object – shown above. I would really like it to be like the TextBlock shown to the right. Perhaps there is a way to do this in the default designer –&amp;#160; but this can also be done easily be designers who use Expression Blend.&lt;/p&gt;  &lt;p&gt;My colleague at work is very handy with Blend – and he has a style which matches what I want and I would use that. For the purpose of this blog I will simply show the XAML generated by Blend for the style in question – and perhaps explore Blend at another time. &lt;/p&gt;  &lt;p&gt;I am only showing a part of the XAML for the style, as it is a lot of XAML code (please let me know if you need the full style). I am putting this in the App.XAML file.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0451.image_5F00_0D31A177.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1121.image_5F00_thumb_5F00_4A72563E.png" width="504" height="179" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next, I change the TextBox XAML definition to include the newly defined style&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7384.image_5F00_6DDED4D6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1033.image_5F00_thumb_5F00_650ECC8A.png" width="504" height="50" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;With that, when I run the application, the TextBox looks a lot nicer!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4657.image_5F00_34984814.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2677.image_5F00_thumb_5F00_09AFBE35.png" width="244" height="447" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;h2&gt;Some final screen shots&lt;/h2&gt;  &lt;p&gt;We are done. Here are some final screen shots. The screen shows the state after a set of timings have been added, with some event names changed. The one on right shows that scrolling works just fine!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0842.image_5F00_5860D3D4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0820.image_5F00_thumb_5F00_2F6598FE.png" width="204" height="373" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6765.image_5F00_5D8F6EEB.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0005.image_5F00_thumb_5F00_23900632.png" width="204" height="373" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next we hit the back button to tombstone the application, and when we launch it again, we see that it has reloaded all of the saved timings showing that persistence is working just fine too&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6763.image_5F00_4768B7BF.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1663.image_5F00_thumb_5F00_63A5D412.png" width="204" height="376" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5367.image_5F00_6B6DC6B4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4300.image_5F00_thumb_5F00_610C7C87.png" width="204" height="376" /&gt;&lt;/a&gt;&lt;/p&gt;        &lt;p&gt;Finally I test to see that portrait mode works well and it does!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1134.image_5F00_5DAAE4DF.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2211.image_5F00_thumb_5F00_190B1E13.png" width="404" height="221" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That completes a few hours of coding this afternoon, and the cricket match is still on! I hope this blog is useful to someone out there who wants to add data binding and persistence to their application.&lt;/p&gt;  &lt;p&gt;Cheers!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10154807" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author><category term="Manual Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Manual+Testing/" /><category term="Test Automation" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Test+Automation/" /><category term="Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Testing/" /><category term="Visual Studio Team System" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+System/" /><category term="Visual Studio Team Test" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+Test/" /><category term="Lab Management" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Lab+Management/" /><category term="Windows Phone 7 Applications" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Windows+Phone+7+Applications/" /></entry><entry><title>Windows Phone 7 app:  Adding “portrait”/“landscape” modes to Chronometer</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/04/07/windows-phone-7-app-adding-portrait-landscape-modes-to-chronometer.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2011/04/07/windows-phone-7-app-adding-portrait-landscape-modes-to-chronometer.aspx</id><published>2011-04-07T16:22:15Z</published><updated>2011-04-07T16:22:15Z</updated><content type="html">&lt;p&gt;This one is a short update to the Windows 7 Phone application that I have been building and blogging about – you can find the starting of the series &lt;a href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/03/26/building-a-windows-phone-7-application.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The application that we have built, so far, does not respond to flipping the phone on to it’s side. For example, below are two views of the phone held upright and on its side respectively&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7536.image_5F00_064E7EC3.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2450.image_5F00_thumb_5F00_27CA5BFA.png" width="154" height="283" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8540.image_5F00_5256170A.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8168.image_5F00_thumb_5F00_3E88E1DC.png" width="304" height="165" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1830.image_5F00_7221286D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4810.image_5F00_thumb_5F00_04B5D68B.png" width="304" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;While this behavior may be fine for some applications, for our application, the display is hard to read when the phone is turned on its side, and I would really like the display to always be “upright” irrespective of whether the phone is held upright or flipped on it side.&lt;/p&gt;  &lt;p&gt;This is easy to do!&lt;/p&gt;  &lt;p&gt;You can find the default settings for the “orientation” for the application in the default XAML file for the application. I am including below this part of the XAML for the PhoneApplication page&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1261.image_5F00_01543EE3.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4834.image_5F00_thumb_5F00_4C6739A5.png" width="554" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Notice the last line above. It essentially says that the “Orientation” to start with will be in “Portrait” mode, and the “Supported Orientation” is also “Portrait” only. It is this setting which is making the application behave as shown above.&lt;/p&gt;  &lt;p&gt;You can also notice this setting in the properties window for the PhoneApplicationPage object – see this in the image on the left below – notice the values of the “Orientation” and “SupportedOrientations” properties. To support both portrait and landscape orientations, all you need to do is change the value of the “SupportedOrientations” property to “PortraitOrLandscape” – see the image on the right below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1134.image_5F00_2DDCAD22.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4762.image_5F00_thumb_5F00_6391F27C.png" width="229" height="359" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5857.image_5F00_5F57F4EA.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2727.image_5F00_thumb_5F00_631599BA.png" width="294" height="357" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As you change the above property, note that the XAML file automatically changed to reflect the change.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2161.image_5F00_37351FFE.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7382.image_5F00_thumb_5F00_0C2D0C2C.png" width="554" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That’s all! &lt;/p&gt;  &lt;p&gt;We can now build the application, run it, and we can now see the following results when the phone is flipped on its side.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0572.image_5F00_26B95CAB.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4682.image_5F00_thumb_5F00_067E0454.png" width="279" height="152" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3051.image_5F00_2186AD95.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2061.image_5F00_thumb_5F00_46D05569.png" width="279" height="152" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Notice, how the button icons in the application bar also change to match the corresponding orientation.&lt;/p&gt;  &lt;p&gt;I should also call out that, you can just as well change these properties in the code. For example, you can achieve the same result by leaving the default properties (and hence the XAML) unchanged, but add the following line in the code behind file, during application initialization.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2084.image_5F00_319229F4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8875.image_5F00_thumb_5F00_15A0F4FC.png" width="554" height="93" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This of course gives you full flexibility in controlling this property however you want to!&lt;/p&gt;  &lt;p&gt;That’s all for this night! I have a few other things to add to this application, related to the “Save” button I have introduced but haven’t coded to. This will allow me to play with a few more controls and also experiment with how data/state can be persisted across sessions of the application. I hope to get to those soon.&lt;/p&gt;  &lt;p&gt;Cheers!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10151034" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author><category term="Manual Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Manual+Testing/" /><category term="Test Automation" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Test+Automation/" /><category term="Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Testing/" /><category term="Visual Studio Team System" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+System/" /><category term="Visual Studio Team Test" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+Test/" /><category term="Lab Management" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Lab+Management/" /><category term="Windows Phone 7 Applications" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Windows+Phone+7+Applications/" /></entry><entry><title>WP7 Chronometer – adding the ‘Application Bar’</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/04/02/wp7-chronometer-adding-the-application-bar.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2011/04/02/wp7-chronometer-adding-the-application-bar.aspx</id><published>2011-04-02T15:22:42Z</published><updated>2011-04-02T15:22:42Z</updated><content type="html">&lt;p&gt;I have been waiting to get back to the Windows Phone 7 Chronometer app that I have started to build and blogged about last week. Today’s World Cup Cricket final provides the perfect setting to sit in front of the television to watch the game and get some coding done as well! &lt;/p&gt;  &lt;p&gt;My goal today is to add the Application Bar functionality to the application, to use a different timer construct, and also to clean up the code a bit.&lt;/p&gt;  &lt;h2&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/h2&gt;  &lt;h2&gt;Getting the ‘official’ icons &lt;/h2&gt;  &lt;p&gt;Let me start first by using some professional icons for the application instead of the self-made ones in version 1.&lt;/p&gt;  &lt;p&gt;You will find most of the important icons used on the Windows 7 phone already on the system. These come with the Windows Phone 7 developer toolkit, and you will them in the following locations:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;On 32 bit computers – C:\Program Files\Microsoft SDKs\Windows Phone\v7.0\Icons&lt;/li&gt;    &lt;li&gt;On 64 bit computers – C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.0\Icons&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You have both “dark” and “light” versions, I will be using the “dark” versions, as I have the default dark background for my Stop Watch page. I have copied over the following icons and add them to the project for the “save”, “pause”, and “play” functionality in the application, saving them in the “Images” folder&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5074.image_5F00_2893DB45.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0601.image_5F00_thumb_5F00_690677F4.png" width="244" height="78" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Also, click on each of the icons, and in the properties window, change the “BuildAction” to “Content” from “Resource”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4401.image_5F00_54A0B269.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8535.image_5F00_thumb_5F00_40A71FD3.png" width="244" height="85" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Using a DispatchTimer&lt;/h2&gt;  &lt;p&gt;In the last post I had used a Timer object. With this object, the callback happens on a different thread. Hence, to access the UI elements of the application, I had to use the Dispatcher.BeginInvoke mechanism on the object to access it. In this post, I will use the DispatchTimer object instead. For this class, the event callback happens on the UI thread itself, and I can access the UI elements directly. &lt;/p&gt;  &lt;p&gt;To add the DispatchTimer, I add the following lines&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4426.image_5F00_4947785F.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7446.image_5F00_thumb_5F00_1CBE4879.png" width="244" height="32" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5383.image_5F00_5AD7632A.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4426.image_5F00_thumb_5F00_6B6F5E18.png" width="304" height="35" /&gt;&lt;/a&gt;&lt;/p&gt;        &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1108.image_5F00_375ABEC5.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7462.image_5F00_thumb_5F00_478686BE.png" width="404" height="57" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;At this point, it is opportune to point out an useful short cut in Visual Studio. To add the event handler for the DispatchTimer object all you do is simply type&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;timer.Tick += &amp;lt;tab&amp;gt; &amp;lt;tab&amp;gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Visual Studio automatically completes the rest of the last instruction shown in the snippet above, and also add the event handler code, below, automatically! I like this short cut!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5327.image_5F00_44FD5500.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8176.image_5F00_thumb_5F00_0382A2A7.png" width="404" height="87" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Changing the display font to a fixed-width type&lt;/h2&gt;  &lt;p&gt;At this time, I will also make a few clean up changes. I clean up some of the static variables I had introduced earlier. I will also change the font type of the TimerDisplay TextBlock&amp;#160; to “Courier New”. This is a “fixed width” font, and it will prevent the perceptible wobbling of the numbers in the timer display for the earlier version – that is, the total width of the displayed text will stay constant with this font, irrespective of the digits displayed. This requires me to change the width of the display block a bit, and I also take the opportunity to change the font color to a shade of blue to add a bit of color!&lt;/p&gt;  &lt;p&gt;With this, the main part of the UI, and the properties of the TextBlock are the following&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7080.image_5F00_5A2B5AA8.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8407.image_5F00_thumb_5F00_4FAA8688.png" width="344" height="275" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8585.image_5F00_0C12D566.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5367.image_5F00_thumb_5F00_29A4B065.png" width="304" height="272" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Introducing the Application Bar&lt;/h2&gt;  &lt;p&gt;In this version I will also introduce the “Application Bar”. It is the bar that sits at the bottom of the screen. The bar supports four icons, and have additional menu items at the bottom. The bar displays just the icons and a “…” symbol on the right (bottom left of the screen) to expand the display bar and display the additional menu items. &lt;/p&gt;  &lt;p&gt;The Visual Studio development environment makes it easy to make to bring the application bar into play! Double click on the MainPage.xaml file and check out the bottom of the xaml code – you will see the following xaml code in a comment block&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3617.image_5F00_5B4FA7ED.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0167.image_5F00_thumb_5F00_31F85FEF.png" width="604" height="176" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Uncomment the comment block, and you see the Application Bar show up in the XAML designer view, as shown below&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0160.image_5F00_075C7F12.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6443.image_5F00_thumb_5F00_23A9C132.png" width="212" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I have also cleaned up some of the old timer code and removed the old button that I had in version 1. At this time, you can build the application and run it. You can now see the Application Bar on the screen. The left image below shows the default display, and you can click the “…” icon at the bottom right of the screen and you can see the application bar expand, now showing the names of the two icons used, and also the additional menu items that are included in the XAML code above.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1581.image_5F00_679D7F7C.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2654.image_5F00_thumb_5F00_001CF700.png" width="204" height="379" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3666.image_5F00_760855D4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7875.image_5F00_thumb_5F00_153AD6DB.png" width="204" height="382" /&gt;&lt;/a&gt;&lt;/p&gt;                  &lt;p&gt;I want to use the first of the icons in the application bar for the “start / pause” toggle for the Stop Watch, and the second one for a “save” functionality that I will introduce a bit later. &lt;/p&gt;  &lt;p&gt;To do this, I update the XAML code in the Application Bar segment to change the icons for the first two icons to the play and save icons, comment out the extra menu items which I will not be using in this version, and also add the handler code for the two icon buttons. The XAML code for the Application Bar now looks as follows:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2273.image_5F00_78DD6EED.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0044.image_5F00_thumb_5F00_0EE3DA80.png" width="604" height="116" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you use the IntelliSense feature in Visual Studio to add the “Click” property, it will also add the handler code in the backing code file. I have changed the name to the one shown above/below&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4251.image_5F00_526B65D5.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4667.image_5F00_thumb_5F00_37BEC9BC.png" width="504" height="104" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Building the solution and running it, we can now see the Application Bar displayed with the two icons we have selected.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8306.image_5F00_033DF774.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0385.image_5F00_thumb_5F00_2D2DCFCF.png" width="244" height="458" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;When you click on the buttons, nothing happens yet, as I have not hooked up the code in the above handler to do the main stop watch logic. However, you will notice that the system automatically provides all of the functionality to “invert” the color of the icon when it is hit, and the subtle up-down motion showing the buttons are clicked.&lt;/p&gt;  &lt;h1&gt;&lt;/h1&gt;        &lt;h1&gt;Putting back the logic for updating the display&lt;/h1&gt;  &lt;p&gt;We can now put back the code we had in version 1 to update the display, taking care to put the logic in the appropriate event handlers, and accessing the new icons to update the application bar icons.&lt;/p&gt;  &lt;p&gt;First I show below the code for clicking the first button in the Application Bar. It simply starts the DispatchTimer and Stopwatch, and simply toggles the icon images for the button from play to pause and vice-versa, and updates the icon text accordingly.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0486.image_5F00_509A4E67.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8233.image_5F00_thumb_5F00_7F9C8A3E.png" width="504" height="292" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next, I show the code in the DispatchTimer callback. It simply updates the stopwatch components, and simply updates the Application’s TextBlock display directly from the thread (without having to use Dispatcher.BeginInvoke, as explained earlier in this post).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1067.image_5F00_1BE9CC5F.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3652.image_5F00_thumb_5F00_207FD719.png" width="504" height="121" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;With this, we have are now back at the functional state we had in Version 1, but with the buttons in the Application Bar. Below are snapshots of the starting, running, and paused states of the application.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6607.image_5F00_24A9AEDE.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5611.image_5F00_thumb_5F00_047E7C54.png" width="169" height="313" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1832.image_5F00_0CB2A1EB.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4643.image_5F00_thumb_5F00_259E4C63.png" width="169" height="316" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3581.image_5F00_028DDAF3.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5732.image_5F00_thumb_5F00_77C05DD0.png" width="169" height="313" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;            &lt;h2&gt;Finishing up version 2 for now …&lt;/h2&gt;  &lt;p&gt;The cricket match is at a very interesting stage now – it is quite tense, the last quarter of the match remains and India seems to be in a bit of discomfort and Sri Lanka has the upper hand. I better get back to paying complete attention and supporting Team India! I will keep evolving the application with further posts …&lt;/p&gt;  &lt;p&gt;Cheers!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10149164" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author><category term="Visual Studio Team System" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+System/" /><category term="Visual Studio Team Test" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+Test/" /><category term="Windows Phone 7 Applications" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Windows+Phone+7+Applications/" /></entry><entry><title>Building a Windows Phone 7 Application</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/03/26/building-a-windows-phone-7-application.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2011/03/26/building-a-windows-phone-7-application.aspx</id><published>2011-03-26T17:37:13Z</published><updated>2011-03-26T17:37:13Z</updated><content type="html">&lt;p&gt;   &lt;br /&gt;&lt;font size="2"&gt;It’s a lazy Saturday afternoon, and was the perfect time for me to do something that I have been meaning to get to for a while now. That is, to develop a Windows Phone 7 application. No, I don’t have a brilliant application idea in mind (I will get to that another day), but this was more to just get my hands wet in developing a simple application. As I was developing it, the thought occurred, that it might not be a bad idea to blog about it – it my help some other soul to learn about and get excited about building Windows 7 phone applications, or perhaps it might be useful for me to cover other topics in the future in my blogs. So here it is – a step by step tutorial of developing my first Windows Phone application!&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h1&gt;Get Visual Studio 2010, and download Silverlight for Windows Phone&lt;/h1&gt;  &lt;p&gt;&lt;font size="2"&gt;I am assuming you already have a developer edition Visual Studio 2010 (you can get more details about the product &lt;a href="http://www.microsoft.com/visualstudio/en-us/try?CR_CC=200000862&amp;amp;WT.mc_id=MSCOM_MEDIA&amp;amp;WT.mc_id=MSCOM_HP_US_BIZ_113LMUS004262"&gt;here&lt;/a&gt;). &lt;/font&gt;&lt;font size="2"&gt;You also need to download the Silverlight for Windows Phone package – Silverlight being the application development platform for Windows Phone 7. You can get it &lt;a href="http://www.silverlight.net/getstarted/devices/windows-phone/"&gt;here&lt;/a&gt;. From there you also need to download the Windows Phone 7 developer toolkit, that plugs into Visual Studio.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;I am now set to create the first Windows phone application. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;I will start with building a simple Stopwatch application. This type of application is already readily available in many forms in the Windows Marketplace – but as I said, the goal for this post is to just get started with a simple application. I will call this application a Chronometer – maybe I will add more functionality later.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1&gt;Creating a new project, leveraging the template&lt;/h1&gt;  &lt;p&gt;&lt;font size="2"&gt;Creating the shell of the application is real easy – simple create a new project in Visual Studio and choose to create a Windows Phone Application – that’s all! Check out some screen shots below.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6406.image_5F00_36B7787A.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8171.image_5F00_thumb_5F00_5ACCAD3C.png" width="504" height="327" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0537.image_5F00_2FC4996A.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7802.image_5F00_thumb_5F00_6C68A9D5.png" width="504" height="242" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;You can just build and run the application. The application comes up in the simulator, and is pretty functional already – see the screens below! The one of the left gives you a default view of the application we are building – it has a default title for the application, and a default name for the starting page of the application. The simulator also includes fully functional buttons that you’d have on the phone. Clicking on the &amp;quot;windows” button shows you the start screen of the phone, complete with a tile for internet explorer (and that tile/app is fully functional too). Clicking on the navigation button next to the IE tile, you see the third screen which shows the applications already on the phone – and here you see that our chronometer application has also shown up (we should change the tile of the application here – it has simply picked up the title of the solution we have created in Visual Studio. Finally, you can click on the search button on the phone, and it brings up the Bing search application – once again, fully functional including the current day’s Bing picture and fully functional voice search capability. I love the Windows Phone 7 simulator in Visual Studio – it not only makes building your application really easy, but allows you to get a feel for it in an actual environment by giving a pretty functional feel of the Windows Phone 7 device!&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4377.image_5F00_7377C080.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5466.image_5F00_thumb_5F00_1720C24E.png" width="154" height="285" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5775.image_5F00_4D423A9D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4721.image_5F00_thumb_5F00_62FBFD2D.png" width="154" height="285" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3568.image_5F00_4B151607.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5228.image_5F00_thumb_5F00_18A11CBB.png" width="154" height="285" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0434.image_5F00_5C94DB05.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0434.image_5F00_thumb_5F00_2094AB1E.png" width="154" height="285" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h1&gt;&lt;/h1&gt;          &lt;h1&gt;Few easy modifications to begin with – change the application name and titles&lt;/h1&gt;  &lt;p&gt;&lt;font size="2"&gt;Getting back to Visual Studio, you can see the XAML representation for the UI and the actual view displayed in the designer mode. You can simply click on the controls, check out their properties on the bottom-right of the screen, and change the texts. For example, I have changed the title of the application and the title of the main page below. I will build a stopwatch application for the main page. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3823.image_5F00_5C90C706.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7658.image_5F00_thumb_5F00_65E939E2.png" width="504" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Let us also change the name of the application that shows up in the list of applications on the phone. Click on the name of the solution in the solutions explorer, and bring up the properties page. Click on the applications tab in the properties and change both the title in the “deployment” as well as the “Tile” options property sets – see below.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1665.image_5F00_2CC23713.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4401.image_5F00_thumb_5F00_2DB6D498.png" width="504" height="302" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Simply build and run the application again, and you can see all of the changes have been effected. Including the tilt of the application in the tile view (I simply double clicked on the application in the list on the left screen and pinned it to the start page).&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7571.image_5F00_16C7DD4F.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7870.image_5F00_thumb_5F00_5C98C4D5.png" width="154" height="285" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6825.image_5F00_12BA3D25.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5857.image_5F00_thumb_5F00_2BA5E79D.png" width="154" height="283" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1072.image_5F00_6F2D72F2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3632.image_5F00_thumb_5F00_3E3A95BA.png" width="154" height="287" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;It is worth reflecting on how easy Visual Studio makes developing Windows Phone applications too! With just a few very simple steps we have created the structure of the application.&lt;/font&gt;&lt;/p&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;h1&gt;&lt;/h1&gt;      &lt;h1&gt;Creating the Stopwatch display&lt;/h1&gt;  &lt;p&gt;&lt;font size="2"&gt;Let’s now get to the core of our application. I will first add the main display for the Stopwatch page. I intend to be in the format of “DD:HH:MM:SS:mmm” displaying days, hours, minutes, and milliseconds.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Back in Visual Studio, bring down the toolbox of controls that you can choose from (via View.Toolbox menu) – see below. You have a rich set of controls to choose from.&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3124.image_5F00_171FD678.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1488.image_5F00_thumb_5F00_018189DC.png" width="504" height="302" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;I am choosing the “Textbox” control for the main display – it allows me to display a rich text on the page. You simply double click the control from the Toolbox to get it on to the application page. Next, simply change the properties (I have changed the display text to be 00:00:00:000 by default, and have changed the font size to 64), resize the control to the desired size, and drag and position it to the location you want.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0218.image_5F00_739F1E13.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5187.image_5F00_thumb_5F00_2AD4BDDB.png" width="504" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;The application display now looks as shown below. I now would like to add a start/pause button to finalize my first page for my simple Stopwatch application. For this, I simply create two icons – for play (or start) and pause – and create two JPG files for them. I used Windows Paint to create these two icons – each being a 60x60 in pixel size. I then add those two files to my solution via “Project.Add Existing Item…” menu&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6433.image_5F00_4354355E.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3302.image_5F00_thumb_5F00_1C464991.png" width="154" height="285" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4382.image_5F00_7935D820.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2335.image_5F00_thumb_5F00_0C0A5BCB.png" width="229" height="121" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7853.image_5F00_5B93D754.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6064.image_5F00_thumb_5F00_78B97F5E.png" width="244" height="226" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Next, I add a button from the Toolbox to the application screen, position it and size it appropriately. At this point this is a simple button, and the page and the backing XAML looks as follows.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5430.image_5F00_7C77242E.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7433.image_5F00_thumb_5F00_72AE6A5E.png" width="504" height="225" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;However, instead of the Button being a simple Text button, I want the button to use an image – say the “play” image that I have created above. To do this, I simply add the “Image” tag to the Button definition directly in the XAML file shown above. The reworked XAML looks as follows – notice the &amp;lt;Image /&amp;gt; tag in the XML inserted in the definition of the &amp;lt;Button /&amp;gt; tag, and also that the play icon now shows up in the Button – we have transformed it into a an image based button.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;With this, we have really completed our application layout! Now we need to add a bit of code for the Stopwatch logic.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8865.image_5F00_0C727AC1.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4113.image_5F00_thumb_5F00_2A208D5B.png" width="504" height="283" /&gt;&lt;/a&gt;&lt;/p&gt;                &lt;h1&gt;Adding the code for the Stopwatch&lt;/h1&gt;  &lt;p&gt;&lt;font size="2"&gt;As you can imagine, all of the action will be initiated by the clicking of the play button. To create an event handler for the button, simply double click on the button in the display view for the XAML for the main page. It creates the following code in the backing code file.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3531.image_5F00_58C5FA63.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4113.image_5F00_thumb_5F00_77303B4C.png" width="504" height="100" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Now we will simply add the code in the event handler framework that has been created by Visual Studio.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;My focus here is not to write the most efficient code, but will rather focus on simplicity.&lt;/font&gt;&lt;/p&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;h3&gt;Adding class references &lt;/h3&gt;  &lt;p&gt;&lt;font size="2"&gt;We will be using few special class from the System name space – namely Media for updating the image of the button, Threading to get a timer going, and Diagnostics to use the Stopwatch object built into .NET. I start of by adding these references in the MainPage.xaml.cs file&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0312.image_5F00_7FD093D8.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0728.image_5F00_thumb_5F00_3E55E17F.png" width="244" height="53" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;A few member variables &lt;/h2&gt;  &lt;p&gt;&lt;font size="2"&gt;I next introduce a few member variables. These will store the day/hour/minute/second/millisecond values that I will display; the state of the stopwatch (started or paused) , a Stopwatch object, and a Timer object ;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;It also created two BitmapImage objects for the start and pause images that the button will display.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7762.image_5F00_09D50F37.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7183.image_5F00_thumb_5F00_6E500D33.png" width="504" height="127" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;The start/pause click logic&lt;/h3&gt;  &lt;p&gt;&lt;font size="2"&gt;Now, we move onto the code which executes when the play button is clicked. Note, this button is going to toggle between “start” and “pause” modes.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;When in the stopped state (the initial state), it toggles the state, sets the image in the button to the pause button, creates a new Timer object, and also starts the stopwatch timer in code. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;The Timer object is created with a callback method (updateDisplay) which we will discuss shortly. It also sets up the callback to be called with a reference to our TimerDisplay TextBlock so that we can update it. The penultimate parameter of 0 starts the timer straightway, and the last parameter of 100 sets it up to call the callback function at intervals of 100 milliseconds.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;The logic is similar and simple when the stopped state is false – it changes the image of the button to play, disposes the timer, and stops the stopwatch. Note that in our application, the stopwatch can be resumed from the point of pausing by clicking play again.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The code is shown below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0456.image_5F00_364E1950.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3414.image_5F00_thumb_5F00_2FBA99C0.png" width="504" height="285" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;h3&gt;The Timer callback&lt;/h3&gt;  &lt;p&gt;&lt;font size="2"&gt;Finally, we are ready to plug in the last piece of code – the callback function – which will update the applications display.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;The code is shown below. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;We simply calculate the elapsed time from Stopwatch object, convert it into the appropriate formatted display string for the application&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2821.image_5F00_70996964.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0361.image_5F00_thumb_5F00_0E2B4464.png" width="504" height="131" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;The application is ready!&lt;/h3&gt;  &lt;p&gt;&lt;font size="2"&gt;With that, our app is ready! Simply build and run the application, to check it out on the Simulator. I show four screens below – the application listed in the list of applications, the starting screen, once the start button is clicked, and once the pause button is clicked&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1781.image_5F00_6B1AD2F3.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5516.image_5F00_thumb_5F00_181F99F5.png" width="154" height="287" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4885.image_5F00_750F2884.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1754.image_5F00_thumb_5F00_0E56E025.png" width="154" height="285" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2843.image_5F00_0B617B72.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6866.image_5F00_thumb_5F00_167ADFEF.png" width="154" height="283" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2262.image_5F00_2876FDAF.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3755.image_5F00_thumb_5F00_012C8EAD.png" width="154" height="285" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;&lt;/h3&gt;            &lt;h3&gt;What’s next?&lt;/h3&gt;  &lt;p&gt;&lt;font size="2"&gt;That was fun – and not bad, for a Saturday afternoon’s worth of coding. Visual Studio really does make building Windows 7 Phone applications quite easy.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;So, what’s next? &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;There are many different ways I could extend this work – I could add more functionality to the stopwatch, or perhaps I could add another page to the application and add another functionality to the chronometer (may be a count down timer?). A demonstration of an application with two pages would be a good learning! And then of course there is the task of actually deploying the application to the app store, Perhaps I could also go into testing of phone applications. So, there are lots of ways I could take this – will wait for another lazy afternoon.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Cheers!&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10146248" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author><category term="Manual Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Manual+Testing/" /><category term="Test Automation" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Test+Automation/" /><category term="Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Testing/" /><category term="Visual Studio Team System" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+System/" /><category term="Visual Studio Team Test" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+Test/" /><category term="Lab Management" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Lab+Management/" /><category term="Windows Phone 7 Applications" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Windows+Phone+7+Applications/" /></entry><entry><title>Test and Lab Management changes in Visual Studio Service Pack 1 release</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/03/24/test-and-lab-management-changes-in-visual-studio-service-pack-1-release.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2011/03/24/test-and-lab-management-changes-in-visual-studio-service-pack-1-release.aspx</id><published>2011-03-24T08:10:13Z</published><updated>2011-03-24T08:10:13Z</updated><content type="html">&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;As you know, it has now been a couple of weeks since we released the Visual Studio Service Pack 1 product. You can find out all about this release, including a very detailed list of all the changes included in this release at &lt;/font&gt;&lt;a title="http://support.microsoft.com/kb/983509" href="http://support.microsoft.com/kb/983509"&gt;&lt;font size="2"&gt;http://support.microsoft.com/kb/983509&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;This was a significant release for the Test and Lab Management team too. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;I had shared with you in December 2010, all of the changes we had shipped as part of the Beta build for this release. Those changes are of course there in the final release, and you can review them again &lt;a href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/12/10/visual-studio-2010-service-pack-1-beta-released-information-on-test-and-lab-management-changes.aspx"&gt;here&lt;/a&gt;. There is only one more area that we had added support for after the beta, and I want to draw your attention to that:&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;IE9 support for Fast Forward &amp;amp; CodedUITest in Visual Studio 2010 SP1&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font size="2"&gt;With the release of Visual Studio 2010 SP1, Fast Forward &amp;amp; CodedUITest features of VS 2010 now support IE version 9.0 where customers can do functional testing of their web application in the new browser. The main aim of this release is to gain parity with IE8 support in IE9. The scenarios that worked in IE7/IE8 should continue to work on IE9 and users should be able to record in IE7/IE8 and playback in IE9 and vice versa. In this release we only support recording on IE9 compatible mode but playback is supported both in standard and compat mode. For more information on our IE9 support statement and known issues please take a look at this &lt;/font&gt;&lt;a href="http://blogs.msdn.com/b/vstsqualitytools/archive/2011/03/09/coded-ui-support-for-ie9-with-sp1.aspx"&gt;&lt;font size="2"&gt;blog&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;. &lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font size="2"&gt;We have all moved to using this build for the Visual Studio 2010 product, and hope you are planning on adopting this build too! Please do leave a comment if you need additional information.&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10145235" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Parallelism: In the Cloud, Cluster and Client</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/12/19/parallelism-in-the-cloud-cluster-and-client.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2010/12/19/parallelism-in-the-cloud-cluster-and-client.aspx</id><published>2010-12-19T04:49:00Z</published><updated>2010-12-19T04:49:00Z</updated><content type="html">&lt;p&gt;Recently I had the opportunity to keynote at the Intel Tech Days conference, and I chose to talk about the trends in Parallelism. I thought I&amp;rsquo;d share the &amp;ldquo;presentation&amp;rdquo; with you, and in the end I will certainly weave in the topic of &amp;ldquo;testing&amp;rdquo; into this. I hope you enjoy the post.&lt;/p&gt;
&lt;p&gt;Software and digital experience is now becoming ubiquitous in our lives. Software is everywhere &amp;ndash; it is stocking supermarket shelves, delivering electricity and water to our homes, storing our personal information in computers around the world, running nuclear plants and even controlling doomsday weapons! Moreover, with the popularity of the Internet and mobile devices, and with the advances in graphical and natural user interfaces, the creative human minds and the innovative companies are making the digital age more personal, social and indispensible.&lt;/p&gt;
&lt;p&gt;This is leading to three fundamental trends in the world today:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Data explosion &amp;ndash; the phenomenal growth of raw digital data&lt;/li&gt;
&lt;li&gt;Demand for computational power for transforming raw data into meaningful information&lt;/li&gt;
&lt;li&gt;Exponential growth in the number of users getting on to the digital super highway&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8054.image_5F00_7D75F7D7.png"&gt;&lt;img height="379" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5756.image_5F00_thumb_5F00_0DEDA72C.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;The explosion of data, information and users&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The data explosion itself is mindboggling. Research analysts revealed that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Last year, despite the recession, the total amount of digital data in the world has grown by an astonishing 62 percent to 0.8 zettabytes (a billion terabytes). If you were to create DVDs with all of these data, and stack them up on the earth&amp;rsquo;s surface, the pile would reach the moon!&lt;/li&gt;
&lt;li&gt;At this rate of growth, in 2020, the digital information will be 47 times of what it is today, that is 35 zettabytes, and the stack of DVDs would be high enough to touch Mars!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2110.image_5F00_639DADA9.png"&gt;&lt;img height="379" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5734.image_5F00_thumb_5F00_5A514C9B.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Raw data by itself is not of much use to individuals and businesses. However, if we can harness the right amount of computational power and processing speed, we can transform the data to experiences that will completely transform the lives of individuals and business users. Think about some of the experiences we can potentially enable in areas such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Financial modeling &amp;ndash; personalized investment tools with rich analytics of complex financial scenarios&lt;/li&gt;
&lt;li&gt;Personalized Immune System&lt;/li&gt;
&lt;li&gt;Real-time Model based Computing&lt;/li&gt;
&lt;li&gt;Individualized Semantic Search Engines&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These advances and possibilities will, of course, lead to a huge explosion of individual users accessing these services over the Internet or using their computers and personalized digital devices. Here is a chart that predicts the explosion we are talking about:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8461.image_5F00_4181D9BE.png"&gt;&lt;img height="377" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6305.image_5F00_thumb_5F00_618CC0AE.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Will advances in computational power be ready for this explosion?&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;All the above sounds promising. But transforming raw data into life-transforming experiences&amp;mdash;that caters to a few billion people&amp;mdash;will require a tremendous amount of computational power. Will the revolution in PC performance of the last few decades be ready for this challenge? We obviously cannot go back to expensive and huge super computers that individuals cannot have easy and personalized access to. &lt;/p&gt;
&lt;p&gt;Fortunately, there are three great trends here, which hold the promise of solving this problem. These are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multi-core and Manycore client systems &lt;/li&gt;
&lt;li&gt;The Cloud&lt;/li&gt;
&lt;li&gt;HPC environment for the Cluster&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2502.image_5F00_5AC9915E.png"&gt;&lt;img height="379" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7776.image_5F00_thumb_5F00_3881600B.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Depending on the class of problem you are trying to solve, one of the trends can be utilized in an effective manner.&lt;/p&gt;
&lt;p&gt;To understand the promise and the need of Manycore systems, it is important to review the advances we have made in the last several decades in the performance of the microprocessors that power the PCs and mobile devices.&lt;/p&gt;
&lt;p&gt;For several decades now, Gordon Moore&amp;rsquo;s famous prediction in the 60s&amp;mdash;better known as Moore&amp;rsquo;s Law now&amp;mdash;has been driving the improvements in processor performance. The law states that the number of transistors placed on an integrated circuit would double every 18 to 24 months, which would roughly lead to similar increase in clock speed and processor performance in that time period. Companies like Intel have demonstrated this in reality, and the last several decades have seen this impact on clock speed and processor performance.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8546.image_5F00_4E0B72DB.png"&gt;&lt;img height="506" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8372.image_5F00_thumb_5F00_25103805.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;However, we are now nearing the limits of what can be physically accomplished in fabrication and layout. And as you see in the graph above, the clock speed and processor performance from Moore&amp;rsquo;s Law has hit a plateau.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Manycore systems is the answer&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Further improvements in processor performance are now following a new model! Instead of relying on the increase of clock speed alone (which eventually leads to power consumption and heat emission that becomes unmanageable), chip manufacturers are now adding more CPUs or &amp;rsquo;cores&amp;rsquo; to the microprocessor package.&lt;/p&gt;
&lt;p&gt;Most mainstream desktops and laptops now come with at least a dual-core microprocessor (a single processor package that contains two separate CPUs). This is a new trend. Quad and higher core processors are now entering the market. In fact, I am writing this post on a laptop which has 4-core (in addition to hyper-threading&amp;mdash;not the topic of today&amp;rsquo;s discussion&amp;mdash;that essentially looks like a 8-core machine!)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1104.image_5F00_20C614A6.png"&gt;&lt;img height="294" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6283.image_5F00_thumb_5F00_071E3BDF.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &amp;rsquo;Manycore shift&amp;rsquo; in hardware performance will now lead to the next phase of computational power growth over the next decade. The same Moore&amp;rsquo;s Law can now apply to this type of scaling of processor performance. In fact, the following bold statement from Justin Ratner, CTO, Intel, is very relevant in this context:&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;ldquo;Moore&amp;rsquo;s Law scaling should easily let us hit the 80-core mark in mainstream processors within the next ten years and quite possibly even sooner&amp;rdquo;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Manycores need an equal progress in Parallel Computing&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;With Manycores&amp;rsquo; processing power improvements of 10 to 100 times over the next few years, developing applications that harness the full power of Manycore systems become the next big challenge for software developers. Developers must now shift from writing serial programs to writing parallel programs!&lt;/p&gt;
&lt;p&gt;Hardware companies have done a tremendous job in ushering the Manycore revolution. But software companies now have the responsibility of bringing in similar advances in operating systems, runtimes and developer tools. And these advances should enable developers to simply embrace the concept of parallelism and allow the platform and the tools to extract most of the parallelism that is available in a system.&lt;/p&gt;
&lt;p&gt;The goal would be to ensure that if you have a compute intensive application, it is able to fully harness all the computational power available in the system. For example, if I have a 16-core system and a compute intensive application, the CPU usage and the spread across all the cores should ideally look like this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0027.image_5F00_723C1D91.png"&gt;&lt;img height="292" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6874.image_5F00_thumb_5F00_1D045BD7.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;The final frontier: Parallelism in the Cloud, Cluster and Client&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Only harnessing the power of a single Manycore system may not be sufficient to bring the kind of experiences that we have discussed earlier to our daily lives. There are many sceanrios where we need to harness the power of many systems. Moreover, the operating system and the platform should provide the necessary abstractions to give that power and yet hide the complexities from the lives of the developers of the software. A business or enterprise providing rich information and computational intensive service to individuals, need combination of Cluster, Client and the Cloud. This enables them to optimize their investment for on-demand computing power and utilize idle computing power in desktops. This is typically the vision of teams like the High Performance Computing (HPC) group in Microsoft. An HPC solution here will look as follows:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4621.image_5F00_038C32D0.png"&gt;&lt;img height="379" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2654.image_5F00_thumb_5F00_1B334469.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Imagine a financial company providing the next generation financial analytics and risk management solutions to its clients. To provide those solutions it needs enormous processing capacity. The organization probably has a computational infrastructure similar to that shown above and a cluster of machines in its data center that takes care of the bulk of the computation. The organization also likely has many powerful client machines in the workplace that are unused during inactive periods. Thus, it would benefit from adding those machines during unused times as compute nodes to its information processing architecture. Finally, it will need the power of the Cloud to provide elastic compute capacity for short periods of intensive needs (or bursts) for which it is not practical to &lt;i&gt;reserve&lt;/i&gt; computational power.&lt;/p&gt;
&lt;p&gt;The RiskMetrics Group is a financial company that uses an Azure-based HPC architecture like the one outlined above. It provides risk management services to the world&amp;rsquo;s leading asset managers, banks and institutions to help them measure and model complex financial instruments. RiskMetrics runs its own data center, but to accommodate high increase in demand for computing power at specific periods of time, the company needed to expand its technical infrastructure. Rather than buying more servers and expanding its data center, RiskMetrics decided to leverage the Windows Azure Platform to handle the surplus loads. This is particularly necessary for a couple of hours, and the organization needs to complete its financial computations within window . This leads to bursts of computationally intensive activities as shown in the chart below:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6874.image_5F00_6465C397.png"&gt;&lt;img height="306" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7360.image_5F00_thumb_5F00_7227E3C5.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Courtesy Microsoft PDC Conference 2009 and case study &lt;a href="http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseStudyID=4000005921"&gt;http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseStudyID=4000005921&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;By leveraging the highly scalable and potentially limitless capacity of Windows Azure, RiskMetrics is able to satisfy the peak bursts of computational needs without permanently reserving its resources. It eventually expects to provision 30,000 Windows Azure instances per day to help with the computational needs! This model enables the organization to extend from fixed scaling to elastic scaling for satisfying its on-demand and &amp;lsquo;burst&amp;rsquo; computing needs.&lt;/p&gt;
&lt;p&gt;You then get a sense of how Parallelism in Cloud, Cluster and Client is the solution for today&amp;rsquo;s and tomorrow&amp;rsquo;s innovative and information rich applications that need to be scaled to millions of users.&lt;/p&gt;
&lt;p&gt;Finally, let us take a look at how the platform and developer tools will allow developers to easily build these massively scalable parallel applications.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;How does the development platform look like?&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a picture of how the development platform should look like.&lt;a name="_GoBack"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1184.image_5F00_26886A74.png"&gt;&lt;img height="610" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6874.image_5F00_thumb_5F00_014AD46E.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lsquo;Parallel Technologies&amp;rsquo; stack is natively a part of Microsoft&amp;rsquo;s Visual Studio 2010 product as shown below - both for native and managed applications.&lt;/p&gt;
&lt;p&gt;Microsoft has invested in the Parallel Computing Platform to leverage the power of Parallel Hardware/Multi-core Evolution&lt;/p&gt;
&lt;p&gt;Developers can now:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Move from fine grain parallelism models to coarse grained application components &amp;ndash; both in the managed world and in the native world&lt;/li&gt;
&lt;li&gt;Express concurrency at an algorithmic level and not worry about the plumbing of thread creation, management and control&lt;/li&gt;
&lt;li&gt;The concurrency runtime by itself is extensible. Intel has announced integration with the concurrency runtime for TBB, OpenMP and Parallel Studio &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;A demonstration of this capability&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I will show a small demonstration of the example that supports parallelism in the Microsoft platform. I have a simple application called &amp;lsquo;nBody&amp;rsquo; that is a simulation of &amp;rsquo;n&amp;rsquo; planetary bodies, where each body positions itself based on the gravitational pull of all the other bodies in its vicinity. This is clearly a very compute intensive application, and also one that can benefit immensely from executing &amp;lsquo;tasks&amp;rsquo; in parallel.&lt;/p&gt;
&lt;p&gt;The code for this application is just a native C++ code.&lt;/p&gt;
&lt;p&gt;If I execute the application &amp;rsquo;as-is&amp;rsquo; without relying on the Visual Studio PPL libraries, the output of the application and the processor utilization looks as follows:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6765.image_5F00_024F97C0.png"&gt;&lt;img height="289" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5775.image_5F00_thumb_5F00_469F6332.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you look at the Task Manager closely, you will see that only 13 percent of the CPU is being utilized. That means, with an 8-core, each core is utilized to only about 1/8th of its capacity.&lt;/p&gt;
&lt;p&gt;The main part of the program, which draws the bodies, is encapsulated in an update loop, which looks as follows:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0181.image_5F00_4399D8B2.png"&gt;&lt;img height="323" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4380.image_5F00_thumb_5F00_273C70C5.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To &lt;a&gt;take care of &lt;/a&gt;&lt;a name="_msoanchor_1" href="file:///C:/Users/amitc/AppData/Local/Microsoft/Windows/Temporary Internet Files/Content.Outlook/XPYPR8W4/#_msocom_1"&gt;[n1]&lt;/a&gt; the multi-core presence and the platform support for parallelism, namely the PPL library, we can simply modify the update loop to use the parallel for construct shown below:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3617.image_5F00_236EA628.png"&gt;&lt;img height="302" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2211.image_5F00_thumb_5F00_2B3698CA.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If I now rerun the program using the UpdateWorldParallel code, the results look like something like this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2605.image_5F00_639499D5.png"&gt;&lt;img height="281" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5857.image_5F00_thumb_5F00_77DA13C6.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can now see that we are using 90 percent of the processing capacity in the machine, and all the cores are operating almost at their full capacity. Of course, if you are able to see the output of the program, you will notice the fluency of the movement, which is perceptibly faster than the jerky motion of the bodies with the earlier run.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;What about advances in testing tools for parallelism&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Testing such programs of course is going to be a challenge, and essentially the problem here is about finding ways to deal with the non-deterministic nature of the execution of parallel programs. Microsoft research has tool, integrated with Visual Studio, that helps out here. Check out &lt;a href="http://chesstool.codeplex.com/"&gt;CHESS: Systematic Concurrency Testing&lt;/a&gt; available at Codeplex. CHESS essentially runs the test code in a loop and it controls the execution, via a custom scheduler, in a way that it becomes fully deterministic. When a test fails, you can fully reproduce the sequence of the execution and this really helps narrow down and fix the bug!&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;In conclusion&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Current global trends in information explosion and innovative experiences in the digital age require immense computational power. The only answer to this need is leveraging parallelism and the presence of multiple cores in today&amp;rsquo;s processors. This &amp;rsquo;Multi-core shift&amp;rsquo; is truly going well on its way. To make this paradigm shift seamless for the developers, Microsoft is providing parallel processing abstractions in its platforms and development tools. These allow developers to take advantage of parallelism&amp;mdash;both from managed code as well as native code&amp;mdash;and apply them for computation in local clients, clusters clouds and a mix of all the three!&lt;/p&gt;
&lt;p&gt;Creative minds can focus on developing the next generation experiences into reality without worrying about processor performance limitations or requiring advanced education in concurrency.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10106908" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author><category term="Test Automation" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Test+Automation/" /><category term="Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Testing/" /><category term="Visual Studio Team System" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+System/" /><category term="Visual Studio Team Test" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+Test/" /></entry><entry><title>Eurostar 2010 at Copenhagen – Cool show,  beautiful city, freezing weather!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/12/11/eurostar-2010-at-copenhagen-cool-show-beautiful-city-freezing-weather.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2010/12/11/eurostar-2010-at-copenhagen-cool-show-beautiful-city-freezing-weather.aspx</id><published>2010-12-11T07:09:00Z</published><updated>2010-12-11T07:09:00Z</updated><content type="html">&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;I enjoyed my visit to Eurostar &lt;/span&gt;&lt;a href="http://blogs.msdn.com/b/amit_chatterjee/archive/2009/12/07/beautiful-stockholm.aspx"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;last year&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;, and this year&amp;rsquo;s &lt;/span&gt;&lt;/span&gt;&lt;a href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/11/26/eurostar-2010-in-copenhagen-november-29-december-2.aspx"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;conference&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt; in Copenhagen was a very good experience too! It is always great to witness the passion around testing and quality in Europe, and the Copenhagen show was pretty cool! There were about 50 exhibitors at the Expo, and over 900 attendees. All of the familiar players were of course there &amp;ndash; HP, IBM, and Oracle had elaborate booths! There were five vendors talking about Web performance and Load testing tools, and three vendors were focusing on developer tools, and another one presenting Model based testing. It was interesting, however, to note that more than half the exhibitors were Testing Service providers. Sogeti of course was there, and the Indian Global SI&amp;rsquo;s were well represented too &amp;ndash; with Cognizant (one of the main sponsors of the event this year), TCS (Tata Consultancy Services), and L&amp;amp;T Infotech having a very prominent presence. The presence of TCS &amp;ndash; the largest GSI in India &amp;ndash; was surprise to some &amp;ndash; this will serve notice to all, and the competition is sure to raise the quality of service offering!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;The exhibition floor was well spread out, and Microsoft had an excellent booth location this time! &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8176.P1020767_5F00_3E648F42.jpg"&gt;&lt;img height="301" width="400" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3386.P1020767_5F00_thumb_5F00_62994DF7.jpg" alt="P1020767" border="0" title="P1020767" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0537.P1020765_5F00_70A81727.jpg"&gt;&lt;img height="301" width="400" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1682.P1020765_5F00_thumb_5F00_37811458.jpg" alt="P1020765" border="0" title="P1020765" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;I found the Microsoft Testing tools (&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/test-professional"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Visual Studio Test Professional 2010&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;) still to be one of the most innovative &lt;img src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3660.wlEmoticon_2D00_winkingsmile_5F00_5B59C5E5.png" alt="Winking smile" class="wlEmoticon wlEmoticon-winkingsmile" style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" /&gt; - the level of collaboration that it brings about between developers, testers, and business analysts of course still being a great differentiator. I remember, last year in Stockholm, there was not much awareness around our testing tools at all &amp;ndash; no one was expecting Microsoft to be in the testing industry. This year the awareness was much better &amp;ndash; there were many who had heard and used the tool and were now back in our booth to hear about more details and deeper concepts. I had several team members with me &amp;ndash; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://blogs.msdn.com/b/mathew_aniyan/"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Mathew Aniyan&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt; and Darshan Desai joined my from India, Jan Willem Van Buren from the Netherlands, and Charlotte Pullich represented Microsoft Denmark. Mathew did a great job creating a pretty detailed presentation and live demos to showcase &amp;ldquo;A Day in the Life of an Agile Team&amp;rdquo;. I had a great time presenting these to end users and several customers in Copenhagen. Demonstrating the key features of Test and Lab Management live from my laptop was very gratifying &amp;ndash; there was so much to talk about and show, and the following scenarios were quite popular and drew warm appreciation from the customers:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Ellen, the generalist tester, verifying a bug that was fixed by a developer &amp;ndash; the efficiency, power, and simplicity of &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Up-to-date virtual test environments, with the daily build deployed and ready for testing&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;A list of recommended tests that leads her to the few key areas to focus based on what had changed from the build she had&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Fast forward for manual testing &amp;ndash; which enables us to easily verify that the bug is indeed fixed&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Serge, the specialist tester, automating a test case for the regression suite. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;The ability to take one of the test runs that Ellen had already done and translate that to code with a few clicks was powerful&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;(The code too is just .NET code and nothing new and complex &amp;ndash; just the way the developer likes it)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Adding the validations quite simply&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;And, all appreciated how easy it was to play back the automated test on multiple browsers (IE and Firefox)!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Ellen performing an Exploratory testing session &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;She files rich bugs &amp;ndash; which has a lot of actionable information attached to it automatically (her devs are going to love her)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;She actually has the ability to create test cases from the interesting defects she finds, just with a few clicks&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Ellen finishing up her day by authoring new tests &amp;ndash; using shared step sets to represent commonly used test cases that she and others can reuse later.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Elvis, the developer, fixing one of Ellen&amp;rsquo;s rich bug &amp;ndash; this is always popular, even in a conference for testers &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;The IntelliTrace feature that allows Elvis to re-create a debugging session in Visual Studio directly from the bug (although of course the application is not even running any more), and the ability to observe the exceptions and events, and directly hone into the area of code which has the defect is very powerful indeed!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Not to forget about Angie, the product owner, who has full visibility into the project &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;The Sharepoint dashboards showing the burdown, quality, bugs, test state, progress, and plans is very useful&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;The live and up-to-date information in the portals allow her, Ellen, and others in the team to take effective action to address issues&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;I did not get a chance to attend Mathew&amp;rsquo;s session in the lab track &amp;ndash; but sat in on Darshan&amp;rsquo;s talk on &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.eurostarconferences.com/conferences/session-details.aspx?sessionId=184"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;ldquo;Virtual Test Labs: The Next Frontier&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8055.P1020773_5F00_014F763C.jpg"&gt;&lt;img height="379" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0624.P1020773_5F00_thumb_5F00_0C68DAB9.jpg" alt="P1020773" border="0" title="P1020773" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;Darshan was excellent in this session! When the track chair asked the audience about how much passion (the theme of this year&amp;rsquo;s conference) Darshan demonstrated, he got a resounding round of applause from the well attended conference room. I particularly liked the part where he shared some best practices around snapshots, cloning virtual environments, and managing VMs. The talk was obviously very popular, as many attendees came back to look for Darshan later, and in the following day too, to learn more from him about advanced concepts they were trying to adopt. It was great to see a team member take the role of an Industry expert!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;As it usually happens, the exhibitors had several interesting activities and giveaways at their booths to draw in the audience. There was a 3-hole Golf attraction, a game of black jack, as well as interesting and popular drawings for giveaways like the iPad! Exhibitors in some big and well positioned booths were quite lonely as they had forgotten to add an element of fun in there. We didn&amp;rsquo;t have any such problems at the Microsoft booth &amp;ndash; as Charlotte and Jan Willem &amp;ndash; had arranged for a giveaway of the &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.xbox.com/en-US/kinect"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Kinect and XBOX 360&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt; in each of the three days of the conference! How cool is this product from Microsoft? Check out the &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.xbox.com/en-US/kinect"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;video&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt; if you haven&amp;rsquo;t seen this coolness yet! The audience at the floor were simply wowed &amp;ndash; and we, by far, had the largest crowd on the floor before each drawing, and there was a proud winner each day!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4426.DSC00036_5F00_01E80699.jpg"&gt;&lt;img height="273" width="363" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3252.DSC00036_5F00_thumb_5F00_54764AFB.jpg" alt="DSC00036" border="0" title="DSC00036" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0216.DSC00055_5F00_635D7A15.jpg"&gt;&lt;img height="274" width="364" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1185.DSC00055_5F00_thumb_5F00_54A2A863.jpg" alt="DSC00055" border="0" title="DSC00055" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;In the last day, the crowd for the Kinect draw was unbelievably large &amp;ndash; we couldn&amp;rsquo;t resist the temptation of talking to the truly &amp;ldquo;captive audience&amp;rdquo; one last time about the Test Professional 2010 product! It was Darshan&amp;rsquo;s idea, Mathew whipped out the demos, and I did a 90-second &amp;ldquo;keynote&amp;rdquo; about the power of Ellen filing actionable bugs leading to no more no-repro bugs! It was fun!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5700.DSC00514_5F00_319236F3.jpg"&gt;&lt;img height="305" width="404" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1106.DSC00514_5F00_thumb_5F00_096F6207.jpg" alt="DSC00514" border="0" title="DSC00514" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8117.DSC00047_5F00_74313691.jpg"&gt;&lt;img height="306" width="407" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0601.DSC00047_5F00_thumb_5F00_469FF101.jpg" alt="DSC00047" border="0" title="DSC00047" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;(Back at home, we are getting our Kinect delivered today &amp;ndash; and I am looking forward to an invigorating afternoon with the family)!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;There were more than 60 &lt;/span&gt;&lt;a href="http://www.eurostarconferences.com/conferences/2010/conference-at-a-glance.aspx"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;talks&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt; during the conference too &amp;ndash; several of them very interesting! I found @dinopatti &amp;lsquo;s case study on Playdead &amp;ndash; an XBOX game called &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.limbogame.org/"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Limbo&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;, quite fascinating. Limbo has gotten several awards for it&amp;rsquo;s minimalistic design (all in shades of grey) and challenging gameplay. Dino was quite masterful in his story telling! A concept and a statement he made stuck him my mind &amp;ndash; and it will be worth exploring. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Dino introduced the concept of &amp;ldquo;Tissue Testers&amp;rdquo;. Testers who test a game only once &amp;ndash; so they are not biased with their experience the second time around. The primary testing for Limbo was done by about 150 &amp;ldquo;tissue&amp;rdquo; testers. Quite fascinating!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Dino also made an interesting statement about their usability testing sessions &amp;ndash; he said, &amp;ldquo;we were interested in observing the users -not getting input from them. After all we know the direction&amp;rdquo;.&amp;nbsp; A pretty bold and confident statement &amp;ndash; I liked it!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;I must also mention that it was fun to meet old friends and @misssogeti - Therese Sinter at the Sogeti booth, and once again Sogeti hosted a nice dinner for customers and partners. I enjoyed some great conversations &amp;ndash; both business and non-business &amp;ndash; that evening in a beautiful restaurant. It was interesting to see the famous &amp;ldquo;Artichoke Lamp&amp;rdquo; in view in the restaurant &amp;ndash; I understand this is a famous creation by &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.bonluxat.com/a/Poul_Henningsen_PH_Artichoke_Lamp.html"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Poul Henningsen&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt; that people in Denmark are quite proud of! &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3324.P1020779_5F00_5CA65C93.jpg"&gt;&lt;img height="379" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6545.P1020779_5F00_thumb_5F00_55E32D43.jpg" alt="P1020779" border="0" title="P1020779" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;This was my first visit to Copenhagen and Denmark, and my wife had reminded me not to miss an opportunity to check out the &lt;/span&gt;&lt;a href="http://www.copenhagenpictures.dk/mermaid.html"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Little Mermaid&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;. I did make a quick detour to work one day and did meet with her&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;! &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4073.P1020706_5F00_27A93189.jpg"&gt;&lt;img height="310" width="412" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1665.P1020706_5F00_thumb_5F00_77228745.jpg" alt="P1020706" border="0" title="P1020706" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7607.P1020707_5F00_7AE02C15.jpg"&gt;&lt;img height="309" width="410" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7103.P1020707_5F00_thumb_5F00_0297F8EB.jpg" alt="P1020707" border="0" title="P1020707" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;She is just about a meter tall, and I wasn&amp;rsquo;t sure why she was so famous! It was interesting to know though that she and I share the same birthday, and it was fun to read more about here after I came back. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Copenhagen is a beautiful city, but it was awfully cold (and unseasonably so) during this trip. The Microsoft Marketing and Field office was nice and the view from there (including of the sea) was quite beautiful!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1643.P1020718_5F00_1F516E00.jpg"&gt;&lt;img height="194" width="257" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4370.P1020718_5F00_thumb_5F00_5BA99710.jpg" alt="P1020718" border="0" title="P1020718" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0576.P1020732_5F00_26BC91D3.jpg"&gt;&lt;img height="194" width="257" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4466.P1020732_5F00_thumb_5F00_4E233870.jpg" alt="P1020732" border="0" title="P1020732" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7288.P1020733_5F00_39513FF0.jpg"&gt;&lt;img height="193" width="256" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7181.P1020733_5F00_thumb_5F00_4D96B9E1.jpg" alt="P1020733" border="0" title="P1020733" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;There was snow everywhere, but on a sunny Wednesday, the city and sights were pristine and gorgeous.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6012.DSC00501_5F00_17D14EBA.jpg"&gt;&lt;img height="184" width="244" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1200.DSC00501_5F00_thumb_5F00_114AA29F.jpg" alt="DSC00501" border="0" title="DSC00501" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1234.DSC00485_5F00_0AB7230F.jpg"&gt;&lt;img height="183" width="243" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2474.DSC00485_5F00_thumb_5F00_3BC637E2.jpg" alt="DSC00485" border="0" title="DSC00485" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6683.P1020796_5F00_595812E1.jpg"&gt;&lt;img height="184" width="244" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1803.P1020796_5F00_thumb_5F00_7AE415E5.jpg" alt="P1020796" border="0" title="P1020796" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;The Tivoli amusement park was absolutely a treat to visit &amp;ndash; beautiful, but it was bitter cold, and I could hardly stand outside!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2474.DSC00589_5F00_54358998.jpg"&gt;&lt;img height="197" width="261" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1616.DSC00589_5F00_thumb_5F00_3CAAAF9A.jpg" alt="DSC00589" border="0" title="DSC00589" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1803.DSC00602_5F00_07BDAA5D.jpg"&gt;&lt;img height="197" width="260" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4527.DSC00602_5F00_thumb_5F00_709F0353.jpg" alt="DSC00602" border="0" title="DSC00602" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3857.DSC00073_5F00_42D13A8E.jpg"&gt;&lt;img height="198" width="262" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3441.DSC00073_5F00_thumb_5F00_2ADA2D9B.jpg" alt="DSC00073" border="0" title="DSC00073" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;As I got into a cab that night, after a short stretch of walk in the open, I remember I felt almost frozen with cold. &amp;ldquo;How awfully cold it is&amp;rdquo; I blurted out as I settled in. The taxi driver immediately swung the heat dial to the maximum, and opened up the vents at the back to fullest &amp;ndash; and in thirty seconds I felt uncomfortably warm. I asked the driver to reduce the heat and he looked back at me and said &amp;ndash; &amp;ldquo;Sir, you were complaining about the climate in my country&amp;rdquo;. I felt amused &amp;ndash; but appreciated the pride and passion he demonstrated about his own land! &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;&lt;span style="font-size: x-small;"&gt;Well then &amp;ndash; another successful Eurostar visit is over. The next one is in Manchester from Nov 21-24. I look forward to visiting again.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0724.P1020821_5F00_40E0992D.jpg"&gt;&lt;img height="379" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3835.P1020821_5F00_thumb_5F00_07B9965E.jpg" alt="P1020821" border="0" title="P1020821" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana,geneva;"&gt;Here&amp;rsquo;s wishing all of you a Very Merry Christmas and Happy Holidays!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2746.DSC00609_5F00_0F818900.jpg"&gt;&lt;img height="294" width="222" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8625.DSC00609_5F00_thumb_5F00_4913FD1D.jpg" alt="DSC00609" border="0" title="DSC00609" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10103537" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author><category term="Manual Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Manual+Testing/" /><category term="Test Automation" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Test+Automation/" /><category term="Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Testing/" /><category term="Visual Studio Team System" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+System/" /><category term="Visual Studio Team Test" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+Test/" /><category term="Lab Management" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Lab+Management/" /></entry><entry><title>Visual Studio 2010 Service Pack 1 Beta Released–information on Test and Lab Management Changes</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/12/10/visual-studio-2010-service-pack-1-beta-released-information-on-test-and-lab-management-changes.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2010/12/10/visual-studio-2010-service-pack-1-beta-released-information-on-test-and-lab-management-changes.aspx</id><published>2010-12-10T03:27:55Z</published><updated>2010-12-10T03:27:55Z</updated><content type="html">&lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;The Visual Studio 2010 Service Pack 1 Beta is now ready for download! General availability as well as download for MSDN subscribers is now ready and you can access them via the links below. Service Pack 1 Beta of course comes with a “&lt;/font&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=207552"&gt;&lt;font size="2"&gt;go live&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;” license which means you can start using the product in production. Upgrading from the Beta to the final release of SP1, when it is available, will be supported and very easy.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font size="2"&gt;&lt;b&gt;Service Pack 1 Beta - General availability &lt;a href="http://go.microsoft.com/fwlink/?LinkId=207130"&gt;download&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font size="2"&gt;&lt;b&gt;Service Pack 1 Beta – MS DN Subscribers only &lt;a href="http://go.microsoft.com/fwlink/?LinkId=207267"&gt;download&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font size="2"&gt;Since the launch of &lt;/font&gt;&lt;a href="http://blogs.msdn.com/b/jasonz/archive/2010/04/12/ship-it-visual-studio-2010-net-framework-4-now-available.aspx"&gt;&lt;font size="2"&gt;Visual Studio 2010 and the .NET Framework 4&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; earlier this year, we have also released some key functionality for our customers via the &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/vstudio/ff655021.aspx"&gt;&lt;font size="2"&gt;Feature Packs&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;. We have also stayed in touch with the customers and collected feedback on issues that they have been facing. The Service Pack release is intended to address the key hurdles that you are facing, and there are some nice features and improvements included in this release.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Please refer to Brian Harry’s &lt;a href="http://blogs.msdn.com/b/bharry/archive/2010/12/07/vs-tfs-2010-sp1-beta-has-released.aspx"&gt;blog&lt;/a&gt; for the the high level details on all of the capability areas. &lt;/font&gt;&lt;font size="2"&gt;In this post I will focus on the changes in the areas of the Test and Lab Management capabilities of VS 2010. In addition to fixing the high priority issues, this release also contains the fixes for customers (QFEs) that we have released earlier – so it is cumulative set of changes and I would encourage your users to upgrade to the Service Pack. In this release we have enabled unit testing for .NET 3.5, and addressed around 50 issues reported by our customers. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;In the spirit of full transparency, here is the list of issues we have addressed. Please try out the release and let us know your feedback at the earliest, so that we have the chance to address any remaining top issues before we close the final release of the service pack.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;strong&gt;Basic Unit Testing Support for the .NET Framework 3.5 &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Visual Studio 2010 SP1 includes the following basic support for unit tests that target the .NET Framework 3.5:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create new unit test projects and target them to the .NET Framework 3.5.&lt;/li&gt;    &lt;li&gt;Run unit tests that target the .NET Framework 3.5 from Visual Studio 2010 SP1 on your local machine.&lt;/li&gt;    &lt;li&gt;Run unit tests that target the .NET Framework 3.5 using mstest.exe from the command prompt.&lt;/li&gt;    &lt;li&gt;Run unit tests on a build agent as part of a build.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The capabilities listed above also enable developers to write unit tests, and integration tests for SharePoint 2010 applications using Visual Studio 2010 SP1. &lt;/p&gt;  &lt;p&gt;The following are the known limitations of the support we are enabling:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The default target framework in test projects is the .NET Framework 4. If you upgrade test projects from Visual Studio 2008, they will be upgraded to target the .NET Framework 4 by default. You can edit the project properties and explicitly re-target the project to the .NET Framework 3.5.&lt;/li&gt;    &lt;li&gt;In the .NET Framework 3.5, multi-targeting is supported for test projects that contain only unit tests. The .NET Framework 3.5 does not support any other test type, such as coded UI or load test. The re-targeting is blocked for test types other than unit tests.&lt;/li&gt;    &lt;li&gt;Execution of .NET Framework 3.5 tests is supported only in the default host adapter. It is not supported using the ASP.NET host adapter. ASP.NET applications that have to run in ASP.NET development server context must be .NET Framework 4-compatible.&lt;/li&gt;    &lt;li&gt;Data collection support is disabled when you execute tests that support .NET Framework 3.5 multi-targeting. You can run code coverage using the Visual Studio command line tools.&lt;/li&gt;    &lt;li&gt;Unit tests using the .NET Framework 3.5 unit tests cannot run on a remote machine. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;Issues/Bugs that got fixed in SP1&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;Web/Load Test&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Crash in WebTest Results viewer when the test is executing&lt;/li&gt;    &lt;li&gt;OutOfMemory exception when doing Find/Replace in Request &lt;/li&gt;    &lt;li&gt;Devenv crashes after clicking on &amp;quot;threshold violations&amp;quot; hyperlink in test result status bar&lt;/li&gt;    &lt;li&gt;Counters on &amp;quot;Page Response Time&amp;quot;&amp;#160; graph disappears after run gets completed&lt;/li&gt;    &lt;li&gt;Writing results to LoadTest DB takes long time to complete&lt;/li&gt;    &lt;li&gt;Performance Counters are dropped during load test execution&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;font size="2"&gt;UnitTest/TestExecution&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;.Net 3.5 support for unit test (See above for more details…)&lt;/li&gt;    &lt;li&gt;Spurious TestContext output of inner tests contained inside Ordered test&lt;/li&gt;    &lt;li&gt;Performance issue with loading test in test controller&lt;/li&gt;    &lt;li&gt;Test run hangs when QTAgent fails to start or hangs in Main() function&lt;/li&gt;    &lt;li&gt;Running large amount of tests on a Lab Environment leaves some tests in ‘Not Executed’ state&lt;b&gt;&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;Code Coloring for Code Coverage is not working for unmanaged C++&lt;/li&gt;    &lt;li&gt;TestCaseId coming out to be the SAME for all test cases that are associated with the same test method&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;sup&gt;&lt;b&gt;&lt;font size="3"&gt;TCM Server&lt;/font&gt;&lt;/b&gt;&lt;/sup&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Warehouse rebuild takes too long&lt;/li&gt;    &lt;li&gt;Reports: Resetting automated test results can cause 2 changes of a point to appear in warehouse as the current version&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;Microsoft Test Manager&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://support.microsoft.com/?kbid=2160831"&gt;Support&lt;/a&gt; for Expression Encoder 4.0 in Manual testing&lt;/li&gt;    &lt;li&gt;Fixes we released as part of &lt;a href="http://support.microsoft.com/kb/2387011"&gt;hotfix&lt;/a&gt; for Microsoft Test Manager&lt;/li&gt;    &lt;li&gt;‘Configure Diagnostic Data Adapter-Event Log’ page is truncated in localized version of Microsoft Test Manager&lt;/li&gt;    &lt;li&gt;Analyzing test result causes it to become most recent result in the test point trend&lt;/li&gt;    &lt;li&gt;Remember Right-To-Left language settings across MTM sessions &lt;/li&gt;    &lt;li&gt;Query-based test suite repopulation takes too long for large suites&lt;/li&gt;    &lt;li&gt;Microsoft Test Runner : Crash after choosing browser type for FireFox playback&lt;/li&gt;    &lt;li&gt;Unable to collect Intellitrace data if application under test is launched as a part of action recording for the test case&lt;/li&gt;    &lt;li&gt;Parameterization: Can't bind parameter to password field when creating Action Recording&lt;/li&gt;    &lt;li&gt;Microsoft Test Runner: Show test case description in MTR&lt;/li&gt;    &lt;li&gt;API: Attachment count for test results returns 0 when iterating through large amount of test results&lt;/li&gt;    &lt;li&gt;Performance improvements for Microsoft Test Manager&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;Lab Manager&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;VS 2010 Lab Management &lt;a href="http://support.microsoft.com/?kbid=983578"&gt;update&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Build deploy/test workflow can't use drop locations on DFS or WebDav shares&lt;/li&gt;    &lt;li&gt;Unable to select configuration for existing builds that have more than one configuration in a Build deploy/test workflow&lt;/li&gt;    &lt;li&gt;Build Service Host crashes if it is running in Lab Mode and service account does not have admin privileges&lt;/li&gt;    &lt;li&gt;When build agent and lab agent are installed on a non-lab managed VM, the build agent fail to start&lt;/li&gt;    &lt;li&gt;Lab Management: can't change SCVMM Server configured for a TFS Application Tier&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;FastForward/CodedUITest&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Fixes we released as part rollup &lt;a href="http://blogs.msdn.com/b/vstsqualitytools/archive/2010/11/16/visual-studio-2010-feature-pack-2-pre-requisite-hotfix-details.aspx"&gt;hotfix&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Coded UI Test Project is incompatible with Setup/Deploy projects in the same solution&lt;/li&gt;    &lt;li&gt;UI Test Controls added to UIMap are case-insensitive&lt;/li&gt;    &lt;li&gt;Creating Coded UI Test from existing action recording does not show up alternate credentials dialog&lt;/li&gt;    &lt;li&gt;BrowserWindow.FindMatchingControls() throws UITestException&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font size="2"&gt;I am looking forward to hearing from you – my team and I are excited about supporting you and staying touch as you adopt these capabilities!&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Cheers!&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10102992" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author><category term="Manual Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Manual+Testing/" /><category term="Test Automation" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Test+Automation/" /><category term="Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Testing/" /><category term="Visual Studio Team System" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+System/" /><category term="Visual Studio Team Test" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+Test/" /><category term="Lab Management" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Lab+Management/" /></entry><entry><title>Eurostar 2010 in Copenhagen: November 29–December 2</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/11/26/eurostar-2010-in-copenhagen-november-29-december-2.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2010/11/26/eurostar-2010-in-copenhagen-november-29-december-2.aspx</id><published>2010-11-26T11:39:00Z</published><updated>2010-11-26T11:39:00Z</updated><content type="html">&lt;p&gt;Eurostar &amp;ndash; Europe&amp;rsquo;s largest conference for testers &amp;ndash; is being hosted in Copenhagen, Denmark this year. You can find out full details about the conference &lt;a href="http://www.eurostarconferences.com/"&gt;here&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7674.image_5F00_5BD0162A.png"&gt;&lt;img height="98" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0247.image_5F00_thumb_5F00_34197433.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I am really looking forward to this conference, and hope to meet with customers and partners, and hear about their adoption of the &lt;a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/test-professional"&gt;Visual Studio 2010 Testing products&lt;/a&gt;! Do let me know if you are going to be attending too, or are going to be in Copenhagen next week.&lt;/p&gt;
&lt;p&gt;You will find the following sessions from Microsoft interesting!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Darshan Desai has a session presentation - &lt;a href="http://www.eurostarconferences.com/conferences/session-details.aspx?sessionId=184"&gt;Virtual Test Labs: The Next Frontier&lt;/a&gt; &amp;ndash; at 17:00 hours on Tuesday, Nov 30&lt;/li&gt;
&lt;li&gt;Ken Johnston, from the Microsoft Office Internet Platforms team, is talking on &lt;a href="http://www.eurostarconferences.com/conferences/session-details.aspx?sessionId=187"&gt;&amp;ldquo;What We Can Learn From Big Bugs That Got Away&amp;rdquo;&lt;/a&gt; 08:30 hours, Dec 1&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/mathew_aniyan/"&gt;Mathew Aniyan&lt;/a&gt; will be taking about the Visual Studio 2010 Test Professional product at the &lt;a href="http://www.eurostarconferences.com/delegates/eurostar-test-lab.aspx"&gt;Test Lab&lt;/a&gt; at 13:30 hours, Dec 1 13:30hrs &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Brrr &amp;hellip; it&amp;rsquo;s going to be cold in Copenhagen, though! Most days of the week look like:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0160.image_5F00_70EDF605.png"&gt;&lt;img height="152" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8182.image_5F00_thumb_5F00_2F7343AC.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Looking forward to learning about all of the new advances in the area of testing, and also to talk more about Visual Studio 2010 and Visual Studio Test Professional 2010!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10096977" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author><category term="Manual Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Manual+Testing/" /><category term="Test Automation" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Test+Automation/" /><category term="Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Testing/" /><category term="Visual Studio Team System" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+System/" /><category term="Visual Studio Team Test" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+Test/" /><category term="Lab Management" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Lab+Management/" /></entry><entry><title>Visual Studio 2010 Feature Pack 2 released–new set of Testing capabilities</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/11/16/visual-studio-2010-feature-pack-2-released-new-set-of-testing-capabilities.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2010/11/16/visual-studio-2010-feature-pack-2-released-new-set-of-testing-capabilities.aspx</id><published>2010-11-16T10:44:00Z</published><updated>2010-11-16T10:44:00Z</updated><content type="html">&lt;p&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;I am very happy to announce that we have just released &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/vstudio/ff655021.aspx"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;Visual Studio 2010 Feature Pack 2&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt; &amp;ndash; which extends the Visual Studio 2010 product with a great set of capabilities &amp;ndash; this time in the area of Testing. As you know, we have adopted a concept of feature pack releases which enhance and complement the capabilities we released with the Visual Studio 2010 product earlier in the year. These feature packs are available to MSDN subscribers only, and can now be downloaded from the MSDN accounts.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;The first feature pack we had released was focused on code visualization and modeling feature. Feature Pack 2 is focused on enhancing the testing capabilities! The feature packs are cumulative &amp;ndash; so, Feature Pack 2 will also include the modeling capabilities from Feature Pack 1. The Feature pack setup will ask you to install a pre-requisite QFE that contains the product changes necessary for the new capabilities.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: small;"&gt;There are three capabilities included in this release:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h4 align="left"&gt;&lt;span style="font-family: Calibri; font-size: x-small;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size: small;"&gt;Testing Silverlight Applications&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4 align="left"&gt;&lt;span style="font-family: Calibri; font-size: x-small;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size: small;"&gt;Recorded test playback on Firefox&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4 align="left"&gt;&lt;span style="font-family: Calibri; font-size: x-small;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size: small;"&gt;A Coded UI Test editor&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 align="left"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: medium; font-weight: bold;"&gt;Testing Silverlight Applications&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p align="left"&gt;Testing of Silverlight 4 applications has now become much easier with Visual Studio 2010 Feature Pack 2. From Microsoft Test Manager, you can now capture action recording of your manual tests of Silverlight 4&amp;nbsp; applications and fast forward it in future iterations of the test case.&amp;nbsp; When a developer is creating a Silverlight 4 application, he needs to ensure that it is test-ready. He can do this by adding &lt;a href="http://msdn.microsoft.com/en-us/library/gg313838.aspx"&gt;a conditional reference to the Silverlight UI Automation Helper assembly&lt;/a&gt;. The new Silverlight 4 Test Package then establishes a connection between the Silverlight application hosted in Internet Explorer and the Visual Studio UI Test Framework. This connection is used to identify properties of Silverlight Controls.&amp;nbsp; Using this infrastructure, Microsoft Test Manager can now capture intent aware action recording on Silverlight applications.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4135.clip_5F00_image001_5F00_11D4E607.jpg"&gt;&lt;img height="356" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3051.clip_5F00_image001_5F00_thumb_5F00_7CD33DC6.jpg" alt="clip_image001" border="0" title="clip_image001" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;NOTE: Out of browser Silverlight applications are not supported in this release.&lt;/p&gt;
&lt;p&gt;An automation engineer can now create Coded UI Tests which target Silverlight application. A powerful set of &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.uitesting.silverlightcontrols.aspx"&gt;Silverlight UITesting API&lt;/a&gt;s are now available in Visual Studio. Each Silverlight control has a rich set of properties also.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8284.clip_5F00_image002_5F00_4E99420C.jpg"&gt;&lt;img height="258" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0777.clip_5F00_image002_5F00_thumb_5F00_0A955DF5.jpg" alt="clip_image002" border="0" title="clip_image002" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For more details see the article on MSDN - &lt;a href="http://msdn.microsoft.com/en-us/library/gg269472.aspx"&gt;Testing Silverlight Applications with Coded UI Tests or Action Recordings&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: medium; font-weight: bold;"&gt;Recorded Test playback on Firefox&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Cross browser testing with Mozilla Firefox is now enabled on Microsoft Test Manager and Visual Studio 2010. Any existing action recording or Coded UI Test may now be played back on the Mozilla Firefox browser. After Starting a test in Test Runner, click the drop-down list next to Play in the toolbar and select Change browser for playback.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7120.clip_5F00_image004_5F00_72AE76CE.jpg"&gt;&lt;img height="299" width="304" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5460.clip_5F00_image004_5F00_thumb_5F00_44E0AE09.jpg" alt="clip_image004" border="0" title="clip_image004" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1374.clip_5F00_image005_5F00_0697E398.jpg"&gt;&lt;img height="172" width="304" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7658.clip_5F00_image005_5F00_thumb_5F00_44B0FE49.jpg" alt="clip_image005" border="0" title="clip_image005" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In Coded UI Test, you can change the browser for playback using the following code snippet.&lt;/p&gt;
&lt;p&gt;BrowserWindow.CurrentBrowser = "Firefox"&lt;/p&gt;
&lt;p&gt;For more details, see article on MSDN - &lt;span style="text-decoration: underline;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg269475.aspx"&gt;Recording Tests Using Windows Internet Explorer and Playing Back Using Mozilla Firefox&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: medium; font-weight: bold;"&gt;The Coded UI Test editor&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;In Visual Studio 2010, it is difficult to modify UI Test Files. The UI Test Files store the information about the controls interacted with during a test and the actions performed them.&amp;nbsp; Updating any artifact in the UI Test file involved modifying XML or moving the code to UIMap.cs and thereby moving it out of the ambit of Coded UI Test Builder. This has been one of the top customer feedback on Visual Studio 2010. Coded UI Test Editor now makes the overall maintenance story for Coded UI Test simpler and easier. When you double-click on a UI Test file in a Test Project, it will launch the graphical editor.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;You can now perform most of your maintenance activities from the Coded UI Test Editor. [renaming a method or control, updating the properties of a control or action]. If you make a mistake, use the standard Undo/Redo operations to recover. The find features will help you narrow down the method, action or control you want to act on. Whenever you select an action in the &amp;ldquo;UI Actions&amp;rdquo; pane, the corresponding controls is highlighted in the &amp;ldquo;UI Control Map&amp;rdquo;&amp;nbsp; pane. Similarly whenever you choose a control in the &amp;ldquo;UI Control Map&amp;rdquo; pane, all actions which reference this controls is highlighted in the &amp;ldquo;UI Actions&amp;rdquo; pane.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2867.clip_5F00_image007_5F00_43003275.jpg"&gt;&lt;img height="220" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4846.clip_5F00_image007_5F00_thumb_5F00_7EFC4E5D.jpg" alt="clip_image007" border="0" title="clip_image007" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For more details, See article on MSDN - &lt;a href="http://msdn.microsoft.com/en-us/library/gg269469.aspx"&gt;Editing Coded UI Tests Using the Coded UI Test Editor&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I am sure these testing capabilities will be a top draw for our customers. Do write back with your views on how you are adopting these features.&lt;/p&gt;
&lt;p&gt;Cheers!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10091721" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Archie!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/08/28/archie.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2010/08/28/archie.aspx</id><published>2010-08-28T07:00:00Z</published><updated>2010-08-28T07:00:00Z</updated><content type="html">&lt;p&gt;August has been a emotional roller coaster of a month for me. &lt;/p&gt;
&lt;p&gt;It started on an extremely happy note. We announced the Lab Management capability of VS 2010 on August 4 at VS Live, and we released the feature on August 19. The capability is now available to all users of Visual Studio Ultimate and Visual Studio Test Professional &amp;ndash; and you can read about the details around availability in Brian Harry&amp;rsquo;s &lt;a href="http://blogs.msdn.com/b/bharry/archive/2010/08/19/lab-management-in-visual-studio-2010-is-now-final.aspx"&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I joined the Visual Studio Test group three and a half years ago, and assembled a team to build the Lab Management product. Putting together the team, figuring out what we would build and how we would differentiate our offering, the hard push to get part of the VS 2010 cycle, the building of the product, incorporating customer feedback and trying to ship with the rest of VS 2010 &amp;ndash; all of this was a great experience. I held the product back to ensure that we had adequate customer adoption and addressed the important feedback we had received. A lot of hard work had gone into this product, so finally shipping this earlier in the month felt great! We had indeed built something very innovative, and getting it into the hand of customers was a fantastic feeling &amp;ndash; it made all of the sweat and toil of the last three years well worth it! What a joy indeed!&lt;/p&gt;
&lt;p&gt;As August winds to an end, it reminds me again, how life is such an intertwining of happiness and hurt. &lt;/p&gt;
&lt;p&gt;Three and half years back was also a joyous time on the family front. I took on German Shepherd puppy &amp;ndash; Archie &amp;ndash; as the second pet in the family. He was going to be a great companion for the 6 month old Labrador (Asterix) and a darling for my boys, my wife, and me. Archie was six weeks old when we brought him in. Over the course of this time, he grew into a very handsome animal &amp;ndash; extremely active, a great source of joy for us, and a core part of our family. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2134.P1010035.jpg"&gt;&lt;img height="379" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6761.P1010035_5F00_thumb.jpg" alt="P1010035" border="0" title="P1010035" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Archie had one problem though. He was extremely aggressive with all strangers &amp;ndash; humans, animals, or birds. We have a big yard (fenced of course) in our house &amp;ndash; and Archie would be all over the place &amp;ndash; letting all strangers know that he did not appreciate their coming into his home. Our neighbor once remarked that Archie wouldn&amp;rsquo;t let even a fly get into our home without a good contest. I must admit I did feel proud of this trait. &lt;/p&gt;
&lt;p&gt;We of course had to leash him up when we did want friends and others to come. I actually turned my two-car garage into a huge kennel for him &amp;ndash; and put up steel collapsible gate that we would close and lock, he was in there. &lt;/p&gt;
&lt;p&gt;But we had trouble. It wasn&amp;rsquo;t a completely fool-proof arrangement &amp;ndash; we had a few occasions when our lapse led Archie to be loose when strangers were in our home and out in the open. Archie bit several people. Some of these bites were bad. I know if I were living in the USA still, the first such accident would have been his last one &amp;ndash; I would have had to do something decisive about it. Here the system just happens to be more tolerant and lax. After each such accident I resolved to be more careful &amp;ndash; but over time- we ran into newer lapses we learnt about &amp;ndash; and each time, Archie would have bitten one more person. Some were complete strangers, and some were close friends. Some were complete acts of stupidity of the victims (why would the ignore the &amp;ldquo;Beware of Hunting Dog&amp;rdquo; sign on the gate and walk in?), and others were lapses on our part. &lt;/p&gt;
&lt;p&gt;The count of such accidents rose - it reached 20 last weekend &amp;ndash; and that was the last trip-wire for me. I finally took the decision that I would have to give Archie away :-( This led to a tremendous uproar in the family &amp;ndash; the kids were particularly sad and angry too. Archie was too much part of our life. &lt;a href="http://mce_host/controlpanel/blogs/posteditor.aspx/@ram_cherala"&gt;Ram Cherala&lt;/a&gt; suggested I contact &lt;a href="http://www.cesarsway.com/dogwhisperer"&gt;Cesar Milan&lt;/a&gt; &amp;ndash; though I didn&amp;rsquo;t know how I&amp;rsquo;d have possibly done that here in India.)&lt;/p&gt;
&lt;p&gt;All of last week was very agonizing for me. How would I part with him? How could I betray his love for me? Who would I give him away to? I finally went back to the breeder that I had gotten Archie from, and he agreed that he would keep Archie in his home.&lt;/p&gt;
&lt;p&gt;It was a sad morning today. I had to take Archie to his new home. I thought he looked sad himself &amp;ndash; and took a last few pictures with the kids. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2860.P1010937.jpg"&gt;&lt;img height="184" width="244" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8321.P1010937_5F00_thumb.jpg" alt="P1010937" border="0" title="P1010937" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0410.P1010932.jpg"&gt;&lt;img height="184" width="244" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3146.P1010932_5F00_thumb.jpg" alt="P1010932" border="0" title="P1010932" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0407.P1010957.jpg"&gt;&lt;img height="244" width="184" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4201.P1010957_5F00_thumb.jpg" alt="P1010957" border="0" title="P1010957" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;He has had a great time in our house &amp;ndash; lording over the yard and sleeping on our bed.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6354.P1010104.jpg"&gt;&lt;img height="244" width="184" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4048.P1010104_5F00_thumb.jpg" alt="P1010104" border="0" title="P1010104" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/7774.P1010107.jpg"&gt;&lt;img height="184" width="244" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5706.P1010107_5F00_thumb.jpg" alt="P1010107" border="0" title="P1010107" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2806.January262009-104.jpg"&gt;&lt;img height="184" width="244" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5633.January262009-104_5F00_thumb.jpg" alt="January262009 104" border="0" title="January262009 104" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;I realized how much of a &amp;ldquo;dog&amp;rsquo;s existence&amp;rdquo; he would now have when I saw his kennel in his new home this morning&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8787.P1010961_5F00_1.jpg"&gt;&lt;img height="184" width="244" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4666.P1010961_5F00_thumb_5F00_1.jpg" alt="P1010961" border="0" title="P1010961" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3010.P1010959_5F00_1.jpg"&gt;&lt;img height="184" width="244" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1856.P1010959_5F00_thumb_5F00_1.jpg" alt="P1010959" border="0" title="P1010959" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Archie reminded me again, though, how aggressive he can be with strangers &amp;ndash; here he is clearly expressing his displeasure, and those vicious fangs reminded me of the pain he has caused to many.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8306.P1010983.jpg"&gt;&lt;img height="379" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3835.P1010983_5F00_thumb.jpg" alt="P1010983" border="0" title="P1010983" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Sigh! This was the right decision. I hope that Archie gets used to his new home, and perhaps I will visit him in a couple of months once he has gotten used to his new environment.&lt;/p&gt;
&lt;p&gt;I returned back home with a heavy heart &amp;ndash; remembering Archie&amp;rsquo;s first week in our home &amp;ndash; an adorable and naughty pup.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8637.P1010095.jpg"&gt;&lt;img height="229" width="304" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5584.P1010095_5F00_thumb.jpg" alt="P1010095" border="0" title="P1010095" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/6012.003.jpg"&gt;&lt;img height="229" width="304" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8750.003_5F00_thumb.jpg" alt="003" border="0" title="003" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Visitors to our home will now heave a sign of relief &amp;ndash; no more to face this magnificent but ferocious beast &amp;ndash; patrolling the boundary of our home. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/1738.P1010010.jpg"&gt;&lt;img height="229" width="304" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5852.P1010010_5F00_thumb.jpg" alt="P1010010" border="0" title="P1010010" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/2728.P1010007.jpg"&gt;&lt;img height="404" width="304" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/4885.P1010007_5F00_thumb.jpg" alt="P1010007" border="0" title="P1010007" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;But today, I know, we lost a part of our family &amp;ndash; a faithful friend who would cheer us up when we were stressed and bothered by mundane situations. One who reminded us time and again what unconditional love was all about - yet it was I who betrayed him.&lt;/p&gt;
&lt;p&gt;Archie &amp;ndash; you will always be in my heart &amp;ndash; farewell, my friend.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10055302" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author><category term="Visual Studio Team System" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+System/" /><category term="Visual Studio Team Test" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+Test/" /><category term="Lab Management" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Lab+Management/" /></entry><entry><title>Watch the Lab Management announcement video!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/08/06/watch-the-lab-management-announcement-video.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2010/08/06/watch-the-lab-management-announcement-video.aspx</id><published>2010-08-06T12:54:00Z</published><updated>2010-08-06T12:54:00Z</updated><content type="html">&lt;p&gt;As I had written in my last post, on August 4th we announced the final release of Lab Management in the Visual Studio 2010 release. You can now watch the video of the announcement at VS Live in Seattle. Watch Voke&amp;rsquo;s Theresa Lanowitz talk about the capability &amp;ndash; she talked about virtual lab management as the most revolutionary productization of technology since the IDE! You will see Dave Mendlen announce the final release (see a snippet of the announcement here), and finally, you will see a video demonstration by Brian Keller.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/0005.image_5F00_2.png"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;img height="152" width="244" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3618.image_5F00_thumb.png" alt="image" border="0" title="image" style="display: inline; float: left; border: 0px;" /&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the video &amp;ndash; enjoy! &lt;/p&gt;
&lt;p&gt;
&lt;object type="application/x-silverlight-2" height="384" width="512" data="data:application/x-oleobject;base64,QfXq3+HzJEysrJnDBxUISgAJAADqNAAAsCcAABQAAAAjADAAMABGAEYARgBGAEYARgAAAAAAAAAAAAAAAAAAAIgAAABoAHQAdABwADoALwAvAGMAaABhAG4AbgBlAGwAOQAuAG0AcwBkAG4ALgBjAG8AbQAvAEEAcABwAF8AVABoAGUAbQBlAHMALwBkAGUAZgBhAHUAbAB0AC8AVgBpAGQAZQBvAFAAbABhAHkAZQByADEAMABfADAAMQBfADEAOAAuAHgAYQBwAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQCAABkAGUAZgBlAHIAcgBlAGQATABvAGEAZAA9AHQAcgB1AGUALABkAHUAcgBhAHQAaQBvAG4APQAwACwAbQA9AGgAdAB0AHAAOgAvAC8AZQBjAG4ALgBjAGgAYQBuAG4AZQBsADkALgBtAHMAZABuAC4AYwBvAG0ALwBvADkALwBjAGgAOQAvADUAMAAyADgALwA1ADYANQAwADIAOAAvAFYAUwBMAGkAdgBlAEwAYQBiAE0AYQBuAGEAZwBlAG0AZQBuAHQAQQBuAG4AbwB1AG4AYwBlAF8AYwBoADkALgB3AG0AdgAsAGEAdQB0AG8AcwB0AGEAcgB0AD0AZgBhAGwAcwBlACwAYQB1AHQAbwBoAGkAZABlAD0AdAByAHUAZQAsAHMAaABvAHcAZQBtAGIAZQBkAD0AdAByAHUAZQAsACAAdABoAHUAbQBiAG4AYQBpAGwAPQBoAHQAdABwADoALwAvAGUAYwBuAC4AYwBoAGEAbgBuAGUAbAA5AC4AbQBzAGQAbgAuAGMAbwBtAC8AbwA5AC8AYwBoADkALwA1ADAAMgA4AC8ANQA2ADUAMAAyADgALwBWAFMATABpAHYAZQBMAGEAYgBNAGEAbgBhAGcAZQBtAGUAbgB0AEEAbgBuAG8AdQBuAGMAZQBfADUAMQAyAF8AYwBoADkALgBwAG4AZwAsACAAcABvAHMAdABpAGQAPQA1ADYANQAwADIAOAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="&gt;
&lt;param value="http://channel9.msdn.com/App_Themes/default/VideoPlayer10_01_18.xap" name="source" /&gt;
&lt;param value="deferredLoad=true,duration=0,m=http://ecn.channel9.msdn.com/o9/ch9/5028/565028/VSLiveLabManagementAnnounce_ch9.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://ecn.channel9.msdn.com/o9/ch9/5028/565028/VSLiveLabManagementAnnounce_512_ch9.png, postid=565028" name="initParams" /&gt;
&lt;param value="#00FFFFFF" name="background" /&gt;
&lt;/object&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10046981" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Final Release of Visual Studio Lab Management announced!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/08/04/final-release-of-visual-studio-lab-management-announced.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2010/08/04/final-release-of-visual-studio-lab-management-announced.aspx</id><published>2010-08-04T16:31:00Z</published><updated>2010-08-04T16:31:00Z</updated><content type="html">&lt;p&gt;Just a short while ago at the VS Live event in Seattle, Dave Mendlen &amp;ndash; Senior Director of Developer Marketing at Microsoft, announced the final release of Lab Management in the Visual Studio 2010 release. We are announcing the general availability of the Lab Management capability as end of August, 2010. &lt;/p&gt;
&lt;p&gt;I am really excited to announce that, at the time of release, the Lab Management capability will be immediately available to all customers who have licenses for one of the following products:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visual Studio 2010 Ultimate with MSDN, or&lt;/li&gt;
&lt;li&gt;Visual Studio Test Professional 2010 with MSDN&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is a great day for the product team! We have been hard at work all this while to bring you a fantastic product &amp;ndash; and it feels great to make this capability widely available to all of our Ultimate and Test Professional users via MSDN. &lt;/p&gt;
&lt;p&gt;As you know, the Lab Management capability extends the existing Visual Studio Application Lifecycle Management (ALM) platform to enable an integrated Hyper-V based test lab for development teams. It brings virtualization to the core of the ALM process and automates complex build-deploy-test workflows to optimize the build process, decrease risk and accelerate your time to market. Organizations can reduce development and testing costs associated with setup, tear down and restoration of virtual environments to a known state. My own development team uses these capabilities regularly and it is very gratifying to see how it streamlines the collaboration between development and testing to help organizations achieve a higher ROI and realize the benefits of Microsoft&amp;rsquo;s entire ALM solution. Lab Management also enables testers to file rich bugs with links to environment snapshots, which enable developers to quickly debug complex environments.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: ; FONT-SIZE: medium"&gt;The product team is already using the Lab Management capability every day!&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I am including here couple of screen shots of this capability in action in the development team &amp;ndash; and will write in more details about this in a future post.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8816.clip_5F00_image003_5F00_2.jpg"&gt;&lt;img height="360" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5488.clip_5F00_image003_5F00_thumb.jpg" alt="clip_image003" border="0" title="clip_image003" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;The above is a view of the virtual lab that the product team is currently using!&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3678.clip_5F00_image005_5F00_2.jpg"&gt;&lt;img height="379" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/3000.clip_5F00_image005_5F00_thumb.jpg" alt="clip_image005" border="0" title="clip_image005" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/8233.clip_5F00_image007_5F00_2.jpg"&gt;&lt;img height="394" width="504" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-68-metablogapi/5125.clip_5F00_image007_5F00_thumb.jpg" alt="clip_image007" border="0" title="clip_image007" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Above, examples of rolling builds on the lab showing reports from a build-deploy-test run&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: ; FONT-SIZE: medium"&gt;Customers and Analysts are also very excited about the capabilities!&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The Lab Management capability is receiving very positive feedback from customers who have already adopted it, as well as from analysts. Theresa Lanowitz, from Voke, was very enthusiastic about the capability and how it differentiates our product offerings in the ALM space. Here is what she and others had to say:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Through its organic and integrated application lifecycle solution with virtual lab management, Microsoft is the first vendor to move the application lifecycle market beyond the status quo since Rational introduced RUP and Mercury introduced BTO.&amp;rdquo; &lt;i&gt;- &lt;/i&gt;Theresa Lanowitz, Voke&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;i&gt;&amp;ldquo;Before, creating a suitable build environment &amp;hellip; took a full workday. With Visual Studio Lab Management we can be ready to go in 10 minutes or less&amp;rdquo;. &lt;/i&gt;-Jason Stangroome, Senior Developer, Readify&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;i&gt;&amp;ldquo;The biggest bang-for-the-buck we&amp;rsquo;ve received from Visual Studio 2010 so far is definitely the lab management capabilities, in that it puts all the capabilities we need to deploy and manage a complex test environment at our fingertips. Lab Management is really slick and works like magic&amp;mdash;it&amp;rsquo;s hard to describe; you&amp;rsquo;ve got to see it to believe it&lt;/i&gt;.&amp;rdquo;&amp;nbsp; - Chris Menegay, Vice President of Consulting, Notion Solutions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: ; FONT-SIZE: medium"&gt;There are some case studies too!&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Here are some links to case studies published by customers who are using and benefiting from the product. These customers have all gone live with the capability even before final release!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/casestudies/Microsoft-Visual-Studio-2010-Ultimate/Notion-Solutions/Consulting-Company-Uses-Latest-Development-Tools-to-Improve-Software-Test-Process/4000006817"&gt;The Notion Solutions case study&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/casestudies/Microsoft-Visual-Studio-2010-Ultimate/EPiServer/Web-Content-Management-Firm-Streamlines-Development-Testing-with-Integrated-Tools/4000006853"&gt;The EpiServer case study&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/casestudies/Microsoft-Visual-Studio-2010-Ultimate/Readify/Software-Vendor-Speeds-Testing-Improves-Collaboration-and-Wins-New-Business/4000006858"&gt;The Readify case study&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: ; FONT-SIZE: medium"&gt;Try it out today!&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;As mentioned, Visual Studio Lab Management will be available to Visual Studio 2010 Ultimate with MSDN and Visual Studio Test Professional 2010 with MSDN subscribers at the end of August. You can try it today at &lt;a href="http://go.microsoft.com/?linkid=9739338"&gt;http://go.microsoft.com/?linkid=9739338&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I am really looking forward to the wide spread adoption of this capability! Every development team which is using the Team Foundation Server (TFS 2010) as the key infrastructure for their development team, and are using Visual Studio 2010 Ultimate MSDN or Visual Studio Test Professional 2010 MSDN on the client side &amp;ndash; will now have the opportunity to set up a local virtualized test lab, and get the benefits of tremendously increased productivity at reduced cost, just as my team and other go-live customers have experienced!&lt;/p&gt;
&lt;p&gt;Further links and videos&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: ; FONT-SIZE: medium"&gt;Links to Videos, VHDs, and Blogs!&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;If you are new to this capability and would like to watch some videos first and then try it out simply, here are some important links for you.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Video: &lt;/i&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=183021"&gt;&lt;i&gt;http://go.microsoft.com/fwlink/?LinkId=183021&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;VHD: &lt;a href="http://go.microsoft.com/fwlink/?LinkID=195885"&gt;http://go.microsoft.com/fwlink/?LinkID=195885&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can also refer to our team blog site at &lt;a href="http://blogs.msdn.com/b/lab_management/"&gt;http://blogs.msdn.com/b/lab_management&lt;/a&gt; for detailed information about getting started.&lt;/p&gt;
&lt;p&gt;I look forward to hearing about your experiences!&lt;/p&gt;
&lt;p&gt;Cheers!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10046013" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author><category term="Manual Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Manual+Testing/" /><category term="Test Automation" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Test+Automation/" /><category term="Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Testing/" /><category term="Visual Studio Team Test" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+Test/" /><category term="Lab Management" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Lab+Management/" /></entry><entry><title>The Eyjafjallajökull effect</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/04/18/the-eyjafjallaj-kull-effect.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2010/04/18/the-eyjafjallaj-kull-effect.aspx</id><published>2010-04-18T08:50:45Z</published><updated>2010-04-18T08:50:45Z</updated><content type="html">&lt;p&gt;No – I don’t quite know how to pronounce the name of this now-famous mountain, but it sure has caused a lot of grief the world over. If all was well I would have been on a flight right now, heading to the Netherlands for the Visual Studio 2010 launch event. But, airports in Europe are still closed and I have had to cancel my trip – it is very disappointing. &lt;/p&gt;  &lt;p&gt;This morning, though, I was reflecting upon how similar the current flight disruption in Europe is to situations we face repeatedly in software development teams. A big volcano erupts in Iceland, and completely unwittingly disrupts air travel in rest of Europe. Airline companies not completely sure about which flight routes are affected, and wanting to be completely safe, grounds the entire fleet of aircrafts across continental Europe. There is lack of information and utter confusion – no body knows “when will the situation be normal again?”&lt;/p&gt;  &lt;p&gt;Isn’t this exactly what happens in our software projects? How many times does a developer, who does not quite understand the entire complexity of a system, tries to make a targeted change in one area – only to find later, in utter horror, that things downstream have gotten broken and the entire project has come to a halt. How often are test teams in situation where they are not sure of the impact of a change and are forced to run their entire suite of test cases just to be safe – though they know this is clearly very wasteful. And how many times do you feel frustrated that you do not have enough information about the state of a project to be able to to answer the question “when will we be ready to ship?”&lt;/p&gt;  &lt;p&gt;Visual Studio 2010 tries to address these very situations in software development, so that you reduce the unhappiness in the system and deliver higher quality software, faster. It helps you understand existing systems so that you can make changes that does not break everything, it lets you quantify the impact of changes, eliminate waste, and drive quality upstream. And it provides you great transparency and actionable insight on information that allows all stakeholders to really participate in the project.&lt;/p&gt;  &lt;p&gt;I hope you have been able to attend one of the VS 2010 launch events in your part of the world. I look forward to continue to meet with customer and partners and lea how VS 2010 is making their world better!&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5c8b2a47-a7cd-4c21-a8f1-12ad539b9e47" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Testing" rel="tag"&gt;Testing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio+2010" rel="tag"&gt;Visual Studio 2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Software+Development" rel="tag"&gt;Software Development&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9997973" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>VS2010 Launched – great launch event in Bangalore, India</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/04/15/vs2010-launched-great-launch-event-in-bangalore-india.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2010/04/15/vs2010-launched-great-launch-event-in-bangalore-india.aspx</id><published>2010-04-15T17:22:00Z</published><updated>2010-04-15T17:22:00Z</updated><content type="html">&lt;P&gt;April 12 was of course a big day for us. VS 2010 and .NET Framework 4 was launched with great fanfare – in 5 cities around the world (Las Vegas, Bangalore, Beijing, Kuala Lumpur, and London) on that day. In all, the launch event will be held in 30 countries around the globe, and we will be reaching out to more than 50,000 developers! This is great coverage for a fantastic product, as being part of the development team, I really feel proud of what we have built!&lt;/P&gt;
&lt;P&gt;You can read more about the launch from Soma’s &lt;A href="http://blogs.msdn.com/somasegar/archive/2010/04/11/announcing-visual-studio-2010-and-net-framework-4.aspx" mce_href="http://blogs.msdn.com/somasegar/archive/2010/04/11/announcing-visual-studio-2010-and-net-framework-4.aspx"&gt;blog&lt;/A&gt;. Soma himself was in Bangalore for the launch. I would estimate that his keynote was attended by more than 1500 people at the Lalit Ashok. The audience really cheered for the demos, and the largest cheer was for the actionable bug demo by Stephanie Cuthbertson. Stephanie mentioned that the most common question, after she did the ALM demos, was - “How can I get the Test tools?”.&lt;/P&gt;
&lt;P&gt;In the evening of the 12th, I chaired a panel discussion with six other panelists and an audience of about a hundred TDMs. The panelists were senior executives from companies like Infosys, Dell, NIIT, MindTree, Polaris, and ITC. The topic was about mastering the decision triangle of profitability, quality, and productivity – especially, in the context of the post reset global economy. The panelists shared a broad range of perspective and experiences – it was quite clear that one good thing about the economic meltdown was that there was much more scrutiny on software projects – a push for better business processes, increased transparency and efficiency, and much higher accountability. That’s exactly what was needed – we have tolerated software project failure and mediocre executions for too long. The panelists were unanimous is their opinion that well integrated ALM tools are the need for the hour and will help meet the expectations of these times. The audience really appreciated the demos of the 2010 product – architectural discoverability, actionable&amp;nbsp; bugs, and streamlining of processes.&lt;/P&gt;
&lt;P&gt;The next day, I and &lt;A href="http://blogs.msdn.com/mathew_aniyan/" mce_href="http://blogs.msdn.com/mathew_aniyan/"&gt;Mathew Aniyan&lt;/A&gt; presented two sessions on “Advanced Development Practices with TFS and Lab Management 2010”, and “Improving Developer Tester Collaboration with Visual Studio 2010”. Each of these sessions were attended by about 300 people, and the sessions went &lt;EM&gt;very well. &lt;/EM&gt;I was quite surprised by the level of interest and many questions around TFS, Coded UI, Lab Management, and the capabilities for generalist testers. It was quite clear that Bangalore really loved VS 2010 and the Developer/Tester capabilities in the product.&lt;/P&gt;
&lt;P&gt;I also had a session on TechEd Live – a conversation with Nikhil Chinapa (@nikhilchinapa) around our testing tools. Nikhil of course is a famous VJ on MTV. I was very impressed by Nikhil – down to earth, witty, and spontaneous in how he relates to technology in his own way. I enjoyed the conversation – and so did Nikhil. He mentioned he quite understood how our approach with our testing tools was unique! I will post a link to the conversation once it is put up on the TechEd site.&lt;/P&gt;
&lt;P&gt;There is more to be done around launch – next week I will be in Netherlands and Belgium for more events. I am really looking forward to the experience of meeting more customers and partners!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9996638" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author><category term="Manual Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Manual+Testing/" /><category term="Test Automation" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Test+Automation/" /><category term="Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Testing/" /><category term="Visual Studio Team System" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+System/" /><category term="Visual Studio Team Test" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+Test/" /><category term="Lab Management" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Lab+Management/" /></entry><entry><title>VS 2010 RC is ready for general download</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/02/12/vs-2010-rc-is-ready-for-general-download.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2010/02/12/vs-2010-rc-is-ready-for-general-download.aspx</id><published>2010-02-12T07:20:11Z</published><updated>2010-02-12T07:20:11Z</updated><content type="html">&lt;p&gt;The Visual Studio 2010 RC release is now available for general download! You can download the bits from &lt;a href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx"&gt;here&lt;/a&gt;. You can read Jason Zander’s &lt;a href="http://blogs.msdn.com/jasonz/archive/2010/02/10/visual-studio-2010-net-framework-4-rc-ready-for-general-download.aspx"&gt;blog&lt;/a&gt; for more details about this release. &lt;/p&gt;  &lt;p&gt;Like Beta 2, the RC release is a fully supported go-live release that you can use for live projects and production environments. &lt;/p&gt;  &lt;p&gt;You can find out a lot of information about the Test and Lab Management products at &lt;a title="http://blogs.msdn.com/vstsqualitytools/" href="http://blogs.msdn.com/vstsqualitytools/"&gt;http://blogs.msdn.com/vstsqualitytools/&lt;/a&gt; and &lt;a title="http://blogs.msdn.com/lab_management/" href="http://blogs.msdn.com/lab_management/"&gt;http://blogs.msdn.com/lab_management/&lt;/a&gt; respectively, including information about what’s new in the RC release, as well as a set of videos that help you understand the product capabilities.&lt;/p&gt;  &lt;p&gt;Several customers have already installed the products in their production environments, and their feedback has been great. I would strongly encourage you to take advantage of the go-live RC release and try out the Test and Lab Management products. I and my development team will be happy to hear from you about your experiences and help you out with any questions you may have.&lt;/p&gt;  &lt;p&gt;Cheers!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9962460" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Now the Lab Management part of the Dogfooding story ….</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/02/07/now-the-lab-management-part-of-the-dogfooding-story.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2010/02/07/now-the-lab-management-part-of-the-dogfooding-story.aspx</id><published>2010-02-07T10:23:49Z</published><updated>2010-02-07T10:23:49Z</updated><content type="html">&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="ca"&gt;In my last post I talked about how the Visual Studio Test and Lab Management teams are dogfooding those products – that is, as we enter the home stretch of the VS 2010 release, we are using the very same tools we are building, to test and sign off on the release. We are using the RC bits, and these bits will be broadly released very shortly. My team has already blogged about all of the changes that have gone into the RC version of the testing tools – you can read about those &lt;/font&gt;&lt;a href="http://blogs.msdn.com/vstsqualitytools/archive/2010/02/05/what-s-new-for-testing-tools-in-the-rc.aspx"&gt;&lt;font size="2" face="ca"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="ca"&gt;.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="ca"&gt;In this post, I will focus on how we are dogfooding the Lab Management product, and are benefitting from it. This really highlights all of the coolness that you can expect to see, as you use the product too. Please refer to the &lt;/font&gt;&lt;a href="http://blogs.msdn.com/amit_chatterjee/archive/2010/02/04/dogfooding-visual-studio-test-lab-management-products.aspx"&gt;&lt;font size="2" face="ca"&gt;last post&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="ca"&gt;, about the infrastructure and topology that essentially makes up “lab” that my team has setup using the Lab Management product.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="ca"&gt;The first diagram that I include below shows you a view of the lab in the “Lab” activity center of the Microsoft Test Manager 2010 tool. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/NowtheLabManagementpartoftheDogfoodings_DF35/image_2.png"&gt;&lt;font size="2" face="cal"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/NowtheLabManagementpartoftheDogfoodings_DF35/image_thumb.png" width="504" height="312" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="cal"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="cal"&gt;You can see that, in this instance, the team is using 107 virtual environments for their testing (aside from another 80 physical environments). Each virtual environment is a logical collection of a set of virtual machines that make up the environment or configuration. For example, you can see that the highlighted environment is made up of four virtual machines (the view on the right side of the tool). &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="cal"&gt;While this post is not about individual features in the product, let me take a moment to talk about virtual lab environments and what you do with them …&lt;/font&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font size="2" face="cal"&gt;Setting up these virtual environments is really easy – we have blogged extensively about this at the &lt;/font&gt;&lt;a href="http://blogs.msdn.com/lab_management"&gt;&lt;font size="2" face="cal"&gt;team blog site&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="cal"&gt;. You can create a virtual environment by selecting a set of VM templates from the library. In the RC release we have added one more neat capability which allows you to compose a virtual environment from VMs that you may already have running on the host. Many of you, I am sure, are already using virtualization in your teams and likely have VMs (virtual machines) already setup. You simply need to install a few agents on those VMs and, with the RC release, can use this new compose feature to create a virtual lab environment. As part of the creation of the environment, you can also specify that you want the capabilities to automate tests and deployment of applications (for example, the applications under test) on to those environments.&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="cal"&gt;Once you have created the environments, you can use the full repertoire of testing capabilities that we provide in this release on the environments. That in fact, is how we have been doing all of the testing that I talked about in the last post. &lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font size="2" face="cal"&gt;Getting back the diagram shown above – I want to highlight one specific benefit that &lt;i&gt;I myself&lt;/i&gt; have experienced because of this dogfooding. While we have been building this product for the last couple of years, it was always a bit difficult to get a full view of all of the configurations and environments that my QA teams were managing in the physical labs. Now, with our product, I get a &lt;i&gt;complete&lt;/i&gt; view of all of this from my own desktop, using the Microsoft Test Manager 2010 tool! This is just awesome for me as a manager. In the above view, I got to see the different types of environments that the team is using, and what makes up those environments. I can have multiple views on this.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="cal"&gt;The view below allows me to see which host groups the environments are part of …&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/NowtheLabManagementpartoftheDogfoodings_DF35/image_4.png"&gt;&lt;font size="2" face="cal"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/NowtheLabManagementpartoftheDogfoodings_DF35/image_thumb_1.png" width="504" height="339" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="cal"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="cal"&gt;… or I can view of which tester owns which environments&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="cal"&gt;.&lt;/font&gt;&lt;a href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/NowtheLabManagementpartoftheDogfoodings_DF35/image_6.png"&gt;&lt;font size="2" face="cal"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/NowtheLabManagementpartoftheDogfoodings_DF35/image_thumb_2.png" width="504" height="304" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="cal"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="cal"&gt;In another view, shown below, I can see when the environments were last accessed (I am using a screen shot from middle of November). This gives me a great sense of about the resource utilization in the lab.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/NowtheLabManagementpartoftheDogfoodings_DF35/image_10.png"&gt;&lt;font size="2" face="cal"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/NowtheLabManagementpartoftheDogfoodings_DF35/image_thumb_4.png" width="504" height="460" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="cal"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="cal"&gt;The seamless integration of the Lab Center with the Test Center in the Test Manager tool is a very powerful interface to keep track of all aspects of what’s going on in your test labs, and I have personally enjoyed this myself.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="cal"&gt;The build-deploy-test capability of the product has also been a great hit with the team. This essentially allows you to define a workflow which can do the following:&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font size="2" face="cal"&gt;Schedule a build for the application under test. Once the build is done,&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font size="2" face="cal"&gt;Select a lab environment on which you want to do some testing using the latest build&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font size="2" face="cal"&gt;Restore the environment to a known good checkpoint (guaranteeing a clean state to begin with)&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font size="2" face="cal"&gt;Deploy the bits of the application under test onto the (multi-tier) environment&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font size="2" face="cal"&gt;Take a post-deployment snapshot, so that testers can return to a clean starting state for testing&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font size="2" face="cal"&gt;Automatically run a suite of tests on the above environment, and report results&lt;/font&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font size="2" face="cal"&gt;A new build of the application is really at the heart of the entire development process. An ability like above takes away all of the inefficiencies and hand-off errors around the build, and will be extremely popular in development teams (for both testers &lt;i&gt;and&lt;/i&gt; developers – who will use this mechanism to do their own types of testing on production-like environments). &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="cal"&gt;The Lab Management product extends the Team Build functionality in TFS (accessed from Team Explorer) to provide the above capability. Below I show an example of a feature team using the above feature. Notice the “deployment summary” information page that is presented at the end of the workflow – it summarizes the various steps of the workflow and the results.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/NowtheLabManagementpartoftheDogfoodings_DF35/image_12.png"&gt;&lt;font size="2" face="cal"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/NowtheLabManagementpartoftheDogfoodings_DF35/image_thumb_5.png" width="504" height="366" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="cal"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="cal"&gt;At this point, I must also highlight that the ability to customize the build-deploy-test workflow is an extremely powerful capability. You can automate various kinds of testing needs using this. My team has blogged about this &lt;/font&gt;&lt;a href="http://blogs.msdn.com/lab_management/archive/2010/01/15/customization-of-end-to-end-e2e-workflow-of-visual-studio-lab-management-2010-beta2.aspx"&gt;&lt;font size="2" face="cal"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="cal"&gt;. The power of this was particularly evident in our own dogfooding experience. Remember, when we are dogfooding, the “application under test” is really VS 2010 and the same testing tools that we are using. So, the event of a new build being generated becomes particularly challenging for us. As part of the deployment workflow, the same agents which are orchestrating the workflow need to be upgraded to a newer version that is part of the new build! Doing this is no easy feat, for it needs reboots in the middle and a newer version of a component to complete a workflow that was initiated by the older version. And all of this is done automatically when a new build comes out! The test team has done a good job generating the scripts and commandlets to customize the workflow, and I was very happy to observe the flexibility and power of this feature in our product.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="cal"&gt;The diagram below also shows the power and flexibility in debugging where the problem is, when a workflow fails – particularly when the flow spans multiple machines, as it did in the above case. The logs generated as part of the workflow are extremely detailed, and organized in a nice fashion (highlighting the different steps, the time they took, and the warnings/errors generated) all in one place. This is a big improvement from the situation where testers have to manually look at logs in different machines individually to see what might have gone wrong. Here all of the information is in one log that you can access from your desktop, as part of the workflow summary information.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="cal"&gt;&lt;/font&gt;&lt;/p&gt; &lt;a href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/NowtheLabManagementpartoftheDogfoodings_DF35/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/NowtheLabManagementpartoftheDogfoodings_DF35/image_thumb_6.png" width="504" height="446" /&gt;&lt;/a&gt;   &lt;p&gt;Features like noting the total elapsed time against each of the steps of the deployment workflow also helps a great deal in making the testing process efficient. For example, as shown above, it really helps the testers isolate which part of the workflow is taking the most time and see if those need to be optimized. &lt;/p&gt;  &lt;p&gt;Before I sign off on this story, I want to return for a moment to the first diagram in this post. I am including it here again.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;a href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/NowtheLabManagementpartoftheDogfoodings_DF35/image_16.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/NowtheLabManagementpartoftheDogfoodings_DF35/image_thumb_7.png" width="504" height="312" /&gt;&lt;/a&gt;   &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Notice the highlighted environment – “TeamLab-SelfhostLE-2” and the set of machines shown on the right hand side which shows what the environment is made out of. You can see that this environment includes a load balanced TFS server, a build controller, and a test controller. This in fact is one of the environments that the Lab Management feature teams are using to test the Lab Management product. This essentially is a sort of “recursive” use of the product within itself – pretty neat, isn’t it?&lt;/p&gt;  &lt;p&gt;I hope this post and the last one has given you a good sense of the power of the testing tools that we are building, and the extent to which we have been dogfooding them to ensure that they are really ready for our customers. This dogfooding has been going on for more three months now, and the product is looking amazing solid. &lt;/p&gt;  &lt;p&gt;The RC bits of VS 2010 will be released shortly. Setting up a Lab certainly needs more commitment of time and resources than trying out client side only features, but you can get started with a lab of just a couple of Hyper-V capable machines to see for yourself the power of the product and how it will take out the many inefficiencies that plague a typical dev/test lab. I hope this story give you the impetus to get going on the product. I would love to see a diverse set of customers go-live with the product and share with us their success stories, before I release the product.&lt;/p&gt;  &lt;p&gt;Cheers!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9959376" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Dogfooding Visual Studio Test and Lab Management Products ….</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/02/04/dogfooding-visual-studio-test-lab-management-products.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2010/02/04/dogfooding-visual-studio-test-lab-management-products.aspx</id><published>2010-02-04T09:01:00Z</published><updated>2010-02-04T09:01:00Z</updated><content type="html">&lt;P&gt;&lt;FONT size=2 face=ca&gt;Dogfooding is a rich tradition at Microsoft. It essentially stands for “eating your own dogfood”. That is, product development teams are expected to use the product that they are building in their day to day work life, to ensure that the product is &lt;EM&gt;really&lt;/EM&gt; ready for paying customers. You can find more about this practice from this blog &lt;/FONT&gt;&lt;A href="http://www.panopticoncentral.net/archive/2004/12/10/2828.aspx" mce_href="http://www.panopticoncentral.net/archive/2004/12/10/2828.aspx"&gt;&lt;FONT size=2 face=ca&gt;post&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2 face=ca&gt; from several years back. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;In my posts you have read about my excitement about the Test and Lab Management capabilities that are part of the VS 2010 wave of products. I am very excited about the many innovations that we are building for our customers (who are the testers and developers and business analysts in product development teams), and I love talking about them. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;In keeping with the practice of Dogfooding, it then was very important for me to make sure my own development team members were using these products on a daily basis, and ensure that the products lived up to the high standards of usability, reliability, and capabilities that I know my own team needs from tools, for building world class products. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;This dogfooding effort has been an important focus for my team for the last several months. All of the testers in the team have moved onto using the products on a daily basis. Their motto has been to &lt;/FONT&gt;&lt;STRONG&gt;&lt;EM&gt;“Be the first customer of&amp;nbsp; the Test and Lab Management features, and accomplish all VS 2010 QA tasks using VS 2010 features” . &lt;/EM&gt;&lt;/STRONG&gt;The result have been great! &lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;It is time now to share this dogfooding story with you. I hope this also inspires the readers who are part of development teams themselves, to go-live with these products. As you know, Visual Studio 2010 is currently in a go-live Beta state – and you can get more details about it &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" mce_href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx"&gt;&lt;FONT size=2 face=ca&gt;here&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2 face=ca&gt;. We are also real close to releasing our next public go-live build (which is going to be an RC (Release Candidate) build. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;So, let me get started on the story …&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;The first important point to make is that the Visual Studio Test and Lab Management product development teams are a highly distributed team. We are located in four locations across the globe, as noted below. In our teams, we have about 40 team members focused on testing the products that we are building as part of VS 2010.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/image_6.png"&gt;&lt;FONT size=2 face=ca&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/image_thumb_2.png" width=504 height=379 mce_src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/image_thumb_2.png"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2 face=ca&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;For our dogfooding we use a distributed lab that uses our Lab Management product, built on top of Team Foundation Server (TFS). We have a TFS server in Redmond (known as the Pioneer server), and we have a distributed lab topology built on top of it. Here is how the lab topology looks like&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image004_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image004_2.jpg"&gt;&lt;FONT size=2 face=ca&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip_image004 border=0 alt=clip_image004 src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image004_thumb.jpg" width=504 height=381 mce_src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image004_thumb.jpg"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;The above diagram needs a bit of explanation. On the left hand side of the diagram you notice the TFS machine – it shows the application tier (which is a network load balanced setup) and the data tier machines. This is an “enterprise” scale setup of TFS – and you can get more details of this configuration from Grant Holliday’s blog &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/granth/archive/2009/08/27/vsts-pioneer-tfs2010-dogfood-server.aspx" mce_href="http://blogs.msdn.com/granth/archive/2009/08/27/vsts-pioneer-tfs2010-dogfood-server.aspx"&gt;&lt;FONT size=2 face=ca&gt;post&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2 face=ca&gt;. Next notice, the “SCVMM” (System Center Virtual Machine Manager) system on the top right – this gets licensed as part of the Lab Management product, and essentially manages the host machines where virtual machines will be installed, and the library of virtual machines that a development team will use. The SCVMM server for our lab is also located in Redmond. Finally you see that each of the sites in my development team (for example, Hyderabad or Raleigh) have their own sets of machine which serve as the VM hosts in their local location, and also a library machine in the local location that stores the VMs and templates that are used in the site. This topology works great for my distributed team – all of the data intensive operations of creating and cloning virtual machines are done in the site where the VMs are being used, whereas the central TFS server and the SCVMM server orchestrates and coordinates the lab across the sites. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;I should also point out that the above TFS server serves as the single repository for all of the development activities in our team – that is, it stores all of the source code for our products, all of the work items, test cases, test results, and lab environment assets. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;As part of the dogfooding effort, my entire test team is now using the above Lab for all of their daily testing and reporting activities. For example, here is a view of the test plans that are owned by the team.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image005_2.png" mce_href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image005_2.png"&gt;&lt;FONT size=2 face=ca&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip_image005 border=0 alt=clip_image005 src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image005_thumb.png" width=504 height=394 mce_src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image005_thumb.png"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;As my team has several feature crews who work on different parts of the product (like Load Testing, or Test Case Management Client or Server), you can see the plans created and used by the individual feature teams. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;In the next diagram below, you can see more details of an individual plan – in this case an example from the Test Case Management client team. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image007_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image007_2.jpg"&gt;&lt;FONT size=2 face=ca&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip_image007 border=0 alt=clip_image007 src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image007_thumb.jpg" width=504 height=362 mce_src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image007_thumb.jpg"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;You can see above how the test plan is composed of different test suites – for functional automation runs (FAR) or Performance runs or for exploratory testing where the suites are organized as a set of different “tours” through the product. The right hand side shows the test cases which make up the selected suite and various attributes about their current state.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;Next is an example of a test plan run.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image009_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image009_2.jpg"&gt;&lt;FONT size=2 face=ca&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip_image009 border=0 alt=clip_image009 src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image009_thumb.jpg" width=504 height=400 mce_src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image009_thumb.jpg"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;You can see the run details – the build that was used for the run and the results of the run. This gives you a sense of how the feature teams are organizing their testing, and going about the various types of test runs – executing and analyzing them.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;The next important activity for them to generate repots so that we get an overall idea of how the testing is coming along. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;My team heavily uses the excel-based reporting mechanism in TFS. I will show you a few examples, were specific reports can be generated by just a few clicks of the mouse.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;As all of the test and development assets are already in TFS, the starting point for these reports is a query that we make on TFS. For example, below I show a query for test cases that are closed (that is, completed). You can then notice the option to create a report in excel.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image011_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image011_2.jpg"&gt;&lt;FONT size=2 face=ca&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip_image011 border=0 alt=clip_image011 src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image011_thumb.jpg" width=504 height=271 mce_src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image011_thumb.jpg"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;This mechanism comes really handy, in creating a bunch of reports. Below are some examples of reports from in Excel. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;The diagram below shows what percentage of test cases have been automated versus those that are manual tests.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image013_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image013_2.jpg"&gt;&lt;FONT size=2 face=ca&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip_image013 border=0 alt=clip_image013 src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image013_thumb.jpg" width=504 height=542 mce_src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image013_thumb.jpg"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;The next report shows the breakdown of test work items by priority.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image015_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image015_2.jpg"&gt;&lt;FONT size=2 face=ca&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip_image015 border=0 alt=clip_image015 src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image015_thumb.jpg" width=504 height=406 mce_src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image015_thumb.jpg"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;The final sample report shows the who are the top 10 owners of work items assigned to them.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image017_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image017_2.jpg"&gt;&lt;FONT size=2 face=ca&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip_image017 border=0 alt=clip_image017 src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image017_thumb.jpg" width=504 height=646 mce_src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image017_thumb.jpg"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;The TFS server, as you know, also provides a SharePoint portal which in our case also works for an up to date dashboard of all of the QA activities in our team. Below is how this looks like – you can see how the latest information of nightly automation runs (NAR) and failure analysis readily available. The portal has been customized for a variety of other reports which show up as you scroll down the portal.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image019_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image019_2.jpg"&gt;&lt;FONT size=2 face=ca&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip_image019 border=0 alt=clip_image019 src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image019_thumb.jpg" width=504 height=329 mce_src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/clip_image019_thumb.jpg"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;The entire development team is also benefitting immensely from all of the features that we have built for breaking down silos between developers and testers. As an example, take a look at an “actionable bug” or “rich bug” that has been filed by a team member.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/image_2.png"&gt;&lt;FONT size=2 face=ca&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/image_thumb.png" width=504 height=394 mce_src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/DogfoodingVisualStudioTestLabManagement_C96F/image_thumb.png"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2 face=ca&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;Using our testing tool – the tester probably just typed in the title of the bug she found and hit enter. All of the rich and actionable information in the bug about the system information at the time of test, the exact steps that the manual tester executed, and various kinds of rich attachments are automatically captured in the bug. This makes it extremely easy for the developer to narrow down and fix the bug. In the above picture you can see the rich set of attachment that the developer has access to right from the bug report – for example, a video of the testing session and an IntelliTrace log for historical debugging. Moreover, in this particular case since the testing was also done on virtual machines using the Lab Management product, you can see we have a link to the virtual environment that the tests were run on. The developer can click on the link and get connected to the virtual environment right from their desktop! &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;I will close this post here – but there is more to the story. In my next post I will focus on the Lab Management part of the dogfooding, and how we are benefiting from the features in that product. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;This is great stuff! All of the testing in my group is now being done using the products we are building, and it is great fun to experience first hand, the benefits that we are building for our customers. Quite often I will get a mail from a tester or a test lead about yet another thing they are proud of in the product – for example, here’s a quote from my Test Manager:&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;From:&lt;/B&gt; Dinesh Bhat &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Thursday, January 07, 2010 10:59 AM &lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Dinesh Bhat's Direct Reports &lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Using Microsoft Test Manager in a real testing cycle&lt;/P&gt;
&lt;P&gt;The product simply rocks in terms of ease of use and productivity! There are a ton of cool features. IMO, the product meets the bar for teams that use agile or formal process or for teams that are savvy about traceability. Moreover, you can really let the team work in a “friction free” manner. &lt;B&gt;During this exercise, I did not pester the team a single time to know the status. In turn, I was fully aware of progress the team was making sitting right in my office!&lt;/B&gt; This is a great toolset for distributed development too …&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;The entire dogfooding effort gives me great confidence in saying that these tools are ready &lt;EM&gt;now&lt;/EM&gt; for your use in your your development teams! We would love for you to adopt these tools now, and give feedback about your experiences. We just have a few more months before we close the development cycle on this release. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face=ca&gt;I know many of you are using these products already. I would love to hear about your experiences too – perhaps you can add those as comments to this post. &lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9958047" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author><category term="Manual Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Manual+Testing/" /><category term="Test Automation" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Test+Automation/" /><category term="Testing" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Testing/" /><category term="Visual Studio Team System" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+System/" /><category term="Visual Studio Team Test" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Visual+Studio+Team+Test/" /><category term="Lab Management" scheme="http://blogs.msdn.com/b/amit_chatterjee/archive/tags/Lab+Management/" /></entry><entry><title>Beautiful Stockholm!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2009/12/07/beautiful-stockholm.aspx" /><id>http://blogs.msdn.com/b/amit_chatterjee/archive/2009/12/07/beautiful-stockholm.aspx</id><published>2009-12-07T16:22:00Z</published><updated>2009-12-07T16:22:00Z</updated><content type="html">&lt;p&gt;I just got back from a week's trip to Stockholm, Sweden. This was my first trip to the city, and I really enjoyed my time there. Here’s a nice photograph of Stockholm Central that I took from my hotel.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/BeautifulStockholm_13394/clip_image002_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/BeautifulStockholm_13394/clip_image002_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/BeautifulStockholm_13394/clip_image002_thumb.jpg" width="504" height="379" mce_src="http://blogs.msdn.com/blogfiles/amit_chatterjee/WindowsLiveWriter/BeautifulStockholm_13394/clip_image002_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I was there attending Eurostar 2009, meeting with my colleagues in Europe, and spending a lot of time talking to customers and partners about the Visual Studio 2010 Test Products. It was very gratifying to see how much the people loved the tools. Not only did the testing professionals love the tools, I found that the developers too were greatly inspired by the tools – it is fun to watch them get excited and animated when they realize what breaking down the walls between developers and testers will mean to them :-)&lt;/p&gt;  &lt;p&gt;What else can I share with you? Oh – here’s &lt;a href="http://channel9.msdn.com/posts/buzzfrog/MSDN-Radio-1-Dec--Intervju-o-mania/" mce_href="http://channel9.msdn.com/posts/buzzfrog/MSDN-Radio-1-Dec--Intervju-o-mania/"&gt;a link&lt;/a&gt; to a podcast interview of me recorded by the Microsoft Sweden team. If you follow the Swedish language, you can listen to the entire podcast – it has a review of TechEd Berlin, and an interview with Ron Jacobs on the Windows AppFabric server, followed by the conversation with me. If you, however, just want to listen to the part where I talk about the Visual Studio Test Products (in English, of course) you can seek to about 21:30 minutes into the podcast (if you have trouble seeking with the embedded player, you can double click to bring up – say Media Player – and seek there). &lt;/p&gt;  &lt;p&gt;The testing industry and community is very vibrant in Sweden – I’d love to get back there again!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9933526" width="1" height="1"&gt;</content><author><name>Amit Chatterjee</name><uri>http://blogs.msdn.com/Amit-Chatterjee/ProfileUrlRedirect.ashx</uri></author></entry></feed>