<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3070727340982558956</id><updated>2011-12-09T17:05:55.125Z</updated><category term='Vista'/><category term='CRM'/><category term='BizTalk'/><category term='SQLServer'/><category term='Castle'/><category term='Windows'/><category term='Windows7'/><category term='MSTest'/><category term='MSBuild'/><category term='Apple'/><category term='VS2008'/><category term='PDC2008'/><category term='WCF'/><category term='FxCop'/><category term='Safari'/><category term='VS2010'/><category term='Tools'/><category term='Work'/><category term='IE'/><category term='Patterns'/><category term='VS2005'/><category term='WPF'/><category term='.NET'/><category term='CodePlex'/><category term='Server2008'/><title type='text'>Steal Focus</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>86</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-731503935026049547</id><published>2011-12-09T16:39:00.001Z</published><updated>2011-12-09T17:05:55.132Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>The only Windows Azure Pricing Calculator you will ever need</title><content type='html'>&lt;p&gt;I wrote this to cost up a project: &lt;a title="https://skydrive.live.com/view.aspx?cid=0DE849CA9FB5B198&amp;amp;resid=DE849CA9FB5B198%21704" href="https://skydrive.live.com/view.aspx?cid=0DE849CA9FB5B198&amp;amp;resid=DE849CA9FB5B198%21704"&gt;https://skydrive.live.com/view.aspx?cid=0DE849CA9FB5B198&amp;amp;resid=DE849CA9FB5B198%21704&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For UK currency.&lt;/p&gt;  &lt;p&gt;Unlike every single other calculator out there it allows you to…&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Specify a profile for 5 environments (each profile can differ in number/size of Compute Instances etc):&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Integration Test&lt;/li&gt;      &lt;li&gt;System Test&lt;/li&gt;      &lt;li&gt;User Acceptance Test&lt;/li&gt;      &lt;li&gt;Pre-Production&lt;/li&gt;      &lt;li&gt;Production&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Specify how many hours (per week) you need your Compute Instances for (you might be happy to tear down your hosted services each night – if you’re not using them, why pay?)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Monthly and yearly totals shown.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-731503935026049547?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/731503935026049547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=731503935026049547' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/731503935026049547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/731503935026049547'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/12/only-windows-azure-pricing-calculator.html' title='The only Windows Azure Pricing Calculator you will ever need'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-7696733933462188648</id><published>2011-11-04T17:20:00.001Z</published><updated>2011-11-04T17:20:36.025Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Windows Azure Pricing</title><content type='html'>&lt;p&gt;Pay as you go: &lt;a title="http://www.microsoft.com/windowsazure/offers/MS-AZR-0003P" href="http://www.microsoft.com/windowsazure/offers/MS-AZR-0003P"&gt;http://www.microsoft.com/windowsazure/offers/MS-AZR-0003P&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;What qualifies as a transaction in Windows Azure Storage (you pay per transaction): &lt;a title="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/07/09/understanding-windows-azure-storage-billing-bandwidth-transactions-and-capacity.aspx" href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/07/09/understanding-windows-azure-storage-billing-bandwidth-transactions-and-capacity.aspx"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/07/09/understanding-windows-azure-storage-billing-bandwidth-transactions-and-capacity.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;MSDN Benefits for Windows Azure: &lt;a title="http://www.microsoft.com/windowsazure/msdn-benefits/" href="http://www.microsoft.com/windowsazure/msdn-benefits/"&gt;http://www.microsoft.com/windowsazure/msdn-benefits/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-7696733933462188648?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/7696733933462188648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=7696733933462188648' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/7696733933462188648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/7696733933462188648'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/11/windows-azure-pricing.html' title='Windows Azure Pricing'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-431084063065538320</id><published>2011-11-03T22:32:00.001Z</published><updated>2011-11-03T22:39:57.683Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Windows Azure and operational cost reduction</title><content type='html'>&lt;p&gt;One of the things that strikes me the most about using Windows Azure (or most cloud solutions) is the savings you can make with your test environments.&lt;/p&gt;  &lt;p&gt;In Windows Azure world, your on-going cost is for your &lt;a href="http://www.microsoft.com/windowsazure/features/compute/" target="_blank"&gt;Compute instances&lt;/a&gt; (what you deploy your applications to) and your storage. Whether you are using the application or not, you are paying money for your Compute instances and storage to exist. Other costs (Access Control, CDN etc) you pay per use or transaction.&lt;/p&gt;  &lt;p&gt;So if you have a system test or user acceptance test environment that you are not using, you can simply delete the Compute instances and any storage artefacts. Then you don’t pay for them.&lt;/p&gt;  &lt;p&gt;Contrast this will your on premise applications. You probably have multiple test environments for different projects and those are sitting there, costing you money whether you use them or not.&lt;/p&gt;  &lt;p&gt;Some people suggest that Windows Azure (and some other cloud services are not that cheap). I disagree. Let’s say I need a system test environment for 5 days a month. A “Large” Compute instance (4 x 1.6GHz, 7GB RAM, 1000GB storage) costs $0.48/hour. Well 5 days at 8 hours a day (most people don’t work 24/7) costs me $19.20 (this includes the operating system license). I can &lt;a href="http://wappowershell.codeplex.com/" target="_blank"&gt;script&lt;/a&gt; the creation of my compute instances and other artefacts very simply, so automatically spinning up or shutting down assets on demand.&lt;/p&gt;  &lt;p&gt;So, a pretty meaty server for a system test environment on Windows Azure costs me $19.20 for the 5 days per month I want to use it.&lt;/p&gt;  &lt;p&gt;How much is your on premise hardware costing to run for a whole month?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-431084063065538320?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/431084063065538320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=431084063065538320' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/431084063065538320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/431084063065538320'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/11/windows-azure-and-operational-cost.html' title='Windows Azure and operational cost reduction'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-8015285569241979228</id><published>2011-11-01T14:17:00.001Z</published><updated>2011-11-01T14:17:45.953Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>PowerShell, MSBuild and 64-bit platforms</title><content type='html'>&lt;p&gt;If you call PowerShell from MSBuild on a 64-bit platform, you will often get unexpected errors. One such error is as follows:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;No snap-ins have been registered for windows powershell version 2&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The probable cause is that the MSBuild executable you are running is not 64-bit. On 64-bit platforms you should execute MSBuild from the following location:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;%SystemDrive%\Windows\Microsoft.NET\Framework&lt;font color="#ff0000"&gt;&lt;strong&gt;64&lt;/strong&gt;&lt;/font&gt;\v4.0.30319\msbuild.exe&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Depending on how/what you have installed, your Start Menu shortcuts might be pointing to the 32-bit version.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-8015285569241979228?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/8015285569241979228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=8015285569241979228' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/8015285569241979228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/8015285569241979228'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/11/powershell-msbuild-and-64-bit-platforms.html' title='PowerShell, MSBuild and 64-bit platforms'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-8111486451018027189</id><published>2011-10-31T13:16:00.001Z</published><updated>2011-10-31T13:16:01.620Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Elegantly testing for a PowerShell Snap-In</title><content type='html'>&lt;p&gt;This PowerShell script tries to load the WAPPSCmdlets snap-in, fails silently if the loading of the snap-in fails (if it isn’t installed), advises the user and exits from the script.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;if ((Get-PSSnapin | ?{$_.Name -eq &amp;quot;WAPPSCmdlets&amp;quot;}) -eq $null)       &lt;br /&gt;{        &lt;br /&gt;&amp;#160; Add-PSSnapin WAPPSCmdlets -erroraction SilentlyContinue        &lt;br /&gt;&amp;#160; $SnapIn = GET-PSSnapIn WAPPSCmdlets -erroraction SilentlyContinue        &lt;br /&gt;&amp;#160; if ($SnapIn -eq $null)        &lt;br /&gt;&amp;#160; {        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Write-Error &amp;quot;To run this script the 'Windows Azure Platform PowerShell Cmdlets' are required.&amp;quot;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Write-Error &amp;quot;Please download from '&lt;/font&gt;&lt;a href="http://wappowershell.codeplex.com/'"&gt;&lt;font face="Courier New"&gt;http://wappowershell.codeplex.com/'&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt; and install as a PowerShell Snap-in (not as a Module).&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Exit        &lt;br /&gt;&amp;#160; }        &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I’m testing for “WAPPSCmdlets” but you could test for any PowerShell Snap-in.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.comparethemeerkat.com/" target="_blank"&gt;Simples&lt;/a&gt; (if you don’t &lt;a href="http://en.wikipedia.org/wiki/Aleksandr_Orlov_(advertising)" target="_blank"&gt;get it&lt;/a&gt;).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-8111486451018027189?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/8111486451018027189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=8111486451018027189' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/8111486451018027189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/8111486451018027189'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/10/elegantly-testing-for-powershell-snap.html' title='Elegantly testing for a PowerShell Snap-In'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-4610228109578525737</id><published>2011-10-22T01:14:00.001+01:00</published><updated>2011-10-22T01:14:54.378+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Increasing quotas on Windows Azure</title><content type='html'>&lt;p&gt;By default, your subscription quotas on Windows Azure are as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Cores – 20&lt;/li&gt;    &lt;li&gt;Hosted Services – 6&lt;/li&gt;    &lt;li&gt;Storage – 5&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To increase these you need to submit a request: &lt;a title="https://support.microsoft.com/oas/default.aspx?prid=13185&amp;amp;st=1" href="https://support.microsoft.com/oas/default.aspx?prid=13185&amp;amp;st=1"&gt;https://support.microsoft.com/oas/default.aspx?prid=13185&amp;amp;st=1&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Options:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Support topic – “Service Deployment and Developer Portal”&lt;/li&gt;    &lt;li&gt;Sub-topic – “Quota increase”&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-4610228109578525737?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/4610228109578525737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=4610228109578525737' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4610228109578525737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4610228109578525737'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/10/increasing-quotas-on-windows-azure.html' title='Increasing quotas on Windows Azure'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-2503716168286661379</id><published>2011-09-29T21:20:00.001+01:00</published><updated>2011-09-29T21:20:10.079+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Error messages</title><content type='html'>&lt;p&gt;This is a new one.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-KusooP_-iIo/ToTS81pxkHI/AAAAAAAAAGQ/1S49k2LirHo/s1600-h/500%25255B3%25255D.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="500" border="0" alt="500" src="http://lh3.ggpht.com/-j10HREjtZEY/ToTS-InethI/AAAAAAAAAGU/2kmaBvvOjik/500_thumb%25255B1%25255D.jpg?imgmax=800" width="505" height="492" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you see the monkeys, let me know.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-2503716168286661379?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/2503716168286661379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=2503716168286661379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2503716168286661379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2503716168286661379'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/09/error-messages.html' title='Error messages'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-j10HREjtZEY/ToTS-InethI/AAAAAAAAAGU/2kmaBvvOjik/s72-c/500_thumb%25255B1%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-2170849954030798068</id><published>2011-09-28T18:06:00.000+01:00</published><updated>2011-09-28T18:06:00.247+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Assembly versioning (for .NET)</title><content type='html'>&lt;p&gt;Like most people, I version my assemblies during the continuous integration build. This is achieved by generating a class file (I call it “AssemblyInfoCommon.cs”) during the build. It looks like this:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Reflection;&lt;br /&gt;&lt;span class="kwrd"&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Runtime.CompilerServices;&lt;br /&gt;&lt;span class="kwrd"&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Runtime.InteropServices;&lt;br /&gt;&lt;br /&gt;[&lt;font color="#0000ff"&gt;assembly&lt;/font&gt;: &lt;font color="#4bacc6"&gt;AssemblyCompany&lt;/font&gt;(&lt;span class="str"&gt;&lt;font color="#c0504d"&gt;&amp;quot;Acme&amp;quot;&lt;/font&gt;&lt;/span&gt;)]&lt;br /&gt;[&lt;font color="#0000ff"&gt;assembly&lt;/font&gt;: &lt;font color="#4bacc6"&gt;AssemblyConfiguration&lt;/font&gt;(&lt;span class="str"&gt;&lt;font color="#c0504d"&gt;&amp;quot;Branch.Release.1.0.xxx.xxx Debug&amp;quot;&lt;/font&gt;&lt;/span&gt;)]&lt;br /&gt;[&lt;font color="#0000ff"&gt;assembly&lt;/font&gt;: &lt;font color="#4bacc6"&gt;AssemblyCopyright&lt;/font&gt;(&lt;span class="str"&gt;&lt;font color="#c0504d"&gt;&amp;quot;Copyright © Acme 2011&amp;quot;&lt;/font&gt;&lt;/span&gt;)]&lt;br /&gt;[&lt;font color="#0000ff"&gt;assembly&lt;/font&gt;: &lt;font color="#4bacc6"&gt;AssemblyFileVersion&lt;/font&gt;(&lt;span class="str"&gt;&lt;font color="#c0504d"&gt;&amp;quot;1.0.xxx.xxx&amp;quot;&lt;/font&gt;&lt;/span&gt;)]&lt;br /&gt;[&lt;font color="#0000ff"&gt;assembly&lt;/font&gt;: &lt;font color="#4bacc6"&gt;AssemblyInformationalVersion&lt;/font&gt;(&lt;span class="str"&gt;&lt;font color="#c0504d"&gt;&amp;quot;1.0.xxx.xxx&amp;quot;&lt;/font&gt;&lt;/span&gt;)]&lt;br /&gt;[&lt;font color="#0000ff"&gt;assembly&lt;/font&gt;: &lt;font color="#4bacc6"&gt;AssemblyProduct&lt;/font&gt;(&lt;span class="str"&gt;&lt;font color="#c0504d"&gt;&amp;quot;PetShop&amp;quot;&lt;/font&gt;&lt;/span&gt;)]&lt;br /&gt;[&lt;font color="#0000ff"&gt;assembly&lt;/font&gt;: &lt;font color="#4bacc6"&gt;AssemblyTrademark&lt;/font&gt;(&lt;span class="str"&gt;&lt;font color="#c0504d"&gt;&amp;quot;Acme&amp;quot;&lt;/font&gt;&lt;/span&gt;)]&lt;br /&gt;[&lt;font color="#0000ff"&gt;assembly&lt;/font&gt;: &lt;font color="#4bacc6"&gt;AssemblyVersion&lt;/font&gt;(&lt;span class="str"&gt;&lt;font color="#c0504d"&gt;&amp;quot;1.0.xxx.xxx&amp;quot;&lt;/font&gt;&lt;/span&gt;)]&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Where…&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;“1.0.xxx.xxx” is the version number (we’ll come to the “xxx” value later&amp;quot;) &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;The “AssemblyConfiguration” attribute breaks down as follows: &lt;br /&gt;    &lt;ul&gt;&lt;br /&gt;      &lt;li&gt;“Branch” is constant. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;      &lt;li&gt;“Release” will vary depending on what you call your branches &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;      &lt;li&gt;“Debug” is the Visual Studio Solution configuration so will typically be “Debug” as shown or “Release”. &lt;/li&gt;&lt;br /&gt;    &lt;/ul&gt;&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;The company name, copyright notice and year all all passed in from the build script as variables. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;The product name is whatever the project is called. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This is all pretty straight forward so far. However, down the years I’ve had problems with a strategy for the version number.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;In the .NET world, the version number breaks down as follows:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;  &lt;p&gt;[major].[minor].[revision].[build]&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;See &lt;a href="http://msdn.microsoft.com/en-us/library/51ket42z(v=VS.100).aspx" target="_blank"&gt;MSDN&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Originally, the my version numbers broke down as follows:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;  &lt;p&gt;1.0.yMMdd.x&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Where “major” and “minor” are configured manually (these never automatically increment).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The “revision” number breaks down as follows:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;“y” is the last digit of the current year. For 2011, this is “1”. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;“MM” is obviously the month. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;“yy” like wise for the day. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The “build” number represents the number of builds today, so the first build of the day takes “1”, the second “2” etc.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The would give you the following build numbers (I’m choosing old dates for a reason…):&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;1.0.10926.1 – the first build on 26th September 2001 &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;1.0.11231.3 – the third build on 31st December 2001 &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;1.0.20101.4 – the fourth build on 1st January 2002 &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This worked pretty well for a number of years. Unfortunately, there is a constraint on the components of the version number that did not become apparent until 1st January 2006.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The first build number for 1st January 2007 was (in theory) “x.y.70101.0”. Unfortunately each component of the version number is an “Int32”. The largest value for an Int32 is “65534”, “70101” is bigger than this. Queue me getting build failure notification e-mails while on a beach in Thailand on New Year’s day, which was nice.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Since then, I’ve wrestled with a couple of different strategies but none ever really worked. The one I got most mileage out of was the same as before for Major, Minor and Build but had a different strategy for the Revision. I used the day of the year in combination with the year. So the Revision for…&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;31st January 2011 would be “1031” (the 31st day of the year) &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;2nd February 2011 would be “1032” (the 32nd day of the year) &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;31st December 2011 would be “1365” (the 365th day of the year) &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;1st January 2012 would be “2001” (the 1st day of the year) &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This is problematic for two reasons:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;You have to do maths to work out when a version was built. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Years ending in 0 (2010, 2020) cause problems because of leading zeros get dropped by the compiler. So 1.0.0001.0 (1st Jan 2010) would become 1.0.1.0 which is confusing. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Recently I’ve found a new strategy which works pretty well. The problem with the first strategy is fitting revision numbers for “high” years into an Int32, the problem with the second one is leading zeros. This third strategy overcomes this and breaks down as follows:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;  &lt;p&gt;1.0.yyMM.ddxx&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Where “major” and “minor” are as before.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The “revision” number breaks down as follows:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;“yy” is the current year. For 2011, this is “11”. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;“MM” is again the month. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The “build” number is as follows:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;“dd” is the day. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;“xx” is the build number of the day. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Examples:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;1.0.1109.2601 = 26/09/2011, 1st build of the day&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;1.0.9912.3199 = 31/12/2099, 99th build of the day&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;1.0.1201.0101 = 01/01/2012, 1st build of the day&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;1.0.1112.3199 = 31/12/2011, 99th build of the day&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;There’s one caveat – best to not have more than 99 builds in one day but that is a highly unlikely scenario.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-2170849954030798068?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/2170849954030798068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=2170849954030798068' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2170849954030798068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2170849954030798068'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/09/assembly-versioning-for-net.html' title='Assembly versioning (for .NET)'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-2708904800557403684</id><published>2011-09-27T15:51:00.000+01:00</published><updated>2011-09-27T15:51:00.412+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>BizTalk Message Box Viewer</title><content type='html'>&lt;p&gt;The “BizTalk Message Box Viewer” is a nifty little tool that complements the BizTalk Best Practices Analyser very well:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.technet.com/b/jpierauc/archive/2007/12/18/msgboxviewer.aspx" href="http://blogs.technet.com/b/jpierauc/archive/2007/12/18/msgboxviewer.aspx"&gt;http://blogs.technet.com/b/jpierauc/archive/2007/12/18/msgboxviewer.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-2708904800557403684?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/2708904800557403684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=2708904800557403684' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2708904800557403684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2708904800557403684'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/09/biztalk-message-box-viewer.html' title='BizTalk Message Box Viewer'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-6876684500425841595</id><published>2011-09-26T14:56:00.001+01:00</published><updated>2011-09-26T14:58:43.081+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>BizTalk Best Practices Analyser (1)</title><content type='html'>&lt;p&gt;Two issues that are easy to fix.&lt;/p&gt;  &lt;p&gt;Details for both here: &lt;a title="http://msdn.microsoft.com/en-us/library/aa561380.aspx" href="http://msdn.microsoft.com/en-us/library/aa561380.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa561380.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Thread Pool Setting of Host Instance MyHostInstance of Host MyHost&lt;/h4&gt;  &lt;p&gt;You need to change the registry settings. A example registry file (.reg) is as follows:&lt;/p&gt;  &lt;p&gt;START FILE&lt;/p&gt;  &lt;p&gt;Windows Registry Editor Version 5.00&lt;/p&gt;  &lt;p&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\BTSSvc$&lt;font color="#ff0000"&gt;&lt;strong&gt;MyHost&lt;/strong&gt;&lt;/font&gt;\CLR Hosting]    &lt;br /&gt;&amp;quot;MaxIOThreads&amp;quot;=dword:00000064    &lt;br /&gt;&amp;quot;MaxWorkerThreads&amp;quot;=dword:00000064    &lt;br /&gt;&amp;quot;MinIOThreads&amp;quot;=dword:00000019    &lt;br /&gt;&amp;quot;MinWorkerThreads&amp;quot;=dword:00000019&lt;/p&gt;  &lt;p&gt;END FILE&lt;/p&gt;  &lt;p&gt;You will need to change “&lt;font color="#ff0000"&gt;&lt;strong&gt;MyHost&lt;/strong&gt;&lt;/font&gt;” to match your host name. If you create a .reg file with this content, you can easily merge it to your registry.&lt;/p&gt;  &lt;p&gt;The “dword” values are as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Max IO threads = 100&lt;/li&gt;    &lt;li&gt;Max worker threads = 100&lt;/li&gt;    &lt;li&gt;Min IO threads = 25&lt;/li&gt;    &lt;li&gt;Min worker threads = 25&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;These values are taken from the MSDN link above.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;No maxconnection Setting is Found in machine.config or BTSNTSvc.exe.config or BTSNTSvc64.exe.config&lt;/h3&gt;  &lt;p&gt;You need to change the following files:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;%systemdrive%\Program Files (x86)\Microsoft BizTalk Server 2009\BTSNTSvc.exe.config&lt;/li&gt;    &lt;li&gt;%systemdrive%\Program Files (x86)\Microsoft BizTalk Server 2009\BTSNTSvc64.exe.config&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Add a “system.net” section as follows (by default, BTSNTSvc.exe.config and BTSNTSvc64.exe.config do not have such a section).&lt;/p&gt;  &lt;p&gt;&amp;lt;system.net&amp;gt;   &lt;br /&gt;&amp;#160; &amp;lt;connectionManagement&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;add address=&amp;quot;*&amp;quot; maxconnection=&amp;quot;12&amp;quot; /&amp;gt;    &lt;br /&gt;&amp;#160; &amp;lt;/connectionManagement&amp;gt;    &lt;br /&gt;&amp;lt;/system.net&amp;gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Where the “maxconnection” value should be 12 multiplied by the number of processors on the server. The above is an example only, in my scenario each BizTalk server had two processors, so my “maxconnection” value was “24”.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-6876684500425841595?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/6876684500425841595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=6876684500425841595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/6876684500425841595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/6876684500425841595'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/09/biztalk-best-practices-analyser-1.html' title='BizTalk Best Practices Analyser (1)'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-4490699247099644691</id><published>2011-09-23T11:33:00.001+01:00</published><updated>2011-09-23T11:33:02.812+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Cloud outages</title><content type='html'>&lt;p&gt;A letter in The Economist earlier in the year puts an interesting perspective on cloud outages.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;SIR – I was disappointed that your article added to the hysteria that surrounds cloud computing (“Break-ins and breakdowns”, April 30th). In my view cloud computing is like commercial aviation. Which is safer per-mile of travel: aircraft or automobile? Car crashes are responsible for more deaths, yet a plane crash is certain to make the news. For the same reason, cloud computing outages are considered newsworthy. Although the frequent down times of companies’ internal IT systems are less publicised, these down times almost certainly cause more harm and lost productivity in aggregate (like car accidents).&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Air travel makes people uncomfortable, in part because of a loss of control, no matter how well trained and experienced the pilot may be. Similarly organisations fear cloud computing, preferring to be “behind the wheel”. Yet transportation statistics show that desire can be misguided.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Aviation had its share of hype and detractors, but no one would argue that it has not transformed travel. I predict that once the dust settles, cloud computing will be no less transformative.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;Milo M.K. Martin     &lt;br /&gt;Associate professor of computer science      &lt;br /&gt;University of Pennsylvania      &lt;br /&gt;Philadelphia&lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.economist.com/node/18712181"&gt;http://www.economist.com/node/18712181&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-4490699247099644691?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/4490699247099644691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=4490699247099644691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4490699247099644691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4490699247099644691'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/09/cloud-outages.html' title='Cloud outages'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-9103467820023850822</id><published>2011-09-20T11:58:00.001+01:00</published><updated>2011-09-20T21:48:06.514+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>How we see each other</title><content type='html'>&lt;p&gt;I don’t know where this came from so I can’t credit it but many props to the original author, who ever you are.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-6AUcTbLVwhI/Tnj8AYOYhlI/AAAAAAAAAGI/RRw1YvVFHT4/s1600-h/Untitled%25255B4%25255D.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="Untitled" border="0" alt="Untitled" src="http://lh4.ggpht.com/-ownCVs4Aop8/Tnj8BU_68vI/AAAAAAAAAGM/mXGv_W-qXJw/Untitled_thumb%25255B1%25255D.jpg?imgmax=800" width="768" height="608" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-9103467820023850822?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/9103467820023850822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=9103467820023850822' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/9103467820023850822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/9103467820023850822'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/09/how-we-see-each-other.html' title='How we see each other'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-ownCVs4Aop8/Tnj8BU_68vI/AAAAAAAAAGM/mXGv_W-qXJw/s72-c/Untitled_thumb%25255B1%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-3938241183716653401</id><published>2011-09-19T14:07:00.001+01:00</published><updated>2011-09-19T14:07:46.142+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Connecting to TFS Preview from Visual Studio 2010</title><content type='html'>&lt;p&gt;Took me a few minutes to figure out why I was getting an error connecting to &lt;a href="https://tfspreview.com/" target="_blank"&gt;TFS Preview&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;First (and most obviously) you need Visual Studio 2010 with SP1 applied. You should have SP1 by now anyway.&lt;/p&gt;  &lt;p&gt;Secondly (and less obviously) you need to install &lt;a href="http://go.microsoft.com/fwlink/?LinkID=212065" target="_blank"&gt;KB2581206&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;There is a link to “&lt;a href="http://blogs.msdn.com/b/visualstudioalm/archive/2011/09/14/tfs-preview-downloads.aspx" target="_blank"&gt;download software&lt;/a&gt;” on your TFS Preview Admin page which lists all this but it’s easy to miss the link to KB2581206.&lt;/p&gt;  &lt;p&gt;When you have the hotfix installed, connecting is just the same as normal. From the “Add Team Foundation Server” dialogue in VS2010:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Name or URL of Team Foundation Server = [your account name].tfspreview.com&lt;/li&gt;    &lt;li&gt;Connection Details:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Path = tfs&lt;/li&gt;      &lt;li&gt;Port = 443&lt;/li&gt;      &lt;li&gt;Protocol = HTTPS&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;You authenticate with a web identity provider e.g. Windows Live ID.&lt;/p&gt;  &lt;p&gt;While its in preview, this hosted TFS solution is in Microsoft’s Chicago data centre. Even though it’s a hosted solution, you can still have your own &lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/09/15/configuring-a-build-server-against-your-shiny-new-hosted-tfs-account.aspx" target="_blank"&gt;TFS Build Agents&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-3938241183716653401?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/3938241183716653401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=3938241183716653401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/3938241183716653401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/3938241183716653401'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/09/connecting-to-tfs-preview-from-visual.html' title='Connecting to TFS Preview from Visual Studio 2010'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-4282323817473387015</id><published>2011-09-13T20:27:00.001+01:00</published><updated>2011-09-13T20:27:23.644+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Windows 8</title><content type='html'>&lt;blockquote&gt;   &lt;p&gt;“&lt;em&gt;This poses a tricky question, though. You see, not only does IE10 power Windows 8′s primary interface, but Internet Explorer 10 — the browser — is also available as a Metro-style app, and as a full-interface browser in the Explorer Desktop. All three versions are fundamentally identical. Now… what if Windows 8 is as successful as Windows 7 and all of its previous forebears? What if Windows 8 is actually a success on the tablet? If Windows 8 becomes ubiquitous, so does Internet Explorer 10 — and if IE10 can be found on hundreds of millions of devices, what platform do you think developers will choose?&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;It’s the great Web App Dream: write once, run anywhere. Do you write an app for tens of millions of iPhones and iPads, or do you write a single piece of HTML, CSS, and JavaScript that can run perfectly on every Windows 8, IE10-powered tablet, laptop, and desktop? Those same web apps, with a little tweaking, will probably even work with Chrome and Firefox and Safari — but here’s an uncomfortable truth: if Windows 8 reaches 90% penetration of the computing market, why bother targeting a web browser at all? Just write a native, Metro-style web app instead.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Finally, add in the fact that IE10 will almost certainly come to Windows Phone 8 next year, and you will have a single app container — AppX — that runs across every damn computer form factor.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Microsoft, threatened by the idea of OS-agnostic web apps and browser-based operating systems from Google and Mozilla, has just taken the game to a whole new level — and, rather shockingly, given that Windows 8 started its development in mid-2009, it would seem that the lumbering behemoth might have actually out-maneuvered Google.”&lt;/em&gt;&lt;/p&gt;    &lt;p align="right"&gt;&lt;a href="http://www.extremetech.com/computing/95837-windows-8-the-first-browser-based-os"&gt;http://www.extremetech.com/computing/95837-windows-8-the-first-browser-based-os&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;Interesting...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-4282323817473387015?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/4282323817473387015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=4282323817473387015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4282323817473387015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4282323817473387015'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/09/windows-8.html' title='Windows 8'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-4852107574718682591</id><published>2011-08-15T23:54:00.001+01:00</published><updated>2011-08-15T23:54:49.459+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Castle Windsor 3.0 beta</title><content type='html'>&lt;p&gt;Castle Windsor 3.0 beta is available:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://docs.castleproject.org/Windsor.Whats-New-In-Windsor-3.ashx" href="http://docs.castleproject.org/Windsor.Whats-New-In-Windsor-3.ashx"&gt;http://docs.castleproject.org/Windsor.Whats-New-In-Windsor-3.ashx&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There are numerous new features, one of the more interesting ones is that the WCF Integration Facility is now officially part of the release:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://docs.castleproject.org/Windsor.WCF-Integration-Facility.ashx" href="http://docs.castleproject.org/Windsor.WCF-Integration-Facility.ashx"&gt;http://docs.castleproject.org/Windsor.WCF-Integration-Facility.ashx&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-4852107574718682591?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/4852107574718682591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=4852107574718682591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4852107574718682591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4852107574718682591'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/08/castle-windsor-30-beta.html' title='Castle Windsor 3.0 beta'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-1708176216969883839</id><published>2011-08-15T23:52:00.001+01:00</published><updated>2011-08-15T23:52:42.519+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Google buys Motorola Mobility</title><content type='html'>&lt;p&gt;Google has bought Motorola Mobility, the mobile part of Motorola spun off as a separate entity a few years ago.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.theregister.co.uk/2011/08/15/google_buys_motorola_mobility_wtf/" href="http://www.theregister.co.uk/2011/08/15/google_buys_motorola_mobility_wtf/"&gt;http://www.theregister.co.uk/2011/08/15/google_buys_motorola_mobility_wtf/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This makes for an interesting story with respect to Google’s Android partners, HTC, Samsung and around 30 others. Google is now competing against those companies. Will they now focus on another platform where they don’t have to compete with the vendor? Windows 7, say?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-1708176216969883839?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/1708176216969883839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=1708176216969883839' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/1708176216969883839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/1708176216969883839'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/08/google-buys-motorola-mobility.html' title='Google buys Motorola Mobility'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-6564862933608826866</id><published>2011-08-05T23:41:00.001+01:00</published><updated>2011-08-05T23:45:18.311+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>String Comparison in .NET</title><content type='html'>&lt;p&gt;Hate stuff like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;if (myValue == &amp;quot;true&amp;quot;)&lt;/p&gt; &lt;/blockquote&gt; &lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;p&gt;Like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;int compareResult = string.Compare(myValue, true.ToString(), StringComparison.OrdinalIgnoreCase);&lt;/p&gt; &lt;/blockquote&gt; &lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;p&gt;Two things.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Explicit control over casing, nothing is assumed.&lt;/li&gt;    &lt;li&gt;No magic hard coded string i.e. true.ToString() versus “true”.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Note that true.ToString() is actually “True”.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-6564862933608826866?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/6564862933608826866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=6564862933608826866' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/6564862933608826866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/6564862933608826866'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/08/string-comparison-in-net.html' title='String Comparison in .NET'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-1268421121000973884</id><published>2011-08-03T20:54:00.001+01:00</published><updated>2011-08-03T20:54:21.382+01:00</updated><title type='text'>Finding duplicate SPNs</title><content type='html'>&lt;p&gt;You can’t have duplicate Service Principal Names (SPNs), its just not allowed. An SPN with a duplicate will not work. To find all duplicate SPNs in your domain, simply run the following:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;setspn.exe –x&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And that is it.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-1268421121000973884?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/1268421121000973884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=1268421121000973884' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/1268421121000973884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/1268421121000973884'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/08/finding-duplicate-spns.html' title='Finding duplicate SPNs'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-2605220609414136918</id><published>2011-08-02T23:29:00.001+01:00</published><updated>2011-08-03T20:51:38.413+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>ThoughtWorks Technology Radar July 2011</title><content type='html'>&lt;p&gt;&lt;a href="http://www.thoughtworks.com/articles/technology-radar-july-2011"&gt;http://www.thoughtworks.com/articles/technology-radar-july-2011&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Highlights...&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Continuous delivery&lt;/strong&gt;     &lt;br /&gt;Maximise automation including “infrastructure as code” (see below), environment management and deployment automation. This is about taking control of your deployment process, reducing time the taken to get changes into production from weeks or months to days (or less). This is different from the recent concept of “continuous deployment” which is about putting every change into production (though while different, continuous delivery and continuous deployment dovetail well).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Infrastructure as code&lt;/strong&gt;     &lt;br /&gt;Treat your infrastructure configuration the same as you would treat source code – source control, versioning, push out changes to the data centre in an automated manner.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;DevOps&lt;/strong&gt;     &lt;br /&gt;Fostering collaboration between your development and operations teams.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;HTML5&lt;/strong&gt;     &lt;br /&gt;Now a viable alternative to native applications and is cross platform.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Stored Procedures&lt;/strong&gt;     &lt;br /&gt;I will quote directly:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;“&lt;em&gt;It is startling to us that we continue to find new systems in 2011 that implement significant business logic in stored procedures. Programming languages commonly used to implement stored procedures lack expressiveness, are difficult to test, and discourage clean modular design. You should only consider stored procedures executing within the database engine in exceptional circumstances, where there is a proven performance issue.&lt;/em&gt;”&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So stored procedures are almost always bad.    &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-2605220609414136918?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/2605220609414136918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=2605220609414136918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2605220609414136918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2605220609414136918'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/08/thoughtworks-technology-radar-july-2011.html' title='ThoughtWorks Technology Radar July 2011'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-218226274785515372</id><published>2011-07-08T22:41:00.001+01:00</published><updated>2011-07-08T22:41:12.267+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>“NewSQL”</title><content type='html'>&lt;p&gt;Someone else agrees with me that &lt;a href="http://gigaom.com/cloud/facebook-trapped-in-mysql-fate-worse-than-death/" target="_blank"&gt;getting rid of ACID is a bad idea&lt;/a&gt;. Enter “&lt;a href="http://blogs.the451group.com/information_management/2011/04/06/what-we-talk-about-when-we-talk-about-newsql/" target="_blank"&gt;NewSQL&lt;/a&gt;”.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-218226274785515372?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/218226274785515372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=218226274785515372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/218226274785515372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/218226274785515372'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/07/newsql.html' title='“NewSQL”'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-2146753303938916943</id><published>2011-06-07T00:10:00.001+01:00</published><updated>2011-06-07T00:10:18.941+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Microsoft Web Platform Installer</title><content type='html'>&lt;p&gt;I have to admit at being very sceptical about the &lt;a href="http://www.microsoft.com/web/downloads/platform.aspx" target="_blank"&gt;Microsoft Web Platform Installer&lt;/a&gt;, thinking it was just for &lt;a href="http://en.wikipedia.org/wiki/Newbie" target="_blank"&gt;noobs&lt;/a&gt;. Recently, I was nudged down the path of using it (to get the Windows Azure Tools) and I have to say it works very well. Rather than fishing around for various installers, you just pick what you want from the lists (see below) and the Web Platform Installer will go away and install everything for you. There’s no need to mess around downloading MSIs yourself.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-KjxMaX_PEbs/Te1eVfryA_I/AAAAAAAAAEg/NJXiSybdMj0/s1600-h/image%25255B4%25255D.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://lh6.ggpht.com/-0mpi7wQTM0k/Te1eWWnPd4I/AAAAAAAAAEk/6VEP0Yowon4/image_thumb%25255B2%25255D.png?imgmax=800" width="653" height="453" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The Web Platform Installer offers a comprehensive list of developer frameworks, servers and tools. In addition, it offers various products such as DotNetNuke, WordPress, Umbraco CMS, ScrewTurn Wiki, N2 CMS etc.&lt;/p&gt;  &lt;p&gt;The Web Platform Installer has a tiny footprint too.&lt;/p&gt;  &lt;p&gt;Great stuff.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-2146753303938916943?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/2146753303938916943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=2146753303938916943' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2146753303938916943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2146753303938916943'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/06/microsoft-web-platform-installer.html' title='Microsoft Web Platform Installer'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-0mpi7wQTM0k/Te1eWWnPd4I/AAAAAAAAAEk/6VEP0Yowon4/s72-c/image_thumb%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-8162743445730392310</id><published>2011-06-06T20:31:00.001+01:00</published><updated>2011-06-06T20:31:00.601+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Using the cloud to crack passwords?</title><content type='html'>&lt;p&gt;There’s been much talk recently of using the processing power of the cloud, perhaps &lt;a href="http://aws.amazon.com/ec2/spot-instances/" target="_blank"&gt;Amazon EC2 spot instances&lt;/a&gt;, to &lt;a href="http://www.theregister.co.uk/2009/11/02/amazon_cloud_password_cracking/" target="_blank"&gt;crack passwords&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Why &lt;a href="http://it.slashdot.org/story/11/06/05/2028256/Cheap-GPUs-Rendering-Strong-Passwords-Useless" target="_blank"&gt;bother&lt;/a&gt;? A cheap local GPU will do the job.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="600"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;strong&gt;Password&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="186"&gt;&lt;strong&gt;Time to crack&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="212"&gt;&amp;nbsp;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&amp;nbsp;&lt;/td&gt;        &lt;td valign="top" width="186"&gt;&lt;strong&gt;CPU&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="212"&gt;&lt;strong&gt;GPU&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="201"&gt;fjR8n&lt;/td&gt;        &lt;td valign="top" width="186"&gt;24 seconds&lt;/td&gt;        &lt;td valign="top" width="212"&gt;&amp;lt;1 second&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="201"&gt;pYDbL6&lt;/td&gt;        &lt;td valign="top" width="186"&gt;1 hour 30 minutes&lt;/td&gt;        &lt;td valign="top" width="212"&gt;4 seconds&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="201"&gt;fh0GH5h&lt;/td&gt;        &lt;td valign="top" width="186"&gt;~4 days&lt;/td&gt;        &lt;td valign="top" width="212"&gt;17 minutes 30 seconds&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Seven character passwords are pretty common. Mixing upper case letters and numbers doesn’t really help.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-8162743445730392310?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/8162743445730392310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=8162743445730392310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/8162743445730392310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/8162743445730392310'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/06/using-cloud-to-crack-passwords.html' title='Using the cloud to crack passwords?'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-7435296178420564267</id><published>2011-06-03T16:29:00.001+01:00</published><updated>2011-06-06T20:02:30.331+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Windows 8</title><content type='html'>&lt;p&gt;The &lt;a href="http://www.liveside.net/2011/06/01/windows-8-tablet-interface-unveiled-at-allthingsd-d9-conference-and-computex/" target="_blank"&gt;world changes&lt;/a&gt;. Here’s the best analysis I’ve read.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;“…&lt;em&gt;So if you're running an existing PC hardware or software company, ask yourself how a new competitor could use the platform transition to challenge your current products.&amp;#160; Here's a sobering thought to keep you awake tonight: the odds are that the challengers will win.&amp;#160; The company most at risk from this change is the largest vendor of Windows apps, Microsoft itself.&amp;#160; Microsoft Office must be completely rethought for the new paradigm.&amp;#160; You have about 18 months, guys.&amp;#160; Good luck.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;em&gt;By the way, web companies are also at risk.&amp;#160; Your web apps are designed for a browser-centric, mouse-driven user experience.&amp;#160; What happens to your app when the browser melts into the OS, and the UI is driven by touch?&amp;#160; If you think this change doesn't affect you, I have an old copy of WordStar that you can play with.&amp;#160; Google and Facebook, I am talking to you.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;If you're running a hardware company, how will you need to change your devices to take advantage of the new OS?&amp;#160; Shipping a device that isn't Windows 8 ready will soon be as risky as shipping a PC in 1993 that couldn't connect a mouse.&amp;#160; (Unfortunately, because Windows 8 is so far out, I don't know if Microsoft has even fully defined the hardware spec for a Windows 8 PC.&amp;#160; The OS cries out for a flat panel screen that docks, so you can use it on your lap or as a monitor. Microsoft has a lot of work to do, and the PC vendors will face a lot of uncertainty.)…&lt;/em&gt;”&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://mobileopportunity.blogspot.com/2011/06/windows-8-beginning-of-end-of-windows.html"&gt;http://mobileopportunity.blogspot.com/2011/06/windows-8-beginning-of-end-of-windows.html&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Update:&lt;/p&gt;  &lt;p&gt;Some people &lt;a href="http://forums.silverlight.net/forums/p/230502/562113.aspx" target="_blank"&gt;aren’t&lt;/a&gt; &lt;a href="http://channel9.msdn.com/posts/A-quick-look-at-Windows-8" target="_blank"&gt;happy&lt;/a&gt;. Get a &lt;a href="http://www.zdnet.com/blog/microsoft/microsoft-needs-to-tell-windows-8-developers-now-about-jupiter-and-silverlight/9608" target="_blank"&gt;grip&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-7435296178420564267?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/7435296178420564267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=7435296178420564267' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/7435296178420564267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/7435296178420564267'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/06/windows-8.html' title='Windows 8'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-6917669501496512795</id><published>2011-03-20T00:47:00.001Z</published><updated>2011-03-20T00:47:45.041Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>SQL Server Service Broker simple example</title><content type='html'>&lt;p&gt;I had a reason to use SQL Server Service Broker (SSSB) again recently. It’s a queuing mechanism built into SQL Server (from SQL Server 2005). It’s a great solution for providing messaging integration patterns with legacy databases.&lt;/p&gt;  &lt;p&gt;It’s been a while since I used it and getting it working is a bit tricky the first time (or when you’ve forgotten the details). A very simple example to set-up SSSB is as follows:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;CREATE DATABASE [YourDatabase]       &lt;br /&gt;GO&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;USE [YourDatabase]       &lt;br /&gt;GO&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;ALTER DATABASE [YourDatabase] SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;CREATE MESSAGE TYPE [YourMessage] VALIDATION = WELL_FORMED_XML;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;CREATE CONTRACT [YourMessageContract] ([YourMessage] SENT BY ANY );&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;CREATE QUEUE [dbo].[YourMessageSendingQueue] WITH STATUS=ON, RETENTION=OFF;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;CREATE QUEUE [dbo].[YourMessageReceivingQueue] WITH STATUS=ON, RETENTION=OFF;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;CREATE SERVICE [YourMessageSendingService] ON QUEUE [dbo].[YourMessageSendingQueue]([YourMessageContract]);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;CREATE SERVICE [YourMessageReceivingService] ON QUEUE [dbo].[YourMessageReceivingQueue]([YourMessageContract]);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;DECLARE @Message xml        &lt;br /&gt;SET @Message= '&amp;lt;MyMessage&amp;gt;blah&amp;lt;/MyMessage&amp;gt;'         &lt;br /&gt;DECLARE @handle uniqueidentifier         &lt;br /&gt;BEGIN DIALOG CONVERSATION @handle         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM SERVICE YourMessageSendingService         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; TO SERVICE 'YourMessageReceivingService'         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ON CONTRACT YourMessageContract         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WITH ENCRYPTION = OFF;         &lt;br /&gt;SEND ON CONVERSATION @handle MESSAGE TYPE YourMessage (@Message)         &lt;br /&gt;END CONVERSATION @handle WITH CLEANUP;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;RECEIVE TOP (1) CAST([message_body] AS XML)        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM YourMessageReceivingQueue; &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;USE master       &lt;br /&gt;GO&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;DROP DATABASE [YourDatabase]       &lt;br /&gt;GO&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Notes:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The “SET ENABLE_BROKER” is called with “ROLLBACK IMMEDIATE” because of &lt;a href="http://stackoverflow.com/questions/1094202/enable-sql-server-broker-taking-too-long-time" target="_blank"&gt;this&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;The validation on the Message Type is “WELL_FORMED_XML” which does as described. If you want schema validation you can do but it gets complicated.&lt;/li&gt;    &lt;li&gt;You can use encryption but then you need to create and manage Master Keys.&lt;/li&gt;    &lt;li&gt;For communication between SQL Server instances, you need to create Routes.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-6917669501496512795?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/6917669501496512795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=6917669501496512795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/6917669501496512795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/6917669501496512795'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/03/sql-server-service-broker-simple.html' title='SQL Server Service Broker simple example'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-1558051847901952776</id><published>2011-03-16T20:12:00.001Z</published><updated>2011-03-16T20:12:31.370Z</updated><title type='text'>Changing the collation on an existing SQL Server 2008 instance</title><content type='html'>&lt;p&gt;If you have a SQL Server 2008 installation and wish to change the collation, you can run the following:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;setup.exe /ACTION=REBUILDDATABASE /QUIET /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=MyDomain\MyAccount /SQLCOLLATION=SomeCollation&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Where “MSSQLSERVER” is the default instance name (you can change this to a named instance) and the rest of the parameters are fairly self explanatory.&lt;/p&gt;  &lt;p&gt;Note that user databases will not be updated, only the system databases (Master etc).&lt;/p&gt;  &lt;p&gt;To update any user databases you need to:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Export all data from user databases using something like the BCP utility. &lt;/li&gt;    &lt;li&gt;Drop all user databases &lt;/li&gt;    &lt;li&gt;Update collation using above command &lt;/li&gt;    &lt;li&gt;Create user databases &lt;/li&gt;    &lt;li&gt;Import the data that you exported &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Note that a back-up and restore of user databases does not work. In that scenario you simply restore the previous collation. You need to create an entirely new database and import the data.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-1558051847901952776?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/1558051847901952776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=1558051847901952776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/1558051847901952776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/1558051847901952776'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/03/changing-collation-on-existing-sql.html' title='Changing the collation on an existing SQL Server 2008 instance'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-7237518200074114578</id><published>2011-02-10T01:26:00.001Z</published><updated>2011-02-10T01:26:02.875Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Vendors</title><content type='html'>&lt;p&gt;[Vendor representative],&lt;/p&gt;  &lt;p&gt;I knew at the start of this process you were unlikely to change your implementation soon, certainly not within timescales which we could take advantage of for our delivery. However, I strongly disagree with your comments around SOAP Faults.&lt;/p&gt;  &lt;p&gt;Your current implementation makes it difficult for consumers to work with your API and creates significant additional work to deal with error conditions returned from the API. When your service returns a response and I have to interrogate that response to find out if the request was successful, this is extra work for me. Were your service to return SOAP Faults, I can do something like the following (this is code from an internally developed web service at [my employer]):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;try       &lt;br /&gt;{        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FindResponse findResponse = userService.Find(findRequest);        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Session[&amp;quot;LoggedInUser&amp;quot;] = findResponse.User;        &lt;br /&gt;}        &lt;br /&gt;catch (FaultException&amp;lt;UserNotFoundFault&amp;gt;)        &lt;br /&gt;{        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // rather than quit just return the user being unknown        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; User user = new User();        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; user.Fullname = &amp;quot;Unknown User&amp;quot;;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Session[&amp;quot;LoggedInUser&amp;quot;] = user;        &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You can see that I am able to deal with the SOAP Fault returned from the User Service using normal exception handling. In this particular use case, the application does not care that the user is not found and can continue. Other consumers of the User Service may choose to act differently, maybe the user not being found is a problem for other consumers and they can act accordingly.&lt;/p&gt;  &lt;p&gt;Where I have to examine the response from a service to see if it was successful or not (as in the case of the [vendor] services) I have to start examining response objects rather than using exception handling. This is unnatural and prone to bugs. This creates unnecessary work for me as a consumer of your service (extra development, extra testing).&lt;/p&gt;  &lt;p&gt;Using SOAP Faults, I can also deal with different error conditions easily:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; try     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Call some service      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; catch (FaultExcpetion&amp;lt;BusinessErrorA&amp;gt;)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Do some corrective action      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; catch (FaultExcpetion&amp;lt;BusinessErrorB&amp;gt;)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Do some other corrective action      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; catch (FaultExcpetion&amp;lt;BusinessErrorC&amp;gt;)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Do something else      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;I have no such options with your service and I have to jump through hoops to look at the response object to find out what happened.&lt;/p&gt;  &lt;p&gt;The problem is compounded further when using BPM/integration/messaging platforms like BizTalk. In BizTalk there are standard Orchestration steps/tasks to deal with exceptions. However, the lack of SOAP Faults in your service means there are no exceptions so I have to devise a custom solution to see if there was an error in the response object. Again, this creates yet more work for me the consumer of your service.&lt;/p&gt;  &lt;p&gt;Furthermore, the error messages you provide are simply serialised exceptions, many of them are not helpful. We have seen your service return a “Null Reference Exception” which simply says “Object reference not set to an instance of an object”. As the consumer of your service, what am I supposed to do with that information? What remedial action can I take? I don’t know because I have no way to know what went wrong. Looking at the User Service example above I know what errors to expect (the SOAP Faults in the service contract) so I know what the business logic should be for the consumer. Even when your service might return a helpful error message, I have no way of knowing I will get it without the trial and error of calling your service to find out. Again, this is more work for me.&lt;/p&gt;  &lt;p&gt;I’ll re-iterate my previous comments that as per the SOAP specification, errors should be returned as SOAP Faults (&lt;a href="http://www.w3.org/TR/soap12-part1/#soapfault)"&gt;http://www.w3.org/TR/soap12-part1/#soapfault)&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;It may be more effort for you to provide SOAP Faults in your service contract but as the publisher of a service it is your responsibility to do so. As a consumer your service, who is paying for the product, I expect you to do so. Yes, SOAP Faults mean you have a standard set of error messages. If you are unable to provide these because you do not know all of your error conditions, as a publisher of a service, you have bigger problems. This also links back to creating a lot of work for the consumer of your services. If you do not publish the list of error conditions, that does not mean error conditions do not exist, it means your consumers have to find them by trial and error.&lt;/p&gt;  &lt;p&gt;You have shifted the cost of maintaining a set of SOAP Faults from yourself to the consumer who must come up with a custom way to find out if there is an error, work out the fault conditions by trial and error and guess at what remedial actions might be. This creates a lot of extra development and testing for consumers. As a consumer of your service, who is paying for it, I am less than happy with this.&lt;/p&gt;  &lt;p&gt;I strongly suggest you reconsider your position for future releases of your product.&lt;/p&gt;  &lt;p&gt;Regards,&lt;/p&gt;  &lt;p&gt;Callum&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-7237518200074114578?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/7237518200074114578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=7237518200074114578' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/7237518200074114578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/7237518200074114578'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/02/vendors.html' title='Vendors'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-9074978658642057259</id><published>2011-01-25T21:08:00.001Z</published><updated>2011-01-25T21:08:11.141Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Configuring TFS 2010 with SharePoint 2010</title><content type='html'>&lt;p&gt;Some link juice for this guy: &lt;a title="http://blog.hinshelwood.com/archive/2010/05/03/integrate-sharepoint-2010-with-team-foundation-server-2010.aspx" href="http://blog.hinshelwood.com/archive/2010/05/03/integrate-sharepoint-2010-with-team-foundation-server-2010.aspx"&gt;http://blog.hinshelwood.com/archive/2010/05/03/integrate-sharepoint-2010-with-team-foundation-server-2010.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;His instructions worked perfectly, no gotchas encountered.&lt;/p&gt;  &lt;p&gt;Not sure I like what Microsoft has done with Team Build in TFS2010 though.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-9074978658642057259?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/9074978658642057259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=9074978658642057259' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/9074978658642057259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/9074978658642057259'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/01/configuring-tfs-2010-with-sharepoint.html' title='Configuring TFS 2010 with SharePoint 2010'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-952002670122408013</id><published>2011-01-12T04:25:00.001Z</published><updated>2011-01-12T04:25:06.691Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>The size of Amazon’s cloud</title><content type='html'>&lt;p&gt;According to a &lt;a href="http://www.economist.com/node/17797794?story_id=17797794" target="_blank"&gt;recent article from The Economist&lt;/a&gt;, it is estimated that Amazon are adding 90,000 virtual machines to their cloud every day.&lt;/p&gt;  &lt;p&gt;That is a staggering number and (as the article notes) suggests that Amazon’s cloud is a bigger business than previously though.&lt;/p&gt;  &lt;p&gt;The second cool thing in the article is the description of how the estimate was made. The “serial numbers” of the virtual machines were decrypted allowing for an accurate estimate to be made (I assume the serial number contains some sort of incrementing number). As is also noted in the article, this technique was similar to how the allies estimated the number of German tanks in existence in World War 2. This information was required to determine the feasibility of the Normandy landings – too many tanks would have made the landings a no-go. Relying on remorseless German efficiency and process, the allies used the serial numbers of captured German tanks to guess how many of them were being produced per month. The allies estimated 256, German records discovered later showed it to be 255.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-952002670122408013?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/952002670122408013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=952002670122408013' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/952002670122408013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/952002670122408013'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2011/01/size-of-amazons-cloud.html' title='The size of Amazon’s cloud'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-4083110338220976216</id><published>2010-12-02T01:07:00.001Z</published><updated>2010-12-02T01:07:34.227Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Windows Server 2008 as a workstation (Part 5)</title><content type='html'>&lt;p&gt;Following on from my previous &lt;a href="http://callumhibbert.blogspot.com/2009/01/windows-server-2008-as-workstation-part.html" target="_blank"&gt;posts&lt;/a&gt;…&lt;/p&gt;  &lt;p&gt;Windows Server 2008 runs pretty well on a laptop, even the 64 bit version - providing the vendor supplies the drivers. Even if they don’t, the Windows 7 or Windows Vista drivers usually work okay.&lt;/p&gt;  &lt;p&gt;If you have the 64-bit version of Windows Server 2008 you then have the option of installing the Hyper-V Role (Hyper-V is 64-bit only).&lt;/p&gt;  &lt;p&gt;However, after installing the Hyper-V Role you loose the ability for your laptop to hibernate. This is a bit of pain.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-4083110338220976216?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/4083110338220976216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=4083110338220976216' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4083110338220976216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4083110338220976216'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2010/12/windows-server-2008-as-workstation-part.html' title='Windows Server 2008 as a workstation (Part 5)'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-2956032428099572203</id><published>2010-11-24T00:54:00.001Z</published><updated>2010-11-24T00:54:59.571Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Troubleshooting Kerberos Delegation</title><content type='html'>&lt;p&gt;Historically, there has been two things I have used when troubleshooting Kerberos delegation issues:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The “&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=99b0f94f-e28a-4726-bffe-2f64ae2f59a2&amp;amp;displaylang=en" target="_blank"&gt;Troubleshooting Kerberos Delegation&lt;/a&gt;” document from Microsoft. Following this document through carefully has almost always solved my problem.&lt;/li&gt;    &lt;li&gt;The KerbTray application from the “&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9D467A69-57FF-4AE7-96EE-B18C4790CFFD&amp;amp;displaylang=en" target="_blank"&gt;Windows Server 2003 Resource Kit Tools&lt;/a&gt;” (works for Windows Server 2008).&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The other day I found a fantastic tool called “&lt;a href="http://www.iis.net/community/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1434" target="_blank"&gt;DelegConfig&lt;/a&gt;” which appears to have been authored by a Microsoft Support engineer. The tool allows you to set-up a web application which will diagnose your Kerberos configuration. This means it’s only really relevant for troubleshooting Kerberos delegation under IIS but I cannot recommend it enough. More information &lt;a href="http://blogs.iis.net/bretb/archive/2008/03/27/How-to-Use-DelegConfig.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;There appears to be a “&lt;a href="http://www.iis.net/community/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1887" target="_blank"&gt;DelegConfig v2 (beta)&lt;/a&gt;” but I have not tested it. More information &lt;a href="http://blogs.iis.net/brian-murphy-booth/archive/2009/04/22/delegconfig-v2-beta.aspx" target="_blank"&gt;here&lt;/a&gt;, it appears to better support IIS 7.0.&lt;/p&gt;  &lt;p&gt;When configuring DelegConfig, remember to set the AppPool running the DelegConfig web application to the same account as the one you want to use to perform the delegation.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Kerberos Delegation with IIS 7.0&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Under IIS 7.0 you need to watch out for “Kernel Mode Authentication”, there is a very good post on the subject &lt;a href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/02/12/16189.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;To change your settings as per the above link, you need to change the values in the “applicationHost.config” file (you cannot set the value in your application’s web.config as that configuration section is locked. You can find the file here:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;%systemdrive%\Windows\System32\inetsrv\config\applicationHost.config&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You might also want to &lt;a href="http://support.microsoft.com/kb/896861" target="_blank"&gt;disable the loopback check&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-2956032428099572203?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/2956032428099572203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=2956032428099572203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2956032428099572203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2956032428099572203'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2010/11/troubleshooting-kerberos-delegation.html' title='Troubleshooting Kerberos Delegation'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-5514872574246573695</id><published>2010-11-18T23:51:00.001Z</published><updated>2010-11-18T23:51:44.324Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>The various types of Cloud offerings</title><content type='html'>&lt;p&gt;There are three main types of Cloud offerings, these are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Infrastructure-as-a-Service&lt;/strong&gt; (IaaS) provides basic compute and storage resources. Vendors in this space include Amazon (with it's EC2 product).&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Platform-as-a-Service&lt;/strong&gt; (PaaS) provides an application services framework. Vendors in this space include Microsoft (with Azure), Google (with Google Apps Engine) and Salesforce (with Force.com).&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Software-as-a-Service&lt;/strong&gt; (SaaS) provides complete applications. Vendors in this space include Microsoft (with Office 365), Google (with GMail/Google Docs/Google Apps) and SalesForce (with Salesforce.com).&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Each offers an increasing level of abstraction, with SaaS, being the highest level of abstraction, delivering shrink wrapped products with little room for customisation.&lt;/p&gt;  &lt;p&gt;Note the distinctions between the three, each is a very different offering with very distinct characteristics. Matching your requirements against the type of offering allows you to narrow down the list of appropriate vendors dramatically.&lt;/p&gt;  &lt;p&gt;Notice also the delineation between the IaaS and PaaS/SaaS vendors. The PaaS vendors generally also have SaaS offerings (using their platform to deliver software) but there's no major vendor with offerings that cross over from IaaS to PaaS/SaaS.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-5514872574246573695?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/5514872574246573695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=5514872574246573695' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5514872574246573695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5514872574246573695'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2010/11/various-types-of-cloud-offerings.html' title='The various types of Cloud offerings'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-3217532302389407147</id><published>2010-10-28T00:26:00.001+01:00</published><updated>2010-10-28T00:26:02.339+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>How not to namespace (Part 1)</title><content type='html'>&lt;p&gt;This is always something that bugs me. Consider the following Visual Studio projects:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Acme.PetShop.Common&lt;/li&gt;    &lt;li&gt;Acme.PetShop.Data&lt;/li&gt;    &lt;li&gt;Acme.PetShop.Services&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;What is the “Common” suffix for? I don’t see the point (at all). Namespaces are logical groupings, the “common” namespace is “Acme.PetShop”. The Visual Studio projects should be as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Acme.PetShop&lt;/li&gt;    &lt;li&gt;Acme.PetShop.Data&lt;/li&gt;    &lt;li&gt;Acme.PetShop.Services&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;“Acme.PetShop” is common to “Acme.PetShop.Data” and “Acme.PetShop.Services”.&lt;/p&gt;  &lt;p&gt;There is additional reasoning. For any supporter of the “Acme.PetShop.Common” namespace, I would ask you what is the distinction or rule for putting types in an “Acme.PetShop.Common” namespace and putting types in an “Acme.PetShop” namespace? I am willing to bet you cannot come up with such a distinction or rule. The “Acme.PetShop” namespace always exists by virtue that the “Acme.PetShop.Data” and “Acme.PetShop.Services” namespace exist.&lt;/p&gt;  &lt;p&gt;Furthermore, you won’t be able to find a “Common” namespace anywhere in the .NET Framework Base Class Libraries (I have checked).&lt;!--EndFragment--&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-3217532302389407147?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/3217532302389407147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=3217532302389407147' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/3217532302389407147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/3217532302389407147'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2010/10/how-not-to-namespace-part-1.html' title='How not to namespace (Part 1)'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-5441514979841338671</id><published>2010-10-25T23:36:00.001+01:00</published><updated>2010-10-25T23:36:32.662+01:00</updated><title type='text'>Timeouts to the subscription database when starting NServiceBus</title><content type='html'>&lt;p&gt;When using durable subscription storage (using a database), when starting NServiceBus you may see the following errors logged:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;NHibernate.Util.ADOExceptionReporter {log4net:HostName=MyHost} - NHibernate.ADOException: While preparing SELECT this_.SubscriberEndpoint as y0_ FROM [Subscription] this_ WHERE this_.MessageType in (@p0) an error occurred ---&amp;gt; System.InvalidOperationException: Timeout expired.&amp;#160; &lt;font color="#ff0000"&gt;The timeout period elapsed prior to obtaining a connection from the pool.&amp;#160; This may have occurred because all pooled connections were in use and max pool size was reached&lt;/font&gt;.&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;NHibernate.Util.ADOExceptionReporter {log4net:HostName=MyHost} - While preparing SELECT this_.SubscriberEndpoint as y0_ FROM [Subscription] this_ WHERE this_.MessageType in (@p0) an error occurred&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;NHibernate.Util.ADOExceptionReporter {log4net:HostName=MyHost} - System.InvalidOperationException: Timeout expired.&amp;#160; &lt;font color="#ff0000"&gt;The timeout period elapsed prior to obtaining a connection from the pool.&amp;#160; This may have occurred because all pooled connections were in use and max pool size was reached&lt;/font&gt;.&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;NHibernate.Util.ADOExceptionReporter {log4net:HostName=MyHost} - Timeout expired.&amp;#160; &lt;font color="#ff0000"&gt;The timeout period elapsed prior to obtaining a connection from the pool.&amp;#160; This may have occurred because all pooled connections were in use and max pool size was reached&lt;/font&gt;.&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;NServiceBus.Unicast.UnicastBus {log4net:HostName=MyHost} - MyHostFailed handling message.       &lt;br /&gt;System.InvalidOperationException: Timeout expired.&amp;#160; &lt;font color="#ff0000"&gt;The timeout period elapsed prior to obtaining a connection from the pool.&amp;#160; This may have occurred because all pooled connections were in use and max pool size was reached&lt;/font&gt;.&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;NServiceBus.Unicast.Transport.Msmq.MsmqTransport {log4net:HostName=MyHost} - Failed raising 'transport message received' event for message with ID=00000000-0000-0000-0000-000000000000\000000       &lt;br /&gt;System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---&amp;gt; NHibernate.ADOException: While preparing SELECT this_.SubscriberEndpoint as y0_ FROM [Subscription] this_ WHERE this_.MessageType in (@p0) an error occurred ---&amp;gt; System.InvalidOperationException: Timeout expired.&amp;#160; &lt;font color="#ff0000"&gt;The timeout period elapsed prior to obtaining a connection from the pool.&amp;#160; This may have occurred because all pooled connections were in use and max pool size was reached&lt;/font&gt;.&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;NServiceBus.Unicast.Transport.Msmq.MsmqTransport {log4net:HostName=MyHost} - Message has failed the maximum number of times allowed, ID=00000000-0000-0000-0000-000000000000\000000.&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The problem here is to do with having a lot of logical messages in a single physical message and that physical message is the first one that is received by NServiceBus after starting up.&lt;/p&gt;  &lt;p&gt;In NServiceBus, you can send multiple message instances at once. You can do this by calling “IBus.Publish(IMessage[])”. These multiple message instances are wrapped up into a single physical message. There does not appear to be any hard limit on the number of logical messages that can be put into a single physical message. You can, therefore, send a lot of logical messages in a single physical message.&lt;/p&gt;  &lt;p&gt;When NServiceBus starts up and receives the first physical message, if you are using durable subscription storage (using a database), NServiceBus will look up the subscriptions from the subscriptions database (so that it knows where to send the message). Once the subscriptions list is initialised, it is stored in memory so there are no subsequent database look-ups. Note that new subscriptions are received via messages, so the subscription list in memory will be kept up to date as subscriptions are added (when a new subscription is received it is added to the in-memory list and written to the subscription database).&lt;/p&gt;  &lt;p&gt;NServiceBus will perform the subscription database look-up for every logical message in the first physical message it receives, opening a connection to the subscription database for each logical message. It appears that NServiceBus will not close the connection to the subscription database until it has finished processing the message. All logical messages must be processed within the same operation when they are contained in a single physical message. Should you have more logical messages than the maximum database connection pool size, the operation will not complete (it will timeout).&lt;/p&gt;  &lt;p&gt;For example, let’s say your connection string for the subscription database allows 100 connections in the connection pool but you have 150 logical messages in the first physical message that is received. As the message is the first received, NServiceBus needs to look up the subscriptions. So NServiceBus try to will open 150 connections to the subscription database, it will successfully open 100. When processing the 101st logical message, it will not be able to establish a connection because there are 100 open connections and that is the maximum allowed (the first 100 connections will not be closed until the whole operation on the physical message is completed). The operation to establish the 101st connection will timeout. The whole operation on the physical message will be considered to have failed, any transactions will be rolled back and the physical message will be re-tried the configured number of times (with each re-try failing for the same reason). Eventually the physical message will be sent to the error queue and the next physical message will be processed.&lt;/p&gt;  &lt;p&gt;Should a subsequent physical message be processed successfully (i.e. one with less logical messages than allowed database connections), you can re-try your physical message with a large number of logical messages and it will also be processed successfully (because the subscriptions list will already be initialised in memory at that point).&lt;/p&gt;  &lt;p&gt;The short-term work around is to have less logical messages than you have allowed database connections (for that first message). The default connection pool size is 100, so that is the limit. I am looking for a long term solution, I think this is a bug in NServiceBus.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-5441514979841338671?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/5441514979841338671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=5441514979841338671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5441514979841338671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5441514979841338671'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2010/10/timeouts-to-subscription-database-when.html' title='Timeouts to the subscription database when starting NServiceBus'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-7876204171450662556</id><published>2010-10-18T23:32:00.001+01:00</published><updated>2010-10-18T23:32:09.865+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Visual Studio 2008 fails to create BizTalk 2009 project</title><content type='html'>&lt;p&gt;I got bitten by this (again) on my new machine, putting this note here for my own reference as much as anything.&lt;/p&gt;  &lt;p&gt;When attempting to create a BizTalk 2009 project in Visual Studio 2008…&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;File –&amp;gt; New Project… –&amp;gt; [Any BizTalk Project Template]&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;or&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;(From Solution) Add –&amp;gt; New Project… –&amp;gt; [Any BizTalk Project Template]&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;…you might get presented with the following error message:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;Creating project ‘[Project name]’… project creation failed.&lt;/em&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;When you install Service Pack 1 for VS2008 it seems to overwrite a Registry key used by the BizTalk 2009 SDK. Putting the Registry key back to its original value fixes the problem.&lt;/p&gt;  &lt;p&gt;The safest way to achieve this is to repair the BizTalk 2009 installation after installing Service Pack 1 for VS2008. The repair only takes a few moment to run (or at least it did for me). Some on-line resources suggest fixing the Registry key manually but I have trust issues with that and so long as you have the BizTalk 2009 ISO on hand, the repair operation takes about the same amount of time as opening RegEdit.exe and finding the right key (making sure you get the correct 32/64-bit Registry key).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-7876204171450662556?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/7876204171450662556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=7876204171450662556' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/7876204171450662556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/7876204171450662556'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2010/10/visual-studio-2008-fails-to-create.html' title='Visual Studio 2008 fails to create BizTalk 2009 project'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-6576220268519658506</id><published>2010-10-15T18:41:00.001+01:00</published><updated>2010-10-15T18:41:47.310+01:00</updated><title type='text'>What is coupling?</title><content type='html'>&lt;p&gt;Coupling is a measure of dependencies. Where Component A depends on Component B, coupling exists.&lt;/p&gt;  &lt;p&gt;The direction of coupling matters, there are two kinds:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Afferent – who depends on you. &lt;/li&gt;    &lt;li&gt;Efferent – who you depend on. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There are characteristics and rules of thumb for different coupling “signatures”. For example:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;An “&lt;a href="http://en.wikipedia.org/wiki/Observer_pattern" target="_blank"&gt;Observer&lt;/a&gt;” class might have lots of efferent coupling but no afferent coupling i.e. the Observer will depend on lots of classes but few (or perhaps no) classes will depend on the observer. This is okay, it is probably expected. &lt;/li&gt;    &lt;li&gt;Conversely, a framework component might have lots of afferent coupling but no efferent coupling i.e. lots of components might depend on the framework but the framework will depend on few (or perhaps no) components itself. Again, this is okay and is probably expected. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You may find coupling patterns within your application, depending on the specifics of your business domain.&lt;/p&gt;  &lt;p&gt;When measured in this way, coupling becomes a useful metric. It enables you to ask questions lik&lt;em&gt;e “If I change Component A, how many components will this impact?&lt;/em&gt;”. This information allows you to assess risk when making changes, therefore you are able to determine if you can change a component safely.&lt;/p&gt;  &lt;p&gt;You should minimise both forms of coupling but having no coupling is not possible.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-6576220268519658506?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/6576220268519658506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=6576220268519658506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/6576220268519658506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/6576220268519658506'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2010/10/what-is-coupling.html' title='What is coupling?'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-4523752723970959550</id><published>2010-10-14T23:30:00.000+01:00</published><updated>2010-10-14T23:30:00.094+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Silent, unattended installation of SQL Server 2008</title><content type='html'>&lt;p&gt;This is something that’s not nearly as hard as it sounds. Silent, unattended installs for any Microsoft product hang on the .ini file, the usual problem is creating these. In the SQL Server 2008 world there is a neat trick to generating your .ini file. If you run through the install wizard, on the “Ready to Install” dialog near the end you will be shown a “Configuration file path” value at the bottom of the dialog box. This is the path to the .ini file representing the configuration you just selected (which components, accounts etc.).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_atAC7wWbKfk/TLYrvnNY-FI/AAAAAAAAAEQ/rlXHscaAhwE/s1600-h/image5.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://lh3.ggpht.com/_atAC7wWbKfk/TLYrydc7fVI/AAAAAAAAAEU/CLoOWLQ49ow/image_thumb3.png?imgmax=800" width="715" height="537" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In the above summary, I’ve selected most of the features aside from SQL Server Integration Services, Report Server (I just want the Database Engine for BizTalk Server 2009). I’ve also selected a named instance and a custom installation directory for the instance (because I want to run side-by-side with SQL Server 2008 R2).&lt;/p&gt;  &lt;p&gt;Note the “Configuration file path” value and quit the installer.&lt;/p&gt;  &lt;p&gt;Take a copy of the .ini file from the path shown and put it in a simple path. You need to make the following changes:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Change the “QUIET” value from “False” to “True” (to suppress dialogs) &lt;/li&gt;    &lt;li&gt;Change the “INDICATEPROGRESS” value from “False” to “True” (to show output in the console) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Run the installer using the following command line:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font face="Courier New"&gt;C:\&amp;gt;[Path to SQL Server media]\setup.exe /CONFIGURATIONFILE=&amp;quot;[some path]\ConfigurationFile.ini&amp;quot;&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The console should present you with something like the following:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;One or more affected files have operations pending.        &lt;br /&gt;You should restart your computer to complete this process.&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Things to be aware of:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The accounts you chose for the Administrator roles are stored in the .ini file, so choose Domain Accounts/Groups or well known accounts/groups (like BUILTIN\Administrators). If you choose machine specific accounts you will have problems installing to other servers. &lt;/li&gt;    &lt;li&gt;The path to the SQL Server 2008 installation media is also stored in the .ini file so store it in a common location like a network share (and run the install wizard from this location when generating the .ini file). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You can use this strategy to ensure consistency of SQL Server installations across a team of developers or for quicker building of virtual machines.&lt;/p&gt;  &lt;p&gt;Note this technique also works with MS SQL Server 2008 R2 but you must do two things differently:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Comment out the “UIMODE” entry in the .ini file (put a “;” at the start of the line). &lt;/li&gt;    &lt;li&gt;Add the “/IAcceptSQLServerLicenseTerms” switch when calling setup.exe (no need for a value with the switch). &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-4523752723970959550?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/4523752723970959550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=4523752723970959550' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4523752723970959550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4523752723970959550'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2010/10/silent-unattended-installation-of-sql.html' title='Silent, unattended installation of SQL Server 2008'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_atAC7wWbKfk/TLYrydc7fVI/AAAAAAAAAEU/CLoOWLQ49ow/s72-c/image_thumb3.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-453816582311743447</id><published>2010-10-13T20:00:00.000+01:00</published><updated>2010-10-13T20:00:01.200+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Installing BizTalk 2009 on Windows Server 2008 R2</title><content type='html'>&lt;p&gt;Be aware you will likely hit some errors when running the configuration wizard. Typically something like:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Failed to connect to the SQL database 'SSODB' on SQL Server 'SQLServerName'        &lt;br /&gt;0x80131700 (Win32)&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;There is a known fix for this, details on Microsoft’s Knowledge Base &lt;a href="http://support.microsoft.com/kb/2252691" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In short, you need to download &lt;a href="http://go.microsoft.com/fwlink/?LinkId=195487" target="_blank"&gt;Hotfix KB2252691&lt;/a&gt; and run regasm.exe against “ssosql.dll”.&lt;/p&gt;  &lt;p&gt;Remember to run the 64-bit version of regasm.exe on 64-bit systems.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-453816582311743447?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/453816582311743447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=453816582311743447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/453816582311743447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/453816582311743447'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2010/10/installing-biztalk-2009-on-windows.html' title='Installing BizTalk 2009 on Windows Server 2008 R2'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-6679787100291178536</id><published>2010-10-12T19:59:00.000+01:00</published><updated>2010-10-11T19:59:35.932+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Package management in .NET</title><content type='html'>&lt;p&gt;Looks like Microsoft are solving the horrendous situation around package management in the .NET world. The solution is called NuPack.&lt;/p&gt;  &lt;p&gt;NuPack solves the annoying situation that when working with open source libraries you have to hunt around for the various versions, find which ones are compatible and manually add then to your solution. Manually adding open source frameworks to your solution can involve all sorts of things such as putting binaries in a “library” folder, modifying configuration files and jumping through various other hoops. Mileage varies according to framework.&lt;/p&gt;  &lt;p&gt;NuPack address most, if not all of these problems. Taking inspiration from &lt;a href="http://rubygems.org/" target="_blank"&gt;Ruby Gems&lt;/a&gt;, it manifests itself through a Visual Studio Add-In. It automates the entire process of adding an open source framework to your solution. Binaries will be downloaded from a centralised feed, your configuration files will be updated and what ever else needs to be done will be done. There’s also the neat trick that should you wish to use FrameworkX and it depends on FrameworkY, then NuPack will automatically retrieve (and configure) FrameworkY when you request FrameworkX (it will resolve a whole dependency tree for you).&lt;/p&gt;  &lt;p&gt;It has the added benefit that it does not install anything or put items in the GAC. You can add a dependency to your solution with NuPack and commit your solution to source control as normal. Should another developer then get the solution from source control everything will be there that they need, they don’t need to run NuPack themselves or even have NuPack installed. NuPack also has a PowerShell interface.&lt;/p&gt;  &lt;p&gt;It can be found on &lt;a href="http://nupack.codeplex.com/" target="_blank"&gt;CodePlex&lt;/a&gt; and the usual suspects have introductory posts &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/10/06/announcing-nupack-asp-net-mvc-3-beta-and-webmatrix-beta-2.aspx" target="_blank"&gt;here&lt;/a&gt; (ScottGu), &lt;a href="http://www.hanselman.com/blog/IntroducingNuPackPackageManagementForNETAnotherPieceOfTheWebStack.aspx" target="_blank"&gt;here&lt;/a&gt; (Hanselman) and &lt;a href="http://haacked.com/archive/2010/10/06/introducing-nupack-package-manager.aspx" target="_blank"&gt;here&lt;/a&gt; (Haack).&lt;/p&gt;  &lt;p&gt;NuPack is not the only candidate solution to this problem though, &lt;a href="http://serialseb.blogspot.com/2010/07/intro-to-what-openwrap-is.html" target="_blank"&gt;OpenWrap&lt;/a&gt; is an alternative.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-6679787100291178536?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/6679787100291178536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=6679787100291178536' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/6679787100291178536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/6679787100291178536'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2010/10/package-management-in-net.html' title='Package management in .NET'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-818128484871098454</id><published>2010-10-08T21:38:00.001+01:00</published><updated>2010-10-08T21:38:34.901+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Aiming for High Availability</title><content type='html'>&lt;p&gt;I like this…&lt;/p&gt;  &lt;p&gt;&amp;quot;&lt;em&gt;My suspicion is the number-one cause of outages is human error and after that is badly tested apps, and everything else is way down. What we ought to be focus on in terms of high availability is probably not what we are focused on at all.&lt;/em&gt;&amp;quot;&lt;/p&gt;  &lt;p&gt;- Michael Stonebraker, &lt;a href="http://www.theregister.co.uk/2010/09/13/michael_stonebraker_interview/"&gt;http://www.theregister.co.uk/2010/09/13/michael_stonebraker_interview/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-818128484871098454?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/818128484871098454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=818128484871098454' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/818128484871098454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/818128484871098454'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2010/10/aiming-for-high-availability.html' title='Aiming for High Availability'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-5399277101716125723</id><published>2010-02-04T19:40:00.001Z</published><updated>2010-02-04T19:41:58.023Z</updated><title type='text'>Only because everyone else is...</title><content type='html'>&lt;span style="font-family:arial;"&gt;The funniest Stack Overflow question ever...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/2193953/flash-cs4-refuse-to-let-go"&gt;&lt;span style="font-family:arial;"&gt;http://stackoverflow.com/questions/2193953/flash-cs4-refuse-to-let-go&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-5399277101716125723?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/5399277101716125723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=5399277101716125723' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5399277101716125723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5399277101716125723'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2010/02/only-because-everyone-else-is.html' title='Only because everyone else is...'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-48580639362611876</id><published>2009-07-09T21:24:00.001+01:00</published><updated>2009-07-09T21:24:07.966+01:00</updated><title type='text'>Data driven tests with MSTest</title><content type='html'>&lt;p&gt;You can use CSV or Excel documents as data sources to drive parameterised unit tests with MSTest. For the following class:&lt;/p&gt;  &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MyWidget&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;int&lt;/span&gt; MyBusinessLogic(&lt;span style="color: blue"&gt;int&lt;/span&gt; valueA, &lt;span style="color: blue"&gt;int&lt;/span&gt; valueB)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; valueA * valueB;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;You can write the following unit tests:&lt;/p&gt;  &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; Microsoft.VisualStudio.TestTools.UnitTesting;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;TestClass&lt;/span&gt;]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MyWidgetTests&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 10&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 11&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;DataSource&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Microsoft.VisualStudio.TestTools.DataSource.CSV&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;MyWidgetTests.csv&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;MyWidgetTests#csv&amp;quot;&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;DataAccessMethod&lt;/span&gt;.Sequential)]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 12&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; TestMyBusinessLogicWithCsv()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 13&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 14&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;int&lt;/span&gt; valueA = &lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToInt32(TestContext.DataRow[&lt;span style="color: #a31515"&gt;&amp;quot;valueA&amp;quot;&lt;/span&gt;]);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 15&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;int&lt;/span&gt; valueB = &lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToInt32(TestContext.DataRow[&lt;span style="color: #a31515"&gt;&amp;quot;valueB&amp;quot;&lt;/span&gt;]);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 16&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;int&lt;/span&gt; expectedResult = &lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToInt32(TestContext.DataRow[&lt;span style="color: #a31515"&gt;&amp;quot;expectedResult&amp;quot;&lt;/span&gt;]);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 17&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;int&lt;/span&gt; actualResult = &lt;span style="color: #2b91af"&gt;MyWidget&lt;/span&gt;.MyBusinessLogic(valueA, valueB);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 18&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Assert&lt;/span&gt;.AreEqual(expectedResult, actualResult, &lt;span style="color: #a31515"&gt;&amp;quot;The result returned from the widget was not as expected.&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 19&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 20&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 21&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 22&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;DataSource&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;System.Data.Odbc&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Dsn=Excel Files;dbq=|DataDirectory|\\MyWidgetTests.xlsx&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;MyWidgetTests$&amp;quot;&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;DataAccessMethod&lt;/span&gt;.Sequential)]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 23&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; TestMyBusinessLogicWithExcel()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 24&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 25&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;int&lt;/span&gt; valueA = &lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToInt32(TestContext.DataRow[&lt;span style="color: #a31515"&gt;&amp;quot;valueA&amp;quot;&lt;/span&gt;]);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 26&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;int&lt;/span&gt; valueB = &lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToInt32(TestContext.DataRow[&lt;span style="color: #a31515"&gt;&amp;quot;valueB&amp;quot;&lt;/span&gt;]);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 27&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;int&lt;/span&gt; expectedResult = &lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToInt32(TestContext.DataRow[&lt;span style="color: #a31515"&gt;&amp;quot;expectedResult&amp;quot;&lt;/span&gt;]);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 28&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;int&lt;/span&gt; actualResult = &lt;span style="color: #2b91af"&gt;MyWidget&lt;/span&gt;.MyBusinessLogic(valueA, valueB);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 29&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Assert&lt;/span&gt;.AreEqual(expectedResult, actualResult, &lt;span style="color: #a31515"&gt;&amp;quot;The result returned from the widget was not as expected.&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 30&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 31&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 32&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TestContext&lt;/span&gt; TestContext{ &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 33&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Notice the two unit tests are identical save for the test name and the “DataSource” attribute. The code is pretty self explanatory, the two tests are driven by data from different sources. The only things to note are the presence of the “TestContext” and the contents of the Data Source.&lt;/p&gt;  &lt;p&gt;For CSV sources (the first in the example):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;“Microsoft.VisualStudio.TestTools.DataSource.CSV” specifies the data source type.&lt;/li&gt;    &lt;li&gt;“MyWidgetTests.csv” is the connection string and needs to be name of the file to read the values from.&lt;/li&gt;    &lt;li&gt;The “MyWidgetTests#csv” value is the “table name”. When using files, it needs to match the filename, with a hash (“#”) instead of the period (“.”).&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;An example file is as follows:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_atAC7wWbKfk/SlZR2Eq9KpI/AAAAAAAAACY/mk7HrVZcnhI/s1600-h/image%5B16%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="163" alt="image" src="http://lh5.ggpht.com/_atAC7wWbKfk/SlZR2l6cvyI/AAAAAAAAACc/TD0SmjCwLxs/image_thumb%5B10%5D.png?imgmax=800" width="310" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;For Excel sources (the second example):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;“System.Data.Odbc” specifies the data source type.&lt;/li&gt;    &lt;li&gt;“Dsn=Excel Files;dbq=|DataDirectory|\\MyWidgetTests.xlsx” is again the connection string, replace your filename accordingly. The “DataDirectory” value is replaced by the MSTest framework and points to the directory the tests are run from.&lt;/li&gt;    &lt;li&gt;The “MyWidgetTests$” value is the “table name”. When using Excel files, it needs to to be the name of the of the Worksheet containing the data (see below).&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;An example file is as follows:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_atAC7wWbKfk/SlZR3BrznoI/AAAAAAAAACg/4_Ut1da96vY/s1600-h/image%5B5%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="191" alt="image" src="http://lh4.ggpht.com/_atAC7wWbKfk/SlZR4FyhVJI/AAAAAAAAACk/u3GX9bP4vMU/image_thumb%5B1%5D.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Note the you can have multiple Worksheets in a single Excel file, this means you can drive different tests from the same Excel file.&lt;/p&gt;  &lt;p&gt;You will need to have the CSV and Excel files set as deployment items in the Test Run Config:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_atAC7wWbKfk/SlZR4i8s3tI/AAAAAAAAACo/AYlW8efABAs/s1600-h/image%5B15%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="395" alt="image" src="http://lh3.ggpht.com/_atAC7wWbKfk/SlZR5tveUvI/AAAAAAAAACs/IXwjmQHhP6Q/image_thumb%5B9%5D.png?imgmax=800" width="549" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-48580639362611876?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/48580639362611876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=48580639362611876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/48580639362611876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/48580639362611876'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/07/data-driven-tests-with-mstest.html' title='Data driven tests with MSTest'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_atAC7wWbKfk/SlZR2l6cvyI/AAAAAAAAACc/TD0SmjCwLxs/s72-c/image_thumb%5B10%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-2488914173100023136</id><published>2009-05-13T22:10:00.001+01:00</published><updated>2009-05-13T22:10:28.846+01:00</updated><title type='text'>Tip for clearing disk space under Windows</title><content type='html'>&lt;p&gt;After going through the usual suspects* for clearing disk space you can normally squeeze some more space by deleting the folder “%SystemDrive%\Windows\SoftwareDistribution” (you need to stop the “Automatic Updates” Service first).&lt;/p&gt;  &lt;p&gt;* Usual suspects are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Use “Disk Cleanup” (find under System Tools).&lt;/li&gt;    &lt;li&gt;Delete any files you don’t need under “%SystemDrive%\Windows\System32\LogFiles”.&lt;/li&gt;    &lt;li&gt;Delete any old user profiles (“Advanced” tab in Properties of My Computer), note the reported size of the profile used is usually an outright lie and the space taken up by each profile is normally much bigger.&lt;/li&gt;    &lt;li&gt;If you are running SQL Server, truncate the Log files, move the Data and Log files to another drive.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-2488914173100023136?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/2488914173100023136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=2488914173100023136' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2488914173100023136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2488914173100023136'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/05/tip-for-clearing-disk-space-under.html' title='Tip for clearing disk space under Windows'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-5394778663715356405</id><published>2009-04-30T22:32:00.001+01:00</published><updated>2009-04-30T22:32:48.984+01:00</updated><title type='text'>Load Testing with Visual Studio Team System</title><content type='html'>&lt;p&gt;Visual Studio Team System offers a lot functionality for automated testing. While you can write unit tests with MSTest in “Visual Studio 2005/2008 Team Edition for Developers” you’ll need “Visual Studio 2005/2008 Team Edition for Testers” to author Web Tests and Load Tests.&lt;/p&gt;  &lt;p&gt;Web Tests are essentially a script to execute against a web site, a Load Test can execute one or more Web Tests with a set of parameters. These parameters can be:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;User count (this can ramp up and down)&lt;/li&gt;    &lt;li&gt;Browser mix (IE 5.5/6.0/7.0/8.0, Firefox 2.0/3.0 and Netscape 6.0 plus Smart Phone and Pocket PC)&lt;/li&gt;    &lt;li&gt;Network mix (LAN, Cable, dial-up)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Once you have authored your Web and Load Tests you can run the Load Tests from “Visual Studio 2005/2008 Team Edition for Testers”. In this scenario you are limited in that you can only simulate a limited number of users (exact number depends on your machine). To scale out and simulate the load of many thousands of users you can use the “Visual Studio Team System 2005/2008 Test Load Agent”. This is available as a separate product, download a 90 day trial here: &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/downloads/details.aspx?FamilyID=572e1e71-ae6b-4f92-960d-544cabe62162&amp;amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=572e1e71-ae6b-4f92-960d-544cabe62162&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=572e1e71-ae6b-4f92-960d-544cabe62162&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The “Visual Studio Team System 2005/2008 Test Load Agent” allows you to set up Test Agents and Test Controllers. Test Agents simulate requests from Users and Test Controllers orchestrate the Test Agents.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_atAC7wWbKfk/SfoY_P56rFI/AAAAAAAAACQ/k3bhANkNSfE/s1600-h/LoadTestingWithVSTS%5B5%5D.jpg"&gt;&lt;img title="LoadTestingWithVSTS" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="465" alt="LoadTestingWithVSTS" src="http://lh4.ggpht.com/_atAC7wWbKfk/SfoZAHQ5gEI/AAAAAAAAACU/XAAw1EnAF2Y/LoadTestingWithVSTS_thumb%5B3%5D.jpg?imgmax=800" width="453" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;According to the documentation, a Test Agent on a server with a 2.6 GHz processor and 2GB RAM can simulate approximately 1000 virtual users. A single Test Controller installed on a similar specification server can orchestrate approximately 30 Test Controllers. These numbers are approximate as the specifics will depend on your web application. If your web application is graphics heavy you will not be able to simulate as many users to due to increase memory demands of the requests for larger pages.&lt;/p&gt;  &lt;p&gt;These are very rough numbers, but if your average web page size is 300KB and you have 1000 virtual users simulated per Test Agent, the server running the Test Agent needs to deal with up 300MB worth of requested data at once. The load on each Test Agent is mitigated in that the Test Agent simulates user thinking times (times are configurable in the scripts). So each machine won’t be making 1000 requests constantly, more like 1000 requests every 4 or 5 seconds. So a server with 2GB RAM supporting 1000 virtual users seems a reasonable basis for estimates.&lt;/p&gt;  &lt;p&gt;If you want to simulate 10,000 users you would need:&lt;/p&gt;  &lt;p&gt;1 Test Agent per 1000 virtual users = 10 x Test Agents = 10 x servers&lt;/p&gt;  &lt;p&gt;1 Test Controller per 30 Test Agents = 1 x Test Controller = 1 x servers&lt;/p&gt;  &lt;p&gt;This means a total of 11 servers, each with 2.6GHz processor and 2GB RAM.&lt;/p&gt;  &lt;p&gt;You can find more information on the metrics here: &lt;a title="http://msdn.microsoft.com/en-us/library/ms253092.aspx" href="http://msdn.microsoft.com/en-us/library/ms253092.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms253092.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-5394778663715356405?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/5394778663715356405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=5394778663715356405' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5394778663715356405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5394778663715356405'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/04/load-testing-with-visual-studio-team.html' title='Load Testing with Visual Studio Team System'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_atAC7wWbKfk/SfoZAHQ5gEI/AAAAAAAAACU/XAAw1EnAF2Y/s72-c/LoadTestingWithVSTS_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-5773215323585463714</id><published>2009-04-23T22:50:00.001+01:00</published><updated>2009-04-23T22:50:50.319+01:00</updated><title type='text'>Test from Live Writer now I can install it to Windows Server 2008</title><content type='html'>&lt;p&gt;With a bit of luck of I should be able to post some pretty pictures…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_atAC7wWbKfk/SfDitoKtepI/AAAAAAAAACA/6kxOp2i7h40/s1600-h/Test%5B4%5D.jpg"&gt;&lt;img title="Test" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="78" alt="Test" src="http://lh3.ggpht.com/_atAC7wWbKfk/SfDiufmdKsI/AAAAAAAAACE/Xgss7JDhS8Q/Test_thumb%5B2%5D.jpg?imgmax=800" width="546" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And that’s me off to my ivory tower…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-5773215323585463714?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/5773215323585463714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=5773215323585463714' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5773215323585463714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5773215323585463714'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/04/test-from-live-writer-now-i-can-install.html' title='Test from Live Writer now I can install it to Windows Server 2008'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_atAC7wWbKfk/SfDiufmdKsI/AAAAAAAAACE/Xgss7JDhS8Q/s72-c/Test_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-6661043707334822929</id><published>2009-04-03T14:09:00.001+01:00</published><updated>2009-04-03T14:09:50.509+01:00</updated><title type='text'>April News</title><content type='html'>&lt;p style="margin-bottom:12.0pt"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Last month Microsoft held its annual &lt;a href="http://live.visitmix.com/"&gt;MIX conference&lt;/a&gt; in Las Vegas. The MIX event is similar to the MSDN conference but the content is targeted towards Microsoft’s web platforms. The event saw a lot of news about Silverlight, the highlight being the official announcement on Silverlight 3.0. The beta for this was made publicly available during the conference. The conference also saw the final release of Microsoft’s ASP.NET MVC framework and further announcements on Windows Azure.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:12.0pt"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Microsoft News&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;The widely expected announcement of &lt;a href="http://silverlight.net/getstarted/silverlight3/default.aspx"&gt;Silverlight 3 Beta&lt;/a&gt; was confirmed at the MIX conference along with betas for the necessary &lt;a href="http://go.microsoft.com/fwlink/?LinkID=143571"&gt;tooling for Visual Studio&lt;/a&gt; and the &lt;a href="http://www.microsoft.com/expression/blendpreview"&gt;Expression Blend&lt;/a&gt; designer suite. New features in Silverlight 3 include support for higher quality video and audio, 3D graphics, hardware acceleration, animation effects, improved accessibility for partially sighted people, &lt;a href="http://blogs.msdn.com/waldred/archive/2009/03/23/Search-Engine-Optimization-for-Silverlight-Applications.aspx"&gt;Search Engine Optimisation&lt;/a&gt; (SEO) and a whole raft of changes to enable a richer user experience. Silverlight 3 also supports an “out of browser” experience meaning Silverlight application can be hosted outside of the browser frame and effectively become rich desktop applications delivered by the web. The Register has an analysis of Silverlight versus the rival Air/Flash combination from Adobe, details &lt;a href="http://www.theregister.co.uk/2009/03/04/silverlight_3_futures/"&gt;here&lt;/a&gt;, &lt;a href="http://www.theregister.co.uk/2009/03/18/silverlight_3_beta/"&gt;here&lt;/a&gt; and &lt;a href="http://www.theregister.co.uk/2009/03/19/silverlight_3_preview/"&gt;here&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Silverlight has also seen an additional large scale application in the form of &lt;a href="http://www.worldwidetelescope.org/webclient/"&gt;Microsoft WorldWide Telescope&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Silverlight also sees further platform support with &lt;a href="http://blogs.msdn.com/somasegar/archive/2009/03/06/interoperability-eclipse-tools-for-silverlight.aspx"&gt;tooling for the popular Eclipse development environment&lt;/a&gt;. With Moonlight (the open source implementation of Silverlight supporting Linux platforms), Silverlight’s own compatibility with the Mac operating system and Firefox and Safari web browsers its and even more compelling cross platform solution, offering the benefits of a rich user experience and ease of deployment for web applications.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Microsoft’s next client operating system, Windows 7, which had a beta release back in February will likely reach &lt;a href="http://www.theregister.co.uk/2009/03/26/windows_7_release_candidate_may/"&gt;Release Candidate in May&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;The final of Internet Explorer 8 has &lt;a href="http://www.microsoft.com/ie8"&gt;been released&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Microsoft’s ASP.NET MVC framework has been &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/04/01/asp-net-mvc-1-0.aspx"&gt;released&lt;/a&gt;. Interestingly this is has been released under Microsoft Public License which is an OSI approved license. This could be the first steps of Microsoft embracing open source software.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Windows Azure development continues to gather momentum. Microsoft announced plans to deliver &lt;a href="http://blogs.msdn.com/ssds/archive/2009/03/10/9469228.aspx"&gt;core relational database features as part of SQL Data Services&lt;/a&gt; (the data access service for Windows Azure). The is equivalent to SQL Server in the cloud and porting applications to this platform should be as simple as “changing your connection string”. Further analysis on SQL Data Services from The Register &lt;a href="http://www.theregister.co.uk/2009/03/10/microsoft_cloud_sql_server/"&gt;here&lt;/a&gt;. Microsoft will imminently roll out Windows Azure to &lt;a href="http://www.theregister.co.uk/2009/03/19/azure_expansion/"&gt;multiple data centres in North America&lt;/a&gt;. A European data centre (most likely in Ireland) is in the pipeline.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Microsoft’s interactive table top display technology, Surface, is also slowly gaining traction. BMW have found &lt;a href="http://www.reghardware.co.uk/2008/12/01/surface_at_bmw/"&gt;another commercial application&lt;/a&gt; for the product.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Microsoft released more details of their &lt;a href="http://www.microsoft.com/presspass/press/2009/mar09/03-11WMMDevelopersPR.mspx"&gt;Windows Marketplace for Mobile&lt;/a&gt; offering which allows developers to sell applications through a Microsoft portal. Developers will keep 70% of the sales revenue.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:12.0pt"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Community &amp;amp; Industry News&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;The &lt;a href="http://ukazurenet.com/"&gt;UK Azure User Group&lt;/a&gt; had its inaugural meeting on 31&lt;sup&gt;st&lt;/sup&gt; March. Members of the Microsoft Azure team spoke and did a couple of demos. Some useful information was made available, the pricing and SLAs will be announced this summer and the Azure will go commercial in Q4 this year. The next event will be on the 14&lt;sup&gt;th&lt;/sup&gt; May, &lt;a href="http://ukazurenet-in.eventbrite.com/"&gt;more information here&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;IBM to &lt;a href="http://www.theregister.co.uk/2009/03/18/ibm_buying_sun/"&gt;buy Sun Microsystems&lt;/a&gt;?&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:12.0pt"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Articles &amp;amp; Blogs&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Scott Guthrie’s MIX &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/03/31/mix-09.aspx"&gt;wrap up&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Somasegar gives us a &lt;a href="http://blogs.msdn.com/somasegar/archive/2009/03/25/delivering-ongoing-value.aspx"&gt;recap on the .NET tooling&lt;/a&gt; we have had post VS2008.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Microsoft are building a framework for composing web applications with Silverlight and ASP.NET using Domain Driven Design principals. The framework is at a very early stage and has been labelled &lt;a href="http://blogs.msdn.com/brada/archive/2009/03/19/what-is-net-ria-services.aspx"&gt;.NET RIA Services&lt;/a&gt;. RIA meaning Rich Internet Applications. The framework offers a common approach to data access using Object Relational Mapping techniques and consistent validation rules on the client and server. The two MIX sessions are available &lt;a href="http://blogs.msdn.com/brada/archive/2009/03/20/mix09-silverlight-for-business-apps-and-net-ria-services-talks-posted.aspx"&gt;here&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;ASP.NET MVC and &lt;a href="http://www.hanselman.com/blog/MixMobileWebSitesWithASPNETMVCAndTheMobileBrowserDefinitionFile.aspx"&gt;mobile web applications&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Scott Guthrie’s MIX &lt;a href="http://blogs.msdn.com/brada/archive/2009/03/24/scottgu-s-mix09-silverlight-for-business-applications-demo.aspx"&gt;Silverlight for Business Applications&lt;/a&gt; demo.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Channel 9 on &lt;a href="http://channel9.msdn.com/shows/The+Knowledge+Chamber/Brad-Abrams-Silverlight-30-for-Great-Business-Apps/"&gt;Silverlight 3.0 for great business applications&lt;/a&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Windows Azure applications now &lt;a href="http://blogs.msdn.com/windowsazure/archive/2009/03/18/hosting-roles-under-net-full-trust.aspx"&gt;run with Full Trust&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Visual Studio 2010 will see a deployment framework called &lt;a href="http://blogs.msdn.com/webdevtools/archive/2009/03/10/how-does-web-deployment-with-vs10-and-msdeploy-work.aspx"&gt;MSDeploy&lt;/a&gt;. This will be used to seamlessly deploy web applications dealing with the all dependencies down to the IIS settings.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;A list of Microsoft Product Teams &lt;a href="http://adamkinney.com/blog/408/default.aspx"&gt;on Twitter&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Udi Dahan looks at making better Domain models, “&lt;a href="http://www.udidahan.com/2008/02/15/from-crud-to-domain-driven-fluency/"&gt;From CRUD to Domain Driven Fluency&lt;/a&gt;”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;span style="mso-spacerun:yes"&gt; &lt;/span&gt;Improving &lt;a href="http://devlicio.us/blogs/tuna_toksoz/archive/2009/03/14/an-improvement-on-sessionfactory-initialization.aspx"&gt;Session Factory Initialisation in NHibernate&lt;/a&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;SQL Server SCOPE_IDENTITY() sometimes &lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=328811"&gt;returns incorrect value&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;In case anyone was wondering, the technology that was originally Microsoft BizTalk Services is now the &lt;a href="http://blogs.msdn.com/stevemar/archive/2009/03/30/net-services-cloud-interoperability.aspx"&gt;.NET Services component&lt;/a&gt; of Windows Azure. This includes a Service Bus that can traverse firewalls (built with Windows Communication Foundation), Access Control (built with Microsoft’s CardSpace) and workflow (built with Windows Workflow Foundation).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:12.0pt"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Downloads &amp;amp; Tools&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;ASP.NET MVC 1.0 has been &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b"&gt;released&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Silverlight 3 SDK Beta 1 is &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=d09b6ecf-9a45-4d99-b752-2a330a937bc4"&gt;available&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Windows Azure March CTP is &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=59e8fc0c-c399-4ab7-8a93-882d8e74b67a&amp;amp;displaylang=en"&gt;available&lt;/a&gt; (this includes both the Tools for Visual Studio and the SDK).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;a href="http://research.microsoft.com/en-us/projects/pex/"&gt;PEX&lt;/a&gt; is a project from Microsoft Research that analyses your code and produces unit tests to test edge case scenarios.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;a href="http://research.microsoft.com/en-us/projects/chess/"&gt;Chess&lt;/a&gt; is another project from Microsoft Research that analyses multi-threaded code and produce unit tests to check for dead-locks and other problems with multi-threading.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;ADO.NET Data Services (Microsoft’s REST framework) has a &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=3e3d4eaf-227b-4ad3-ad0d-3613db8aa9df"&gt;new CTP&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;a href="http://www.codeplex.com/WebserviceStudio"&gt;Web Service Studio&lt;/a&gt; is a tool that will allow you to invoke web services interactively, it supports WCF and REST.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/data/cc655792.aspx"&gt;Velocity&lt;/a&gt; is a true distributed cache from Microsoft, currently in beta. It’s final roadmap is yet to be defined but here is &lt;a href="http://nhcontrib.svn.sourceforge.net/viewvc/nhcontrib/trunk/src/NHibernate.Caches.Velocity/"&gt;NHibernate support&lt;/a&gt; and Velocity will be included in ASP.NET 4.0. There is a &lt;a href="http://weblogs.asp.net/rchartier/archive/2009/03/13/microsoft-velocity-q-amp-a.aspx"&gt;Q &amp;amp; A available&lt;/a&gt; for Velocity.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;The SQL Data Services component of Windows Azure has an &lt;a href="http://msdn.microsoft.com/en-us/sqlserver/dataservices/cc512120.aspx"&gt;SDK available&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;The Live Framework (another component of Windows Azure) has had an SDK refresh with the &lt;a href="http://blogs.msdn.com/liveframework/archive/2009/03/11/live-framework-updated.aspx"&gt;April CTP&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;The &lt;a href="http://support.microsoft.com/kb/290301"&gt;Windows Installer Clean-up Utility&lt;/a&gt; will help remove stubborn programs you might have difficulty un-installing.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;a href="http://www.jetbrains.com/resharper/beta.html"&gt;ReSharper 4.5 Beta&lt;/a&gt; is available for download. Please note that version 4.5 is available as a free upgrade to people with a licence for version 4.1.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Accompanying the final release of ASP.NET MVC, is a version 1.0 release of the &lt;a href="http://jeffreypalermo.com/blog/mvccontrib-v1.0-released-download-now/"&gt;MVC Contrib&lt;/a&gt; project.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;The session videos from the MIX conference are available for download &lt;a href="http://videos.visitmix.com/MIX09/All"&gt;here&lt;/a&gt; and &lt;a href="http://coolthingoftheday.blogspot.com/2009/03/mix-09-quick-video-link-list.html"&gt;here&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;There’s an open source Database Versioning and Documentation Tool for Microsoft SQL Server &lt;a href="http://mssqlschemadoc.codeplex.com/"&gt;available on CodePlex&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:12.0pt"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;And finally...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Ever had a frustrating call to a tech support centre? Now there’s an un-official “&lt;a href="http://www.hanselman.com/blog/FizzBinTheTechnicalSupportSecretHandshake.aspx"&gt;handshake&lt;/a&gt;” to let them know you’re not a luddite.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Interesting news that &lt;a href="http://www.theregister.co.uk/2009/03/25/skype_biggest/"&gt;Skype is the world’s biggest international telco&lt;/a&gt;, accounting for 8% of the world’s talk time.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-6661043707334822929?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/6661043707334822929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=6661043707334822929' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/6661043707334822929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/6661043707334822929'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/04/april-news.html' title='April News'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-2125256669212579141</id><published>2009-04-01T00:43:00.002+01:00</published><updated>2009-04-01T00:49:59.342+01:00</updated><title type='text'>Windows Azure costs for developers</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;I attended the first meeting of the Azure User Group UK tonight (&lt;/span&gt;&lt;/span&gt;&lt;a href="http://ukazurenet.com/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;http://ukazurenet.com/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;) and an interesting question popped up. Right now you can register for Azure for free to work with the CTP releases (&lt;/span&gt;&lt;/span&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=129453"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;http://go.microsoft.com/fwlink/?LinkID=129453&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;). However, eventually Microsoft will monetise this service. SLAs and pricing should be published this summer and you will have to pay for services come Q4 2009. &lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;At this point what happens to developers who might be putting together proof of concepts or prototypes, or for projects still in the development stage? Well, it was suggested by a Microsoft employee that access to Windows Azure may be included in a Visual Studio license or MSDN Subscription. I think this is a pretty good solution to the problem.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-2125256669212579141?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/2125256669212579141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=2125256669212579141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2125256669212579141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2125256669212579141'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/04/windows-azure-costs-for-developers.html' title='Windows Azure costs for developers'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-2990976750936277794</id><published>2009-03-28T21:39:00.007Z</published><updated>2009-03-28T21:56:21.669Z</updated><title type='text'>Everything you ever wanted to know about Solid State Drives</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;I am making a very conscious effort not to be a link blog and I do my best to make each post meaningful in some way. I am making exception here with a great article on Solid State Drives (&lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;SSDs&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;). Its from &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;AnadTech&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;, and tells you pretty much everything you need to know including a thorough explanation on the performance degradation these drives suffer from as they are used. The link is below and its worth reading from start to finish.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;a href="http://www.anandtech.com/printarticle.aspx?i=3531"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;http://www.anandtech.com/printarticle.aspx?i=3531&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;If you want the shorthand version, the Intel X25 drives look awesome and while &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;performance&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; will degrade over time the problem for these drives isn't nearly as bad as for the competitors (owing to some clever disk management). Even with the performace degradation the Intel X25 drives vastly outperform regular drives. Though you will pay a pretty price for one of the Intel ones.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Its worth noting that the "performance degradation" can be reversed if you do a "secure erase" of the drive i.e. completely wipe it. This is a complete wipe which is not equivalent to reformatting. Intel provide software with their drives to do this. As a developer I find I rebuild my machine every 6 months or so anyway so I'm not too worried about this performance degradation issue.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;I found this link on the excellent "Joel on Software" blog which is also very hightly recommended reading:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;a href="http://www.joelonsoftware.com/"&gt;http://www.joelonsoftware.com/&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-2990976750936277794?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/2990976750936277794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=2990976750936277794' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2990976750936277794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2990976750936277794'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/03/everything-you-ever-wanted-to-know.html' title='Everything you ever wanted to know about Solid State Drives'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-1088144442851398261</id><published>2009-03-18T13:56:00.003Z</published><updated>2009-03-18T14:01:51.620Z</updated><title type='text'>Error uninstalling ASP.NET MVC RC</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: arial;"&gt;I got an error trying to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;un&lt;/span&gt;-install the ASP.NET &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;MVC&lt;/span&gt; Release Candidate (so I could install the final &lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;RTM&lt;/span&gt; 1.0 version&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;). The process would fail with the error "There is a problem with this Windows Installer package...".&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;In the Release Notes for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Version&lt;/span&gt; 1.0 there is a note mentioning possible conflicts with some Visual Studio Add-ins. Listed &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;amongst&lt;/span&gt; them was &lt;/span&gt;&lt;a href="http://callumhibbert.blogspot.com/2009/02/clone-detective-for-visual-studio.html"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Clone Detective&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;. I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;un&lt;/span&gt;-installed this application and I was then able to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;un&lt;/span&gt;-install the ASP.NET &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;MVC&lt;/span&gt; Release Candidate successfully.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;If you are having issues, check the Release Notes to see if you have any of the Visual Studio Add-ins listed.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-1088144442851398261?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/1088144442851398261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=1088144442851398261' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/1088144442851398261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/1088144442851398261'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/03/error-uninstalling-aspnet-mvc-rc.html' title='Error uninstalling ASP.NET MVC RC'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-245491096923187678</id><published>2009-03-11T17:56:00.002Z</published><updated>2009-03-12T22:37:41.840Z</updated><title type='text'>"Error Synchronizing" with Exchange on Windows Mobile 6.1</title><content type='html'>This is a strange one. If you are set-up to receive SharePoint notifications and you get one in your Inbox this seems to prevent Outlook on Windows Mobile from synchronising with the Exchange server. Very odd. More details here:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://social.microsoft.com/Forums/en-US/windowsmobile/thread/2d887d3c-309e-4eae-a02f-7846ffba3b32/"&gt;http://social.microsoft.com/Forums/en-US/windowsmobile/thread/2d887d3c-309e-4eae-a02f-7846ffba3b32/&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;No long term fix but if you delete the e-mail (you can delete on the handset) it will fix the problem and you will start to receive your e-mail again.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-245491096923187678?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/245491096923187678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=245491096923187678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/245491096923187678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/245491096923187678'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/03/error-synchronising-with-exchnage-on.html' title='&quot;Error Synchronizing&quot; with Exchange on Windows Mobile 6.1'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-1833458824153363207</id><published>2009-03-10T00:29:00.000Z</published><updated>2009-03-10T00:50:35.623Z</updated><title type='text'>Team Build in TFS2008 with a VS2005 Solution and FxCop</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;TFS2008 can build VS2005 Solutions owing to its backwards compatibility. Unfortunatey you might run into problems if you use FxCop in VS2005 and have this integrated into your Solution build i.e. FxCop runs automatically when you compile the project(s).&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Very often you will recieve code analysis errors if you run a local Team Build (a "Desktop" build) at the command line even though you didn't see those errors when building in VS2005. This seems to be related to the setting of environment variables. To run a TFS2008 Team Build at the command line it must be done with an MSBuild v3.5 command prompt but your VS2005 is geared towards MSBuild v2.0.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;To solve the problem, set the Environment variable "&lt;span class="Apple-style-span"  style=" ;font-family:Georgia;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;FXCOPDIR&lt;/span&gt;&lt;span class="Apple-style-span"  style=" ;font-family:arial;"&gt;" to be "&lt;span class="Apple-style-span"  style=" ;font-family:Georgia;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;%programfiles%\Microsoft Visual Studio 8\Team Tools\Static Analysis Tools\FxCop&lt;/span&gt;&lt;span class="Apple-style-span"  style=" ;font-family:arial;"&gt;" and your Team Build should complete okay. Rather than setting this value universally (and trashing VS2008 builds), what I normally do is have a command file with the following contents to run my Team Builds containing VS2005 Solutions:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;@echo Setting environment variables&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;@set FXCOPDIR=%programfiles%\Microsoft Visual Studio 8\Team Tools\Static Analysis Tools\FxCop&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;"%systemdrive%\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe" path\TFSBuild.proj&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;This sets the environment variable for the current command window and executes the Team Build. The environemnt variable means FxCop will behave as if you were in VS2005 even though you are running a TFS2008 Team Build with MSBuild v3.5.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;As as an aside, note that TFS2005 can't build VS2008 Solutions. "Forwards" compatibility has provided in TFS2008 meaning TFS2008 will be able to build VS2010 Solutions. This "forwards" compatibility has been implemented by allowing you to specify the MSBuild version used by your Build Agent. See Buck Hodges post for more information:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;a href="http://blogs.msdn.com/buckh/archive/2007/07/20/tfs-2008-build-agent-configuration-options.aspx"&gt;http://blogs.msdn.com/buckh/archive/2007/07/20/tfs-2008-build-agent-configuration-options.aspx&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-1833458824153363207?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/1833458824153363207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=1833458824153363207' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/1833458824153363207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/1833458824153363207'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/03/team-build-in-tfs2008-with-vs2005.html' title='Team Build in TFS2008 with a VS2005 Solution and FxCop'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-7635606186411527484</id><published>2009-03-09T12:50:00.000Z</published><updated>2009-03-09T12:51:29.464Z</updated><title type='text'>Microsoft Tech Days 2009</title><content type='html'>&lt;p style="margin-bottom:12.0pt"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Microsoft are running a 24 hour “virtual” learning event on 1&lt;sup&gt;st&lt;/sup&gt; April with the sessions run via Live Meeting. The site promises over 90 sessions, there are currently 22 listed on the site and these are being added to as details are finalised. Currently listed sessions include:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;ASP.NET MVC – Separation of concerns and unit testing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Complete control over Silverlight controls&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Cranking ASP.NET Performance to 11...the easy way!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;How WPF and databinding are best friends&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;In-depth MVC&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Information Architecture for a MOSS intranet&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Intro to LINQ&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Maintaining Resilient Code: Using Tools From Microsoft's DevLabs and Research Sites&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Professional SharePoint Development - Taking the Step From SharePoint Cowboy to Enterprise Team Development&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;SharePoint Workflow for the Masses&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Silverlight apps need data... and here's how to get it!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:5.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left: 36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"&gt;&lt;span style="font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Site Provisioning Solutions (for SharePoint)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:12.0pt"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;More information and registration: &lt;a href="http://www.msfttechdays.com/public/home.aspx"&gt;http://www.msfttechdays.com/public/home.aspx&lt;/a&gt;&lt;span style="color:black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family: Calibri;mso-fareast-theme-font:minor-latin;color:black;mso-ansi-language:EN-GB; mso-fareast-language:EN-GB;mso-bidi-language:AR-SA"&gt;Once you register you can build a schedule.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-7635606186411527484?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/7635606186411527484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=7635606186411527484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/7635606186411527484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/7635606186411527484'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/03/microsoft-tech-days-2009.html' title='Microsoft Tech Days 2009'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-5983276299254465309</id><published>2009-03-07T23:07:00.000Z</published><updated>2009-03-07T23:10:58.613Z</updated><title type='text'>NHibernate performance improvements</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;I picked up a couple of ideas off the ALT.NET mailing list.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"   style="  ;font-family:arial;font-size:13px;"&gt;To speed up start-up times, put all your mappings into a single XML file. I would recommend keeping the files separate during development and having a step in your build process to concatenate them (&lt;a href="http://ayende.com/Blog/archive/2007/10/26/Real-World-NHibernate-Reducing-startup-times-for-large-amount-of.aspx"&gt;http://ayende.com/Blog/archive/2007/10/26/Real-World-NHibernate-Reducing-startup-times-for-large-amount-of.aspx&lt;/a&gt;).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"   style="  ;font-family:arial;font-size:13px;"&gt;Use NHibernate Proxy Generator to generate static proxies (&lt;a href="http://code.google.com/p/nhibernateproxygenerator/"&gt;http://code.google.com/p/nhibernateproxygenerator/&lt;/a&gt;).&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  ;font-family:arial;font-size:13px;"&gt;These optimisations are only relevant when you have hundreds of entities.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-5983276299254465309?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/5983276299254465309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=5983276299254465309' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5983276299254465309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5983276299254465309'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/03/nhibernate-performance-improvements.html' title='NHibernate performance improvements'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-2581769492880181349</id><published>2009-03-03T15:20:00.000Z</published><updated>2009-03-03T15:26:27.488Z</updated><title type='text'>March News</title><content type='html'>&lt;p&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;This month sees a bag full of Silverlight news. Silverlight is Microsoft’s technology for building cross platform “Rich Internet Applications” and is delivered via a small browser plug-in (similar to the way Adobe Flash works). It provides developers with an subset of the .NET Framework that will run in several different web browsers (Internet Explorer, Firefox, Safari) and several different platforms (Windows, Mac, Linux). Silverlight’s cross platform compatibility and ease of development using the familiar .NET platform makes it a compelling solution for delivering applications to both the enterprise and public internet. There are already some large scale, high profile, implementations. Silverlight powers Photosynth, which I talked about &lt;a href="http://callumhibbert.blogspot.com/2009/02/february-news.html"&gt;last month&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Microsoft News&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo1"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;During &lt;a href="http://tech.yahoo.com/news/zd/20090224/tc_zd/237417"&gt;a mid-quarter update to investors&lt;/a&gt;, Steve Ballmer announced that Office 14 (the next version of the flagship productivity suite) will not be available until next year. He also admitted that the open source “OpenOffice” product had forced Microsoft to lower its world-wide pricing for Office. The release of Office 14 will be accompanied by new versions of SharePoint and Exchange. Ballmer also talked about a low cost version of Windows Server, called “Windows Server Foundation Edition”, which is aimed at OEMs who make cheap hardware. This is most likely to help Microsoft penetrate the hosting and web server environments still dominated by Linux. More information on Windows Server Foundation Edition can be &lt;a href="http://www.microsoft-watch.com/content/corporate/foundation_server_is_foundation_for_what.html"&gt;found here&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo1"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Microsoft held an &lt;a href="http://www.msdndevcon.com/Pages/SanFrancisco.aspx"&gt;MSDN Developer Conference&lt;/a&gt; in San Francisco during the week beginning 23&lt;sup&gt;rd&lt;/sup&gt; February. One major announcement was that Microsoft will provide &lt;a href="http://www.theregister.co.uk/2009/02/23/sql_server_azure/"&gt;full SQL Server capabilities to Azure&lt;/a&gt; though there is &lt;a href="http://www.theregister.co.uk/2009/02/27/azure_sql_server_mix/"&gt;some confusion&lt;/a&gt; on exactly what this entails. Another thing that did come to light was that Surface, Microsoft’s interactive table top display technology &lt;a href="http://callumhibbert.blogspot.com/2009/02/february-news.html"&gt;also mentioned last month&lt;/a&gt;, will be &lt;a href="http://www.theregister.co.uk/2009/02/26/democratization_windows_7_surface/"&gt;available in Windows 7&lt;/a&gt; in that Windows 7 will have multi-touch technology and the same APIs. Little fan-fare has been made about this news but it is significant – this will take Surface adoption to the mainstream.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo1"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;One new announcement is expected at the &lt;a href="http://2009.visitmix.com/"&gt;MIX09 event&lt;/a&gt; in Las Vegas (18-20&lt;sup&gt;th&lt;/sup&gt; March) and that is details of Silverlight 3.0. We &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/11/16/update-on-silverlight-2-and-a-glimpse-of-silverlight-3.aspx"&gt;already know&lt;/a&gt; that Silverlight 3.0 will provide major media enhancements (including H.264 video support, 3D effects and hardware acceleration) in addition to richer data binding and more built-in controls.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo1"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Tim Sneath (Director, Client Platform Evangelism) &lt;a href="http://blogs.msdn.com/tims/archive/2009/02/11/silverlight-is-fizzing-not-fizzling.aspx"&gt;counters some PR&lt;/a&gt; regarding Adobe’s “&lt;a href="http://www.adobe.com/products/air/"&gt;Air&lt;/a&gt;” product (a direct competitor to Silverlight). A &lt;a href="http://blogs.msdn.com/architectsrule/archive/2009/02/12/silverlight-versus-adobe-air-the-battle-for-the-ria-space.aspx"&gt;follow-up blog&lt;/a&gt; details some large and high profile Silverlight projects including the &lt;a href="http://ria.aol.com/"&gt;web client for AOL Mail&lt;/a&gt; which prove Silverlight’s suitability for the main stream.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo1"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Continuing the Silverlight news, &lt;a href="http://www.mono-project.com/Moonlight"&gt;Moonlight&lt;/a&gt; (the open-source implementation of Silverlight) has had an &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/02/11/moonlight-1-0-release.aspx"&gt;official Version 1.0 release&lt;/a&gt;. Moonlight enables Silverlight on the Linux platform. In addition, Microsoft has provided the licensed media codecs for Silverlight compatible media as a free download for all Linux users. More information on Moonlight can be found in the &lt;a href="http://www.novell.com/products/desktop/moonlight_faq.html"&gt;official FAQ&lt;/a&gt;, &lt;a href="http://www.novell.com/news/press/moonlight-shines-on-the-linux-desktop/"&gt;the official press release&lt;/a&gt; and &lt;a href="http://www.theregister.co.uk/2009/02/12/moonlight_first_release/"&gt;The Register’s take&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo1"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Silverlight is also &lt;a href="http://timheuer.com/blog/archive/2009/02/11/moonlight-and-silverlight-detection-google-chrome-user-agent.aspx"&gt;compatible with&lt;/a&gt; &lt;a href="http://www.google.co.uk/chrome/"&gt;Google’s Chrome browser&lt;/a&gt;. Though unofficial at the moment, the smart money says Microsoft will support this eventually. This will give Silverlight compatibility to all browsers that have a notable market share.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo1"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;At the Mobile World Congress 2009 event in Barcelona, Microsoft &lt;a href="http://www.microsoft.com/presspass/press/2009/feb09/02-16MWCPR.mspx"&gt;officially announced&lt;/a&gt; Windows Mobile 6.5 and the My Phone and Market Place applications mentioned in last month’s news. &lt;a href="http://myphone.microsoft.com/"&gt;My Phone&lt;/a&gt; provides a free on-line back-up service for Windows Mobile users. Market Place is a web site which ISV’s can use to sell their Windows Mobile applications, similar to Apple’s &lt;a href="http://www.apple.com/iphone/features/appstore.html"&gt;AppStore&lt;/a&gt; for the iPhone.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo1"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Even though Windows Mobile 6.5 has only just been announced, news is starting to filter through about the next release, &lt;a href="http://wmpoweruser.com/?p=3268"&gt;Windows Mobile 7&lt;/a&gt;. It is due next year and will see further convergence of technologies in the Windows and Windows Mobile platforms.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo1"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Microsoft Office Labs takes a &lt;a href="http://www.officelabs.com/projects/futurevisionmontage/Pages/default.aspx"&gt;look at the future&lt;/a&gt; with a video montage of some prototypes floating around at Microsoft. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo1"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Developers should look at the &lt;a href="http://www.microsoft.com/uk/msdn/flash/latest.htm"&gt;latest MSDN Flash&lt;/a&gt; for details of upcoming web casts, events and new downloads. You can &lt;a href="http://msdn.microsoft.com/en-gb/flash/default.aspx"&gt;subscribe&lt;/a&gt; to the MSDN Flash email.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Community News                                                                                                                                        &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo2"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;The &lt;a href="http://altdotnet.org/"&gt;ALT.NET community&lt;/a&gt; has announced a &lt;a href="http://www.altdotnetuknorth.info/"&gt;conference in the north&lt;/a&gt; of England.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo2"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;The CodeBetter website now hosts an &lt;a href="http://teamcity.codebetter.com/"&gt;instance of TeamCity&lt;/a&gt; to provide Continuous Integration for open source projects like NHibernate. Unfortunately I can’t find a “build output” location. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Articles &amp;amp; Blogs&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Scott Hanselman &lt;a href="http://www.hanselman.com/blog/Moonlight10ReleaseOpenSourceSilverlight10ImplementationOnLinux.aspx"&gt;on Moonlight&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;A look at VS2010 &lt;a href="http://blogs.msdn.com/jasonz/archive/2009/02/20/a-new-look-for-visual-studio-2010.aspx"&gt;with WPF front end&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;The ASP.NET MVC &lt;a href="http://www.asp.net/mvc/"&gt;tutorials have been updated&lt;/a&gt;, this technology has reached Release Candidate.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Microsoft have also &lt;a href="http://www.asp.net/learn/mvc/#MVC_SampleApp"&gt;documented the steps&lt;/a&gt; to build a sample ASP.NET MVC application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;A complete &lt;a href="http://coolthingoftheday.blogspot.com/2009/02/free-chapter-from-software-testing-in.html"&gt;overview of testing&lt;/a&gt; in Visual Studio 2008.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Martin Fowler updates his “&lt;a href="http://martinfowler.com/bliki/TechnicalDebt.html"&gt;Technical Debt&lt;/a&gt;” article. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Downloads and Tools&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo4"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;The Release Candidate for Service Pack 2 for Windows Vista &lt;a href="http://windowsteamblog.com/blogs/windowsvista/archive/2009/02/25/announcing-the-service-pack-2-for-windows-vista-and-windows-server-2008-rc.aspx"&gt;has been released&lt;/a&gt; to TechNet and MSDN Subscribers. The final version will be available in Q3 2009.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo4"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Silverlight 2 GDR1 - &lt;a href="http://www.microsoft.com/silverlight/resources/install.aspx"&gt;http://www.microsoft.com/silverlight/resources/install.aspx&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo4"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Live Framework Jan CTP - &lt;a href="http://neuronspark.com/code/live-framework-tools/"&gt;http://neuronspark.com/code/live-framework-tools/&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo4"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Azure Services Training Kit - February Update - &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=413E88F8-5966-4A83-B309-53B7B77EDF78&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=413E88F8-5966-4A83-B309-53B7B77EDF78&amp;amp;displaylang=en&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo4"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;JQuery Version 1.3.2 has been &lt;a href="http://docs.jquery.com/Release:jQuery_1.3.2"&gt;released&lt;/a&gt;. You can use this for &lt;a href="http://blogs.msdn.com/webdevtools/archive/2009/02/24/vsdoc-for-jquery-1-3-2-now-available.aspx"&gt;intelli-sense in Visual Studio&lt;/a&gt;. There are &lt;a href="http://www.codethinked.com/post/2009/02/19/Spiff-Up-Your-ASPNET-MVC-Form-With-jQuery.aspx"&gt;examples&lt;/a&gt; for using JQuery ASP.NET MVC.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo4"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Rhino Mocks for Silverlight - &lt;a href="http://ayende.com/Blog/archive/2009/02/04/rhino-mocks-3.5-ndash-silverlight.aspx"&gt;http://ayende.com/Blog/archive/2009/02/04/rhino-mocks-3.5-ndash-silverlight.aspx&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo4"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Windows Developer Power Tools - &lt;a href="http://www.windevpowertools.com/default.aspx"&gt;http://www.windevpowertools.com/default.aspx&lt;/a&gt; (a list of useful developer tools).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo4"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Fiddler - &lt;a href="http://www.fiddlertool.com/fiddler/"&gt;http://www.fiddlertool.com/fiddler/&lt;/a&gt; (allows you to inspect HTTP requests/responses on your local machine).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;And finally...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo5"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;Google &lt;a href="http://www.google.com/latitude"&gt;Latitude&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo5"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol; mso-bidi-font-family:Symbol;font-size:10.0pt;"&gt;&lt;span style="mso-list:Ignore"&gt;·&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;font-family:&amp;quot;;font-size:10.0pt;"&gt;At last, &lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2009/02/05/xdepend-rc1-ndepend-for-java-is-now-available.aspx"&gt;a .NET tool converted to Java&lt;/a&gt; (rather than JSomething becoming NSomething).&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-2581769492880181349?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/2581769492880181349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=2581769492880181349' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2581769492880181349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2581769492880181349'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/03/march-news.html' title='March News'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-4061106794268376775</id><published>2009-02-23T20:27:00.000Z</published><updated>2009-02-23T21:32:02.918Z</updated><title type='text'>Kerberos, Delegation and SQL Reporting Services</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Here is a very quick overview of the Service Principal Names (SPNs) you need set-up to get &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;SQL Reporting Services working.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Assumptions:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Domain Functional Level is "Windows 2003".&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;SQL Reporting Services and SQL Server (the database engine) are installed to different machines.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Your domain is "acme.com".&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;The account running SQL Reporting Services is "acme\SQLReportingServices" (it does not matter which account SQL Server is running under).&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;SQL Reporting Services should NOT be run under a system account ("Local System" or "Network Service").&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Your SQL Server machine name is "SQL01".&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Your SQL Reporting Services machine name is "RPTS01".&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;The SQL Server instance holding the database is running on the default port (1433).&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;You should create four SPNs with "setspn.exe" as follows:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="  "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;setspn -a MSSQLSvc/SQL01:1433 acme\SqlReportingServices&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="  "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;setspn -a MSSQLSvc/SQL01.acme.com:1433 acme\SqlReportingServices&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="  "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;setspn -a http/&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=" color: rgb(70, 70, 70); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;RPTS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;01 acme\SqlReportingServices&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style=" color: rgb(70, 70, 70); "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="  "&gt;&lt;span class="Apple-style-span" style=" color: rgb(70, 70, 70); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;setspn -a http/RPTS01.acme.com acme\SqlReportingServices&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="  color: rgb(70, 70, 70); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;You can substitute values to match your environment given the assumptions above. Note the capitalisation of the Service Class prefixes of the SPNs ("MSSQLSvc" and "http"). These are important.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="  color: rgb(70, 70, 70); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(70, 70, 70); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;After you have set-up the SPNs, the &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;"acme\SQLReportingServices" account should be trusted for delegation against those SPNs. This is done in the Properties of the User Account object in Active Directory.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(70, 70, 70); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="  color: rgb(70, 70, 70); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Please note it is best practice to set SPNs against dedicated Domain accounts rather than machines (as per above example). Having SPNs registered &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="  "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;to Domain ac&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="  color: rgb(70, 70, 70); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;counts allows you to enable Kerberos delegation in a load balanced environment. If your SPN is registered against a machine you can't delegate from other machines so you can't load balance. Services you wish to enable for delegation should not run under &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=" color: rgb(0, 0, 0); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;"Local System" or "Network Service". If the service is running under such an account, you have to set the SPN against the machine which limits your options for load balancing.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="  color: rgb(70, 70, 70); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="  color: rgb(70, 70, 70); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;"setspn.exe" is available in the Windows Server 2003 Support Tools, more information here:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="  color: rgb(70, 70, 70); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="  color: rgb(70, 70, 70); "&gt;&lt;a href="http://support.microsoft.com/kb/892777"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;http://support.microsoft.com/kb/892777&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="  color: rgb(70, 70, 70); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Delegation with Kerberos can be tricky at times. It makes complete sense when you get your head around it but the initial learning curve can be steep. The first thing to do is understand your network "hops". A "hop" is a call between services on which the clients credentials will be passed on the clients behalf.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="  color: rgb(70, 70, 70); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="  color: rgb(70, 70, 70); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;A great document for understand and troubleshooting Kerberos can be found here:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="  color: rgb(70, 70, 70); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="  color: rgb(70, 70, 70); "&gt;&lt;a href="http://www.blogger.com/www.microsoft.com/DownLoads/details.aspx?FamilyID=99b0f94f-e28a-4726-bffe-2f64ae2f59a2&amp;amp;displaylang=en"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;www.microsoft.com/DownLoads/details.aspx?FamilyID=99b0f94f-e28a-4726-bffe-2f64ae2f59a2&amp;amp;displaylang=en&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-4061106794268376775?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/4061106794268376775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=4061106794268376775' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4061106794268376775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4061106794268376775'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/02/kerberos-delegation-and-sql-reporting.html' title='Kerberos, Delegation and SQL Reporting Services'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-6667550471331794161</id><published>2009-02-21T21:25:00.000Z</published><updated>2009-02-21T21:28:39.018Z</updated><title type='text'>Clone Detective for Visual Studio</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;I found this cool add-in for Visual Studio, its called Clone Detective and it detects duplicate code in your Visual Studio Solution. You can find it here:&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;a href="http://www.codeplex.com/CloneDetectiveVS"&gt;http://www.codeplex.com/CloneDetectiveVS&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The short video on the site is well worth watching. Be aware that installing this add-in seems to wipe your existing Visual Studio settings so back these up first.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-6667550471331794161?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/6667550471331794161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=6667550471331794161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/6667550471331794161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/6667550471331794161'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/02/clone-detective-for-visual-studio.html' title='Clone Detective for Visual Studio'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-4121735798493441105</id><published>2009-02-16T03:14:00.000Z</published><updated>2009-02-16T03:16:09.550Z</updated><title type='text'>Microsoft's "My Phone" beta registration is open</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Here is the link:&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="https://sn1-p1.myphone.microsoft.com/mkweb/Start.po?mkt=en-US"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;https://sn1-p1.myphone.microsoft.com/mkweb/Start.po?mkt=en-US&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Waiting list only at the moment, unless you have a promotional code but I don't know where you get those.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-4121735798493441105?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/4121735798493441105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=4121735798493441105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4121735798493441105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4121735798493441105'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/02/microsofts-my-phone-beta-registration.html' title='Microsoft&apos;s &quot;My Phone&quot; beta registration is open'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-2439356542397401931</id><published>2009-02-09T00:13:00.001Z</published><updated>2009-02-09T00:17:34.919Z</updated><title type='text'>Silverlight does not support delay-signing</title><content type='html'>&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Grrr.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;It seems that Silverlight does not support delay signing of assemblies. This is a pain because our projects use the Guidance Automation Toolkit in Visual Studio to enforce certain best practices. One of the fundamentals to our process is that developer builds are delay signed (with an assembly version of "0.0.0.0"). I've got to circumvent that to fit Silverlight into our set-up.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-2439356542397401931?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/2439356542397401931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=2439356542397401931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2439356542397401931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2439356542397401931'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/02/silverlight-does-not-support-delay.html' title='Silverlight does not support delay-signing'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-2404585029891758627</id><published>2009-02-03T01:37:00.000Z</published><updated>2009-02-03T01:42:48.409Z</updated><title type='text'>Team Foundation Server - label deletion when deleting builds</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;In TFS 2008 SP1 a feature has been introduced to allow you to retain Labels even when the associated build is deleted (either manually or via Retention Policies).&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;There are a couple of blog posts here:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;a href="http://msmvps.com/blogs/vstsblog/archive/2009/01/09/turn-off-label-deletion-when-deleting-builds.aspx"&gt;http://msmvps.com/blogs/vstsblog/archive/2009/01/09/turn-off-label-deletion-when-deleting-builds.aspx&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;a href="http://blogs.msdn.com/buckh/archive/2008/10/20/tfs-2008-sp1-new-setting-to-delete-a-build-without-deleting-the-build-label.aspx"&gt;http://blogs.msdn.com/buckh/archive/2008/10/20/tfs-2008-sp1-new-setting-to-delete-a-build-without-deleting-the-build-label.aspx&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Neither post is very explicit in that the particular web.config in which you need to add the setting, can be found here (assuming default installation):&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;%systemdrive%\Program Files\Microsoft Visual Studio 2008 Team Foundation Server\Web Services\web.config&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-2404585029891758627?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/2404585029891758627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=2404585029891758627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2404585029891758627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2404585029891758627'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/02/team-foundation-server-label-deletion.html' title='Team Foundation Server - label deletion when deleting builds'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-2366386914374267632</id><published>2009-02-02T17:38:00.000Z</published><updated>2009-02-02T17:45:00.565Z</updated><title type='text'>Extending the evaluation period for Windows Server 2008</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Recently I have been experimenting with Windows Server 2008 64 bit, to see how useful Hyper-V might be.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;I have found that you can extend the evaluation period beyond the initial 60 days. You get an evaluation period if you skip adding a Product Key during the install. To see how long you have remaining of you evaluation period, type the following at the command prompt:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;slmgr.vbs -dli&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;This will present you with a dialogue box. To extend you evaluation period by an additional 60 days, type the following at a command prompt (you need elevated privileges for this):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;slmgr.vbs –rearm&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;A dialog box will confirm this evaluation period has been extended. This process can be repeated 3 times giving you up to 240 days evaluation if you include the initial 60 days. For more information see the Microsoft Knowledge Base article here:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;a href="http://support.microsoft.com/kb/948472"&gt;http://support.microsoft.com/kb/948472&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;This also works with Windows Vista.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-2366386914374267632?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/2366386914374267632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=2366386914374267632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2366386914374267632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2366386914374267632'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/02/extending-evaluation-period-for-windows.html' title='Extending the evaluation period for Windows Server 2008'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-8508282783180901026</id><published>2009-02-01T22:49:00.000Z</published><updated>2009-02-01T22:54:15.125Z</updated><title type='text'>February News</title><content type='html'>&lt;p style="margin-bottom:12.0pt"&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;With the beta release of Windows Azure and Windows 7, the forthcoming release of Internet Explorer 8 and many new or updated developer tools, these are eventful times. Here’s a roll-up of what’s been happening.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Microsoft News&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Microsoft have released a &lt;/span&gt;&lt;a href="http://www.microsoft.com/windows/windows-7/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Beta version of Windows 7&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; to the public which is &lt;/span&gt;&lt;a href="http://news.cnet.com/8301-13506_3-10147933-17.html"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;getting very favourable reviews&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;. This beta is regarded as feature complete and is relatively stable. Microsoft are not adding any major new features over Windows Vista aside from a completely new Task Bar interface to make Window management far easier. Improvements are focused on performance. This is for two reasons. Firstly, Vista was heavily criticised for being very sluggish and secondly, sales of &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Netbook"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Netbooks&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; are growing and Microsoft will want their flagship operating system to &lt;/span&gt;&lt;a href="http://www.theregister.co.uk/2009/01/30/microsoft_netbook_sku/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;run on them&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;. Note that the &lt;/span&gt;&lt;a href="http://windowsteamblog.com/blogs/windows7/archive/2009/01/23/general-availability-for-the-windows-7-beta-to-end.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;general availability of the Windows 7 Beta will end on February 10&lt;/span&gt;&lt;sup&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;th&lt;/span&gt;&lt;/sup&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;. The new features that have been added in this version of Windows are &lt;/span&gt;&lt;a href="http://www.neowin.net/news/main/09/01/15/windows-7-explorer-search-overview"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;covered in some detail&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; by Microsoft watcher, Neowin. It is understood there will be no second Beta release and the operating system will go &lt;/span&gt;&lt;a href="http://www.microsoft-watch.com/content/windows_7/next_windows_7_milestone_release_candidate.html"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;straight to Release Candidate&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;. This is a statement of confidence from Microsoft and a clear signal to partners that this edition of Windows is coming soon.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span style="mso-list:Ignore"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span style="mso-list:Ignore"&gt;&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Anyone who missed the news from the &lt;/span&gt;&lt;a href="http://www.microsoftpdc.com/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Professional Developers Conference&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; last October should catch up on &lt;/span&gt;&lt;a href="http://www.microsoft.com/azure/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Windows Azure&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;, Microsoft’s new services platform for &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Cloud_computing"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;The Cloud&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;. My write-up can be found &lt;/span&gt;&lt;a href="http://callumhibbert.blogspot.com/2008/10/professional-developer-conference-2008.html"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Microsoft have also announced the availability of &lt;/span&gt;&lt;a href="http://www.microsoft.com/windows/Internet-explorer/beta/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Internet Explorer 8 Release Candidate 1&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; which is widely expected to be the last release before the final version. IE 8 has far better support for open internet standards such as those defined by the standards body, &lt;/span&gt;&lt;a href="http://www.w3.org/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;W3C&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;. On paper this sounds brilliant, in practice it will risk breaking those millions of web sites explicitly designed to work for earlier versions of Internet Explorer. Historically, web sites have been designed to work on Internet Explorer at the cost of other browsers owing to its overwhelming market share. Microsoft have provided a “compatibility mode” in IE 8 so that it behaves the same as older versions of the browser.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span style="font-size: 10pt; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;It was impossible to escape news that the United States of America has a new president. The inauguration was probably one of the most photographed events in history owing to the one million plus people who turned up to see it in person. &lt;/span&gt;&lt;a href="http://livelabs.com/photosynth/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Microsoft’s Photosynth technology&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; has was used to provide a &lt;/span&gt;&lt;a href="http://www.cnn.com/themoment"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;3-D view of the event&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; using photographs uploaded by the public. Photosynth is a project that came out of Microsoft Research and has been built with &lt;/span&gt;&lt;a href="http://silverlight.net/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Silverlight&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;, Microsoft’s platform for building cross platform &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Rich_Internet_application"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Rich Internet Applications&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;. Silverlight is &lt;/span&gt;&lt;a href="http://www.microsoft.com/silverlight/resources/install.aspx#sysreq"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;compatible&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; with Windows, Mac, Linux and works on Internet Explorer, Firefox and Safari web browsers making it a compelling platform. Take a look at some &lt;/span&gt;&lt;a href="http://photosynth.net/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;other “Photosynths”&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;a href="http://www.microsoft.com/SURFACE"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;a href="http://www.microsoft.com/SURFACE"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Microsoft’s Surface technology&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; is being used to &lt;/span&gt;&lt;a href="http://www.engadget.com/2009/01/29/microsoft-surface-being-used-to-coordinate-super-bowl-security/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;co-ordinate security for the Super Bowl&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; in Tampa, Florida on 1&lt;/span&gt;&lt;sup&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;st&lt;/span&gt;&lt;/sup&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; February. Surface is an interactive table top display technology that has some &lt;/span&gt;&lt;a href="http://uk.youtube.com/watch?v=eUqwfnwH1Oc"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;interesting applications&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;, it is built on the &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa663364.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Windows Presentation Foundation (WPF)&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; that was introduced with .NET Framework 3.0.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span style="font-size: 10pt; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Microsoft are &lt;/span&gt;&lt;a href="http://www.neowin.net/news/main/09/01/19/microsoft-set-to-unveil-mobileme-competitor-next-month"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;rumoured to be launching brand new mobile services&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; as competition to &lt;/span&gt;&lt;a href="http://www.apple.com/mobileme/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Apple’s MobileMe offering&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;. Called “SkyBox”, it allows user to sync or share phone information such as contact and data and provides back-up and restore features. This is a further expansion to Microsoft’s Software + Services vision, of which &lt;/span&gt;&lt;a href="http://www.microsoft.com/azure/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Windows Azure&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;, &lt;/span&gt;&lt;a href="http://home.live.com/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Windows Live&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; and &lt;/span&gt;&lt;a href="http://www.officelive.com/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Office Live&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; have already been launched.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span style="font-size: 10pt; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Developers should look at the &lt;/span&gt;&lt;a href="http://www.microsoft.com/uk/msdn/flash/latest.htm"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;latest MSDN Flash&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; for details of upcoming web casts, events, new downloads and a look at Visual Studio 2010 and the .NET Framework 4.0. You can &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-gb/flash/default.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;subscribe&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; to the MSDN Flash email.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; "&gt;&lt;o:p&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Articles &amp;amp; Blogs&lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Information on &lt;/span&gt;&lt;a href="http://windowsteamblog.com/blogs/windows7/archive/2009/01/07/information-on-downloading-and-installing-windows-7-beta.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;downloading and installing Windows 7 Beta&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span style="font-size: 10pt; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;A lot of resources on Windows Azure are starting to come out, including a &lt;/span&gt;&lt;a href="http://blogs.msdn.com/brunoterkaly/archive/2009/01/15/understanding-azure-tools-the-real-starting-point.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;getting started guide&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;, a &lt;/span&gt;&lt;a href="http://www.codethinked.com/post/2009/01/14/Windows-Azure-Breaking-It-Down.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;breakdown of the different components&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; that make up Azure and &lt;/span&gt;&lt;a href="http://geekswithblogs.net/iupdateable/archive/2009/01/22/five-hours-of-webcasts-on-windows-azure.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;five hours worth of webcasts&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span style="mso-list:Ignore"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span style="mso-list:Ignore"&gt;&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;A comprehensive look at &lt;/span&gt;&lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2008/11/20/10923.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;what’s coming in Visual Studio 2010 and .NET Framework 4.0&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span style="font-size: 10pt; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;A &lt;/span&gt;&lt;a href="http://timheuer.com/blog/archive/2009/01/28/comprehensive-list-of-silverlight-controls.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;listing of Silverlight controls&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; "&gt;&lt;o:p&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Downloads and Tools&lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Microsoft have pushed out a &lt;/span&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2009/01/27/asp-net-mvc-1-0-release-candidate-now-available.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Release Candidate&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; for the ASP.NET MVC Framework. Version 1.0 is likely to ship next month. The current beta release already has a go-live licence.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span style="font-size: 10pt; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;There is a &lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=80e3eabf-0507-4560-aeb6-d31e9a70a0a6&amp;amp;displaylang=en"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;January release&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; of the Windows Azure SDK CTP. This refresh provides better Visual Studio integration with the tooling.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span style="mso-list:Ignore"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;There is also a &lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=f2f4544c-626c-44a3-8866-b2a9fe078956&amp;amp;displaylang=en"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;January release&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; of the Oslo SDK CTP.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span style="font-size: 10pt; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;For people who use ReSharper, version 4.5 has entered the Early Adopter Program (EAP) and you can use this without affecting your existing version 4.1 installation &lt;/span&gt;&lt;a href="http://codebetter.com/blogs/james.kovacs/archive/2009/01/20/installing-resharper-4-5-in-an-experimental-visual-studio-hive.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;using the Visual Studio hive&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span style="font-size: 10pt; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Microsoft have released version 1.0 of the &lt;/span&gt;&lt;a href="http://www.microsoft.com/web/channel/products/WebPlatformInstaller.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Web Platform Installer&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;. This is a tool which installs free editions of Microsoft’s entire Web Platform stack including Visual Web Developer 2008 Express Edition, SQL Server 2008 Express Edition and the .NET Framework. This probably not a toolset you would typically use for enterprise level development but is a useful answer where licence costs are an issue or for very small scale projects.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span style="font-size: 10pt; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Microsoft have &lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=EB83ED4C-AC85-4DE9-8395-285628EE2254&amp;amp;displaylang=en"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;released the source code and unit tests&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; for the managed Silverlight 2 controls. This is of great use if you wish to extend these controls or build new ones as it shows you the inner workings of Silverlight. This is similar to last year’s &lt;/span&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;release of the source code for the .NET Framework&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; Base Class Libraries.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span style="font-size: 10pt; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Microsoft have put a page onto MSDN that gives a comprehensive listing of all &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/dd299405.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;current supported Microsoft SDKs&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;, this page will be updated.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span style="font-size: 10pt; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;The open source JavaScript library, JQuery, that ships with now ships with Visual Studio and ASP.NET has seen a &lt;/span&gt;&lt;a href="http://blog.jquery.com/2009/01/21/jquery-131-released/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;release of Version 1.3.1&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;. A JQuery &lt;/span&gt;&lt;a href="http://acodingfool.typepad.com/blog/pdf/jquery_1.3_cheatsheet_v1.pdf"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;cheat sheet is also available&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;a href="http://www.linqpad.net/"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;a href="http://www.linqpad.net/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;LINQPad&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; is an excellent LINQ tool, it will even let you interactively query SQL databases.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span style="font-size: 10pt; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Download Internet Explorer 8 RC1 for &lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=821025fe-9adf-487e-b58c-561b7c8c25db&amp;amp;DisplayLang=en"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Windows XP&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; and for &lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8e31391b-91b2-40c4-8643-7b70d1d5628b&amp;amp;DisplayLang=en"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Windows Vista/Server 2008&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;a href="http://www.thirteen23.com/experiences/desktop/chirp/"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;a href="http://www.thirteen23.com/experiences/desktop/chirp/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Chirp&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; is a beautiful &lt;/span&gt;&lt;a href="http://twitter.com/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Twitter&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; client written in WPF.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;And Finally...&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Gmail now supports &lt;/span&gt;&lt;a href="http://gmailblog.blogspot.com/2009/01/new-in-labs-offline-gmail.html"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;working off-line&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span style="font-size: 10pt; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;“&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Eat_one's_own_dog_food"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Dogfooding&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;” is the practice of using your own products. Whatever you might do, it is likely to pale when compared to the &lt;/span&gt;&lt;a href="http://www.codinghorror.com/blog/archives/001217.html"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;ultimate dogfooding story&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span style="font-size: 10pt; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;A Tester’s view of Developers, &lt;/span&gt;&lt;a href="http://lanafly.blogspot.com/2008/09/non-obvious-ways-to-find-bugs-look-at.html"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;which one are you&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;?&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span style="font-size: 10pt; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;span style="font-size: 10pt; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;The IT industry is set to be revolutionised by a &lt;/span&gt;&lt;a href="http://www.secretgeek.net/self_click_next.asp"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;miraculous labour saving device&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-8508282783180901026?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/8508282783180901026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=8508282783180901026' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/8508282783180901026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/8508282783180901026'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/02/february-news.html' title='February News'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-5198115270046527545</id><published>2009-01-30T00:47:00.000Z</published><updated>2009-01-30T00:51:36.440Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Server2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Windows Server 2008 as a workstation (Part 4)</title><content type='html'>&lt;span style="font-family:arial;font-size:85%;"&gt;Following on from my previous posts:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;a href="http://callumhibbert.blogspot.com/2008/10/windows-server-2008-as-workstation.html"&gt;Windows Server 2008 as a workstation&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;a href="http://callumhibbert.blogspot.com/2008/10/windows-server-2008-as-workstation-part.html"&gt;Windows Server 2008 as a workstation (Part 2)&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://callumhibbert.blogspot.com/2008/10/windows-server-2008-as-workstation-part_17.html"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Windows Server 2008 as a workstation (Part 3)&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;font-size:85%;"&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;I found two more blogs that also provide some useful tips:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;a href="http://www.win2008workstation.com/wordpress/"&gt;http://www.win2008workstation.com/wordpress/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;a href="http://www.pronetworks.org/forums/windows-server-2008-rtm-as-a-desktop-os-t101245.html"&gt;http://www.pronetworks.org/forums/windows-server-2008-rtm-as-a-desktop-os-t101245.html&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-size:+0;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-5198115270046527545?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/5198115270046527545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=5198115270046527545' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5198115270046527545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5198115270046527545'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/01/windows-server-2008-as-workstation-part.html' title='Windows Server 2008 as a workstation (Part 4)'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-8336865886285264668</id><published>2009-01-29T11:52:00.000Z</published><updated>2009-01-29T11:56:10.196Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Determining uptime of a Windows machine</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;From a command prompt (Start --&gt; Run --&gt; cmd) enter the command "systeminfo" and the uptime for the machine will be displayed in a list including operating system and hardware details, what Hotfixes you have installed and various other information.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-8336865886285264668?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/8336865886285264668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=8336865886285264668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/8336865886285264668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/8336865886285264668'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/01/determining-uptime-of-windows-machine.html' title='Determining uptime of a Windows machine'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-5410995116836904569</id><published>2009-01-27T21:19:00.001Z</published><updated>2009-01-27T23:06:38.677Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Server2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows7'/><title type='text'>boot.ini is dead, long live BCDEdit.exe</title><content type='html'>&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Since Windows Vista (including Windows Server 2008, Windows 7), Microsoft has changed the way the partitions are managed when you have a dual boot machine. Before Vista (and going back to Windows NT 4.0, I think) there was a file on the boot partition called "boot.ini" which contained  a list of bootable operating systems and which partition they were installed to. On booting, Windows would look at this file and present the user with a list of options matching the list in the file. This made it easy to manually edit the boot options, all you needed to do was edit the file in notepad.exe.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;In recent operating systems, the boot options are managed by a program called bcdedit.exe (find in %systemdrive%\windows\system32). A full guide with examples can be found here:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;a href="http://www.microsoft.com/whdc/system/platform/firmware/bcd.mspx"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;http://www.microsoft.com/whdc/system/platform/firmware/bcd.mspx&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Recently I needed to rename my boot options, I had a dual boot set-up with both partitions having Windows Server 2008. One was 32 bit which I have been running for a while, the other is 64 bit (to test out Hyper-V which only runs on 64 bit). Both boot options h&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;ad the default name of "Windows Server 2008" which was confusing on the boot menu. To rename my 32 bit boot option I executed the following:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span lang="EN-US" style=""&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;bcdedit&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;exe&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; /set&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; description &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style=""&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;"Windows Server 2008 x86&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style=""&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;This was while logged on to the 32 bit OS, that command updates the boot name for the current partition. To rename the 64 bit OS in the boot options (while still booted in the 32 bit OS) I need to pass an ID for the partition. The IDs of the available partitions can be found by running bcdedit.exe with no arguments. Once I had this ID, I simply ran:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;bcdedit.exe /set {GUID} description &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;"Windows Server 2008 x64&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Where "GUID" is exactly that, inside the curly braces e.g.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;bcdedit.exe /set {00000000-0000-0000-0000-000000000000} description &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;"Windows Server 2008 x64&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;This command allows you to update an option for a partition you are not booted into.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-5410995116836904569?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/5410995116836904569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=5410995116836904569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5410995116836904569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5410995116836904569'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2009/01/bootini-is-dead-long-live-bcdeditexe.html' title='boot.ini is dead, long live BCDEdit.exe'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-7530938669521552627</id><published>2008-11-26T23:08:00.001Z</published><updated>2009-01-27T21:13:16.248Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Server2008'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2008'/><category scheme='http://www.blogger.com/atom/ns#' term='SQLServer'/><title type='text'>Microsoft® Visual Studio Team System 2008 Database Edition now supports SQL Server 2008</title><content type='html'>&lt;span style="font-family:arial;"&gt;Microsoft has posted the RTM of the update to Microsoft® Visual Studio Team System 2008 Database Edition to enable support for SQL Server 2008. One of the main features is a SQL Server 2008 Projects type in Visual Studio:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=bb3ad767-5f69-4db9-b1c9-8f55759846ed&amp;amp;displaylang=en"&gt;&lt;span style="font-family:arial;"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=bb3ad767-5f69-4db9-b1c9-8f55759846ed&amp;amp;displaylang=en&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Remember, "Datadude" is free for people with a license for Microsoft® Visual Studio Team System 2008 Developer Edition:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://callumhibbert.blogspot.com/2008/10/visual-studio-team-system-developer.html"&gt;&lt;span style="font-family:arial;"&gt;http://callumhibbert.blogspot.com/2008/10/visual-studio-team-system-developer.html&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-7530938669521552627?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/7530938669521552627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=7530938669521552627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/7530938669521552627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/7530938669521552627'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/11/microsoft-visual-studio-team-system.html' title='Microsoft® Visual Studio Team System 2008 Database Edition now supports SQL Server 2008'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-2596228303623831077</id><published>2008-11-25T12:23:00.000Z</published><updated>2008-11-25T12:26:24.410Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Windows Server 2008 Core will support managed code</title><content type='html'>&lt;span style="font-family:arial;"&gt;I posted a while ago the surprisong news that Windows Server 2008 Core would not support managed code: &lt;/span&gt;&lt;a href="http://callumhibbert.blogspot.com/2008/04/windows-2008-server-core-does-not.html"&gt;&lt;span style="font-family:arial;"&gt;http://callumhibbert.blogspot.com/2008/04/windows-2008-server-core-does-not.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Seems like Microsoft have changed their mind and the Core install will support ASP.NET and a "subset" of .NET 2.0, 30 and 3.5 when SP2 arrives.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-2596228303623831077?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/2596228303623831077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=2596228303623831077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2596228303623831077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2596228303623831077'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/11/windows-server-2008-core-will-support.html' title='Windows Server 2008 Core will support managed code'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-3670035220754266364</id><published>2008-11-06T16:52:00.000Z</published><updated>2008-11-06T17:16:03.685Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Server2008'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>DebugView and Windows Server 2008</title><content type='html'>&lt;span style="font-family:arial;"&gt;DebugView is a great tool for development. It will provide a live feed of messages output to the Debug listener. If you make a call to System.Diagnostics.Debug.WriteLine() then that message will appear in the DebugView console. Very useful for development, even more so when working with server products like BizTalk or SharePoint. You can insert Debug.WriteLine() statements into your code and monitor the behaviour of your application in real time.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;One added bonus is that calls to System.Diagnostics.Debug.WriteLine() are not included in the Release build of your assemblies so you're not peppering your code with statements you don't want running in production.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;I've used this tool for a long time but I've discovered on Windows Server 2008 you need to run it with Elevated Privileges to be able to capture events from the Kernel and Win32. You need these enabled (under the "Capture" menu) so catch messages from applications hosted in IIS etc.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-3670035220754266364?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/3670035220754266364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=3670035220754266364' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/3670035220754266364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/3670035220754266364'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/11/debugview-and-windows-server-2008.html' title='DebugView and Windows Server 2008'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-8359211767309165647</id><published>2008-10-28T14:43:00.000Z</published><updated>2008-10-28T15:33:25.075Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='FxCop'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Using a custom dictionary for FxCop in Visual Studio 2008</title><content type='html'>&lt;span style="font-family:arial;"&gt;A colleague of mine has spotted an excellent post on how to use Custom Dictionaries with FxCop in Visual Studio 2008.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The post is here: &lt;/span&gt;&lt;a href="http://duncanjasmith.blogspot.com/2008/07/creating-custom-dictionary-for-code.html"&gt;&lt;span style="font-family:arial;"&gt;http://duncanjasmith.blogspot.com/2008/07/creating-custom-dictionary-for-code.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The short story is that in VS2008 there is a "BuildAction" of "CodeAnalysisDictionary" that you can apply to Project Items. Copy and edit the built-in Custom Dictionary from "%systemdrive%\Program Files\Microsoft Visual Studio 9.0\Team Tools\Static Analysis Tools\FxCop\CustomDictionary.xml" and away you go. Read his post for details on how to have an FxCop Custom Dictionary applied Solution wide.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-8359211767309165647?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/8359211767309165647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=8359211767309165647' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/8359211767309165647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/8359211767309165647'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/10/using-custom-dictionary-for-fxcop-in.html' title='Using a custom dictionary for FxCop in Visual Studio 2008'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-572654560299121786</id><published>2008-10-28T12:07:00.001Z</published><updated>2008-10-28T12:15:59.027Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='PDC2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Professional Developer Conference 2008 - Day One Summary</title><content type='html'>&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Key Note - Azure Services Platform&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;During the key note, Ray Ozzie announced Microsoft's Azure Services Platform (code name "Red Dog"). This is a "services platform" for the cloud. This platform has been used to build Live Services and will be the building blocks for .NET Services, SQL Services, SharePoint Services and Dynamics CRM Services.Service Level Agreements (with financial guarantees) are scheduled for 2009. It should be noted that it's unlikely there will be an explicit Version 1 - these services will constantly evolve.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Details and analysis here:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/azure"&gt;&lt;span style="font-family:arial;"&gt;http://www.microsoft.com/azure&lt;/span&gt;&lt;/a&gt;&lt;a href="http://www.microsoft.com/presspass/press/2008/oct08/10-27PDCDay1PR.mspx"&gt;&lt;span style="font-family:arial;"&gt;http://www.microsoft.com/presspass/press/2008/oct08/10-27PDCDay1PR.mspx&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.liveside.net/main/archive/2008/10/27/live-mesh-how-does-live-mesh-relate-to-azure.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://www.liveside.net/main/archive/2008/10/27/live-mesh-how-does-live-mesh-relate-to-azure.aspx&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.theregister.co.uk/2008/10/27/microsoft_amazon/"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://www.theregister.co.uk/2008/10/27/microsoft_amazon/http://weblogs.asp.net/pgielens/archive/2008/10/27/a-lap-around-windows-azure.aspxVisual"&gt;http://www.theregister.co.uk/2008/10/27/microsoft_amazon/&lt;/span&gt;&lt;/a&gt;&lt;a href="http://weblogs.asp.net/pgielens/archive/2008/10/27/a-lap-around-windows-azure.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://weblogs.asp.net/pgielens/archive/2008/10/27/a-lap-around-windows-azure.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Visual Studio 2010 and .NET Framework 4.0 CTP&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The PDC kicked off with Microsoft releasing a CTP of Visual Studio 2010 and .NET Framework 4.0. Please note this does not include any Oslo features, Oslo integration with Visual Studio will come in a later CTP.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Details here:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=922b4655-93d0-4476-bda4-94cf5f8d4814&amp;amp;DisplayLang=en#filelist"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=922b4655-93d0-4476-bda4-94cf5f8d4814&amp;amp;DisplayLang=en#filelist"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=922b4655-93d0-4476-bda4-94cf5f8d4814&amp;amp;DisplayLang=en#filelist&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Silverlight 2.0&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Microsoft released Silverlight 2.0 for Windows and Mac. This is an important release as it includes a cross platform implementation of the .NET Framework. The original moniker for this project was WPF/E "Windows Presentation Foundation Everywhere" and was originally announced by Jim Allchin at the last PDC in 2005.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Details here:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.theregister.co.uk/2008/10/27/silverlight_two_review/"&gt;&lt;span style="font-family:arial;"&gt;http://www.theregister.co.uk/2008/10/27/silverlight_two_review/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Microsoft Federation Gateway&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The Microsoft Federation Gateway is an identity hub that brokers identities across disparate applications and services. For seamless integration with Active Directory, Microsoft has released a server component called the Microsoft Services Connector. It should be noted that this is implemented using open standards. This appears to be an implementation of Microsoft Active Directory Federation Services (ADFS).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Details here:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://dev.live.com/blogs/devlive/archive/2008/10/27/420.aspx"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://dev.live.com/blogs/devlive/archive/2008/10/27/420.aspx"&gt;http://dev.live.com/blogs/devlive/archive/2008/10/27/420.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Windows Live &amp;amp; OpenID&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Windows Live publicly committed support for the OpenID platform enabling users to use their Windows Live ID to sign into any OpenID site.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Details here:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://dev.live.com/blogs/devlive/archive/2008/10/27/421.aspx"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://dev.live.com/blogs/devlive/archive/2008/10/27/421.aspx"&gt;http://dev.live.com/blogs/devlive/archive/2008/10/27/421.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;More information on OpenID here: &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://openid.net/"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://openid.net/"&gt;http://openid.net/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Oslo Developer Centre&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Microsoft announced the Oslo Developer Centre. You can download an Oslo CTP now from this site. This CTP includes documents and tools for working with the “M” language.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Main site:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-gb/oslo/default.aspx"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://msdn.microsoft.com/en-gb/oslo/default.aspx"&gt;http://msdn.microsoft.com/en-gb/oslo/default.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Oslo SDK direct link:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://download.microsoft.com/download/4/2/3/423FFDF3-B0B9-4EF0-990F-82DDE530B672/RepositoryOct2008CTP.msi"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://download.microsoft.com/download/4/2/3/423FFDF3-B0B9-4EF0-990F-82DDE530B672/RepositoryOct2008CTP.msi"&gt;http://download.microsoft.com/download/4/2/3/423FFDF3-B0B9-4EF0-990F-82DDE530B672/RepositoryOct2008CTP.msi&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;WCF REST Starter Kit&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;This is a preview of the REST features for WCF 4.0. Find it at the WCF Developer Centre.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Main site:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/wcf/rest"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://msdn.microsoft.com/wcf/rest"&gt;http://msdn.microsoft.com/wcf/rest&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;WCF REST Starter Kit direct link:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.codeplex.com/aspnet/Wiki/View.aspx?title=WCF%20REST"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://www.codeplex.com/aspnet/Wiki/View.aspx?title=WCF%20REST"&gt;http://www.codeplex.com/aspnet/Wiki/View.aspx?title=WCF%20REST&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Day One Summaries and Digests&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;S. Somasegar, Senior Vice Preseident of the Developer Division sums things up here:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/somasegar/archive/2008/10/27/announcements-from-pdc-2008.aspx"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://blogs.msdn.com/somasegar/archive/2008/10/27/announcements-from-pdc-2008.aspx"&gt;http://blogs.msdn.com/somasegar/archive/2008/10/27/announcements-from-pdc-2008.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Steve Martin, Director of Product Management for Microsoft's Connected Systems Division talks about where the Azure Services Platform is going and what is available now:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/stevemar/archive/2008/10/27/pdc-day-1-azure-services-platform-ctp-availability-and-much-more.aspx"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://blogs.msdn.com/stevemar/archive/2008/10/27/pdc-day-1-azure-services-platform-ctp-availability-and-much-more.aspx"&gt;http://blogs.msdn.com/stevemar/archive/2008/10/27/pdc-day-1-azure-services-platform-ctp-availability-and-much-more.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Matt Milner from Pluralsight talks about the Azure Services Platform in more depth:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pluralsight.com/community/blogs/matt/archive/2008/10/27/pdc-keynote-day-1.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://www.pluralsight.com/community/blogs/matt/archive/2008/10/27/pdc-keynote-day-1.aspx&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-572654560299121786?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/572654560299121786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=572654560299121786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/572654560299121786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/572654560299121786'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/10/professional-developer-conference-2008.html' title='Professional Developer Conference 2008 - Day One Summary'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-3531449716786257858</id><published>2008-10-17T16:07:00.001+01:00</published><updated>2008-10-17T16:09:07.098+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Server2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Windows Server 2008 as a workstation (Part 3)</title><content type='html'>&lt;span style="font-family:arial;"&gt;Most people will want to use Windows Live Messenger, unfortunately the installer from the "Get Live" site (&lt;/span&gt;&lt;a href="http://get.live.com/"&gt;&lt;span style="font-family:arial;"&gt;http://get.live.com/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;) does not work with Windows Server 2008.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;One way around this is to download Windows Live Messenger Version 8.1 from Microsoft.com. You can find it here: &lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=d78f2ff1-79ea-4066-8ba0-ddbed94864fc&amp;amp;displaylang=en"&gt;&lt;span style="font-family:arial;"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=d78f2ff1-79ea-4066-8ba0-ddbed94864fc&amp;amp;displaylang=en&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This works fine for Windows Server 2008.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-3531449716786257858?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/3531449716786257858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=3531449716786257858' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/3531449716786257858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/3531449716786257858'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/10/windows-server-2008-as-workstation-part_17.html' title='Windows Server 2008 as a workstation (Part 3)'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-5749971352643807760</id><published>2008-10-17T14:31:00.001+01:00</published><updated>2008-10-17T14:38:01.778+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Server2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Windows Server 2008 as a workstation (Part 2)</title><content type='html'>&lt;span style="font-family:arial;"&gt;Continuing from my last post about using Windows Server 2008 as a workstation there are some changes to make to Internet Explorer to make it more usable.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;As per Windows 2003 Server, the operating system employs the "Internet Explorer Enhanced Security Configuration" component to lock down IE. This makes total sense when Windows Server 2008 is being used as a server but when using it for general use its not user friendly.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;In Windows 2003 Server you were able to completely un-install the "Internet Explorer Enhanced Security Configuration" component from Add/Remove Programs in Control Panel. That is not possible in Windows Server 2008 as the component is baked into the OS. You can't remove it but you can disable it.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;To do this open Server Manager (Start --&gt; Administrative Tools --&gt; Server Manager). On the right hand side under the "Security" section, click on "Configure IE ESC". This opens a new dialog box where you can disable Internet Explorer Enhanced Security Configuration for Admins and/or Users.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-5749971352643807760?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/5749971352643807760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=5749971352643807760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5749971352643807760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5749971352643807760'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/10/windows-server-2008-as-workstation-part.html' title='Windows Server 2008 as a workstation (Part 2)'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-434962425477191521</id><published>2008-10-16T23:40:00.000+01:00</published><updated>2008-10-17T00:06:52.013+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Server2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Windows Server 2008 as a workstation</title><content type='html'>&lt;span style="font-family:arial;"&gt;I have been using Windows Server 2008 as a my main workstation lately and my experiences have been wholly positive but &lt;/span&gt;&lt;span style="font-family:arial;"&gt;there are two niggling issues. Fortunately both are easily resolvable.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The first is that by default, the use of MSIs is prohibited (okay, this is more than a niggle). To be able to install additional programs you need to change the Local Group Policy. To do this run "gpedit.msc" and navigate to "Computer Configuration\Administrative Temaplates\Windows Components\Windows Installer". Change the "Disable Windows Installer" state to "Enabled".&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The second issue is the annoying "Shut Down Windows" dialog that appears everytime you want to shutdown your box. This dialog box requires that you enter a reason everytime you shutdown or restart your box. I have found multiple articles and blogs that suggest you need to change the Local Group Policy. Done by running "gpedit.msc" again, navigating to "Computer Configuration\Administrative Temaplates\System" and changing the "Display Shutdown Event Tracker" state to "Disabled". But this does not appear to work, at least it didn't for me. What did work was editing a registry value. Open regedit.exe and go to "HKLM\SOFTWARE\Policies\Microsoft\WindowsNT". Create a new Key called "Reliability" and add a DWORD value at that location. The name should be "ShutdownReasonOn" and the value should be "0".&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-434962425477191521?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/434962425477191521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=434962425477191521' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/434962425477191521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/434962425477191521'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/10/windows-server-2008-as-workstation.html' title='Windows Server 2008 as a workstation'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-2196383938255804835</id><published>2008-10-16T13:05:00.000+01:00</published><updated>2008-10-16T15:19:14.592+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Server2008'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>Repairing the .NET Framework 2.0 and 3.0 on Windows Vista and Windows Server 2008</title><content type='html'>&lt;span style="font-family:arial;"&gt;I had a problem recently with some files from the .NET Framework 2.0 being corrupt. I think the root cause of the problem was use of Virtual Machines. Anyway, I needed to repair the .NET Framework 2.0, specifically aspnet_regiis.exe.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The problem is that under Windows Vista and Windows Server 2008 these components are part of the operating system so you can't do a repair with the MSI like you normally can with installed programs. After doing some digging I found the answer here:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/astebner/archive/2007/03/26/how-to-repair-the-net-framework-2-0-and-3-0-on-windows-vista.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://blogs.msdn.com/astebner/archive/2007/03/26/how-to-repair-the-net-framework-2-0-and-3-0-on-windows-vista.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The short story is to run "sfc /scannow" with elevated privileges.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-2196383938255804835?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/2196383938255804835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=2196383938255804835' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2196383938255804835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2196383938255804835'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/10/repairing-net-framework-20-and-30-on.html' title='Repairing the .NET Framework 2.0 and 3.0 on Windows Vista and Windows Server 2008'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-845714033464025449</id><published>2008-10-05T21:32:00.000+01:00</published><updated>2008-10-05T21:42:39.159+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2008'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><title type='text'>Visual Studio Team System Developer &amp; Database Editions are merged</title><content type='html'>&lt;span style="font-family:arial;"&gt;Microsoft has recently announced that the Visual Studio Team System Developer &amp;amp; Database Editions are to be merged, details are here: &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/vsts2008/products/cc990295.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://msdn.microsoft.com/en-us/vsts2008/products/cc990295.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Essentially MSDN Subscribers with a "Visual Studio Team System Developer" or "Visual Studio Team System Database" (or relevant Partner Programs) will be given access to the alternative SKU. Please note that these products are not a single installation, you need to inst&lt;/span&gt;&lt;span style="font-family:arial;"&gt;all both products. This results in you having both SKUs installed which means you will get additional features/menus in Visual Studio. This affects the current toolset in addition to Rosario (VS2010).&lt;br /&gt;&lt;br /&gt;This is a great move by Microsoft, the features of the Database Edition are incredibly useful to a &lt;/span&gt;&lt;span style="font-family:arial;"&gt;developer. There is a new Database Project type that supports MSBuild, this means you can build/rebuild you database schema from the IDE or from the command line. The schema compare facilities give you functionality broadly equivalent to RedGate's fantastic SQL Compare product (&lt;/span&gt;&lt;a href="http://www.red-gate.com/products/SQL_Compare/index.htm"&gt;&lt;span style="font-family:arial;"&gt;http://www.red-gate.com/products/SQL_Compare/index.htm&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;).&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-845714033464025449?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/845714033464025449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=845714033464025449' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/845714033464025449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/845714033464025449'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/10/visual-studio-team-system-developer.html' title='Visual Studio Team System Developer &amp; Database Editions are merged'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-6416798925812264348</id><published>2008-06-30T14:08:00.001+01:00</published><updated>2008-06-30T15:23:14.814+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2005'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>XBAP applications and Strong Naming.</title><content type='html'>&lt;span style="font-family:arial;"&gt;One of the first things that is hammered into you when start reading up on XBAP applications is that they run with Partial Trust. There are ways to get your XBAP application running with full trust but this is not the typical scenario (and that topic is worth a whole series of blog posts).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;When you Strong Name an assembly, by default the assembly will not allow Partially Trusted callers. As the sandbox in which your XBAP applications run is running with Partial Trust, this means that you will get the following error in the browser when you try to run your application&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Startup URI: C:\dir\MyApplication.xbapApplication Identity: &lt;/span&gt;&lt;a href="file:///C:/dir/MyApplication.xbap"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;file:///C:/dir/MyApplication.xbap#MyApplication.xbap&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;, Version=x.x.x.x, Culture=neutral, PublicKeyToken=0000000000000000, processorArchitecture=msil/MyApplication.exe, Version=x.x.x.x, Culture=neutral, PublicKeyToken=0000000000000000, processorArchitecture=msil, type=win32&lt;br /&gt;System.Security.SecurityException: That assembly does not allow partially trusted callers. at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed) at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args) at System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel) at System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly() at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData) at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext) at System.Windows.Interop.PresentationApplicationActivator.CreateInstance(ActivationContext actCtx) at System.Activator.CreateInstance(ActivationContext activationContext) at System.AppDomain.InternalRemotelySetupRemoteDomainHelper(Object[] args) at System.Threading.Thread.CompleteCrossContextCallback(InternalCrossContextDelegate ftnToCall, Object[] args) at System.AppDomain.nCreateInstance(String friendlyName, AppDomainSetup setup, Evidence providedSecurityInfo, Evidence creatorsSecurityInfo, IntPtr parentSecurityDescriptor) at System.Runtime.Hosting.ApplicationActivator.CreateInstanceHelper(AppDomainSetup adSetup) at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData) at System.Windows.Interop.PresentationApplicationActivator.CreateInstance(ActivationContext actCtx) at System.Windows.Interop.ApplicationLauncherXappDebug.Initialize() at System.Windows.Interop.DocObjHost.MS.Internal.AppModel.IBrowserHostServices.Run(String path, String debugSecurityZoneURL, String viewerUri, String fragment, String applicationId, MimeType mime, Object streamContainer, Object ucomLoadIStream, String userAgentString, Boolean isDebugMode, String progressAssemblyName, String progressClassName, String errorAssemblyName, String errorClassName)The action that failed was:LinkDemandThe method that caused the failure was:Void Main()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;To prevent this problem, you need to mark your XBAP assembly with the AllowPartiallyTrustedCallersAttribute, for example:&lt;/span&gt;&lt;br /&gt;&lt;div style="BACKGROUND: white" color="black" size="10pt" face="Courier New"&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style="MARGIN-TOP: 0px; BACKGROUND: white"&gt;[assembly: &lt;span style="color:#2b91af;"&gt;AllowPartiallyTrustedCallers&lt;/span&gt;]&lt;/p&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;With this Attribute your XBAP application will now run.&lt;/span&gt; &lt;div style="BACKGROUND: white" color="black" size="10pt" face="Courier New"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-6416798925812264348?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/6416798925812264348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=6416798925812264348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/6416798925812264348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/6416798925812264348'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/06/xbap-applications-and-strong-naming.html' title='XBAP applications and Strong Naming.'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-5943987511645246238</id><published>2008-06-25T20:18:00.000+01:00</published><updated>2008-06-30T14:33:26.001+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Microsoft Dynamics CRM 4.0 install error "The instance name must be the same as computer name."</title><content type='html'>&lt;span style="font-family:arial;"&gt;If you are installing Microsoft Dynamics CRM 4.0 to a computer that you have renamed, this can cause problems depending on when you installed SQL Server 2005. If you installed SQL Server before you renamed the box, you will receive the following error regarding SQL Server 2005 when the installer does a system check:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;"The instance name must be the same as computer name."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;To fix this problem you need to update the name of the machine in SQL Server by executing the following:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sp_dropserver 'OldMachineName'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sp_addserver 'NewMachineName', local&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;You will also need to restart the SQL Server service. Please note you can't use this command to change the instance suffixes. For example you can NOT change "serverA\SomeInstance" to "serverA\AnotherInstance", you may only change "serverA\SomeInstance" to "serverB\SomeInstance".&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;For more information see the following MSDN article: &lt;a href="http://msdn.microsoft.com/en-us/library/ms143799.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms143799.aspx&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;You may also need to update Reporting Services: &lt;a href="http://msdn.microsoft.com/en-us/library/ms345235.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms345235.aspx&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;This situation can easily arise if you have a virtual envrionment and are cloning machines.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-5943987511645246238?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/5943987511645246238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=5943987511645246238' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5943987511645246238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5943987511645246238'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/06/microsoft-dynamics-crm-40-install-error.html' title='Microsoft Dynamics CRM 4.0 install error &quot;The instance name must be the same as computer name.&quot;'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-4281326087960704840</id><published>2008-04-07T13:15:00.000+01:00</published><updated>2008-04-07T13:59:46.877+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Windows 2008 Server Core does not support managed code</title><content type='html'>&lt;span style="font-family:arial;"&gt;Yes, you read the title correctly.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The Windows 2008 Server Core SKU does not support any managed code, that means no .NET applications at all. Period.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;More info in the "Server Core Installation Option of Windows Server 2008 Step-By-Step Guide" here: &lt;/span&gt;&lt;a href="http://technet2.microsoft.com/windowsserver2008/en/library/47a23a74-e13c-46de-8d30-ad0afb1eaffc1033.mspx?mfr=true"&gt;&lt;span style="font-family:arial;"&gt;http://technet2.microsoft.com/windowsserver2008/en/library/47a23a74-e13c-46de-8d30-ad0afb1eaffc1033.mspx?mfr=true&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-4281326087960704840?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/4281326087960704840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=4281326087960704840' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4281326087960704840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4281326087960704840'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/04/windows-2008-server-core-does-not.html' title='Windows 2008 Server Core does not support managed code'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-4296593708228710927</id><published>2008-04-07T12:35:00.000+01:00</published><updated>2008-04-07T12:39:00.878+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='Safari'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>Apple Safari for Windows</title><content type='html'>&lt;span style="font-family:arial;"&gt;Apple has recently release its Safari browser for Windows: &lt;/span&gt;&lt;a href="http://www.apple.com/safari/"&gt;&lt;span style="font-family:arial;"&gt;http://www.apple.com/safari/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;While I hate the fonts (no where near as good as Internet Explorers Clear Type goodness) the browser itself is blisteringly fast. I use Newsgator On-line as my RSS aggregator and under IE it runs fairly slow (there is alot of JavaScript). Under Safari it is incredibly fast.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The browser wars are here again.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-4296593708228710927?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/4296593708228710927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=4296593708228710927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4296593708228710927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4296593708228710927'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/04/apple-safari-for-windows.html' title='Apple Safari for Windows'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-6362081571354987469</id><published>2008-04-06T13:10:00.000+01:00</published><updated>2008-04-06T13:18:15.493+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2008'/><category scheme='http://www.blogger.com/atom/ns#' term='MSBuild'/><title type='text'>MSBuild, VS2008 and "Invalid search path"</title><content type='html'>&lt;span style="font-family:arial;"&gt;Since installing VS2008 I have been getting the following error when using the VS2008 Command Prompt and trying to build Visual Studio solutions or trying to run "local" Team Builds:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#ff0000;"&gt;&lt;strong&gt;CSC : error CS1668: Warning as Error: Invalid search path 'C:\Program Files\\Microsoft SDKs\Windows\v6.0A\lib' specified in 'LIB environment variable' -- 'The system cannot find the path specified. '&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The reason for this is that the environment variables configured for this command console assume you have installed the C++ components with Visual Studio (which I did not install for the sakes of disk space).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;The easiest way to solve this problem is to create the path. The "'C:\Program Files\\Microsoft SDKs\Windows\v6.0A\" path should already exist, so just create a "Lib" folder at that location.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Its a simple fix but working out why this was a problem was tricky, it niggled me why a fairly straight forward install of VS2008 would have a not insignificant problem.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-6362081571354987469?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/6362081571354987469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=6362081571354987469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/6362081571354987469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/6362081571354987469'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/04/msbuild-vs2008-and-invalid-search-path.html' title='MSBuild, VS2008 and &quot;Invalid search path&quot;'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-1053872496041518964</id><published>2008-03-13T11:48:00.000Z</published><updated>2008-03-13T12:06:02.892Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BizTalk'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='SQLServer'/><title type='text'>Generating a Schema for the BizTalk SQL Adapter</title><content type='html'>&lt;span style="font-family:arial;"&gt;To call a Stored Procedure from BizTalk you need to use the SQL Adapter. This requires you add a special Schema to your BizTalk application, this Schema is generated by a wizard in Visual Studio (the wizard is installed as part of the BizTalk SDK).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;This process isn't as straight forward as it should be an its easy to end up with a Schema where the value returned from the Stored Procedure is represented by a "Success" Element of "anyType which is useless.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Firstly, you must have a Stored Procedure that that returns a result set using "FOR XML AUTO". Secondly, when you run through the wizard you must add "XMLDATA" to the end of the Stored Procedure (and remove it after you have generated the Schema). The XMLDATA clause causes SQL Server to return the Schema for the result set (as well as the result). So, when you go through the wizard you must have a stored procedure looking something like this:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;SELECT ColumnA, ColumnB FROM MyTable FOR XML AUTO, XMLDATA&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;After you have generated your schema, remove the "XMLDATA" clause to leave:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;SELECT ColumnA, ColumnB FROM MyTable FOR XML AUTO&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;When you run through the wizard, most of the values you need to enter are obvious but when you get to the "Schema Information" screen, you need to change the "Port Type" to "Send".&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;When you get to the "Statement Information" screen, you need to enter valid values into the "Value" column (click the Value cell twice to enter data). Then hit "Generate", then hit "Next".&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;The SQL Adapter Wizard does not seem to support "FOR XML EXPLICIT", you get an error that says "the required attribute 'name' is missing". &lt;/span&gt;&lt;span style="font-family:Arial;"&gt;However, I would guess that if you can generate the boiler plate Schema using "FOR XML AUTO," you should be able to change your Stored Procedure and then manually edit the Schema generated by the Wizard to match what your XML EXPLICIT format.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-1053872496041518964?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/1053872496041518964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=1053872496041518964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/1053872496041518964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/1053872496041518964'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/03/generating-schema-for-biztalk-sql.html' title='Generating a Schema for the BizTalk SQL Adapter'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-9120804677662100137</id><published>2008-03-05T12:12:00.000Z</published><updated>2008-03-05T12:13:23.055Z</updated><title type='text'>Microsoft SharedView Version 1.0 available</title><content type='html'>&lt;span style="font-family:arial;"&gt;Microsoft’s desktop sharing application, called SharedView, is out of beta. Think of the application as “Live Meeting”-lite, where up to 15 people can all share one desktop.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Download from here: &lt;/span&gt;&lt;a href="http://www.connect.microsoft.com/content/content.aspx?ContentID=5306&amp;amp;SiteID=94"&gt;&lt;span style="font-family:arial;"&gt;http://www.connect.microsoft.com/content/content.aspx?ContentID=5306&amp;amp;SiteID=94&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-9120804677662100137?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/9120804677662100137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=9120804677662100137' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/9120804677662100137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/9120804677662100137'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/03/microsoft-sharedview-version-10.html' title='Microsoft SharedView Version 1.0 available'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-2460193095451706782</id><published>2008-03-03T06:30:00.000Z</published><updated>2008-03-02T22:34:10.619Z</updated><title type='text'>Gated Check-ins and Team Foundation Server</title><content type='html'>&lt;span style="font-family:arial;"&gt;There was a discussion lately on the ALT.NET mailing list about the merits of NAnt versus MSBuild. This discussion expanded to encompass the various build engines there are outt here such as CruiseControl.NET (open source from ThoughtWorks) and TeamCity (free for non-Enterprise use, by JetBrains).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Someone mentioned the "private build" feature of TeamCity where by you ask the build server to do a build of what you currently have but without actually checking in your code to the source tree.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;I pointed out that this feautre is also supported by Team Foundation Server through an open source framework exisits called Gauntlet (&lt;a href="http://www.opengauntlet.org/"&gt;http://www.opengauntlet.org/&lt;/a&gt;). The elevator pitch from the Gauntlet web site is as follows:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;"&lt;em&gt;OpenGauntlet...mimics a fundamental feature of Microsoft's internal development system (codenamed Gauntlet), also known as "Gated Checkins". It avoids the problems associated with large development teams whereby a single developer will check in non-compiling code, which subsequently causes delays in the development life cycle as the team waits for the issues to be resolved. It can also be configured to disallow check ins if the proposed code changes break the unit tests. The central principle is that users are not allowed to check code directly into source control. Instead, they shelve their changes with a specific naming prefix when they are ready to check some changes in, and OpenGauntlet unshelves their changes into a temporary workspace, checks the changes compile and pass unit tests, and then checks the changes into source control under the requesting developer's username."&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;I've not taken the plunge with setting this up yet, I have an upgrade to TFS2008 to do first, but it looks like a must have. Here's to less "red" builds!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-2460193095451706782?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/2460193095451706782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=2460193095451706782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2460193095451706782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2460193095451706782'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/03/gated-check-ins-and-team-foundation.html' title='Gated Check-ins and Team Foundation Server'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-4556143326636845588</id><published>2008-02-25T20:59:00.000Z</published><updated>2008-02-25T22:07:10.068Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>NServiceBus</title><content type='html'>&lt;p&gt;&lt;span style="font-family:arial;"&gt;I subscribed to Udi Dahan's blog recently (&lt;/span&gt;&lt;a href="http://udidahan.weblogs.us/"&gt;&lt;span style="font-family:arial;"&gt;http://udidahan.weblogs.us/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;). I saw him present a session called "Designing High Performance, Persistent Domain Models" at Tech-Ed 2007 in Barcelona. It was one of the best sessions I saw during the week. How he got a talk with NHibernate demo material into Tech-Ed I'll never know.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;I read through some of the old blog posts to catch up on what he'd been doing since Tech-Ed and I noticed he'd been working on a open source messaging framework called "NServiceBus" (&lt;/span&gt;&lt;a href="http://www.nservicebus.com/"&gt;&lt;span style="font-family:arial;"&gt;http://www.nservicebus.com/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;This is interesting because I frequently encounter projects that require some kind of message bus with pub/sub features but don't want to take the plunge with BizTalk as its either too heavy weight or the license cost is prohibitive.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The project seems to be progressing, version 1.7 has been released at the time of writing and there is an active news group (&lt;a href="http://tech.groups.yahoo.com/group/nservicebus/"&gt;http://tech.groups.yahoo.com/group/nservicebus/&lt;/a&gt;).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Arial;"&gt;I will evaluate the framework at some point and report back.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-4556143326636845588?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/4556143326636845588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=4556143326636845588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4556143326636845588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4556143326636845588'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/02/nservicebus.html' title='NServiceBus'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-1343519511974052097</id><published>2008-02-23T17:28:00.000Z</published><updated>2008-02-24T18:37:27.672Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Castle'/><category scheme='http://www.blogger.com/atom/ns#' term='Patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>WCF Services and Dependency Injection with Castle</title><content type='html'>&lt;p&gt;&lt;span style="font-family:arial;"&gt;You might encounter a situation where you are leveraging the dependency injection design pattern in your application. At first this might seem problematic to implement if you are using WCF Services.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;For example, you may have the following classes:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;interface&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ICustomerRepository&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// Code&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;CustomerRepository&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;ICustomerRepository&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// Code&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;[&lt;span style="color: #2b91af;"&gt;ServiceContract&lt;/span&gt;]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;interface&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ICustomerService&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;OperationContract&lt;/span&gt;]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;void&lt;/span&gt; AddCustomer(&lt;span style="color: #2b91af;"&gt;AddCustomerRequest&lt;/span&gt; addCustomerRequest);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;CustomerService&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;ICustomerService&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;readonly&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ICustomerRepository&lt;/span&gt; _customerRepository;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; CustomerService(&lt;span style="color: #2b91af;"&gt;ICustomerRepository&lt;/span&gt; customerRepository)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _customerRepository = customerRepository;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;remarks /&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; AddCustomer(&lt;span style="color: #2b91af;"&gt;AddCustomerRequest&lt;/span&gt; addCustomerRequest)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// Do stuff&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// _customerRepository.SomeMethod(someParameter);&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The problem is that as your WCF Service is instantiated by the WCF plumbing, you don't have any control over the creation of this class. How do you "inject the dependency"? How do you supply the "ICustomerRepository" to the "CustomerService"? If you are using the Windsor Container part of the Castle framework (&lt;/span&gt;&lt;a href="http://www.castleproject.org/"&gt;&lt;span style="font-family:arial;"&gt;http://www.castleproject.org/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;) as your Component Container, it has a Facility that enables us to do this.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Using the "CustomerService" example above, you need to do three things in your Web Services project.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;1. Modify the .svc file&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Create your "CustomerService.svc" file as follows:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;%@ ServiceHost Service="CustomerService" Factory="Castle.Facilities.WcfIntegration.WindsorServiceHostFactory, Castle.Facilities.WcfIntegration" %&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Note the differences between a standard svc file.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;2. Modify your Global.asax&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Next you need to instantiate a Windsor Container, do this in a Global.asax file as follows (you might have to add one to your project):&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Global&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;HttpApplication&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;readonly&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;IWindsorContainer&lt;/span&gt; _container = &lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;WindsorContainer&lt;/span&gt;(&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;XmlInterpreter&lt;/span&gt;());&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Application_End(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (_container != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _container.Dispose();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Application_Start(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;WindsorServiceHostFactory&lt;/span&gt;.RegisterContainer(_container.Kernel);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;3. Configure Castle&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Configure Castle in the usual way, you need to include your "CustomerService" and "CustomerRepository" classes in the configuration. An example is as follows:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;configSections&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;section&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: red;"&gt;name&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;castle&lt;/span&gt;"&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: red;"&gt;type&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Castle.Windsor.Configuration.AppDomain.CastleSectionHandler, Castle.Windsor&lt;/span&gt;"&lt;span style="color: blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;configSections&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;castle&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;components&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;component&lt;/span&gt;&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: red;"&gt;id&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;CustomerRepository&lt;/span&gt;"&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: red;"&gt;service&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Acme.PetSop.ICustomerRepository, myAssembly&lt;/span&gt;"&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: red;"&gt;type&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Acme.PetSop.CustomerRepository, myAssembly&lt;/span&gt;"&lt;span style="color: blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;component&lt;/span&gt;&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: red;"&gt;id&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;CustomerService&lt;/span&gt;"&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: red;"&gt;service&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Acme.PetSop.ICustomerService, myAssembly&lt;/span&gt;"&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: red;"&gt;type&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Acme.PetSop.CustomerService, myAssembly&lt;/span&gt;"&lt;span style="color: blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;components&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;castle&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Please note that your "Service" value in the .svc file must match the "id" value in the Castle configuration.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;You need to have the "Castle.Facilities.WcfIntegration.dll" assembly referenced by your Web Application project. At the time of writing this assembly is not in the latest Castle release and can only be found in the nightly builds.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The Castle documentation for the WCF Facility can be found here: &lt;/span&gt;&lt;a href="http://www.castleproject.org/container/facilities/trunk/wcf/index.html"&gt;&lt;span style="font-family:arial;"&gt;http://www.castleproject.org/container/facilities/trunk/wcf/index.html&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-1343519511974052097?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/1343519511974052097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=1343519511974052097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/1343519511974052097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/1343519511974052097'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/02/wcf-services-and-dependency-injection.html' title='WCF Services and Dependency Injection with Castle'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-4059858249947301592</id><published>2008-02-16T22:46:00.000Z</published><updated>2008-02-16T22:59:48.217Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2005'/><category scheme='http://www.blogger.com/atom/ns#' term='MSTest'/><title type='text'>Using the MSTest AspNetDevelopmentServer Attribute</title><content type='html'>&lt;span style="font-family:arial;"&gt;If you want to have Integration-type tests and run automated tests against a web service (or web site), with MSTest you can use the "AspNetDevelopmentServer" Attribute on your Test Method. There is a gotcha with the use of this attribute. See the following example: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;&lt;p style="margin: 0px;"&gt;[&lt;span style="color: #2b91af;"&gt;TestClass&lt;/span&gt;]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;MyTestClass&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;AspNetDevelopmentServer&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"name"&lt;/span&gt;, &lt;span style="color: #a31515;"&gt;"path"&lt;/span&gt;)]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; MyTestMethod()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// Do stuff&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;You might be tempted to put the "name" and "path" properties in constants somewhere. Unfortunately if you do this, the "AspNetDevelopmentServer" Attribute will cease to function and the ASP.NET Development Server will not be activated when your tests run. Why is a mystery. So, keep the property values as hard-coded strings in-line.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-4059858249947301592?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/4059858249947301592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=4059858249947301592' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4059858249947301592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/4059858249947301592'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/02/using-mstest-aspnetdevelopmentserver.html' title='Using the MSTest AspNetDevelopmentServer Attribute'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-5621364984056023985</id><published>2008-02-15T23:21:00.000Z</published><updated>2008-02-15T15:21:36.575Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2005'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2008'/><title type='text'>Installing Visual Studio 2005 Extensions for .NET Framework 3.0 after Visual Studio 2008</title><content type='html'>&lt;span style="font-family:arial;"&gt;This took me a while to resolve.&lt;br /&gt;&lt;br /&gt;If you come to install the Visual Studio 2005 Extensions for .NET Framework 3.0 after you have installed .NET Framework 3.0 SP1 or Visual Studio 2008 (which installs .NET 3.0 SP1) then you will receive get a message saying you need to have .NET Framework 3.0 installed (as in, no Service Pack). Obviously you can't because you'll have to un-install/re-install a whole chain of stuff.&lt;br /&gt;&lt;br /&gt;A small registry hack will let you re-try the installation, add the following to your registry:&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{15095BF3-A3D7-4DDF-B193-3A496881E003}]&lt;br /&gt;"DisplayName"="Microsoft .NET Framework 3.0"&lt;br /&gt;&lt;br /&gt;This will fool the installer. I'd recommend removing the registry entry afterwards (that's what I did).&lt;br /&gt;&lt;br /&gt;More details here: &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2550726&amp;amp;SiteID=1"&gt;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2550726&amp;amp;SiteID=1&lt;/a&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-5621364984056023985?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/5621364984056023985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=5621364984056023985' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5621364984056023985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/5621364984056023985'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/02/installing-visual-studio-2005.html' title='Installing Visual Studio 2005 Extensions for .NET Framework 3.0 after Visual Studio 2008'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3070727340982558956.post-2434964597617845325</id><published>2008-01-27T21:17:00.000Z</published><updated>2008-02-01T21:30:30.999Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2005'/><category scheme='http://www.blogger.com/atom/ns#' term='CodePlex'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='MSTest'/><title type='text'>Extending MSTest</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;One criticism that is levelled against MSTest, especially when comparing it against the xUnit testing frameworks, is its lack of extensibility. While MSTest is missing any explicit extension points, it is possible to extend its functionality and add additional Test Attributes. In this post I will describe how to do this.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;I have created a project on CodePlex hosting the solution which supports VS2005 and VS2008 (link at the end). The CodePlex release contains MSIs plus the full source code.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;The MSTest extensions Attributes are as follows:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;TestTransaction&lt;/strong&gt; – this provides equivalent functionality to MbUnit’s much lauded “RollBack” attribute.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;ExpectedExceptionMessage&lt;/strong&gt; – this is an alternative to MSTest’s built-in “ExpectedException” Attribute. The built in “ExpectedException” Attribute is broken, it allows you to provide a message which you would expect is the exception message that is thrown by the expected type. But it isn’t. It’s actually a message that is displayed to the user in the test results log which is very confusing. This alternative allows you to supply the exception message. If the exception message thrown by the Test Method does not match the message in the ExpectedExceptionMessage Attribute, then the test fails.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;TestTimer&lt;/strong&gt; – this allows us to put a timer on the unit tests so if a unit test takes longer than the time specified in the Attribute then the test fails.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;An example usage of the custom Attributes for MSTest are as follows:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;&lt;p style="margin: 0px;"&gt;[&lt;span style="color: #2b91af;"&gt;TestClass&lt;/span&gt;]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;TestTransactionAttributeTest&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;MSTestExtensionsTestFixture&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;TestTransaction&lt;/span&gt;]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; SomeTest1()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// Do database stuff, will be &lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// rolled back&amp;nbsp; after test ends.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;TestTimer&lt;/span&gt;(10)]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; SomeTest2()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// Do stuff, if it takes longer &lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// than&amp;nbsp; 10 milliseconds the test&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// will fail.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;ExpectedExceptionMessage&lt;/span&gt;(&lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;MSTestExtensionsException&lt;/span&gt;), &lt;span style="color: #a31515;"&gt;"Message."&lt;/span&gt;)]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; SomeTest3()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;MSTestExtensionsException&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"Message."&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// This test passes &lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// (see above comments).&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Please note there are no references to any xUnit frameworks! All that is required is to inherit from “MSTestExtensionsTestFixture” and to decorate the Test Methods with the relevant Attribute.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Here’s how we get there...&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;A comprehension of Aspect Oriented Programming (AOP) is needed to understand how this all fits together. I won’t go into AOP in detail as there are many on-line resources that do a much better job than I would. This is as good a place as any to start: &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Aspect-oriented_programming"&gt;&lt;span style="font-family:arial;"&gt;http://en.wikipedia.org/wiki/Aspect-oriented_programming&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;MSTest, like the xUnit testing frameworks, uses Attributes on Classes and Methods to specify tests and their behaviour. AOP uses the same style of Attributes on Types to extend their behaviour. If you were building your own application, you might use a framework such as Spring.NET which would provide you with a transparent AOP mechanism. Unfortunately, as MSTest is effectively “closed” (there are no extension points) we don’t have any such options. We have to wire up the AOP features ourselves.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The only way to implement AOP is to use the following objects from the .NET Framework:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;System.ContextBoundObject&lt;/strong&gt; – the object that you wish to decorate with Attributes as a means to change the behaviour must inherit from this class.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;System.Runtime.Remoting.Contexts.ContextAttribute&lt;/strong&gt; – Attributes inheriting from this Attribute will be called at run-time when the type that they are decorating is called.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The combination of these two objects will allow us to intercept method calls. If we can intercept calls to Methods, we can intercept the calls to Test Methods and modify their behaviour. Every one of our Test Classes (or Fixtures if you prefer) will need to inherit from “ContextBoundObject” and be decorated with our own specialised “ContextAttribute”. Instead of having to do this every time we write a Test Class, we’ll create a Class from which we can inherit when we want to write a Test Class. We’ll call this base class “MSTestExtensionsTestFixture” (as per the previous examples).This is as follows: &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/p&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;&lt;p style="MARGIN: 0px"&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;&lt;p style="margin: 0px;"&gt;[&lt;span style="color: #2b91af;"&gt;MSTestExtensionsTest&lt;/span&gt;]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;MSTestExtensionsTestFixture&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;ContextBoundObject&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;/span&gt; &lt;p&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;The “MSTestExtensionsTestFixture” class is as simple as that, it inherits from “ContextBoundObject”, so any classes that inherit from this will be ready for our AOP widgets. Any Test Classes that are to take advantage of our “extensions” will need to inherit from this class or else we won’t be able to intercept the Method calls.&lt;/span&gt; &lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The “MSTestExtensionsTest” Attribute that this base Test Class is decorated with needs explaining. The “MSTestExtensionsTest” Attribute inherits from the “ContextAttribute” mentioned above. The “ContextAttribute” class has a virtual method called “GetPropertiesForNewContext” which we override. This method allows us to add “Aspects” to the context (see above link for a detailed description of Aspects and other AOP concepts). These “Aspects” will intercept Method calls i.e. when the Test Methods are executed, allowing us to change their behaviour. The important “MSTestExtensionsTest” Attribute code is as follows: &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/p&gt;&lt;/span&gt;&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;&lt;p style="MARGIN: 0px"&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;&lt;p style="margin: 0px;"&gt;[&lt;span style="color: #2b91af;"&gt;AttributeUsage&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;AttributeTargets&lt;/span&gt;.Class)]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;sealed&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;MSTestExtensionsTestAttribute&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;ContextAttribute&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; GetPropertiesForNewContext(&lt;span style="color: #2b91af;"&gt;IConstructionCallMessage&lt;/span&gt; msg)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (msg == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ArgumentNullException&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"msg"&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; msg.ContextProperties.Add(&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;TestProperty&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af;"&gt;TestTimerAspect&lt;/span&gt;&amp;gt;());&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; msg.ContextProperties.Add(&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;TestProperty&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af;"&gt;TestTransactionAspect&lt;/span&gt;&amp;gt;());&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; msg.ContextProperties.Add(&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;TestProperty&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af;"&gt;ExpectedExceptionMessageAspect&lt;/span&gt;&amp;gt;());&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Arial;"&gt;The "TestProperty" is a generic Class to reduce the amount of boiler plate code in each Aspect Class. I will skip this for the sakes on brevity, please look at the attached source code for details.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Fast forwarding, this is what an Aspect looks lik&lt;/span&gt;&lt;span style="font-family:arial;"&gt;e:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/p&gt;&lt;/span&gt;&lt;div style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;"   &gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#000000;"&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;MyAspect&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;TestAspect&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af;"&gt;TestTimerAttribute&lt;/span&gt;&amp;gt;, &lt;span style="color: #2b91af;"&gt;IMessageSink&lt;/span&gt;, &lt;span style="color: #2b91af;"&gt;ITestAspect&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;SecurityPermission&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;SecurityAction&lt;/span&gt;.LinkDemand, Flags = &lt;span style="color: #2b91af;"&gt;SecurityPermissionFlag&lt;/span&gt;.Infrastructure)]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;IMessage&lt;/span&gt; SyncProcessMessage(&lt;span style="color: #2b91af;"&gt;IMessage&lt;/span&gt; msg)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (msg == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ArgumentNullException&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"msg"&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// The following line is the call &lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// to the actual method we have &lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// intercepted. We can do stuff &lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// before we call this or after. &lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// This lets us change behaviour.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IMessage&lt;/span&gt; returnMessage = _nextSink.SyncProcessMessage(msg);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; returnMessage;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Please review the in-line comments above. If this code was used as-is, it would simply call the Method that had been intercepted and we would notice no change in behaviour. However, we can add code before and/or after the call to “SyncProcessMessage” to do whatever we wish. This is the point at which we add our custom code to change the behaviour of the calls to the Test Methods.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;From the above code, the “TestAspect” Class is another Class containing boiler plate code which I will skip over and the “ITestAspect” Interface is an Interface that our Aspects must satisfy.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;An Aspect must be accompanied by an Attribute, an Attribute is simple and is essentially a placeholder for properties and ensures an Aspect is called. An example Attribute is as follows: &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/p&gt;&lt;/span&gt;&lt;div style="BACKGROUND: white;font-family:Courier New;font-size:10pt;color:black;"   &gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#000000;"&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;sealed&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;MyAttribute&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;Attribute&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; _someProperty;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; MyAttribute(&lt;span style="color: blue;"&gt;string&lt;/span&gt; someProperty)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _testLength = someProperty;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; SomeProperty&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt; { &lt;span style="color: blue;"&gt;return&lt;/span&gt; _someProperty; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Arial;"&gt;And bringing it all together, if we were to use our (rather useless) Attribute it would look like so:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Arial;"&gt;&lt;/p&gt;&lt;/span&gt;&lt;div style="BACKGROUND: white" color="black" size="10pt" face="Courier New"&gt;&lt;p style="MARGIN: 0px"&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;&lt;p style="margin: 0px;"&gt;[&lt;span style="color: #2b91af;"&gt;TestClass&lt;/span&gt;]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;MyTest&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;MSTestExtensionsTestFixture&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;MyAttribute&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"some value"&lt;/span&gt;)]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; SomeTest()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// Unit test code.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Summary&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;I have skipped over the details of AOP as I would only be repeating other resources you can find on-line. However, I hope I’ve given you a taste of how the solution was implemented. Full source code is available from the CodePlex project &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;I think this shows that MSTest can be extended and via this mechanism can match a lot of the features of the xUnit frameworks. If you want to make further extensions, all you need to do is implement you own "TestAttribute" and an accompanying "TestAspect". Inherit from the "MSTestExtensionsFixture" and apply your Attribute and you are good to go.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Note the CodePlex solution supports VS2005 and VS2008. With the extensions that are possible and the performance improvements in VS2008 (MSTest is noticeably faster), then MSTest is not such a poor cousin to the xUnit frameworks anymore.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;MSTest...it’s not all that bad, honest!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Arial;"&gt;The CodePlex project hosting the solution can be found here: &lt;a href="http://www.codeplex.com/MSTestExtensions"&gt;http://www.codeplex.com/MSTestExtensions&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Callum&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070727340982558956-2434964597617845325?l=callumhibbert.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://callumhibbert.blogspot.com/feeds/2434964597617845325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070727340982558956&amp;postID=2434964597617845325' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2434964597617845325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070727340982558956/posts/default/2434964597617845325'/><link rel='alternate' type='text/html' href='http://callumhibbert.blogspot.com/2008/01/extending-mstest.html' title='Extending MSTest'/><author><name>Callum Hibbert</name><uri>http://www.blogger.com/profile/15087498670872017678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_atAC7wWbKfk/R5kP0UF1g3I/AAAAAAAAAAM/aRDMbCf_vdA/S220/Callum+Hibbert.jpg'/></author><thr:total>5</thr:total></entry></feed>
