<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.conchango.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Howard van Rooijen's Blog</title><link>http://blogs.conchango.com/howardvanrooijen/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Microsoft Source Analysis for C# + ReSharper = Real-time Source Analysis</title><link>http://blogs.conchango.com/howardvanrooijen/archive/2008/05/29/microsoft-source-analysis-for-c-resharper-real-time-source-analysis.aspx</link><pubDate>Thu, 29 May 2008 13:36:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:11255</guid><dc:creator>howard.vanrooijen</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.conchango.com/howardvanrooijen/comments/11255.aspx</comments><wfw:commentRss>http://blogs.conchango.com/howardvanrooijen/commentrss.aspx?PostID=11255</wfw:commentRss><wfw:comment>http://blogs.conchango.com/howardvanrooijen/rsscomments.aspx?PostID=11255</wfw:comment><description>&lt;p&gt;I've worked on a couple of projects for Microsoft UK - one of the many great aspects of those projects was being able to use some very cool internal tools; my two favourites being the pre-cursors to Team Foundation Server (&lt;a href="http://weblogs.asp.net/scottgu/archive/2004/11/03/251930.aspx" target="_blank"&gt;Product Studio&lt;/a&gt; + &lt;a href="http://blogs.msdn.com/eric/archive/2008/04/12/devdiv-source-control.aspx" target="_blank"&gt;Source Depot&lt;/a&gt;) and StyleCop - which is to source code what FxCop is to binaries. &lt;/p&gt;  &lt;p&gt;StyleCop quickly found a very special place in my heart - mainly because it soothed my coding standards / consistency / best practice OCD. I'm a fervent believer in coding standards - not only for the obvious reasons of consistency and maintainability - but mainly because I like the aesthetics of elegant code. It's hard to describe without sounding like a kook, but I find code formatting and refactoring quite soothing while I'm trying to solve bigger business logic problems - it helps me get into the zone.&amp;nbsp; Consistently well formatted code sits well in my &lt;a href="http://en.wikipedia.org/wiki/Baddeley%27s_model_of_working_memory#Visuospatial_sketchpad" target="_blank"&gt;visuospatial sketchpad&lt;/a&gt; - it forms visual patterns that are easy to recognise when scanning code - an upshot of which is that it's very easy to see out of place (bad / sloppy) code and thus spot where bugs are likely to appear.&lt;/p&gt;  &lt;p&gt;Using StyleCop meant an end to all the stupid arguments I used to get embroiled in whenever a new developer would start on a project; even though there was obviously a standard in place that the team was adhering to, the new developer would insist on coding &lt;i&gt;"m_" styleee &lt;/i&gt;because that's how they'd always coded. StyleCop became the H-Bomb argument killer - if you didn't conform to the standard, you would break the build. With one less thing to worry about, your team can focus on the much more important issue of delivering business value to the customer.&lt;/p&gt;  &lt;p&gt;The genius behind StyleCop is &lt;a href="http://blogs.msdn.com/user/Profile.aspx?UserID=112848" target="_blank"&gt;Jason Allor&lt;/a&gt; - he's done an awesome job by not only creating a tool which the whole C# community has been crying out for, but also achieved the amazing feat of getting buy-in from (or wrangling) a large number the &lt;a href="http://blogs.msdn.com/sourceanalysis/archive/2008/05/25/a-difference-of-style.aspx" target="_blank"&gt;internal MS teams to adopt StyleCop&lt;/a&gt;; hopefully this is a win-win situation as it helps make the products better, but also if Microsoft continues to &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx" target="_blank"&gt;push the envelope with it's transparency&lt;/a&gt; - we should all benefit.&lt;/p&gt;  &lt;p&gt;After &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=886063&amp;amp;SiteID=1" target="_blank"&gt;many&lt;/a&gt; people begged for it to be released externally, StyleCop has been rebranded as &lt;b&gt;Microsoft Source Analysis for C#&lt;/b&gt; (MSAFC) and &lt;a href="http://code.msdn.microsoft.com/sourceanalysis" target="_blank"&gt;released on the MSDN Code Gallery&lt;/a&gt;, Jason has also created a &lt;a href="http://blogs.msdn.com/sourceanalysis/" target="_blank"&gt;Source Analysis blog&lt;/a&gt; where &lt;a href="http://blogs.msdn.com/sourceanalysis/pages/source-analysis-4-2-rules.aspx" target="_blank"&gt;documentation&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/sourceanalysis/pages/source-analysis-msbuild-integration.aspx" target="_blank"&gt;hints&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/sourceanalysis/pages/source-analysis-settings.aspx" target="_blank"&gt;tips&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/sourceanalysis/archive/2008/05/25/a-difference-of-style.aspx" target="_blank"&gt;trivia&lt;/a&gt; will live. The first release has &lt;a href="http://blogs.msdn.com/sourceanalysis/pages/source-analysis-msbuild-integration.aspx" target="_blank"&gt;MSBuild integration&lt;/a&gt; and wonderfully &lt;a href="http://teamfoundation.blogspot.com/" target="_blank"&gt;Eugene Zakhareyev&lt;/a&gt; has already created a &lt;a href="http://teamfoundation.blogspot.com/2008/05/source-analysis-for-c-checkin-policy.html" target="_blank"&gt;TFS Check-In Policy&lt;/a&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;One aspect that already amuses me is the number of people who are regurgitating many of the internal arguments that happened during StyleCop's infancy - "what do you mean 'use spaces instead of tabs'! No way - spaces are evil" - or the number of people who have &lt;a href="http://code.msdn.microsoft.com/sourceanalysis/WorkItem/List.aspx" target="_blank"&gt;raised issues&lt;/a&gt; because they want to be able to &lt;a href="http://code.msdn.microsoft.com/sourceanalysis/WorkItem/View.aspx?WorkItemId=5" target="_blank"&gt;selectively turn rules on and off&lt;/a&gt;. Duh. I really hope Jason has copies of those flame-war threads so he can publish them onto the blog so that people understand the reasoning behind the rules - if only to highlight the point that if 1000's of Microsoft Product Team Developers can agree - then persuading your development team to adopt the rules should be easy.&lt;/p&gt;  &lt;p&gt;When time came to leave those Microsoft UK internal projects - the hardest part was going through StyleCop withdrawal. When I went to the Team System SDR in 2004 I begged and pleaded like a fanatic to have StyleCop included in the product - but it was not to happen. I started to look around the web for alternative tools - but there were only &lt;a href="http://joel.fjorden.se/static.php?page=CodeStyleEnforcer" target="_blank"&gt;pale imitations&lt;/a&gt;. So I started to do a little research into what it would take to write my own. &lt;/p&gt;  &lt;p&gt;I soon discovered that I was no-where near hardcore enough to write my own C# parser - even worse, many of the open source ones only worked for .NET 1 / 1.1 and had not been updated to support 2.0 with generics support - and as Conchango deals with cutting edge .NET projects we need .NET 3.5 language features to be supported (although I have just discovered &lt;a href="http://www.codeplex.com/LinqOverCSharp" target="_blank"&gt;LINQ over C#&lt;/a&gt; - which looks like it could do the trick!). I started looking at &lt;a href="http://www.devexpress.com/Products/NET/IDETools/DXCore/" target="_blank"&gt;DXCore&lt;/a&gt; but then on a tangent started to see if there was anyway to extend &lt;a href="http://www.jetbrains.com/resharper/" target="_blank"&gt;ReSharper&lt;/a&gt; via their &lt;a href="http://intellij.net/forums/forum.jspa?forumID=67" target="_blank"&gt;Open API&lt;/a&gt;. There wasn't a &lt;a href="http://www.codeproject.com/KB/cs/r_gettingStarted.aspx" target="_blank"&gt;huge amount of documentation&lt;/a&gt; - but I managed to piece together what was required from a few blog posts and samples. I wanted to create a tool that had the features of StyleCop and the elegance of Resharper - namely that I wanted &lt;a href="http://code.msdn.microsoft.com/sourceanalysis/WorkItem/View.aspx?WorkItemId=8" target="_blank"&gt;real-time syntax checking&lt;/a&gt; - so it's slightly bittersweet that Microsoft Source Analysis for C# has been released just as I had completed a working prototype!&lt;/p&gt;  &lt;p&gt;So last night - I took my abandoned ReSharper plug-in code and decided to try to integrate it with MSAFC. Below is a screenshot of the result. It's still a little buggy - but hopefully over the next few days I can fix the major issues and release a version to the web.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/SourceAnalysisReSharperRealtimeSourceAna_13D50/realtime-source-analysis_3.png" style="border-width:0px;" alt="realtime-source-analysis" border="0" width="592" height="614"&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=11255" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Engineering+Practices/default.aspx">Engineering Practices</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Musings/default.aspx">Musings</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/ReSharper/default.aspx">ReSharper</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Microsoft+Source+Analysis+for+C_2300_/default.aspx">Microsoft Source Analysis for C#</category></item><item><title>Configure MIME Type for Silverlight 2.0 in IIS</title><link>http://blogs.conchango.com/howardvanrooijen/archive/2008/03/10/configure-mime-type-for-silverlight-2-0-in-iis.aspx</link><pubDate>Mon, 10 Mar 2008 15:56:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:10110</guid><dc:creator>howard.vanrooijen</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.conchango.com/howardvanrooijen/comments/10110.aspx</comments><wfw:commentRss>http://blogs.conchango.com/howardvanrooijen/commentrss.aspx?PostID=10110</wfw:commentRss><wfw:comment>http://blogs.conchango.com/howardvanrooijen/rsscomments.aspx?PostID=10110</wfw:comment><description>&lt;P&gt;I helped &lt;A class="" title="Richard Griffin" href="http://blogs.conchango.com/richardgriffin/"&gt;Richard Griffin&lt;/A&gt; deploy a &lt;A href="http://labs.live.com/Silverlight+2+Deep+Zoom.aspx" target=_blank&gt;Silverlight 2.0 DeepZoom&lt;/A&gt; demo he had put together at the end of last week on an internal server. We deployed the application inside a virtual directory in&amp;nbsp;IIS but the application would not load in the browser. Using &lt;A href="http://www.fiddlertool.com/" target=_blank&gt;Fiddler&lt;/A&gt; it became apparent that the main Silverlight application was requesting a .xap file from the ClientBin directory but this was coming back as a 404. IIS wont serve unknown filetypes, in order for .XAP files to be served by IIS you need to add a new MIME Type:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Extension&lt;/STRONG&gt;: .xap &lt;BR&gt;&lt;STRONG&gt;Mime Type&lt;/STRONG&gt;: application/x-silverlight-app&lt;/P&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=10110" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/DeepZoom/default.aspx">DeepZoom</category></item><item><title>Continuous Education++</title><link>http://blogs.conchango.com/howardvanrooijen/archive/2008/03/05/continuous-education.aspx</link><pubDate>Wed, 05 Mar 2008 12:36:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:10038</guid><dc:creator>howard.vanrooijen</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.conchango.com/howardvanrooijen/comments/10038.aspx</comments><wfw:commentRss>http://blogs.conchango.com/howardvanrooijen/commentrss.aspx?PostID=10038</wfw:commentRss><wfw:comment>http://blogs.conchango.com/howardvanrooijen/rsscomments.aspx?PostID=10038</wfw:comment><description>&lt;P&gt;While catching up on long overdue flagged posts to read - I spotted a familiar &lt;A href="http://graysmatter.codivation.com/HowIAmBecomingABetterDeveloperPart1OfInfinity.aspx" target=_blank&gt;meme&lt;/A&gt; on becoming a better developer – I wrote about &lt;A href="http://blogs.conchango.com/howardvanrooijen/archive/2006/06/23/ContinuousEducation.aspx" target=_blank&gt;Continuous Education&lt;/A&gt; almost 2 years and it’s nice to see that this topic keeps reappearing. I’ve updated my bubble graph of the technologies to include those that I’ve used over the last 12 months and have also added training courses and events I’ve attended:&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/ContinuousDevelopmentPlusOn_8.gif"&gt;&lt;IMG border=0 alt=ContinuousDevelopmentPlusOn src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/ContinuousDevelopmentPlusOn_thumb_3.gif" width=970 height=783&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Apart from the foray into WPF development in late 2006 / early 2007 and a little dabbling with Silverlight 1.1 post Mix 07 – I’ve been involved predominantly in the RIA space. It was a bit of a mental shift working on several smaller projects in 2007 as until Christmas 2006, I had been working for the same client, creating a number of products based on a shared platform for almost 2 years. &lt;/P&gt;
&lt;P&gt;Another change that’s happened in the last 18 months is that I took on the role of a Technology Coach responsible for the career development and appraisals of a number of developers within Conchango. Performing this function has given me a new perspective Continuous Education; one thing that Agile Methodologies has taught me is the power of a feedback loop – the tighter the feedback loop the greater your ability to inspect and adjust; this can work really well if you know the career aspirations of the people in your team and you have the mechanism (i.e. an iteration) where you can let those people learn and grow. &lt;/P&gt;
&lt;P&gt;One topic I've been spending a lot of time thinking about over the last year is "&lt;EM&gt;how do you hone a development team into a state of hyperproductivity&lt;/EM&gt;?" If you assume that the foundation of the team is an Agile process with iterations and a feedback loop (retrospective), what other facets do the team need? At the moment I'm convinced it's &lt;STRONG&gt;confidence&lt;/STRONG&gt; or to be more specific, &lt;STRONG&gt;fearlessness&lt;/STRONG&gt;, the state of mind you can achieve when you have confidence that you know what you are doing, confidence that you can make a change and you know the impact and ramifications of that change. Team velocity can be severely impaired by the fact that a development team is intimidated by the codebase, either because it is very large, complex or mainly unknown to them – they fear making changes because they don’t know what the cost of that change would be. &lt;/P&gt;
&lt;P&gt;Two vectors that I believe helps developers into the fearless state of mind are test coverage and refactoring tools. Empowering the team with &lt;A href="http://www.jetbrains.com/resharper/" target=_blank&gt;Resharper&lt;/A&gt; and &lt;A href="http://blog.excastle.com/2007/01/31/blog-event-the-31-days-of-resharper/" target=_blank&gt;spending time teaching them how to really use it&lt;/A&gt; means that they are suddenly much more in control of the codebase than before; they can easily see the interconnectedness of the code; renaming, moving, deleting cleaning and extending the code has suddenly become a simple if not trivial task. A feature like Resharper's "find usages" give a great hint as the the cost of a change. But the real confidence only comes with good test coverage (integration and / or unit). These two vectors&amp;nbsp; should give them enough confidence to put them in the state of mind that they could be a bit more fearless, which tends to means that in time they start becoming more independent, self managing members of the team – which is when they are truly useful and truly productive. Ben Watson has a nice post called &lt;A class="" href="http://www.philosophicalgeek.com/2008/03/06/6-ways-to-increase-your-confidence-as-you-code/"&gt;6 Ways to Increase Your Confidence As You Code&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;I also tend to read a lot - I subscribe to around 70 blogs (I use &lt;A href="http://www.newsgator.com/Individuals/NewsGatorInbox/Default.aspx" target=_blank&gt;Newsgator Inbox&lt;/A&gt; (now free!) and Outlooks' search folders to filter for topics I'm interested - the rest get perused on train journeys), I'm also quite an avid consumer of books, below are the ones I’ve purchased and read in the last 12 months: &lt;/P&gt;
&lt;TABLE class="" border=0 cellSpacing=0 cellPadding=2 width=999&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/AgileWebDevelopmentRails_2.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" border=0 alt=AgileWebDevelopmentRails src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/AgileWebDevelopmentRails_thumb.jpg" width=240 height=240&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD class=""&gt;&lt;A href="http://www.amazon.co.uk/Agile-Development-Rails-Pragmatic-Programmers/dp/0977616630/" target=_blank&gt;Agile Web Development with Rails&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/RubyForRails_2.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" border=0 alt=RubyForRails src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/RubyForRails_thumb.jpg" width=240 height=240&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD class=""&gt;&lt;A href="http://www.amazon.co.uk/Ruby-Rails-Techniques-Developers/dp/1932394699/" target=_blank&gt;Ruby for Rails: Ruby Techniques for Rails Developers&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/RailsRecipies_2.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" border=0 alt=RailsRecipies src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/RailsRecipies_thumb.jpg" width=240 height=240&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD class=""&gt;&lt;A href="http://www.amazon.co.uk/Rails-Recipes-Pragmatic-Programmers-Fowler/dp/0977616606/" target=_blank&gt;Rails Recipes&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/ApplicationPlusCode_2.jpg"&gt;&lt;IMG border=0 alt=ApplicationPlusCode src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/ApplicationPlusCode_thumb.jpg" width=240 height=240&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD class=""&gt;&lt;A href="http://www.amazon.co.uk/Applications-Code-Markup-Presentation-Foundation/dp/0735619573" target=_blank&gt;Applications = Code + Markup: A Guide to the Microsoft Windows Presentation Foundation&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/DreamingInCode_2.jpg"&gt;&lt;IMG border=0 alt=DreamingInCode src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/DreamingInCode_thumb.jpg" width=240 height=240&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD class=""&gt;&lt;A href="http://www.amazon.co.uk/Dreaming-Code-Programmers-Transcendent-Software/dp/1400082463" target=_blank&gt;Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/WPFUnleashed_2.jpg"&gt;&lt;IMG border=0 alt=WPFUnleashed src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/WPFUnleashed_thumb.jpg" width=240 height=240&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD class=""&gt;&lt;A href="http://www.amazon.co.uk/Windows-Presentation-Foundation-Unleashed-WPF/dp/0672328917" target=_blank&gt;Windows Presentation Foundation Unleashed&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/WCFUnleashed_2.jpg"&gt;&lt;IMG border=0 alt=WCFUnleashed src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/WCFUnleashed_thumb.jpg" width=240 height=240&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD class=""&gt;&lt;A href="http://www.amazon.co.uk/Windows-Communication-Foundation-Unleashed-WCF/dp/0672329484" target=_blank&gt;Windows Communication Foundation Unleashed&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/ExpressionBlendBible_2.jpg"&gt;&lt;IMG border=0 alt=ExpressionBlendBible src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/ExpressionBlendBible_thumb.jpg" width=240 height=240&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD class=""&gt;&lt;A href="http://www.amazon.co.uk/Expression-Blend-Bible-Wiley/dp/0470055030" target=_blank&gt;Expression Blend Bible&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/IntroducingASPNETAJAX_2.jpg"&gt;&lt;IMG border=0 alt=IntroducingASPNETAJAX src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/IntroducingASPNETAJAX_thumb.jpg" width=240 height=240&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD class=""&gt;&lt;A href="http://www.amazon.co.uk/Introducing-Microsoft-ASP-NET-Ajax-PRO-Developer/dp/0735624135" target=_blank&gt;Introducing Microsoft ASP.NET AJAX&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/IntroducingLINQ_2.jpg"&gt;&lt;IMG border=0 alt=IntroducingLINQ src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/IntroducingLINQ_thumb.jpg" width=240 height=240&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD class=""&gt;&lt;A href="http://www.amazon.co.uk/Introducing-Microsoft-LINQ-P-Pialorsi/dp/0735623910/" target=_blank&gt;Introducing Microsoft LINQ&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/51EC77B5AbL__SS500__2.jpg"&gt;&lt;IMG border=0 alt=51EC77B5AbL__SS500_ src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/51EC77B5AbL__SS500__thumb.jpg" width=240 height=240&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD class=""&gt;&lt;A href="http://www.amazon.co.uk/Herding-Cats-Primer-Programmers-Lead/dp/1590590171" target=_blank&gt;Herding Cats: A Primer for Programmers Who Lead Programmers&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/4104N6ME70L__SS500__2.jpg"&gt;&lt;IMG border=0 alt=4104N6ME70L__SS500_ src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/4104N6ME70L__SS500__thumb.jpg" width=240 height=240&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD class=""&gt;&lt;A href="http://www.amazon.co.uk/Getting-Things-Done-Stress-Free-Productivity/dp/0142000280/" target=_blank&gt;Getting Things Done: The Art of Stress-free Productivity&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/51G9GF8VQML__SS500__2.jpg"&gt;&lt;IMG border=0 alt=51G9GF8VQML__SS500_ src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/51G9GF8VQML__SS500__thumb.jpg" width=240 height=240&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD class=""&gt;&lt;A href="http://www.amazon.co.uk/Software-Estimation-Demystifying-Demystified-Practices/dp/0735605351/" target=_blank&gt;Software Estimation: The Black Art Demystified&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/deploying-net-apps-msbuild-clickonce_4.jpg"&gt;&lt;IMG border=0 alt=deploying-net-apps-msbuild-clickonce src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/deploying-net-apps-msbuild-clickonce_thumb_1.jpg" width=240 height=228&gt;&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD class=""&gt;&lt;A href="http://www.amazon.co.uk/Deploying-NET-Applications-Learning-MSBuild-Clickonce/dp/1590596528/" target=_blank&gt;Deploying.NET Applications: Learning MSBuilder and Clickonce&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/51ZfuTVoX0L__SS500__2.jpg"&gt;&lt;IMG border=0 alt=51ZfuTVoX0L__SS500_ src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/51ZfuTVoX0L__SS500__thumb.jpg" width=240 height=240&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD class=""&gt;&lt;A href="http://www.amazon.co.uk/xUnit-Test-Patterns-Refactoring-Signature/dp/0131495054/" target=_blank&gt;xUnit Test Patterns: Refactoring Test Code: Refactoring Test Code&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/41WUmFs2vZL__SS500__2.jpg"&gt;&lt;IMG border=0 alt=41WUmFs2vZL__SS500_ src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/41WUmFs2vZL__SS500__thumb.jpg" width=240 height=240&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD class=""&gt;&lt;A href="http://www.amazon.co.uk/Regular-Expression-Pocket-Reference-OReilly/dp/0596514271/" target=_blank&gt;Regular Expression Pocket Reference&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/51QQidWjIQL__SS500__2.jpg"&gt;&lt;IMG border=0 alt=51QQidWjIQL__SS500_ src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/51QQidWjIQL__SS500__thumb.jpg" width=240 height=240&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD class=""&gt;&lt;A href="http://www.amazon.co.uk/Domain-driven-Design-Tackling-Complexity-Software/dp/0321125215/" target=_blank&gt;Domain-driven Design: Tackling Complexity in the Heart of Software&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A href="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/51PowJFAeAL__SS500__2.jpg"&gt;&lt;IMG border=0 alt=51PowJFAeAL__SS500_ src="http://blogs.conchango.com/blogs/howardvanrooijen/WindowsLiveWriter/ContinuousEducation1_ED73/51PowJFAeAL__SS500__thumb.jpg" width=240 height=240&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD class=""&gt;
&lt;P&gt;&lt;A href="http://www.amazon.co.uk/Domain-Specific-Development-Visual-Microsoft/dp/0321398203/" target=_blank&gt;Domain Specific Development with Visual Studio DSL Tools&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=10038" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Agile/default.aspx">Agile</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Scrum/default.aspx">Scrum</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Musings/default.aspx">Musings</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Books/default.aspx">Books</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Continuous+Education/default.aspx">Continuous Education</category></item><item><title>Custom Chalk Extensions for Graffiti CMS</title><link>http://blogs.conchango.com/howardvanrooijen/archive/2008/02/24/Custom-Chalk-Extensions-for-Graffiti-CMS.aspx</link><pubDate>Sun, 24 Feb 2008 12:05:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:9858</guid><dc:creator>howard.vanrooijen</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.conchango.com/howardvanrooijen/comments/9858.aspx</comments><wfw:commentRss>http://blogs.conchango.com/howardvanrooijen/commentrss.aspx?PostID=9858</wfw:commentRss><wfw:comment>http://blogs.conchango.com/howardvanrooijen/rsscomments.aspx?PostID=9858</wfw:comment><description>&lt;p&gt;&lt;a href="http://telligent.com/"&gt;Telligent&lt;/a&gt;, who produce &lt;a href="http://communityserver.org/"&gt;Community Server&lt;/a&gt; (which is the current &lt;a href="http://blogs.conchango.com/"&gt;http://blogs.conchango.com/&lt;/a&gt; blogging platform) have just released &lt;a href="http://graffiticms.com/blog/graffiti-1-released/"&gt;Graffiti CMS v1.0&lt;/a&gt; - a light weight, simple to use Content Management System. There was a &lt;a href="http://charlesstricklin.com/2008/01/03/graffitti-disses-wordpress/"&gt;slight overreaction&lt;/a&gt; by the &lt;a href="http://wordpress.org/"&gt;WordPress&lt;/a&gt; community to Telligent&amp;#39;s Google &lt;a href="http://graffiticms.com/landing-pages/the-wordpress-as-a-content-management-system-cms-alternative/"&gt;AdSense campaign&lt;/a&gt; - but luckily things seemed to have &lt;a href="http://simpable.com/software/bozos/"&gt;calmed down a little&lt;/a&gt;, especially as Graffiti seems be surrounded by a growing good vibe and is building a &lt;a href="http://support.graffiticms.com/"&gt;solid&lt;/a&gt; &lt;a href="http://marketplace.graffiticms.com/"&gt;community&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;I&amp;#39;ve been looking at using Graffiti as the CMS for a little side project and have been incredibly impressed by its great usability, simplicity (you really can install it in under two minutes) powerful extensibility points and timely support from &lt;a href="http://telligent.com/"&gt;Telligent&lt;/a&gt; on their forums. The theming engine - called Chalk is based on the &lt;a href="http://www.castleproject.org/"&gt;Castle Projects&amp;#39;&lt;/a&gt; cut of &lt;a href="http://www.castleproject.org/others/nvelocity/index.html"&gt;NVelocity&lt;/a&gt; and is a joy to use; it&amp;#39;s certainly a nice antidote to the overheads and complexities of developing using ASP.NET WebForms.&lt;/p&gt;&lt;p&gt;The product has been built with extensibility &amp;nbsp;at the core - so any features that are not included out of the box are trivial to add. A few Graffiti Extension Projects have &lt;a href="http://graffiticms.com/blog/extensions/"&gt;sprung up already&lt;/a&gt;, hopefully these will grow and grow in the future. &amp;nbsp;I&amp;#39;ve created a &lt;a href="http://www.codeplex.com/"&gt;CodePlex&lt;/a&gt; project called &lt;a href="http://www.codeplex.com/ChalkExtensions"&gt;ChalkExtensions&lt;/a&gt; which contains the custom Chalk extensions I&amp;#39;ve written for my pet project. &lt;/p&gt;&lt;p&gt;So far the extensions are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div&gt;&lt;font face="courier new,courier"&gt;public PostCollection GetAllPostsForCategory(string categoryName)&lt;/font&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;&lt;font face="courier new,courier"&gt;public PostCollection SortPostsAscending(PostCollection posts, string propertyName)&lt;/font&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;&lt;font face="courier new,courier"&gt;public PostCollection SortPostsDescending(PostCollection posts, string propertyName)&lt;/font&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;&lt;font face="courier new,courier"&gt;public PostCollection Randomize(PostCollection original, int numberOfPosts)&lt;/font&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;&lt;font face="courier new,courier"&gt;public PostCollection GetRandomPostsForCategory(string categoryName, int numberOfPosts)&lt;/font&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Using the extensions is simply a case of compiling the code, dropping the dll into Graffiti&amp;#39;s \bin folder and then from within any of your .view files you can simply call the extensions using the $ChalkExtensions syntax. For example, pulling back 3 random posts from the &amp;quot;Events&amp;quot; and rendering them into content blocks can be done as follows:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;#set($latestEventsPosts = $ChalkExtensions.GetRandomPostsForCategory(&amp;quot;Events&amp;quot;, 3))&lt;br /&gt;#foreach($post in $latestEventsPosts)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;div class=&amp;quot;contenttextblock&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h3&amp;gt;&amp;lt;a href=&amp;quot;$post.Url&amp;quot;&amp;gt;$post.Title&amp;lt;/a&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;$post.Excerpt(&amp;quot;&amp;quot;, &amp;quot;&amp;quot; , &amp;quot;[read more]&amp;quot;, 300)&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;#end&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=9858" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Graffiti+CMS/default.aspx">Graffiti CMS</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Castle+Project/default.aspx">Castle Project</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/CodePlex/default.aspx">CodePlex</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/NVelocity/default.aspx">NVelocity</category></item><item><title>Attach to Web Server Macro for Visual Studio</title><link>http://blogs.conchango.com/howardvanrooijen/archive/2007/06/24/Attach-to-Web-Server-Macro-for-Visual-Studio.aspx</link><pubDate>Sun, 24 Jun 2007 13:58:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:7380</guid><dc:creator>howard.vanrooijen</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.conchango.com/howardvanrooijen/comments/7380.aspx</comments><wfw:commentRss>http://blogs.conchango.com/howardvanrooijen/commentrss.aspx?PostID=7380</wfw:commentRss><wfw:comment>http://blogs.conchango.com/howardvanrooijen/rsscomments.aspx?PostID=7380</wfw:comment><description>&lt;p&gt;Last week I was doing a lot of ASP.NET debugging &amp;ndash; tracing through Microsoft AJAX web service calls and was getting a little frustrated of the time lag for starting a site in debug mode; I remembered a Visual Studio macro for &lt;a href="http://weblogs.asp.net/rosherove/archive/2003/09/22/28532.aspx"&gt;attaching to the worker process&lt;/a&gt; and that I had rewritten in a couple of years ago to attach to multiple worker processes, in case you were running multiple sites (i.e. a web services layer and an application layer) on either Windows XP (aspnet_wp.exe) or Windows Server 2003 (w3wp.exe). Below is the source for the macro &amp;ndash; I&amp;#39;ve tested it on Visual Studio Orcas Beta 1. &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;Imports&lt;/span&gt; System&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;Imports&lt;/span&gt; EnvDTE80&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;Imports&lt;/span&gt; System.Diagnostics&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;Public&lt;/span&gt; &lt;span style="color:blue;"&gt;Module&lt;/span&gt; AttachToWebServer &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp; Public&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt; AttachToWebServer()&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; Dim&lt;/span&gt; AspNetWp &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;String&lt;/span&gt; = &lt;span style="color:#a31515;"&gt;&amp;quot;aspnet_wp.exe&amp;quot;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Dim&lt;/span&gt; W3WP &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;String&lt;/span&gt; = &lt;span style="color:#a31515;"&gt;&amp;quot;w3wp.exe&amp;quot; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If&lt;/span&gt; &lt;span style="color:blue;"&gt;Not&lt;/span&gt; (AttachToProcess(AspNetWp)) &lt;span style="color:blue;"&gt;Then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;If&lt;/span&gt; &lt;span style="color:blue;"&gt;Not&lt;/span&gt; AttachToProcess(W3WP) &lt;span style="color:blue;"&gt;Then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;System.Windows.Forms.MessageBox.Show(&lt;span style="color:blue;"&gt;String&lt;/span&gt;.Format(&lt;span style="color:#a31515;"&gt;&amp;quot;Process {0} or {1} Cannot Be Found&amp;quot;&lt;/span&gt;, AspNetWp, W3WP), &lt;span style="color:#a31515;"&gt;&amp;quot;Attach To Web Server Macro&amp;quot;&lt;/span&gt;) &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;If &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;If &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp; End&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp; Public&lt;/span&gt; &lt;span style="color:blue;"&gt;Function&lt;/span&gt; AttachToProcess(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; ProcessName &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;String&lt;/span&gt;) &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Boolean &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; Processes &lt;span style="color:blue;"&gt;As&lt;/span&gt; EnvDTE.Processes = DTE.Debugger.LocalProcesses &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; Process &lt;span style="color:blue;"&gt;As&lt;/span&gt; EnvDTE.Process &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; ProcessFound &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Boolean&lt;/span&gt; = &lt;span style="color:blue;"&gt;False &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;For&lt;/span&gt; &lt;span style="color:blue;"&gt;Each&lt;/span&gt; Process &lt;span style="color:blue;"&gt;In&lt;/span&gt; Processes &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;If&lt;/span&gt; (Process.Name.Substring(Process.Name.LastIndexOf(&lt;span style="color:#a31515;"&gt;&amp;quot;\&amp;quot;&lt;/span&gt;) + 1) = ProcessName) &lt;span style="color:blue;"&gt;Then &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;Process.Attach() &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;ProcessFound = &lt;span style="color:blue;"&gt;True &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;If&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;Next &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AttachToProcess = ProcessFound &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp; End&lt;/span&gt; &lt;span style="color:blue;"&gt;Function &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Module&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=7380" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Team+System/default.aspx">Team System</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>TFS Notification Web Services - Project Template v.1.2</title><link>http://blogs.conchango.com/howardvanrooijen/archive/2007/06/14/TFS-Notification-Web-Services-Project-Template-v.1.2.aspx</link><pubDate>Thu, 14 Jun 2007 08:23:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:7273</guid><dc:creator>howard.vanrooijen</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.conchango.com/howardvanrooijen/comments/7273.aspx</comments><wfw:commentRss>http://blogs.conchango.com/howardvanrooijen/commentrss.aspx?PostID=7273</wfw:commentRss><wfw:comment>http://blogs.conchango.com/howardvanrooijen/rsscomments.aspx?PostID=7273</wfw:comment><description>&lt;p&gt;Over the past few weeks I&amp;#39;ve been getting more and more messages from people who can&amp;#39;t seem to &lt;a href="http://blogs.conchango.com/howardvanrooijen/archive/2006/06/25/TFSNotificationWebServicesProjectTemplateUpdated.aspx"&gt;get v1.1 to work with Visual Studio 2005 SP1&lt;/a&gt;. Fortuitously for them, a long train delay last night gave me the opportunity to make some fixes that have been long overdue since v1.1 was released almost a year ago. &lt;/p&gt;&lt;p&gt;&lt;img alt="Visual Studio Project Template Dialog" height="570" src="http://blogs.conchango.com/photos/conchango_bloggers/images/7276/original.aspx" style="width:804px;height:570px;" title="Visual Studio Project Template Dialog" width="804" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Changes in this release &lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Rebuilt to work with Visual Studio 2005 SP1 and Visual Studio Orcas Beta 1 &lt;/li&gt;&lt;li&gt;Changed from a Web Project to a C# Project. &lt;/li&gt;&lt;li&gt;Slight refactoring of the codebase &lt;/li&gt;&lt;li&gt;Updated the &lt;span style="font-family:Courier New;"&gt;EndpointBase&lt;/span&gt; class to deserialize the XML message using an XmlReader rather than an XmlDocument. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Installation &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;For Visual Studio 2005: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Copy the &amp;quot;TFS Notification Web Services.zip&amp;quot; file to the directory &amp;quot;&lt;em&gt;X:\Documents and Settings\YOUR_USER_NAME\My Documents\Visual Studio 2005\Templates\ProjectTemplates&lt;/em&gt;&amp;quot; and then open Visual Studio 2005 and select &lt;em&gt;File &amp;gt; New Projects&lt;/em&gt;. From the &amp;quot;My Templates&amp;quot; section select &amp;quot;TFS Notification Web Services&amp;quot; &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;For Visual Studio Orcas Beta 1 &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Copy the &amp;quot;TFS Notification Web Services.zip&amp;quot; file to the directory &amp;quot;&lt;em&gt;X:\Documents and Settings\YOUR_USER_NAME\My Documents\Visual Studio Codename Orcas\Templates\ProjectTemplates&lt;/em&gt;&amp;quot; and then open Visual Studio Orcas Beta 1 and select &lt;em&gt;File &amp;gt; New Project&lt;/em&gt;. From the &amp;quot;My Templates&amp;quot; section select &amp;quot;TFS Notification Web Services&amp;quot; &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;For Windows Vista users the path &amp;quot;&lt;em&gt;X:\Documents and Settings\YOUR_USER_NAME\My Documents&lt;/em&gt;&amp;quot; should be changed to &amp;quot;&lt;em&gt;C:\Users\YOUR_USER_NAME\Documents&lt;/em&gt;&amp;quot; &lt;/p&gt;&lt;p&gt;You can &lt;a href="http://projectdistributor.net/Releases/Release.aspx?releaseId=416"&gt;download the updated Project Template&lt;/a&gt; from &lt;a href="http://projectdistributor.net/Groups/Group.aspx?groupId=37"&gt;my ProjectDistributor Workspace&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=7273" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Team+System/default.aspx">Team System</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Web+Services/default.aspx">Web Services</category></item><item><title>Agile Architecture: Painting by Numbers</title><link>http://blogs.conchango.com/howardvanrooijen/archive/2007/06/05/Agile-Architecture-Painting-by-Numbers.aspx</link><pubDate>Tue, 05 Jun 2007 14:41:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:7150</guid><dc:creator>howard.vanrooijen</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.conchango.com/howardvanrooijen/comments/7150.aspx</comments><wfw:commentRss>http://blogs.conchango.com/howardvanrooijen/commentrss.aspx?PostID=7150</wfw:commentRss><wfw:comment>http://blogs.conchango.com/howardvanrooijen/rsscomments.aspx?PostID=7150</wfw:comment><description>&lt;p&gt;&lt;img align="right" alt="View from Bishops Landing, by Sarah Nasby" border="0" height="434" src="http://blogs.conchango.com/photos/conchango_bloggers/images/7148/original.aspx" style="margin-left:15px;width:291px;height:434px;" title="View from Bishops Landing, by Sarah Nasby" width="291" /&gt;During one of the Open Space sessions I attended at the Scrum Gathering in 2006 I put forward the analogy of &amp;quot;Painting by Numbers&amp;quot; Architecture, which is my take on how Architecture should be handled on an Agile project. The basic premise is that the Architect has the overall vision of how the solution should hang together; what its basic&amp;nbsp;composition should be, what the outline is and what attributes it has; but this view is of a very low fidelity; much like the outline of a &amp;quot;paint by numbers&amp;quot; picture. It&amp;#39;s then the team&amp;#39;s job to&amp;nbsp;fill in the segments, sprint by sprint &amp;ndash; in whatever colour, hue or order they decide upon; they are free to improvise within that segment. &lt;/p&gt;&lt;p&gt;I&amp;#39;ve been thinking about writing an exhaustive post on the subject for months, but then last week I watched &lt;a href="http://en.wikipedia.org/wiki/Dave_McKean"&gt;Dave McKean&lt;/a&gt; and &lt;a href="http://www.neilgaiman.com/"&gt;Neil Gaiman&lt;/a&gt;&amp;#39;s &lt;a href="http://www.apple.com/trailers/sony_pictures/mirrormask.html"&gt;extraordinary&lt;/a&gt; &lt;a href="http://www.imdb.com/title/tt0366780/"&gt;film&lt;/a&gt; &lt;a href="http://www.mirrormaskthemovie.com/"&gt;MirrorMask&lt;/a&gt;. The DVD is packed full of great extras, but there was one that grabbed my attention; a blurry video of a conference Q&amp;amp;A session with the audience, where someone asks Mr McKean about his experiences doing the spectacular Computer Graphics (CG) work for the film. The response was fantastic and is pretty much a crystallisation of my thoughts on the &amp;quot;paint by numbers&amp;quot; scenario. I paraphrase his response below: &lt;/p&gt;&lt;span style="margin-right:15px;"&gt;&lt;p style="margin-left:36pt;text-align:justify;"&gt;In the studio shooting, it was a nightmare, none of the computers would talk to each other; none of them knew each other or were interested in talking to each other at all. &lt;/p&gt;&lt;p style="margin-left:36pt;text-align:justify;"&gt;So I hired a small team, just 15 people and they did the whole film; they were all kids, fresh out of art school, for almost all of them this was the first job they&amp;#39;d ever done. I thought if I was in their situation, I wouldn&amp;#39;t want a usual CG job, which is &amp;quot;you get to do the bubbles&amp;quot; or &amp;quot;you get to do one tiny bit of texture on something&amp;quot;, it&amp;#39;s so de-compartmentalised you&amp;#39;re a bit of a cog in a machine. I thought &amp;quot;if I were doing it&amp;quot; I&amp;#39;d want my own scene, like a short film within the whole; so that was the plan, we had a big meeting, talked through the whole film and we divvied up the scenes between us. It worked mostly, some of them were more interested in animation, some of them were more interested in set-building and texture mapping and things like that, so it crossed over a bit, but generally they got to do their scene. &lt;/p&gt;&lt;p style="margin-left:36pt;text-align:justify;"&gt;I designed things, but I didn&amp;#39;t really want to nail everything because I wanted to know what they wanted to do, what their input would be; it was the best of collaboration really, they all got excited by the fact that they would be represented in the film properly; when it got to their section they could say &amp;quot;hey, I did this bit&amp;quot;. &lt;/p&gt;&lt;p style="margin-left:36pt;text-align:justify;"&gt;They all came up with wonderful ideas, which expanded from the script in all directions &amp;ndash; I always had backup plans in case we ran into problems, of how I knew we could do it, but we almost never needed them. Almost everybody came up with ideas and ways to amplify and exaggerate and elaborate on the ideas and make it bigger and better &amp;ndash; it was terrific. &lt;/p&gt;&lt;p style="margin-left:36pt;text-align:justify;"&gt;I was there really to keep everything having &amp;quot;my line&amp;quot; as it were, so it looked like I drew it, and I did all the texture maps for the film, because I feel like that&amp;#39;s where my colours and textures really come into it, so I did all that, and then I composited the whole film. &lt;/p&gt;&lt;/span&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=7150" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Agile/default.aspx">Agile</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Scrum/default.aspx">Scrum</category></item><item><title>A week with Silverlight 1.1</title><link>http://blogs.conchango.com/howardvanrooijen/archive/2007/06/04/A-week-with-Silverlight-1.1.aspx</link><pubDate>Mon, 04 Jun 2007 21:11:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:7145</guid><dc:creator>howard.vanrooijen</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.conchango.com/howardvanrooijen/comments/7145.aspx</comments><wfw:commentRss>http://blogs.conchango.com/howardvanrooijen/commentrss.aspx?PostID=7145</wfw:commentRss><wfw:comment>http://blogs.conchango.com/howardvanrooijen/rsscomments.aspx?PostID=7145</wfw:comment><description>&lt;p&gt;&lt;a href="http://blogs.conchango.com/richardgriffin/"&gt;Richard Griffin&lt;/a&gt;, &lt;a href="http://blogs.conchango.com/stevenevans/"&gt;Steven Evans&lt;/a&gt; and I spent a week working on a Silverlight demo that Paul Dawson used as part of his &lt;a href="http://www.microsoft.com/emea/msdn/visitremix/"&gt;ReMix&lt;/a&gt; presentation &amp;quot;&lt;a href="http://www.microsoft.com/emea/msdn/visitremix/details_milan.html"&gt;WPF &amp;amp; Silverlight: A Loaded gun?&lt;/a&gt;&amp;quot; although I can&amp;#39;t publish the demo yet, I thought it might be useful to go over some of the things we learnt putting it together. &lt;/p&gt;&lt;p&gt;All three of us have WPF experience; we&amp;#39;ve read the &lt;a href="http://www.amazon.co.uk/Applications-Code-Markup-Presentation-Foundation/dp/0735619573/"&gt;de facto&lt;/a&gt; &lt;a href="http://www.amazon.co.uk/Windows-Presentation-Foundation-Unleashed-WPF/dp/0672328917/"&gt;books&lt;/a&gt; and we all worked on &lt;a href="http://www.dailymail.co.uk/pages/live/articles/eReader.html?in_article_id=436404&amp;amp;in_page_id=1992"&gt;Daily Mail eReader&lt;/a&gt; project; so a lot of that knowledge was transferable to development in Silverlight. None of us had played with Silverlight when it was in its WPF/e incarnation (but fellow conchango-ite &lt;a href="http://blogs.conchango.com/johnrayner/archive/tags/Silverlight/default.aspx"&gt;John Rayner did&lt;/a&gt;) and although Richard and I have plenty of experience &lt;a href="http://ajax.asp.net/showcase/interview/default.aspx?tabid=47&amp;amp;subtabindex=2&amp;amp;as=19"&gt;getting our hands dirty&lt;/a&gt; with JavaScript, after Mix07, Silverlight 1.1 Alpha was &lt;em&gt;the&lt;/em&gt; version we really wanted to get our teeth into. So here are a few of our learnings:&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt;"&gt;&lt;strong&gt;Ensure you have correct bits installed &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;I know this sounds obvious &amp;ndash; but if you&amp;#39;re an alpha geek who installs all the latest CTPs, it&amp;#39;s easy to get out of synch and then spend hours wondering why the project doesn&amp;#39;t compile correctly. Follow the &lt;a href="http://silverlight.net/GetStarted/"&gt;official instructions&lt;/a&gt;. If you don&amp;#39;t want to contaminate your dev machine &amp;ndash; create a VPC image and then &lt;a href="http://www.hanselman.com/blog/VMPerformanceChecklistBeforeYouComplainThatYourVirtualMachineIsSlow.aspx"&gt;tune it&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;Also make sure you have the tool you need for testing / debugging / troubleshooting when things go wrong: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://weblogs.asp.net/nunitaddin/archive/2007/05/16/test-with-silverlight-coreclr.aspx"&gt;Test With... Silverlight / CoreCLR&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/technet/sysinternals/utilities/processmonitor.mspx"&gt;Process Monitor&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;Reflector&lt;/a&gt; + &lt;a href="http://www.codeplex.com/reflectoraddins/Wiki/View.aspx?title=SilverlightBrowser&amp;amp;referringTitle=Home"&gt;SilverlightBrowser Plug-in&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-size:12pt;"&gt;&lt;strong&gt;Update Blend 2.0 May CTP to work with Orcas Beta 1 &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Blend 2.0 May CTP doesn&amp;#39;t integrate with Orcas Beta 1 projects out of the box &amp;ndash; you need to create a &lt;em&gt;Blend.exe.config&lt;/em&gt; file in the applications directory which updates Blend&amp;#39;s MSBuild version to Orcas&amp;#39; version. The full steps are outlined in the &lt;a href="http://www.microsoft.com/Expression/products/readme.aspx?key=blend2maypreview"&gt;Blend 2 May CTP Readme file&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt;"&gt;&lt;strong&gt;Use Blend 2.0 May CTP for layout and adding controls &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The build of Cider (the WPF design surface) that ships with Orcas Beta 1 does not support the Silverlight XAML schema yet (thus inside Orcas you always get the &amp;quot;code view&amp;quot; of .XAML files) so unless you want to do layout, animation and custom control addition by hand you&amp;#39;ll need to do all of that in Blend. &lt;/p&gt;&lt;p&gt;One note of caution &amp;ndash; Blend sometimes seems to create invalid xmlns directives when referencing external assemblies; the project will compile inside Blend, but not Orcas. Ctrl-Z is your friend in this scenario. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:12pt;"&gt;&amp;quot;Add Silverlight Link&amp;quot; NOT &amp;quot;Add Reference&amp;quot; &lt;/span&gt;&lt;span style="font-size:14pt;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;If you have a multi-project solution, one of the peccadilloes of Silverlight emerges &amp;ndash; you can&amp;#39;t link projects together using the standard &amp;quot;&lt;em&gt;Add Reference&lt;/em&gt;&amp;quot; option &amp;ndash; you have to use the new &amp;quot;&lt;em&gt;Add Silverlight Link&lt;/em&gt;&amp;quot; option instead &amp;ndash; otherwise project content (i.e. XAML files, folders and .dlls) are not updated correctly.&lt;span style="font-size:14pt;"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt;"&gt;&lt;strong&gt;Define your Solution and Project structure &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;We knew from the start that we were going to have multiple projects within our solution. We wanted to separate out the website, Silverlight application and Silverlight controls. So we followed the Conchango reference build structure and then added three projects under the &amp;quot;Solutions&amp;quot; folder: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;ProjectName.App &amp;ndash; this contains the Silverlight Application &lt;/li&gt;&lt;li&gt;ProjectName.Controls &amp;ndash; this contains all the reusable controls such as Buttons, Sliders etc &lt;/li&gt;&lt;li&gt;ProjectName.Web &amp;ndash; this contains the website which hosts the Silverlight app. &lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-size:8pt;font-family:Courier New;"&gt;ProjectName&lt;br /&gt;+---Main&lt;br /&gt;&amp;brvbar; +---Build&lt;br /&gt;&amp;brvbar; +---Solutions&lt;br /&gt;&amp;brvbar; +---Common&lt;br /&gt;&amp;brvbar; +---ReferencedAssemblies&lt;br /&gt;&amp;brvbar; +---ProjectName.App&lt;br /&gt;&amp;brvbar; &amp;brvbar; +---Assets&lt;br /&gt;&amp;brvbar; &amp;brvbar; &amp;brvbar; +---PageName&lt;br /&gt;&amp;brvbar; &amp;brvbar; &amp;brvbar; +---Music&lt;br /&gt;&amp;brvbar; &amp;brvbar; &amp;brvbar; +---Video&lt;br /&gt;&amp;brvbar; &amp;brvbar; +---ClientBin&lt;br /&gt;&amp;brvbar; &amp;brvbar; +---Properties&lt;br /&gt;&amp;brvbar; +---ProjectName.Controls&lt;br /&gt;&amp;brvbar; &amp;brvbar; +---Assets&lt;br /&gt;&amp;brvbar; &amp;brvbar; +---ClientBin&lt;br /&gt;&amp;brvbar; &amp;brvbar; +---Common&lt;br /&gt;&amp;brvbar; &amp;brvbar; +---Properties&lt;br /&gt;&amp;brvbar; +---ProjectName.Web&lt;br /&gt;&amp;brvbar; +---App_Code&lt;br /&gt;&amp;brvbar; +---App_Data&lt;br /&gt;&amp;brvbar; +---Scripts&lt;br /&gt;&amp;brvbar; +---Styles&lt;br /&gt;+---TeamBuildTypes&lt;br /&gt;+---DEV &lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Project.App was linked into ProjectName.Web throught the use of the &amp;quot;Add Silverlight Link&amp;quot; mentioned in the previous tip. Once the Solution is compiled this caused all the contents (Folders, XAML files and .dlls) to be copied into the ProjectName.Web project. So ensure your ProjectName.Web project is clean before you add it to Source Control &amp;ndash; otherwise you&amp;#39;ll hit problems when you build your project in the future. &lt;/p&gt;&lt;p&gt;To keep ProjectName.Web as clean of referenced files as possible, we settled on the convention of keeping all images, music and video in a folder called &lt;em&gt;Assets&lt;/em&gt;. Because the design of our app is quite graphically intensive we decided to create a folder per XAML Page to contain its graphics. &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt;"&gt;&lt;strong&gt;Missing basic controls? Turn to the Community... &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Silverlight 1.1 is an Alpha release after all &amp;ndash; so much of the RTM functionality is still missing, including many of the intrinsic controls you&amp;#39;d use on a day to day basis (such as Button, TextBox etc). One solution is to use and modify the samples supplied as part of the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=54B85D84-604D-43DB-BCFE-7AFD278208D8&amp;amp;displaylang=en"&gt;Silverlight 1.1 Alpha SDK&lt;/a&gt; or you could try experimenting with the more extensive &lt;a href="http://blogs.msdn.com/devdave/archive/2007/05/17/silverlight-1-1-alpha-layout-system-and-controls-framework.aspx"&gt;Layout System and Controls&lt;/a&gt; recently released by &lt;a href="http://blogs.msdn.com/devdave"&gt;Dave Relyea&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt;"&gt;&lt;strong&gt;Gather as many samples as you can &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The best way to learn it to check out what everybody else is up to. For the first few weeks after Mix07 samples were a little thin on the ground (oh look! Another rotating rectangle that&amp;#39;s clickable!). I found the following links quite useful: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://weblogs.asp.net/mschwarz/archive/2007/06/04/silverlight-examples.aspx"&gt;http://weblogs.asp.net/mschwarz/archive/2007/06/04/silverlight-examples.aspx&lt;/a&gt;&amp;nbsp;- all the samples you could ever need...&lt;/li&gt;&lt;li&gt;&lt;a href="http://silverlight.net/forums/"&gt;http://silverlight.net/forums/&lt;/a&gt; - if you have an issue or question, this should be the first port of call. &lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.asp.net/tags/silverlight/default.aspx"&gt;http://weblogs.asp.net/tags/silverlight/default.aspx&lt;/a&gt; - lots of good posts... &lt;/li&gt;&lt;li&gt;&lt;a href="http://del.icio.us/tag/silverlight"&gt;http://del.icio.us/tag/silverlight&lt;/a&gt; - lots of good links... &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-size:12pt;"&gt;&lt;strong&gt;When copying sample code ensure your Build Actions are correct &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;I first fell foul of this issue when I imported the Silverlight 1.1 Alpha SDK controls sample into our &amp;quot;.Controls&amp;quot; project. I selectively imported the files I wanted to use and could not, for the life of me, workout why the Button control would not load and caused a runtime error. &lt;/p&gt;&lt;p&gt;Because Silverlight 1.1 does not support the WPF style of XAML file / nested partial class code-behind, the workaround is having a XAML file as an embedded resource with the same name as the class file. In the constructor of the class reflection is used to extract the XAML file and instantiate it. &lt;/p&gt;&lt;p&gt;If you import the files into a project you will lose the Build Action settings which will specify that the XAML files are &amp;quot;Embedded Resource&amp;quot; rather than &amp;quot;SilverlightPage&amp;quot; thus when the class is instantiated the XAML file cannot be retrieved from the Assembly Manifest and the exception will be thrown. &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt;"&gt;&lt;strong&gt;Add ASP.NET Futures controls to the toolbox &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;A new drop of the &lt;a href="http://www.asp.net/downloads/futures/default.aspx"&gt;ASP.NET Futures&lt;/a&gt; project was released to coincide with the release of Silverlight 1.1 Alpha. This project adds two ASP.NET server controls; a Media Control which simplifies the hosting of audio and video and a XAML Control which eases the pain of hosting XAML files. &lt;/p&gt;&lt;p&gt;To add the controls to the Toolbox you need to right click, select &amp;quot;Choose Options&amp;quot;, select the &amp;quot;.NET Framework Components&amp;quot; tab, sort the list by Namespace and browse to &lt;em&gt;Microsoft.Web.Preview.UI.Controls&lt;/em&gt; and select the &amp;quot;Xaml&amp;quot; and &amp;quot;Media&amp;quot; options. You should now be able to drag and drop the controls onto the page from the toolbar. &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt;"&gt;&lt;strong&gt;ASP.NET Futures XAML Control has a fundamental bug &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The current implementation of the ASP.NET Futures XAML control causes the same &amp;quot;&lt;a href="http://msdn.microsoft.com/ieupdate/"&gt;Click to activate&lt;/a&gt;&amp;quot; issue that has &lt;a href="http://www.adobe.com/devnet/activecontent/"&gt;affected the Flash community&lt;/a&gt; for the past couple of years since the &lt;a href="http://news.com.com/2100-1032_3-5074799.html"&gt;Microsoft / Eolas&lt;/a&gt; case. The simplest workaround is not to use the XAML control, as the default method for instantiating the Silverlight plug-in does not cause this behaviour. This issue should be fixed in the next release. &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt;"&gt;&lt;strong&gt;Enable Silverlight Debugging in Web Projects &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;If you are trying to debug your Silverlight application from within a Web Project and for some strange reason none of your breakpoints get hit &amp;ndash; ensure that you&amp;#39;ve selected Silverlight Debugger option in the &amp;quot;Web Project Property Pages &amp;gt; Start Options &amp;gt; Debuggers&amp;quot; section. &lt;/p&gt;&lt;p&gt;&lt;img alt="Orcas Web Project Property Pages" border="0" height="510" src="http://blogs.conchango.com/photos/conchango_bloggers/images/7143/original.aspx" style="width:890px;height:510px;" title="Orcas Web Project Property Pages" width="890" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt;"&gt;&lt;strong&gt;Isolated Storage Quota &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Silverlight 1.1 Alpha allows applications to persist up to 1mb of data locally (similar to Flash&amp;#39;s &lt;a href="http://builder.com.com/5100-6371-5061241.html"&gt;Shared Objects&lt;/a&gt;), which allows for much more flexibility for storing data than the 4kb limit for http cookies (think local data cache). There are several good examples of how to implement &lt;a href="http://www.silverlight.net/QuickStarts/IsoStore/StoreData.aspx"&gt;Isolated Storage&lt;/a&gt; in both &lt;a href="http://explosivedog.com/archive/2007/05/21/silverlight-isolated-storage.aspx"&gt;C#&lt;/a&gt; and &lt;a href="http://weblogs.asp.net/mschwarz/archive/2007/05/31/isolatedstorage-and-managed-javascript.aspx"&gt;Managed JavaScript&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=7145" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/ASP.NET+2.0/default.aspx">ASP.NET 2.0</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Mix07</title><link>http://blogs.conchango.com/howardvanrooijen/archive/2007/04/30/Mix07.aspx</link><pubDate>Mon, 30 Apr 2007 15:47:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:6794</guid><dc:creator>howard.vanrooijen</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.conchango.com/howardvanrooijen/comments/6794.aspx</comments><wfw:commentRss>http://blogs.conchango.com/howardvanrooijen/commentrss.aspx?PostID=6794</wfw:commentRss><wfw:comment>http://blogs.conchango.com/howardvanrooijen/rsscomments.aspx?PostID=6794</wfw:comment><description>&lt;p&gt;Yes, along with &lt;a href="http://blogs.conchango.com/AndrewBritcliffe/"&gt;Andy&lt;/a&gt;, &lt;a href="http://blogs.conchango.com/richardgriffin/"&gt;Richard&lt;/a&gt;, Una, &lt;a href="http://blogs.conchango.com/pauldawson/"&gt;Paul&lt;/a&gt; and &lt;a href="http://blogs.conchango.com/mikealtendorf/"&gt;Mike&lt;/a&gt; (and &lt;a href="http://blogs.conchango.com/kenibarwick"&gt;Keni&lt;/a&gt; at MEDC) &amp;ndash; I&amp;#39;m here in Las Vegas partaking in Mix07 as well. We&amp;#39;ve just had breakfast and are setting up Twitter accounts before the keynote &amp;ndash; so if you&amp;#39;re interested in keeping up with what we&amp;#39;re doing you can keep an eye on &lt;a href="http://twitter.com/HowardvRooijen"&gt;http://twitter.com/HowardvRooijen&lt;/a&gt; or if you want to keep up to date with what&amp;#39;s happening at Mix 07 in general go to &lt;a href="http://twitter.com/mix07/with_friends"&gt;http://twitter.com/mix07/with_friends&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=6794" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Mix07/default.aspx">Mix07</category></item><item><title>Debugging an ASP.NET 2.0 AJAX-Enabled Application in Visual Studio 2005 on Windows Vista / IIS 7</title><link>http://blogs.conchango.com/howardvanrooijen/archive/2007/03/16/Debugging-an-ASP.NET-2.0-AJAX_2D00_Enabled-Application-in-Visual-Studio-2005-on-Windows-Vista-_2F00_-IIS-7.aspx</link><pubDate>Fri, 16 Mar 2007 19:50:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:6344</guid><dc:creator>howard.vanrooijen</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.conchango.com/howardvanrooijen/comments/6344.aspx</comments><wfw:commentRss>http://blogs.conchango.com/howardvanrooijen/commentrss.aspx?PostID=6344</wfw:commentRss><wfw:comment>http://blogs.conchango.com/howardvanrooijen/rsscomments.aspx?PostID=6344</wfw:comment><description>&lt;p&gt;I came across an interesting issue today when I was creating a new ASP.NET AJAX-Enabled Web Application Project in Visual Studio 2005 (with the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=90e2942d-3ad1-4873-a2ee-4acc0aace5b6&amp;amp;displaylang=en"&gt;Visual Studio 2005 SP1 Update for Windows Vista&lt;/a&gt; applied) on Windows Vista. After hitting F5 to start the launch the web app in debug mode I received the following error:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;em&gt;Unable to start debugging on the web server. An authentication error occurred while communicating with the web server. Please see Help for assistance. &lt;/em&gt;&lt;/p&gt;&lt;p&gt;After a little digging, the following steps solved the problem:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Open IIS Manager&lt;/li&gt;&lt;li&gt;Select the virtual directory of the web application&lt;/li&gt;&lt;li&gt;Click &amp;quot;Advanced Settings&amp;quot; &lt;/li&gt;&lt;li&gt;Select the &amp;quot;Application Pool&amp;quot; item in the &amp;quot;Behaviour&amp;quot; category&lt;/li&gt;&lt;li&gt;Change the value from &amp;quot;DefaultAppPool&amp;quot; to &amp;quot;Classic .NET AppPool&amp;quot;&lt;/li&gt;&lt;li&gt;Restart the website to apply the changes.&lt;/li&gt;&lt;/ol&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=6344" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/ASP.NET+2.0/default.aspx">ASP.NET 2.0</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/AJAX/default.aspx">AJAX</category></item><item><title>Configuring WCF Services for Unit Testing</title><link>http://blogs.conchango.com/howardvanrooijen/archive/2007/03/14/Configuring-WCF-Services-for-Unit-Testing.aspx</link><pubDate>Wed, 14 Mar 2007 09:48:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:6327</guid><dc:creator>howard.vanrooijen</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.conchango.com/howardvanrooijen/comments/6327.aspx</comments><wfw:commentRss>http://blogs.conchango.com/howardvanrooijen/commentrss.aspx?PostID=6327</wfw:commentRss><wfw:comment>http://blogs.conchango.com/howardvanrooijen/rsscomments.aspx?PostID=6327</wfw:comment><description>&lt;p&gt;A couple of weeks ago I pinged &lt;a href="http://blogs.conchango.com/pauloreichert/"&gt;Paulo&lt;/a&gt; for some help about a WCF service I was writing &amp;ndash; he solved the problem I was having and replied that he liked the unit testing pattern I was using for starting the WCF service and couldn&amp;#39;t believe he didn&amp;#39;t think of it. So I thought I&amp;#39;d blog it, just in case anyone else was interested. &lt;/p&gt;&lt;p&gt;Basically you create a internal &lt;span style="font-family:Courier New;"&gt;ServiceHost&lt;/span&gt; wrapper class, which creates a new instance of &lt;span style="font-family:Courier New;"&gt;ServiceHost&lt;/span&gt; based on the type of the WCF service you&amp;#39;re trying to test; this wrapper class has two static methods exposed: &lt;span style="font-family:Courier New;"&gt;StartService()&lt;/span&gt; and &lt;span style="font-family:Courier New;"&gt;StopService()&lt;/span&gt; which, starts and stops the &lt;span style="font-family:Courier New;"&gt;ServiceHost&lt;/span&gt; instance. If you are using the Visual Studio Unit Testing framework, in your unit test class you call &lt;span style="font-family:Courier New;"&gt;StartService()&lt;/span&gt;in the method marked with the [ClassInitialize] attribute and &lt;span style="font-family:Courier New;"&gt;StopService()&lt;/span&gt;in the method marked by the [ClassCleanUp] attribute. If you are using &lt;a href="http://code.google.com/p/mb-unit/"&gt;MBUnit&lt;/a&gt; or &lt;a href="http://nunit.com"&gt;NUnit&lt;/a&gt; you would use [TestFixtureSetUp] instead of [ClassInitialize] and [TestFixtureTearDown] instead of [ClassCleanUp]. &lt;/p&gt;&lt;p style="margin-left:36pt;"&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:blue;"&gt;namespace&lt;/span&gt; Conchango.WebTwo.Services.Tests&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp; using&lt;/span&gt; Microsoft.VisualStudio.TestTools.UnitTesting; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.ServiceModel; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; Conchango.Services.Resourcing; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; Conchango.Services.Contracts; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; Conchango.WebTwo.CommonTypes.Resourcing; &lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left:36pt;"&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&amp;nbsp;&amp;nbsp; [&lt;span style="color:#2b91af;"&gt;TestClass&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp; public&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ResourcingServiceTests &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:gray;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Start the Resourcing WCF Service so all subsequent &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; calls made by the unit test use this connection&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&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;/summary&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&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;param name=&amp;quot;testContext&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;Current Test Context&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;[&lt;span style="color:#2b91af;"&gt;ClassInitialize&lt;/span&gt;()] &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&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;void&lt;/span&gt; ClassInitialize(&lt;span style="color:#2b91af;"&gt;TestContext&lt;/span&gt; testContext) &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:#2b91af;"&gt;ResourcingServiceHost&lt;/span&gt;.StartService(); &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;} &lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left:36pt;"&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:gray;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Shut down the WCF service once all tests have been run &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&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;/summary&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;[&lt;span style="color:#2b91af;"&gt;ClassCleanup&lt;/span&gt;()] &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&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;void&lt;/span&gt; MyClassCleanup() &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:#2b91af;"&gt;ResourcingServiceHost&lt;/span&gt;.StopService(); &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;} &lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left:36pt;"&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:gray;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; ///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Search for people called &amp;quot;Howard&amp;quot; at Conchango - expect 2 matches &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&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;/summary&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;[&lt;span style="color:#2b91af;"&gt;TestMethod&lt;/span&gt;] &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; PeopleCalledHowardTest() &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;ChannelFactory&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;IResourcingContract&lt;/span&gt;&amp;gt; factory = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ChannelFactory&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;IResourcingContract&lt;/span&gt;&amp;gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt;.Empty)) &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:#2b91af;"&gt;IResourcingContract&lt;/span&gt; client = factory.CreateChannel(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:#2b91af;"&gt;People&lt;/span&gt; people = client.GetPeopleByPartialName(&lt;span style="color:#a31515;"&gt;&amp;quot;Howard&amp;quot;&lt;/span&gt;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:#2b91af;"&gt;Assert&lt;/span&gt;.AreEqual(2, people.Count); &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;} &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left:36pt;"&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp; internal&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ResourcingServiceHost &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;{&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ServiceHost&lt;/span&gt; Instance = &lt;span style="color:blue;"&gt;null&lt;/span&gt;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:blue;"&gt;internal&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; StartService() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;Instance = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ServiceHost&lt;/span&gt;(&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;ResourcingService&lt;/span&gt;)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;Instance.Open(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;} &lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left:36pt;"&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;internal&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; StopService() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (Instance.State != &lt;span style="color:#2b91af;"&gt;CommunicationState&lt;/span&gt;.Closed) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;Instance.Close(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;} &lt;/span&gt;&lt;/p&gt;&lt;p&gt;One other point of note; on the line:&lt;br /&gt;&lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;using&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;ChannelFactory&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;IResourcingContract&lt;/span&gt;&amp;gt; factory = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ChannelFactory&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;IResourcingContract&lt;/span&gt;&amp;gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt;.Empty))&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;the &lt;span style="font-size:10pt;font-family:Consolas;"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;.Empty&lt;/span&gt; is required in the ChannelFactory contructor otherwise the following Exception is thrown: &amp;quot;&lt;em&gt;System.InvalidOperationException: The Address property on ChannelFactory.Endpoint was null. The ChannelFactory&amp;#39;s Endpoint must have a valid Address specified.&amp;quot;&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=6327" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/WCF/default.aspx">WCF</category></item><item><title>Scrum for Team System 1.2 released</title><link>http://blogs.conchango.com/howardvanrooijen/archive/2007/03/11/Scrum-for-Team-System-1.2-released.aspx</link><pubDate>Sun, 11 Mar 2007 23:27:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:6286</guid><dc:creator>howard.vanrooijen</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.conchango.com/howardvanrooijen/comments/6286.aspx</comments><wfw:commentRss>http://blogs.conchango.com/howardvanrooijen/commentrss.aspx?PostID=6286</wfw:commentRss><wfw:comment>http://blogs.conchango.com/howardvanrooijen/rsscomments.aspx?PostID=6286</wfw:comment><description>&lt;p&gt;After an immense amount of hard work from &lt;a href="http://blogs.conchango.com/stuartpreston/"&gt;Stuart&lt;/a&gt;, &lt;a href="http://blogs.conchango.com/colinbird/"&gt;Colin&lt;/a&gt; and &lt;a href="http://blogs.conchango.com/merrickchaffer/"&gt;Merrick&lt;/a&gt; a new version of &lt;a href="http://www.scrumforteamsystem.com"&gt;Scrum for Team System&lt;/a&gt; has been released. Version 1.2 of Scrum for Team System contains a number of changes: &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Reports &lt;/strong&gt;&lt;/p&gt;&lt;ul style="margin-left:54pt;"&gt;&lt;li&gt;Significant performance improvements compared to the v1.1 reports (we recommend you use the Report Installer to upgrade your existing reports to the latest version &amp;ndash; see below). &lt;/li&gt;&lt;li&gt;Portal Reports are now hidden from Team Explorer. (The hidden reports may be seen by visiting the Report site and selecting &amp;quot;Show Details&amp;quot;) &lt;/li&gt;&lt;li&gt;A small &amp;quot;(Hidden) Bug History Chart Small&amp;quot; is available for use in the portal. &lt;/li&gt;&lt;li&gt;A &amp;quot;Version&amp;quot; report has been added to aid identification of the version of Scrum for Team System in use. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Windows Sharepoint Services &lt;/strong&gt;&lt;/p&gt;&lt;ul style="margin-left:54pt;"&gt;&lt;li&gt;&amp;quot;Quick links&amp;quot; functionality has now been re-introduced. &lt;/li&gt;&lt;li&gt;A &amp;quot;bottom zone&amp;quot; has been added to the default template to allow more flexibility in the customisation of the layout of the Portal. &lt;/li&gt;&lt;li&gt;The default portal site for a new Team Project now displays the following reports: Sprint Burndown Chart, Product Burndown Chart, Bug History Chart, Product Cumulative Flow &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Utilities &lt;/strong&gt;&lt;/p&gt;&lt;ul style="margin-left:54pt;"&gt;&lt;li&gt;Report Installer (which is used to upgrade the reports in existing team projects) now has the option to completely refresh the report site for a particular team project with the latest reports (by deleting all existing reports in the Team Project before the new ones are installed). Alternatively, individual reports can be overwritten with the latest versions (for example if you have added custom reports that you wish to keep) and the new ones added. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Process Template &lt;/strong&gt;&lt;/p&gt;&lt;ul style="margin-left:54pt;"&gt;&lt;li&gt;No changes since v1.1 &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Upgrade process from earlier versions &lt;/strong&gt;&lt;/p&gt;&lt;ul style="margin-left:54pt;"&gt;&lt;li&gt;If you are on v1.0 you need to install version 1.2, create a new team project and follow the &lt;a href="http://scrumforteamsystem.com/ProcessGuidance/FAQ/UpgradeProcess.html"&gt;migration steps&lt;/a&gt; to get to v1.2. &lt;/li&gt;&lt;li&gt;If you are on v1.1 you need to install version 1.2, run the Report Installer from the AdminUtilities package to update all reports and then customise the existing portal to get to v1.2. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We&amp;#39;ve also added a new feature requests section to the &lt;a href="http://scrumforteamsystem.com/cs/forums/"&gt;forums&lt;/a&gt; &amp;ndash; so If you have any good ideas, or modifications you&amp;#39;d like to see, you can &lt;a href="http://scrumforteamsystem.com/cs/forums/6/ShowForum.aspx"&gt;post your wish list&lt;/a&gt;. We&amp;#39;ve also added a &lt;a href="http://www.scrumforteamsystem.com/en/default.aspx"&gt;list of training courses&lt;/a&gt; we&amp;#39;re running over the next few months, in addition to the regular Certified Scrum Master and Agile Estimation and Planning courses we are running a new 2 day workshop on April 16th &amp;ndash; &amp;quot;Agile Retrospectives&amp;quot; with Ester Derby and Diane Larson. I was fortunate enough to attend a one day workshop at the Scrum Gathering 2006 and highly recommend it. If you can&amp;#39;t make it to the workshop &amp;ndash; &lt;a href="http://www.amazon.co.uk/Agile-Retrospectives-Making-Teams-Great/dp/0977616649"&gt;buy the book&lt;/a&gt; &amp;ndash; it will transform the way you approach your Sprint Retrospectives.&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=6286" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Agile/default.aspx">Agile</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Scrum/default.aspx">Scrum</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Scrum+for+Team+System/default.aspx">Scrum for Team System</category></item><item><title>Scrum Gathering / Open Space Technology</title><link>http://blogs.conchango.com/howardvanrooijen/archive/2007/02/15/Scrum-Gathering-_2F00_-Open-Spaces-Technology.aspx</link><pubDate>Thu, 15 Feb 2007 14:00:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:5977</guid><dc:creator>howard.vanrooijen</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.conchango.com/howardvanrooijen/comments/5977.aspx</comments><wfw:commentRss>http://blogs.conchango.com/howardvanrooijen/commentrss.aspx?PostID=5977</wfw:commentRss><wfw:comment>http://blogs.conchango.com/howardvanrooijen/rsscomments.aspx?PostID=5977</wfw:comment><description>&lt;p&gt;Last November I attended the 2006 Scrum Gathering in Minneapolis along with fellow &lt;em&gt;Conchangoens&lt;/em&gt; &lt;a href="http://blogs.conchango.com/colinbird/"&gt;Colin Bird&lt;/a&gt; and &lt;a href="http://blogs.conchango.com/gavyndowst/"&gt;Gavyn Dowst&lt;/a&gt;. It was a conference like no other I&amp;#39;ve attended; earlier last year I co-presented a session on Agile Architecture at the Microsoft Architecture Insight Conference with &lt;a href="http://blogs.conchango.com/simonevans"&gt;Simon Evans&lt;/a&gt;, where to be quite frank, the reception of talking about how two experienced architects had managed to deliver and continued to deliver business value, iteration after iteration, was frosty to say the least and in some cases &lt;a href="http://www.cbdiforum.com/cbdi_blog/index.php?filter=comment&amp;amp;id=21&amp;amp;display=AGILE%20ARCHITECTURE?"&gt;downright offensive&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;The reception these ideas and experiences received at the Scrum Gathering couldn&amp;#39;t have been more different. Instead of being confrontational and pouring on vitriol in order to justify their own job or methodology, attendees of the Gathering were so open minded. More often than not the reaction was &amp;quot;&lt;em&gt;Wow, my experience of doing X was completely different. How did you handle situations like Y?&lt;/em&gt;&amp;quot; Ideas were cross-pollinated and people came away with a myriad of new techniques to try. &lt;/p&gt;&lt;p&gt;There were a couple of things I took away from that conference; firstly that Scrum and Agile Methodologies are really crossing the chasm - large organisations are starting to believe in them and are trying to roll it out in a top down manner (I think the largest number I heard was 700 development teams) with varying degrees of success. Secondly, Scrum causes organisational change and business transformation, more and more practitioners are realising that there needs to be a programme level project for organizational transformation otherwise Agile project teams meet friction where they have to interact with any other part of their organisation, which severely hampers, if not cripples their productivity. The third actually has nothing to do with Scrum or anything Agile - it&amp;#39;s actually the technique called &amp;quot;&lt;a href="http://www.openspaceworld.org/"&gt;Open Space Technology&lt;/a&gt;&amp;quot; (OST) that was used to run the Conference. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Open Spaces Technology &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Open Space Technology was created in the mid 1980&amp;#39;s by &lt;a href="http://ho-image.com/"&gt;Harrison Owen&lt;/a&gt; who had spent a year of his life organising an international meeting with over 250 delegates; the overwhelming feedback from the delegates was that they all enjoyed the coffee breaks more than the keynotes because the breaks allowed them to interchange ideas. He was asked to arrange the event again the following year and while pondering if there was a fundamental mechanism for organising a successful conference, he remembered his experience of witnessing tribal meetings in Africa; where the circle is a fundamental form of communal meetings; if people are invited into a circle they will participate and communicate &amp;ndash; a circle has no beginning, no end and no hierarchy. &lt;/p&gt;&lt;p&gt;&lt;a href="https://blogs.conchango.com/photos/conchango_bloggers/images/5966/original.aspx" title="Open Spaces Technology - Main Room, Large Panorama" target="_blank"&gt;&lt;img border="0" height="91" src="https://blogs.conchango.com/photos/conchango_bloggers/images/5962/original.aspx" width="800" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Conferences run using Open Space Technology are different &amp;ndash; there are no keynotes, no panels, and no pre-announced schedule; instead the Open Space Technology relies on self-organisation and is a vibrant mix of order and chaos. It can be used for any type of meeting; from envisioning to conflict resolution and it&amp;#39;s been proven to work with 5 &amp;ndash; 2000 delegates for 1-3 day conferences. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Anatomy of an Open Spaces Session &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;If you walk into an conference or meeting run using OST you&amp;#39;ll probably find yourself in a large room with a circle of chairs in the middle (or if there are lots of delegates it will be a spiral or series of concentric circles of chairs). In the corners of the Room you&amp;#39;ll probably see flip charts and on one of the walls you&amp;#39;ll probably see a matrix of post it notes &amp;ndash; this is called the &lt;strong&gt;Agenda Wall&lt;/strong&gt;. When an Open Space Conference starts the delegates sit on the chairs in the circle. The first person to speak is &lt;strong&gt;The Sponsor&lt;/strong&gt; &amp;ndash; who will outline the context for the session and their hopes and expectations. For the Scrum Gathering our theme was &amp;quot;&lt;em&gt;How do we sustain the values and principles of Scrum as we adopt the practices in our organisations?&lt;/em&gt;&amp;quot; &lt;/p&gt;&lt;p&gt;&lt;img alt="Welcome to Open Space" border="0" height="356" src="https://blogs.conchango.com/photos/conchango_bloggers/images/5965/original.aspx" style="width:600px;height:356px;" title="Welcome to Open Space" width="600" /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://blogs.conchango.com/photos/conchango_bloggers/picture5965.aspx" target="_blank"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Next &lt;strong&gt;The Facilitator&lt;/strong&gt; speaks to the delegates from the centre of the circle; they reiterate the theme and explain the process of Open Space Technology; that the agenda wall is a matrix of times and locations which can be used to host discussion groups:&lt;/p&gt;&lt;p&gt;&lt;img alt="Times and Locations" border="0" height="563" src="https://blogs.conchango.com/photos/conchango_bloggers/images/5964/600x563.aspx" style="width:600px;height:563px;" title="Times and Locations" width="600" /&gt;&lt;/p&gt;&lt;p&gt;Anyone can create a discussion group &amp;ndash; all they &amp;ndash; &lt;strong&gt;The Host&lt;/strong&gt; - have to do, is take an index card, write the title of the discussion on it &amp;ndash; assign it to a free time / space slot on the agenda wall and then announce it to the rest of the delegates. &lt;/p&gt;&lt;p&gt;&lt;img alt="delegates viewing the agenda wall" border="0" height="459" src="https://blogs.conchango.com/photos/conchango_bloggers/images/5961/original.aspx" style="width:600px;height:459px;" title="delegates viewing the agenda wall" width="600" /&gt;&lt;/p&gt;&lt;p&gt;Those who are interested in participating in that discussion should initial the card to signify their interest. &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img alt="a close-up of the agenda wall" border="0" height="729" src="https://blogs.conchango.com/photos/conchango_bloggers/images/5963/original.aspx" style="width:600px;height:729px;" title="a close-up of the agenda wall" width="600" /&gt;&lt;/p&gt;&lt;p&gt;The Facilitator also has to and explain and ask the participants to adopt &lt;em&gt;The Principles of Open Space&lt;/em&gt; for their discussion groups: &lt;/p&gt;&lt;p style="margin-left:36pt;"&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Whoever comes are the right people&lt;br /&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Whatever happens is the only thing that could have&lt;br /&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;When it starts, it starts&lt;br /&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;When it&amp;#39;s over, it&amp;#39;s over (and when it&amp;#39;s not over, it&amp;#39;s not over)&lt;br /&gt;5.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The Law of Two Feet &amp;ndash; If you are not learning or contributing where you are, use your two feet to take yourself someplace where you can learn or contribute &lt;/p&gt;&lt;p&gt;Next the circle is disbanded and discussion groups convene in their allocated location, at the allocated time. The Host of a discussion group asks for a volunteer to act as &lt;strong&gt;The Note Taker&lt;/strong&gt;, who captures the conversations on the flipchart while The Host facilitates the discussion. Once the session has ended &amp;ndash; it&amp;#39;s The Host&amp;#39;s responsibility to turn the notes into a more permanent record of the session and so that people who couldn&amp;#39;t attend because of a conflicting sessions can have an overview; at the Scrum Gathering we had a &lt;a href="http://scrumalliance.pbwiki.com/SG2006%20Open%20Space"&gt;dedicated wiki&lt;/a&gt; that was used as the permanent record for both &lt;a href="http://scrumalliance.pbwiki.com/Topics%20for%20Wednesday%20--%20Open%20Space"&gt;Wednesdays&lt;/a&gt; and &lt;a href="http://scrumalliance.pbwiki.com/Topics%20for%20Thursday%20--%20open%20space"&gt;Thursdays&lt;/a&gt; sessions &amp;ndash; the benefit of this is that it can be opened up to the wider community who could not attend the Open Space; one of the discussion groups Gavyn and I attended was called &amp;quot;&lt;a href="http://scrumalliance.pbwiki.com/What%20is%20the%20role%20for%20managers%20in%20a%20Scrum%20organization"&gt;The Managers Role in Scrum&lt;/a&gt;&amp;quot;, hosted by Jens Ostergaard. Since then, the topic has been picked up by &lt;a href="http://jeffsutherland.com/scrum/2007/02/managers-role-in-scrum.html"&gt;Jeff Sutherland&lt;/a&gt; and continues to evolve. Another example of this happening is that Gavyn and I ran a session on &amp;quot;Testing in Scrum&amp;quot; although the turn-out was small because we were scheduled against Colin&amp;#39;s ridiculously popular &amp;quot;&lt;a href="http://scrumalliance.pbwiki.com/ScalingScrum"&gt;Scaling Scrum&lt;/a&gt;&amp;quot; discussion group, some great experiences were shared and ideas were crystallised and were published in Gavyn&amp;#39;s series of blog posts &amp;quot;Testing in Agile&amp;quot; parts &lt;a href="http://blogs.conchango.com/gavyndowst/archive/2006/12/19/Testing-in-Agile-_2D00_-Part-One.aspx"&gt;one&lt;/a&gt;, &lt;a href="http://blogs.conchango.com/gavyndowst/archive/2006/12/20/Testing-in-Agile-_2D00_-Part-Two.aspx"&gt;two&lt;/a&gt; and &lt;a href="http://blogs.conchango.com/gavyndowst/archive/2006/12/21/Testing-in-Agile-_2D00_-Part-Three.aspx"&gt;three&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;If the event is a multi-day affair then there will be &amp;quot;check-ins&amp;quot; in the morning and afternoon &amp;ndash; where new sessions can be added to the agenda wall &amp;ndash; this allows new ideas to be spun out of discussion groups and elaborated on. At the end of the event the Space is closed by The Facilitator who invites the attendees to briefly share their thoughts, reflections, experiences or learnings. &lt;/p&gt;&lt;p&gt;Open Spaces Technology works so well when you&amp;#39;re trying to discuss any complex topic, especially when there are passionate people involved. The fact that there is no pre-announced schedule means that as interesting ideas crop up, new discussion groups can be spun up, which allows people to discuss much finer grain topics than are usually discussed in conferences and because of The Law of Two Feet, you only get people who are willing to contribute and so the session are so much more vibrant. I&amp;#39;m hoping that we try and run a Conchango Community Day using Open Space Technology soon. &lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=5977" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Scrum+Agile+OpenSpacesTechnology+Musings/default.aspx">Scrum Agile OpenSpacesTechnology Musings</category></item><item><title>WPF: Blurry UIElements</title><link>http://blogs.conchango.com/howardvanrooijen/archive/2007/01/24/WPF_3A00_-Blurry-UIElements.aspx</link><pubDate>Wed, 24 Jan 2007 12:58:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:5650</guid><dc:creator>howard.vanrooijen</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.conchango.com/howardvanrooijen/comments/5650.aspx</comments><wfw:commentRss>http://blogs.conchango.com/howardvanrooijen/commentrss.aspx?PostID=5650</wfw:commentRss><wfw:comment>http://blogs.conchango.com/howardvanrooijen/rsscomments.aspx?PostID=5650</wfw:comment><description>&lt;p&gt;If you&amp;#39;re writing a WPF application the chances are that you&amp;#39;ll run across this little oddity fairly soon. On some monitors UIElements can appear slightly blurry or over anti-aliased, almost as if ClearType were over-compensating. The solution is to set the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.uielement.snapstodevicepixels.aspx"&gt;SnapsToDevicePixels&lt;/a&gt; property on the root element in your &lt;a href="http://msdn2.microsoft.com/en-us/library/ms753391.aspx"&gt;Visual Tree&lt;/a&gt; (all child element will then inherit this property). &lt;/p&gt;&lt;p&gt;Below the Username textbox with &lt;em&gt;SnapsToDevicePixels&lt;/em&gt; set to &lt;strong&gt;false&lt;/strong&gt;, N.B. the border is blurred: &lt;/p&gt;&lt;p&gt;&lt;img alt="blurry elements: SnapsToDevicePixels = false" border="0" height="137" src="https://blogs.conchango.com/photos/conchango_bloggers/images/5648/original.aspx" width="417" /&gt;&lt;/p&gt;&lt;p&gt;Below the Username textbox with &lt;em&gt;SnapsToDevicePixels&lt;/em&gt; set to &lt;strong&gt;true&lt;/strong&gt;, N.B. the border is now crisp: &lt;/p&gt;&lt;p&gt;&lt;img alt="crisp elements: SnapsToDevicePixels = true" border="0" height="137" src="https://blogs.conchango.com/photos/conchango_bloggers/images/5649/original.aspx" width="417" /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/seema/"&gt;Seema Ramchandani&lt;/a&gt; has a great &lt;a href="http://blogs.msdn.com/seema/archive/2006/10/31/on-some-monitors-it-seems-that-thin-wpf-lines-are-blurred-across-two-pixels-instead-of-one-ick-how-do-i-get-sharply-rendered-lines.aspx"&gt;post explaining&lt;/a&gt; Pixel Snapping in more detail. &lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=5650" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/WPF/default.aspx">WPF</category></item><item><title>Showcase of Sites Powered by ASP.NET AJAX</title><link>http://blogs.conchango.com/howardvanrooijen/archive/2007/01/08/Showcase-of-Sites-Powered-by-ASP.NET-AJAX.aspx</link><pubDate>Mon, 08 Jan 2007 21:33:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:5474</guid><dc:creator>howard.vanrooijen</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.conchango.com/howardvanrooijen/comments/5474.aspx</comments><wfw:commentRss>http://blogs.conchango.com/howardvanrooijen/commentrss.aspx?PostID=5474</wfw:commentRss><wfw:comment>http://blogs.conchango.com/howardvanrooijen/rsscomments.aspx?PostID=5474</wfw:comment><description>&lt;p&gt;As Stuart eluded to in his &lt;a href="http://blogs.conchango.com/stuartpreston/archive/2007/01/08/The-year_2D00_long-blog-post.aspx"&gt;summary of his adventures in 2006&lt;/a&gt;, I spent the majority of the year as the Development Lead for &lt;a href="http://www.hmv.co.uk"&gt;HMV&lt;/a&gt; working on their Digital Download Platform &amp;ndash; we achieved a huge amount in 11 months (hence why I&amp;#39;ve been so quiet here); several updates to the &lt;a href="http://www.hmvdigital.com/HMV.Digital.WebStore.Portal/Default.aspx?iframeUrl=/HMV.Digital.WebStore.Portal/Pages/Digital/player_landing.aspx"&gt;HMV Digital Player&lt;/a&gt;, we created a new &lt;a href="http://www.hmvdigital.com"&gt;permanent music download store&lt;/a&gt; and finally a &lt;a href="http://psiman.wordpress.com/2006/12/08/hmv-digital-for-windows-media-center/"&gt;Media Centre Online Spotlight Store&lt;/a&gt; (I&amp;#39;m sure &lt;a href="http://blogs.conchango.com/richardgriffin/"&gt;Richard Griffin&lt;/a&gt; will blog about this at some point as it was his &amp;quot;baby&amp;quot;). &lt;/p&gt;&lt;p&gt;I&amp;#39;m particularly proud of the &lt;a href="http://www.hmvdigital.com"&gt;permanent music download store&lt;/a&gt; &amp;ndash; we set out to create a rich Web 2.0 application which delivered a simple and interesting music purchasing experience. Much kudos goes to Mike Lewis for his designs and &lt;a href="http://blogs.conchango.com/maxchoong/"&gt;Max Choong&lt;/a&gt; for his User Experience work and the dedication of the HMV developers involved. We made the decision early on that we would use Atlas (now ASP.NET AJAX) to deliver the rich interactivity and today &lt;a href="http://blogs.conchango.com/rorystreet/"&gt;Rory&lt;/a&gt; pointed out that the site is featured as part of the &lt;a href="http://ajax.asp.net/default.aspx?tabid=47&amp;amp;subtabid=472"&gt;ASP.NET AJAX Showcase&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=5474" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/ASP.NET+2.0/default.aspx">ASP.NET 2.0</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/Atlas/default.aspx">Atlas</category><category domain="http://blogs.conchango.com/howardvanrooijen/archive/tags/AJAX/default.aspx">AJAX</category></item></channel></rss>