<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.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>edjez's WebLog : Smart Client</title><link>http://blogs.msdn.com/edjez/archive/tags/Smart+Client/default.aspx</link><description>Tags: Smart Client</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Release of CAB (Composite UI Application Block) !!</title><link>http://blogs.msdn.com/edjez/archive/2005/12/06/CABRelease2005.aspx</link><pubDate>Wed, 07 Dec 2005 02:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:500766</guid><dc:creator>edjez</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/edjez/comments/500766.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edjez/commentrss.aspx?PostID=500766</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;And so it releases. This has been a great project and team to work with. I feel privileged to have been able to work with all the folks who made it possible, and to have made such a step forward implementing a close customer connection throughout the project.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/cab.asp"&gt;&lt;FONT face=Verdana size=2&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/cab.asp&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;So what is CAB? It's an application block that provides common infrastructure components and a programming model for smart client applications that are composed out of views and business logic that might come from different teams or need to evolve independently. It has been architected considering many a convergence of many patterns observed in large successful&amp;nbsp;customer applications and whre the platform and tools are going in the future in this space.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;It contains:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;WorkItems: a programming abstraction to simplify encapsulating use cases into 'contexts' that have shared state and orchestrating logic and nested recursively&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;Plug-in infrastructure: providers for enumerating available modules and loading them into the environment, and orchestration of the application bootstrap&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;Shared shell abstractions:&amp;nbsp; a set of interfaces that allow logic to 'share a shell' and to&amp;nbsp;facilitate separation of concerns between UI-intensive shell development and business logic development&amp;nbsp;&lt;/FONT&gt; 
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;Workspaces - a set of interfaces that specify how to show controls in an a given area or style - such as portal, tabbed, MDI windows, etc&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;UI Extension sites - named 'slots' in a shell where you want to add controls such as menus or status bar panes&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;Commands - a common way of hooking up multiple UI events to a specific callback inside your application&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;Composition infrastructure that helps objects find each other and communicate - such as the ability to share state, auto-wire-up of pub-sub of events&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;A service locator/lifetime container/dependency injection++ foundation&lt;/FONT&gt; 
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;Built on ObjectBuilder - which allows you to extend the architecture specifying what it means to 'contextualize' an object.&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;A &lt;EM&gt;reflective architecture&lt;/EM&gt; that you can explore to see the current state of the application, and a &lt;EM&gt;visualization architecture&lt;/EM&gt; that allows architects and troubleshooters have views that exploit this reflective nature and can show you the internals of the application structure and how it's running while it's live (see the &lt;A href="http://www.gotdotnet.com/codegallery/releases/viewuploads.aspx?id=22f72167-af95-44ce-a6ca-f2eafbf2653c"&gt;sample visualization in a separate download&lt;/A&gt;).&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;This is a 'large' app block - you will probably want to do the hands-on-labs and see the webcasts to understand the key concepts in depth. But you can get going with little effort by looking at the quicktstarts and included how-to documentation.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;When the time comes around, we'll be working on showing how WinFX technologies such as Windows Workflow and WPF (Avalon) can be used in CAB applications. As always, the goal of these p&amp;amp;p assets is to help you build your applications in that make the best use of the existing platform and sets you up for simplified adoption of the next generation.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I hope you enjoy it. To all the customers who participated in our expert advisory board, on-site visits, workshops, webcasts and &lt;A href="http://www.gotdotnet.com/codegallery/codegallery.aspx?id=22f72167-af95-44ce-a6ca-f2eafbf2653c"&gt;gotDotNet community&lt;/A&gt; - THANK YOU.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;//7-12 Updated to add link to Visualization download&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=500766" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edjez/archive/tags/Smart+Client/default.aspx">Smart Client</category><category domain="http://blogs.msdn.com/edjez/archive/tags/Enterprise+Library/default.aspx">Enterprise Library</category><category domain="http://blogs.msdn.com/edjez/archive/tags/_2F00_etc_2F00_other/default.aspx">/etc/other</category></item><item><title>Of EntLib 2.0, a local AOP Workshop, and the infamous TDD article</title><link>http://blogs.msdn.com/edjez/archive/2005/12/05/500396.aspx</link><pubDate>Tue, 06 Dec 2005 07:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:500396</guid><dc:creator>edjez</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/edjez/comments/500396.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edjez/commentrss.aspx?PostID=500396</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Quickie blog post, just to get jamming:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;&lt;STRONG&gt;EntLib internals webcast&lt;/STRONG&gt;. Yes, EntLib &lt;EM&gt;and &lt;/EM&gt;CAB ship with ObjectBuilder, our common factory &amp;amp; dependency injection infrastructure ++. Answering the FAQs: Yes, we have one. Yes, it's this one. Yes, you can build something like Spring with it, if you wanted to. Yes, we want your feedback and you to do cool stuff with it. And Yes, I am hoping that folks implement a creation strategy that do a transparent proxying, see my next post why. Interested in ObjectBuilder and how we externalized the config interpretation and wiring to instrumentation out of each app block? See this: 
&lt;P&gt;&lt;EM&gt;So what's this Configuration Source thing meant to be? Why do you have so many kinds of factories? How can I reuse the instrumentation capabilities in my own app? What's different in the new Configuration Designtime?&lt;BR&gt;Get the answers to these and many more questions at the &lt;/EM&gt;&lt;A href="http://www.microsoft.com/events/EventDetails.aspx?CMTYSvcSource=MSCOMMedia&amp;amp;Params=%7eCMTYDataSvcParams%5e%7earg+Name%3d%22ID%22+Value%3d%221032286082%22%2f%5e%7earg+Name%3d%22ProviderID%22+Value%3d%22A6B43178-497C-4225-BA42-DF595171F04C%22%2f%5e%7earg+Name%3d%22lang%22+Value%3d%22en%22%2f%5e%7earg+Name%3d%22cr%22+Value%3d%22US%22%2f%5e%7esParams%5e%7e%2fsParams%5e%7e%2fCMTYDataSvcParams%5e"&gt;&lt;FONT color=#009933&gt;&lt;EM&gt;Enterprise Library for .NET Framework 2.0: Core Architecture webcast&lt;/EM&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;EM&gt;. It's on this coming Thursday,&amp;nbsp;December 8th at 10:00am US Pacific Time / 18:00 UTC. Register now to view the webcast live (this is best if you want to ask us questions), or as always it will be available on demand from the next day&lt;BR&gt;&lt;/EM&gt;&lt;BR&gt;By the way, shipping EntLib on ObjectBuilder was not an easy feat, congrats to the team for pulling it off and consolidating the EntLib and CAB factory and dependency injection approach...at one point in time I started wondering..."what have I done! Include a new component as part of the foundation of something that needs to ship ASAP&amp;nbsp;for what some think is a hazy fluffy ivory-tower architectural benefit! I'll be lynched!".&amp;nbsp;But our p&amp;amp;p devs + testers rock. (Guys - if you are reading this: If &lt;EM&gt;you&lt;/EM&gt; don't pull&amp;nbsp;these feats, nobody can. However, if I ever have to ship a &lt;A href="http://www.microsoft.com/windowsvista/default.mspx"&gt;full OS&lt;/A&gt;, I'll keep the learning in mind).&lt;/P&gt;&lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt;&lt;STRONG&gt;Aspect Oriented Programming Workshop&lt;/STRONG&gt; We recently held a workshop around AOP here at MS. I was glad I finally got to meet &lt;A href="http://wwwhome.cs.utwente.nl/~aksit/"&gt;Prof. Mehmet Aksit&lt;/A&gt; in person&amp;nbsp;(from Twente, of &lt;A href="http://trese.cs.utwente.nl/oldhtml/composition_filters/"&gt;Composition Filter&lt;/A&gt; fame). I hoped I would also see Christa Schwanninger from Siemens but she's having a baby (congrats &lt;A href="http://www.kircher-schwanninger.de/"&gt;Christa &amp;amp; Michael&lt;/A&gt;!). My conclusion? To better influence Microsoft the AOSD community should 'consolidate efforts' and express the commonalities that exist in approaches. I mean, there ain't that many e.g. in runtime you'll find 3 main flavors - assembly rewriting, using dynamic languages, or using transparent proxies. Only so many pointcut expressions cover a large % of advice types, and so on. I think it would be good to have a &lt;EM&gt;pattern language&lt;/EM&gt; around AOSD. The AOP alliance has most of the material needed but&amp;nbsp;sometimes&amp;nbsp;I feel the discussions around problem space and solution space get mixed; or that the academic efforts focus on the &lt;EM&gt;uniqueness&lt;/EM&gt; of each solution (which they should) instead of the &lt;EM&gt;commonality&lt;/EM&gt; (which is a lousy strategy&amp;nbsp;for a researcher - to write about what everyone understands!). Mehmet was going to try to get a AO on .NET wiki started somewhere to get this dialogue around commons going, when I find out that it materializes, I'll post. &lt;/P&gt;&lt;/FONT&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;In the meantime, if anyone from the AO community wants to define a factory for proxying, please consider&amp;nbsp;doing it via an&amp;nbsp;ObjectBuilder strategy. It will help others use your solution, on stuff we've built e.g. CAB. And oh, if only I got a dollar for every time I meet a customer who could have benefited from richer interception on .NET. If you want it too ping a comment here, I'll print it nail it to doors on bldg 42. &lt;/P&gt;&lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;No, I don't have MS's official stand on AOSD, so please don't ask me- &amp;nbsp;there's an old obscure BillG 2nd hand quote from an Australian interview where he &lt;A href="http://computerworld.co.nz/news.nsf/0/A453734B3782CAFDCC256ED000171C8D?OpenDocument&amp;amp;pub=Computerworld"&gt;allegedly&lt;/A&gt; said MS would be embracing it. Definitively the platform is embracing more and more requirements of separation of concerns throughout, which is good. Indigo looks great in this regard. I'd like to see&amp;nbsp;more of&amp;nbsp;a unified approach one day. But&amp;nbsp;a lot of questions are unresolved yet (when you think about&amp;nbsp;trust models around assemblies, for example, who is allowed to advice what?).&amp;nbsp;So I don't know what the end solution would look like. Especially when I think about crosscutting concerns and concurrency, hm. We'll see.&lt;/P&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;&lt;STRONG&gt;The infamous TDD article gets pulled&lt;/STRONG&gt; Unless you have been living in a tupperware, you know&amp;nbsp;there was a fallout over some article about TDD deep in the tree of MSDN VSTS content. Yes, it got removed. &lt;A href="http://msdn2.microsoft.com/en-us/library/ms182521.aspx"&gt;Here's the link&lt;/A&gt;, anyways.&amp;nbsp;It described TDD in terms of some steps that in my opinion was just..plain..wrong...and it &lt;A href="http://www.artima.com/weblogs/viewpost.jsp?thread=137207"&gt;irked&lt;/A&gt;&amp;nbsp;&lt;A href="http://codebetter.com/blogs/scott.bellware/archive/2005/11/21/134910.aspx"&gt;folks&lt;/A&gt; in the TDD community. Anyways, here are my key&amp;nbsp;points late in the&amp;nbsp;game:&lt;/P&gt;&lt;/FONT&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;Sorry Jimmy!&amp;nbsp;I'm so late to this flame party it's not even funny...&amp;nbsp;&lt;FONT face=Tahoma&gt;&lt;A href="http://www.jnsk.se/"&gt;Jimmy Nilsson&lt;/A&gt;&lt;/FONT&gt; pings me for comment, I start writing a post in this web form and my machine runs out of battery...there goes my IE with all my text. It would have been a good post. To your question...no, what the article described is not what we do when we say we do TDD in patterns &amp;amp; practices. I respected &lt;a href="http://blogs.msdn.com/randymiller/"&gt;Randy Miller's &lt;/A&gt;reaction a lot, even though he didn't get to&amp;nbsp;blog about it. And I truly beleive in TDD as a design technique.&lt;/P&gt;&lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;To MS folks...how about some internal review cycles...there's agile and TDD lists... one... email... away.&lt;/P&gt;&lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;I'm glad the community responded so vigorously. Kudos to all who by nature or effort were able to articulate a response that did not evoke a Turret syndrome diagnosis. &lt;/P&gt;&lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;I would also&amp;nbsp;like to see those passionate about the subject take advantage of the situation&amp;nbsp;and engage with MS in a &lt;EM&gt;proactive&lt;/EM&gt; way. I mean, it's good agile approaches will be getting more visibility. As the word gets spread, it may get mangled. That's just 2nd law of thermodynamics. MS and its tools channel is a &lt;EM&gt;huge megaphone&lt;/EM&gt; for the agile message.&amp;nbsp;I know, many people ask, "who needs a megaphone in this era of blogs &amp;amp; social web 2.0 long-tail software"? Well, not everyone is in-the-know of what Michael Feathers or Brian Button are saying, or has their RSS pointing at the community gurus..so influencing an ISV like MS to help spread the word in a way the respected leaders think it's right not only will help the overall industry, but also creates a market for those engaging in it.&amp;nbsp;Consider this personal estimate:&amp;nbsp;probably more Microsoft customer-devs relate OOP advice to &lt;A href="http://www.insteptech.com/h_whoweare.htm"&gt;Deborah Kurata&lt;/A&gt; than the &lt;A href="http://hillside.net/patterns/DPBook/GOF.html"&gt;GoF&lt;/A&gt;. So what about ganging up on MS and saying "we will publish books, training, etc and furnish you at a fee with agile-community-approved guidance that the masses can&amp;nbsp;take a shot at&amp;nbsp;without requiring going on a 4-month spiritual walkabout with Kent Beck on some rainy hill in Oregon". I think it could be a win.&lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;What's the news? CAB shipping, EntLib shipping, and we are off to a great start with patterns &amp;amp; practices in 2006 and starting to plan the wave of stuff for WinFX+ timeframe technologies.... Avalon...Indigo...Workflow...LinQ This is my 5th year in this group. Any one year is never similar to the previous one. Hope you are finding the existence of p&amp;amp;p as helpful as I enjoy working here. &lt;/P&gt;
&lt;P&gt;Namasté! no, wait, that's Soma, not me. Thank you!&lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=500396" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edjez/archive/tags/Smart+Client/default.aspx">Smart Client</category><category domain="http://blogs.msdn.com/edjez/archive/tags/Enterprise+Library/default.aspx">Enterprise Library</category><category domain="http://blogs.msdn.com/edjez/archive/tags/Separation+Of+Concerns/default.aspx">Separation Of Concerns</category><category domain="http://blogs.msdn.com/edjez/archive/tags/_2F00_etc_2F00_other/default.aspx">/etc/other</category></item><item><title>CAB - October 2005 CTP out!</title><link>http://blogs.msdn.com/edjez/archive/2005/10/07/478447.aspx</link><pubDate>Sat, 08 Oct 2005 04:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:478447</guid><dc:creator>edjez</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/edjez/comments/478447.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edjez/commentrss.aspx?PostID=478447</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;This is the last community release before our final release - the purpose of this release is to allow you to see the changes we've been doing into the API based on your feedback, to let you start building apps on what is closer to the final drop.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;There are a couple of significant things about this release. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The foremost significant thing in my mind&lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt;&amp;nbsp;is that the whole&amp;nbsp;foundation of CAB has changed to relying on an internal component we've named&amp;nbsp;ObjectBuilder. ObjectBuilder has all the elements you need to build a typical Inversion Of Control / Dependency Injection framework, and also allows you to extend it to do more specific things than hooking objects up together. &amp;nbsp;This is a great improvement from relying on a lot of extensions to System.ComponentModel, and has drastically reduced our&amp;nbsp;code size. We haven't documented it yet as a standalone Application Block, since it's not relevant for -users- of CAB as much as people extending CAB in interesting ways. EntLib will also use ObjectBuilder internally. If you want to learn about common flavors of Inversion Of Control patterns, look at &lt;A href="http://www.martinfowler.com/articles/injection.html"&gt;Martin's classic article&lt;/A&gt; on the subject. But keep in mind that ObjectBuilder takes dependency injection as just an example of overall inversion of control.We'll have to post more about this in the future, I'm sure.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;There has also been a thorough polish of the whole application startup sequence and WorkItems. This makes it way simpler to make small, starter apps and start getting your feet wet with CAB. I sometimes felt like I was drowning when doing a one-module, one-form, one-workitem app. Not anymore.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;In addition, to the war cry of 'simplify!', we have cleaned up a lot of other areas - UI Elements (no more URIs and a simpler conceptual model) - Commands (simple model, just a normal component with adapters that bridge to different UI control intances that can fire them.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;A href="http://www.gotdotnet.com/codegallery/releases/viewuploads.aspx?id=22f72167-af95-44ce-a6ca-f2eafbf2653c"&gt;http://www.gotdotnet.com/codegallery/releases/viewuploads.aspx?id=22f72167-af95-44ce-a6ca-f2eafbf2653c&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I am feeling very good about this release. It will require&amp;nbsp;a little bit of work to migrate from our last community preview, but the overall productivity you should get out of the new one should compensate it.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=478447" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edjez/archive/tags/Smart+Client/default.aspx">Smart Client</category></item><item><title>Backwards Compatibility and Enterprise Library and all patterns &amp; practices assets -What's the deal?</title><link>http://blogs.msdn.com/edjez/archive/2005/08/05/pnpBreaksCompat.aspx</link><pubDate>Sat, 06 Aug 2005 05:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:448436</guid><dc:creator>edjez</dc:creator><slash:comments>13</slash:comments><comments>http://blogs.msdn.com/edjez/comments/448436.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edjez/commentrss.aspx?PostID=448436</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Hello. How are you? Enterprise Library for VS.NET 2005 will have API and configuration changes compared to the latest versions (January/June). So will other blocks and a lot of the rest of the guidance....and you should expect this. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;er...Is that a roar I hear approaching?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Why can't patterns &amp;amp; practices guarantee back compatibility in guidance, especially APIs of our assets? We want to! but from intent to guarantee is a long shot. That said, we do not change APIs and recommended designs without a reason. And we do try hard to make the changes affect the business logic less than&amp;nbsp;the infrastructure and customizations &amp;amp; extensions. The components with the logic of your apps are your investment, your hard-earned jewels, and we want to preseve it more than anything.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I was asking around&amp;nbsp;about this a lot during the last months - Feedback I've gotten during the field summit at TechReady and from customers coming to the building 20 lab devlabs to do early adoption of VS.NET 2005 is:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;1) We need to be better at explaining WHY we broke compatibility &lt;BR&gt;2) We need to give you early heads-up warnings on as soon as we think we'll change something - even if we don't know precisely into what yet&lt;BR&gt;3) p&amp;amp;p should help you deal with the unavoidable changes in&amp;nbsp;two main scenarios:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a)&amp;nbsp;Forward-compatibility issues when putting old binaries on new platforms, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b)&amp;nbsp;Migration guidance to move and recompile the code away from old assets to newer assets and the platform features&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;So... 1) &lt;U&gt;Why do we break compatibility&lt;/U&gt;? Of course the precise answer goes by asset, but in general:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;- &lt;STRONG&gt;We want to set you up better for the future &lt;/STRONG&gt;The patterns &amp;amp; practices deliverables provide guidance 'aligned' (in the general direction) of the MS platform. When you are on your own, you have many options in the way you can design your code today.&amp;nbsp;At the same time,&amp;nbsp;there are many teams inside MS defining what the next wave of frameworks and apis will be like. Part of our mission is to 'align' your designs in the general sense of the platform, for two reasons. First, you don't want your application design to be a dead-end architecture wise when having the option to move to a new MS product. Customers consistently tell me this would worse than an API change. Makes sense to me. Second, the feedback and input you provide on the p&amp;amp;p assets gets channeled to and reviewed by the MS product groups. By making our deliverables increasingly closer to the platform we make your input relevant to affect the long term product&amp;nbsp;so it&amp;nbsp;gets closer to your emergent&amp;nbsp;needs. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;- &lt;STRONG&gt;We need to help you make the most of the platform targeted by the guidance&lt;/STRONG&gt; . Would it make sense if patterns &amp;amp; practices assets, say, lost 10% performance so they could maintain API equality with a version built for a different platform? That doesn't smell like a good practice. It would be a short-time gain.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Would you move to the product? Of course, you would want to adopt to&amp;nbsp;the MS product that provides similar functionality to a deprecated p&amp;amp;p asset for a multitude of reasons (backwards compatibility, better polish and tool integration, loads of documentation,&amp;nbsp;long-term&amp;nbsp;support with QFE and SLAs&amp;nbsp;etc...it's the PRODUCT! not guidance on how to use a previous product...). Not to mention that you would not find a p&amp;amp;p asset competing with&amp;nbsp;a MS product &lt;EM&gt;on the same set of requirements&lt;/EM&gt;, because&amp;nbsp;we just wouldn't do it. Updater application block and ClickOnce is a great example. If you are using VS.NET 2005 you use ClickOnce, not the UAB. Of course, you may have really specific requirements on the way a client does updates that you may decide to do something different than use ClickOnce- including reuse of&amp;nbsp;chunks of the VS.NET 2003-based UAB, but I would seriously think twice about why your requirements are so special. You should also not expect an Updater bock for that matter. Of course, if we see 80% of folks tweaking / extending ClickOnce in similar ways, we'll continue the dialogue with the team who built it to determine which guidance to give around those needs. But let's get on with the &lt;EM&gt;topic du jour&lt;/EM&gt;, breaking compat:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;2) &lt;U&gt;We need to give you early heads-up warnings on AS SOON as we&amp;nbsp;THINK we'll change it&lt;/U&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;We can't eliminate the fact that thins will&amp;nbsp;change, but if we give early warning of where, and more or less how, it will change lets you make your own tradeoffs and plan your investments. You need to understand the tradeoff here -&amp;nbsp;if you want to know &lt;EM&gt;what&lt;/EM&gt; will change before we actually know &lt;EM&gt;what it changes into&lt;/EM&gt;, we're talking probabilities. Feedback I get is that you'd rather know our forecasts and that we revise them frequently than we keep them in the dark until we have&amp;nbsp;the final precise answer. How do you get early warnings? if you don't see clear roadmaps push myself,&amp;nbsp;our product managers (&lt;a href="http://blogs.msdn.com/tomholl/"&gt;Tom Hollander&lt;/A&gt;, &lt;a href="http://blogs.msdn.com/eugeniop/"&gt;Eugenio Pace&lt;/A&gt; and &lt;a href="http://blogs.msdn.com/donsmith"&gt;Don Smith&lt;/A&gt;) and anyone from our team you can get a hold of (e.g. EntLib über dev &lt;a href="http://blogs.msdn.com/scottdensmore/"&gt;Scott Densmore&lt;/A&gt;). &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT face=Verdana size=2&gt;3)&amp;nbsp;&lt;U&gt;p&amp;amp;p should help you deal with change&lt;/U&gt;: in two main cases: forward compat and migration to newer assets and platform&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a)&amp;nbsp;&lt;U&gt;Forward-compatibility issues when putting old binaries on new platforms&lt;/U&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;This happens when you put an&amp;nbsp;application,&amp;nbsp;with your own unchanged &amp;nbsp;binaries and binaries based on our code,&amp;nbsp;to run on a new platform. You should know the CLR team application comaptibility test team runs all p&amp;amp;p application blocks as Tier-1 (high impact) code, so a .NET breaking change that affects these is a 'big deal'. Of course there is no way&amp;nbsp;to predict where breaking changes will happen with 100% certainty, but the .NET team has put together a set of guidelines of things that are considered breaking change as they vary between versions, versus what is not, and we'll be part of that loop moving forward. While 0% is impossible, we can push the chances of issues happening to be quite low.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b)&amp;nbsp;&lt;U&gt;More migration guidance to move and recompile the code away from old assets to newer assets and the platform&lt;/U&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;We haven't done much of this yet but feel free to push us to do more. In my opinion this is a very dynamic body of knowledge, and something we should probably iterate on fast as the pitfalls and techniques are discovered. I would like to have this in a wiki somewhere. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Do these 3 points resonate with you?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Here is the tradeoff we need to navigate - and&amp;nbsp;your input will help inform it. We (customers, partners, product groups,&amp;nbsp;patterns &amp;amp; practices teams)&amp;nbsp;all want the areas touched by common blocks and patterns that stream out of p&amp;amp;p to be part of MS product capability ASAP.&amp;nbsp;But to be able to prove your need (i.e. prove the topics we touch are important to you), to&amp;nbsp;release these things in a faster cycle (e.g. not the year after next), to align you better with future platforms (that undergo periodic redefinements themselves), to be best practices (on what you use today), and to inform the shiny new products with your feedback (so they are smack-on with your needs when they ship), we need to change our deliverables every once in a while. Considering this,&lt;STRONG&gt; &lt;FONT color=#000000&gt;let us and&amp;nbsp;the community know how we can help you deal with this change&lt;/FONT&gt;&lt;/STRONG&gt;. &lt;A href="http://channel9.msdn.com/wiki/default.aspx/Channel9.PnPWhidbeyCompatibility"&gt;I've set up a wiki page in Channel 9&amp;nbsp;so candid thoughts can pile up&lt;/A&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Since the very beginning of the existence of our group, the p&amp;amp;p user community has helped us bring more value each year by giving relentless feedback and keeping us honest. As we deal with this platform change, please be as relentless and as much a partner in figuring out the solution as you have always been. Engage in a constructive dialogue, and we will be able to help you out in better ways.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The result will be better MS products, more focused on your needs, and smoother transitions for you between assets, as we continue to evolve this faster release vehicle to help you make the most out of&amp;nbsp;Microsoft products.&lt;/FONT&gt; &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=448436" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edjez/archive/tags/Smart+Client/default.aspx">Smart Client</category><category domain="http://blogs.msdn.com/edjez/archive/tags/Enterprise+Library/default.aspx">Enterprise Library</category><category domain="http://blogs.msdn.com/edjez/archive/tags/Separation+Of+Concerns/default.aspx">Separation Of Concerns</category></item><item><title>p&amp;p Community Process 2.0 is out!</title><link>http://blogs.msdn.com/edjez/archive/2005/07/08/pnpCPTwo.aspx</link><pubDate>Sat, 09 Jul 2005 05:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:437055</guid><dc:creator>edjez</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/edjez/comments/437055.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edjez/commentrss.aspx?PostID=437055</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;We have relased the p&amp;amp;p Community Process&amp;nbsp;to 2.0, incorporating feedback we got from customers, partners and field on the 1.0 version.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;This one includes:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;- A more realistic relationship between the internal process and externally visible process. In the 2.0 version now we open up the information about the project to the broad community as early as possible but still making sure we will actually have a project to ship :)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt;- More explanation around the options available for 'deeper' engagement - how to become an Expert Advisor and &amp;nbsp;week-at-p&amp;amp;p, for example. This was done in an ad-hoc way before&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Here's the URL. Please send us feedback if you have ideas on how we can work in&amp;nbsp; a way that suits you better, or if you think having more visibility into specific aspects of our business would be valuable for you&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://practices.gotdotnet.com/releases/checkfordownload.aspx?id=60dd1bb9-0d1e-45e0-975a-a7f398697344&amp;amp;ReleaseId=cc9f9070-7133-4729-93dd-b088bd9a2e30"&gt;&lt;FONT face=Verdana size=2&gt;http://practices.gotdotnet.com/releases/checkfordownload.aspx?id=60dd1bb9-0d1e-45e0-975a-a7f398697344&lt;/FONT&gt;&amp;amp;ReleaseId=cc9f9070-7133-4729-93dd-b088bd9a2e30&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=437055" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edjez/archive/tags/Smart+Client/default.aspx">Smart Client</category><category domain="http://blogs.msdn.com/edjez/archive/tags/Enterprise+Library/default.aspx">Enterprise Library</category><category domain="http://blogs.msdn.com/edjez/archive/tags/_2F00_etc_2F00_other/default.aspx">/etc/other</category></item><item><title>5 years of guidance groups at Microsoft! - What's your story?</title><link>http://blogs.msdn.com/edjez/archive/2005/06/30/pnpInsideOut.aspx</link><pubDate>Fri, 01 Jul 2005 08:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:434538</guid><dc:creator>edjez</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/edjez/comments/434538.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edjez/commentrss.aspx?PostID=434538</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;5 years ago Microsoft executives approved the existence of a group focused on guidance - understanding enterprise customer scenarios, creating a dedicated engineering team to producing guidance in the form of code,patterns, frameworks and guides, and consolidating the authoritative content that enterprises would use under an identity. This team, called PAG internally, eventually became &lt;EM&gt;patterns &amp;amp; practices&lt;/EM&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Some of us in the team put together some wiki pages with the motivations and approaches of our group, sprinkled with candid and colorful comments about how we got here, what it's like to be outside the normal product group hierarchy at Microsoft,and other interesting facts.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;This is not just about explaining p&amp;amp;p - It's about having a 2-way dialogue with YOU -a conversation about why we exist, and areas for growth. We put it in a wiki so you can go and tell us your perspective and your own anecdotes.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The pages include things&amp;nbsp;like: &lt;BR&gt;- why did p&amp;amp;p get created, where does it live in the MS organization, and what's it like to be there?&lt;BR&gt;- How do we explain internally and externally the difference between product stuff and p&amp;amp;p stuff?&lt;BR&gt;- What are some of the things currently going on inside of our group? What tools and methodologies do we use?&lt;BR&gt;- What are the observed trends and directions of our group?&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;A href="http://channel9.msdn.com/wiki/default.aspx/Channel9.PatternsAndPracticesInsideOut"&gt;http://channel9.msdn.com/wiki/default.aspx/Channel9.PatternsAndPracticesInsideOut&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;(We didn't have the time to make it to short but it's light reading)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I'm thrilled to work in this group and this paper is part of our commitment to be transparent and more effective at learning how to be your -our customers'- ambassador.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=434538" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edjez/archive/tags/Smart+Client/default.aspx">Smart Client</category><category domain="http://blogs.msdn.com/edjez/archive/tags/Enterprise+Library/default.aspx">Enterprise Library</category><category domain="http://blogs.msdn.com/edjez/archive/tags/Separation+Of+Concerns/default.aspx">Separation Of Concerns</category><category domain="http://blogs.msdn.com/edjez/archive/tags/_2F00_etc_2F00_other/default.aspx">/etc/other</category></item><item><title>CAB Released...almost..any...second...now</title><link>http://blogs.msdn.com/edjez/archive/2005/06/30/CAB-CTP-Released.aspx</link><pubDate>Fri, 01 Jul 2005 05:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:434510</guid><dc:creator>edjez</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/edjez/comments/434510.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edjez/commentrss.aspx?PostID=434510</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The release day is&amp;nbsp;the final battle with entropy. It's when the work of months seems to be put at risk and "die the death of a thousand paper cuts"...Xenon's paradox kicks in and every little task breaks up into some smaller tasks and it suddenly feels there is more work to do today than the rest of the year.. and there's always STUFF that happens... the version number changes...the MSI signature appliation does not work to someone's machine...links need to be reset to avoid 404s..someone needs surgery...&amp;nbsp;no matter how much planning happens, the release day is a frantic, reactive, and a&amp;nbsp;fun day no matter how much planning goes into it. My approach is&amp;nbsp;to take it with a zen attitude of Expect the Unexpected, and go with the flow &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;To the CAB team: I consider it a privilege to have been part of this team.Thanks&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;To the rest of the world - get it via the &lt;A href="http://msdn.microsoft.com/library/en-us/dnpag2/html/cabctp.asp"&gt;MSDN page here once it goes live&lt;/A&gt;. The download link is already active, detective points go to those who find it on their own.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Read my previous posts to know what this is and what it contains&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=434510" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edjez/archive/tags/Smart+Client/default.aspx">Smart Client</category></item><item><title>CAB - Code Drop 2 on its way</title><link>http://blogs.msdn.com/edjez/archive/2005/06/09/CABPreview2.aspx</link><pubDate>Fri, 10 Jun 2005 06:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:429592</guid><dc:creator>edjez</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/edjez/comments/429592.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edjez/commentrss.aspx?PostID=429592</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Hello all - &lt;BR&gt;&amp;nbsp;Its been great to see the community interest in CAB. Thanks for your support! (Join us here: &lt;A href="http://workspaces.gotdotnet.com/cab"&gt;http://workspaces.gotdotnet.com/cab&lt;/A&gt;) &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;EM&gt;We have 1000 users before our 2nd community drop!!!&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;As you know we are working hard to have an important release of CAB in July. This will be potentially the largest "pre-RTM" drop of CAB before VS 2005 releases, later on in the year. At that time we will refresh CAB to include feedback and additional features, work with Visual Studio 2005 .&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;For this release, we made a set of tradeoffs, and I wanted to share them.&lt;BR&gt;1) We wanted to give you a high-quality and stable release&amp;nbsp;early even if it meant additional incremental features would have to be added later on. We want to get your feedback on the fundamental elements of CAB and the development experience, especially as we plan the tooling for it. &lt;BR&gt;2) We are holding ourselves to production-quality code standards &amp;amp; testing and we are building the best documentation experience we can within time constraints.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;What does this mean in terms of what you'll get? &lt;BR&gt;1) There's going to slightly less scope than you might have seen in slides and webcasts. The scope we have cut however is mostly "incremental" (can be added on later) or "invisible" (should not change the public API design or basic app architecture). Specifically we had to scale back on the following:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;&lt;STRONG&gt;UIP&lt;/STRONG&gt;. This is an incremental feature we plan on releasing to the community and integrating by the RTM date. It'll also give more time to the UIP community to react and give feedback to our candidate design.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;&lt;STRONG&gt;Narrator&lt;/STRONG&gt;. We understand that large applications built with CAB can benefit from a "visualization" tool that would assist understanding the runtime relationships between components. We have a lot of APIs (but no GUI) to help you see your application. Building this is important to let you undertsand, iterate, and communicate your runtime architecture, and thus helps you reach an application design faster. &lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;&lt;STRONG&gt;UIElement&amp;nbsp;Plugins&lt;/STRONG&gt;: UI Elements are the way the Shell exposes shared UI thingies. We will include the fundamental architecture and 3 plugins for toolstrips, menu strips and status strips&lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt;. Other&amp;nbsp;useful UI elements (notification area icons &amp;amp; "balloons", splash screens, keystrokes,&amp;nbsp;based on fancy 3rd party controls or ... clippy!) can be built following the same design.&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;As a matter of fact, I'm not too bummed out at having to postpone the UIP feature.&amp;nbsp;The implication is significant. It means it's incremental. This is architecturally important and a result of our usage patterns of the container / component model "backbone" that holds CAB up internally. It means also that it doesn't affect your existing app at all (just like users of previous versions of UIP told us we really got in the way of how you built your UI layers. We solemnly promise to avoid the XML hell as well).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;We are getting the test signoff emails on the preview as I type this, so as soon as Eugenio does the hand waving to get this on GotDotNet, you can get it yourself.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=429592" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edjez/archive/tags/Smart+Client/default.aspx">Smart Client</category></item><item><title>How Community Feedback is changing the CAB</title><link>http://blogs.msdn.com/edjez/archive/2005/05/02/ExamplesOfCommunityInfluenceOnPnP.aspx</link><pubDate>Tue, 03 May 2005 03:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:414298</guid><dc:creator>edjez</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.msdn.com/edjez/comments/414298.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edjez/commentrss.aspx?PostID=414298</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I love how the CAB project is working with our community process. Not only does the transaprency give us a chance to ge great input from field, customers, partners and even folks at MS product groups; but it also is a nice forcing function to keep our house in order continoususly. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;We started CAB iteration&amp;nbsp;7 on Monday.&amp;nbsp; As we prep for our first code drop later this week, i was reminiscing about what feature areas we have changed so far based on our Expert Advisor team input, and on the customer developer team that&amp;nbsp;flew in to sit physically with us and prototype their applications while giving us continous feedback on our CAB effort.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;This list is too long to be exhaustive but here are some examples:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;Adding more attention to shell-agnsotic modules and their architectures. I had originally envisioned that modules that built to be agnostic to the shell they are targeting would be the exception rather than the norm, and the ability to do shell-agnostic code was almost a pleasant side-effect of the initial design we had of CAB. Well, thanks to customer input this is getting a bit more attention now. CAB doesn't push you one way or the other, but we are placing a more focus on the shell-agnostic scenarios than we originally planned to.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;Startup sequence: the initial architecture had the three main services CAB uses (Authentication, CatalogReader and ModuleLoader) as plug ins - now the bootstrap sequence itself is a plug-point as well after working with one customer who needed to inject work between loading the solution profile and actually loading the relevant modules. Now, if you put no config, "it just works" and of you start adding config you can just change the plugin implementations, or directly declare a type of your own to run the bootstrap (for advanced cases).&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;Renaming Contexts to WorkItems. It was hard for us to find a good name (Context? UseCase? Task? WorkArea? ApplicationController?) Thanks for all of those who chimed in. Again, context is such a powerful concept and metaphor, that the word can easily be misused/abused.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;WorkItems accessing parent and children workItems now you can do (in a WorkItem class) this.WorkItems["xyz"]&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;Event Broker: The use of URIs to identify event topics and the automatic background thread attribute&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;This is just a sample list. We are currently working on Enterprise Library for VS.NET 2005 and we'll conduct our engineering process in a much more transparent way than what we did with EntLib v1, so hopefully that will let you plan around it (and influence our engineering) more and more often.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Today Tuesday I'm in the -other- bullpen, the EntLib one. Brad and Fernando are there, and Scott will be in any minute now. Today is our iteration planning, I have to give an entlib intro talk&amp;nbsp;&amp;nbsp;(I try not to do too many talks but Ron and the devs all had to bail out last minute) and then I'm off to Seattle downtown to work with Avanade on a process by which we can have&amp;nbsp;shared engineering and planning. This process is to let redistributors of p&amp;amp;p assets understand how to partner themselves in with our own teams work, to help them extract the most value out of our effort.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=414298" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edjez/archive/tags/Smart+Client/default.aspx">Smart Client</category><category domain="http://blogs.msdn.com/edjez/archive/tags/Enterprise+Library/default.aspx">Enterprise Library</category></item><item><title>CAB -Event Broker: Pub-Sub for your components</title><link>http://blogs.msdn.com/edjez/archive/2005/04/20/CABEventBroker101.aspx</link><pubDate>Thu, 21 Apr 2005 04:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:410625</guid><dc:creator>edjez</dc:creator><slash:comments>14</slash:comments><comments>http://blogs.msdn.com/edjez/comments/410625.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edjez/commentrss.aspx?PostID=410625</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana color=#000000&gt;&lt;FONT size=2&gt;Yesterday we finished some cleanup refactorings&amp;nbsp;around the EventBroker feature of&amp;nbsp;CAB. I'm happy with the result, because it's conceptually simple,&amp;nbsp;it's easy to use, and it isn't much code, yet it helps a lot. I expect some&amp;nbsp;things to be added before release but here is pretty much the core of it as it is right now.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;STRONG&gt;The Challenge&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;A lot of the CAB features revolve around integrating components in complex,&amp;nbsp;"smart client" apps. A good pattern to integrate components and notifications is to use&amp;nbsp;&lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt;&lt;STRONG&gt;Pub-Sub&lt;/STRONG&gt; (publisher-subscriber)&amp;nbsp; mechanisms between the services. &lt;/FONT&gt;&lt;FONT face=Verdana&gt;&lt;BR&gt;&lt;BR&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;Forces&lt;BR&gt;&lt;/STRONG&gt;These are some factors influencing the design:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN&gt;&lt;FONT face=Verdana color=#000000 size=2&gt;Notifications &amp;amp; events one-way are necessary in UI design between visual and non-visual components&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT face=Verdana color=#000000 size=2&gt;Publishers &amp;amp; subscribers don’t know about each other &lt;/FONT&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT face=Verdana color=#000000 size=2&gt;You may have sources without handlers and viceversa&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=O&gt;&lt;FONT face=Verdana size=2&gt;&lt;STRONG&gt;CAB Solution&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;CAB has the following concepts around pub-sub:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;U&gt;Publishers&lt;/U&gt; are components that want to raise events, &lt;U&gt;subscribers&lt;/U&gt; are components that have methods that are called when events get fired.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Events have an &lt;U&gt;Event Topic&lt;/U&gt;. An event topic is the identifier of the event, like "event://Business/Customers/CustomerAdded". The event topic actually also holds a list of WeakReferences to the publisher and subscriber instances, to make sure the event subscription is not the reason why they won't get GC'd.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Events publishers and subscribers may fire off events within a bounded &lt;U&gt;Scope&lt;/U&gt;. The scopes CAB allows for are WorkItem-Wide (only components within the WorkItem , and the WorkItem class itself, can get the event) and Global (the default - any component or service anywhere under the Host will get it). Scopes allows you to fire events with the same topic to only interested parties. We evaluated other design options (e.g. get that scope info into the event URI) but they&amp;nbsp;complicated the usage + implemenentation a lot, so we stayed away from that.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Event Subscriptions can be made specifing it&amp;nbsp;for &lt;U&gt;Background&lt;/U&gt; so that the subscriber method will be called in a BackgroundWorker thread. This allows you to easily add multithreading into your application without having the caller have explicit knowledge of it. You would use this to access backend web services or work like that, but you wouldn't affect the UI from these other threads.&amp;nbsp;Of course, you need to undestand since this is a one-way pub-sub mechanism, it doesn't make sense to pass the BacgroundWorker to the subscriber since there's no one to flag completion or report progress to (a basic intro to BackgroundWorker &lt;a href="http://blogs.msdn.com/admin/blogs/www.thecodeproject.com/csharp/backgroundworker.asp"&gt;here&lt;/A&gt;).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Finally, event publications and subscriptions can specify a Strong-typed argument to be passed around. The effect is similar to you using the Whidbey EventHandler&amp;lt;T&amp;gt; feature.&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV class=O&gt;&lt;PRE class=O&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;//a publisher class&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;public class AppleTree&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;&lt;FONT color=#0000ff&gt;[EventPublication(“event://FallingApples”, EventScope.Global)] &lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;event EventHandler&amp;lt;int&amp;gt; ApplesFalling; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void MakeApplesFall()&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;… &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//fire the event as a normal event&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (ApplesFalling!= null) &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ApplesFalling(this,&amp;nbsp;4 ) ;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/PRE&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN&gt;&lt;B&gt;&lt;/B&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;//some subscriber class in the same or some other assembly&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;public class MySubscriber&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;SPAN&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;EventSubscription&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;(“event://FallingApples”, EventScope.Global&amp;nbsp;)] &lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void ApplesFalling(object sender, int numberOfApples&amp;nbsp;)&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (numberOfApples &amp;gt;&amp;nbsp;2 ) &lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//start picking them up&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;//another subscriber class in the same or some other assembly&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;public class OtherSubscriber&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;[EventSubscription(“event://FallingApples”,EventScope.Global, &lt;SPAN&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;isBackground=true&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;)] &lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void ThingsOnTheGround(object sender, int numberOfApples&amp;nbsp;)&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//turn on the oven to do an apple&amp;nbsp;pie&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//...this will run in a different thread than the activity &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//that fired the event&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN&gt;&lt;B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/B&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;In CAB we have an API style that lets you do everything programatically - good API design and a healthy side-effect of using TDD. The attributes are there for simplifying the dev experience - they get processed whenever an instance of the class that has them gets added to a WorkItem or the Host in CAB. More about WorkItems later.&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Verdana size=2&gt;
&lt;P class=O&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Verdana size=2&gt;&lt;STRONG&gt;Related Patterns&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=O&gt;&lt;FONT face=Verdana size=2&gt;R&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;emember my last post - patterns for integrating on the client are conceptually the same you use to integrate multiple services - So here is the pub-sub pattern described by Gregor Hohpe&amp;nbsp;&lt;/FONT&gt;&lt;A href="http://patternshare.org/default.aspx/Home.PP.PublishSubscribe"&gt;&lt;FONT size=2&gt;http://patternshare.org/default.aspx/Home.PP.PublishSubscribe&lt;/FONT&gt;&lt;/A&gt;, given disclaimers, same concepts apply. Our event broker in this case is a list-based pub-sub (it's not content-based, which would be another way of identifying events - instead of by "topic" and implying type, by type of data being exchanged only)&lt;FONT size=3&gt;. &lt;/FONT&gt;&lt;FONT size=2&gt;The &lt;A href="http://patternshare.org/default.aspx/Home.GOF.Mediator"&gt;Mediator [GoF]&lt;/A&gt; in this case is the EventTopic object, and we have a &lt;A href="http://patternshare.org/default.aspx/Home.MF.Registry"&gt;Registry&amp;nbsp;[Fowler]&lt;/A&gt;&amp;nbsp;that holds the list of these Event Topics.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Those belonging to the Expert Advisor Board for the CAB project of the will be able to see this in action in the next iteration conference call. We are currently working on our packaging of the first drop and you'll see this code if you download it from our GotDotnet workspace, once it's available.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Feedback? ideas? post here or join &lt;A href="http://www.gotdotnet.com/Workspaces/Workspace.aspx?id=22f72167-af95-44ce-a6ca-f2eafbf2653c"&gt;the new workspace at GotDotNet&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=410625" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edjez/archive/tags/Smart+Client/default.aspx">Smart Client</category></item><item><title>CAB - Composite UI Application Block Ready to Kick Off!</title><link>http://blogs.msdn.com/edjez/archive/2005/04/18/CAB1Kickoff.aspx</link><pubDate>Tue, 19 Apr 2005 04:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:409495</guid><dc:creator>edjez</dc:creator><slash:comments>36</slash:comments><comments>http://blogs.msdn.com/edjez/comments/409495.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edjez/commentrss.aspx?PostID=409495</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Great piece of news - today in the patterns &amp;amp; practices group we went through our M0 milestone for an exciting asset to assist with Smart Client development.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;We are calling it the CAB - which stands for Composite UI Application Block.&amp;nbsp;It&lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt; is not a great name, because it doesn't tell you much about it either directly or metaphorically (yes, if you have suggestions let us know). Here are other names you could give it:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;- Smart Client Portal&lt;BR&gt;- Extensible Shell&lt;BR&gt;- That-Which-Includes-The-Functionality-Of-UIP-Windows-and-More&lt;BR&gt;&lt;BR&gt;We will be publishing more about it pretty soon. Here is just a 20.000 feet AGL view.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;&lt;STRONG&gt;CAB 101&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Complex smart client applications have a growing need to be built and deployed as separate packages, packages that may contain visual and non-visual components that need to collaborate (AKA find, and communicate with) other components to perform the work. Patterns to tackle the ensuing challenges exist and the CAB helps you implement these patterns by providing infrastructure code you'll need. &lt;BR&gt;&lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt;&lt;BR&gt;The main areas the CAB helps with are:&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt;a) &lt;STRONG&gt;Apps built of "modules" or plug-ins&lt;/STRONG&gt;.&amp;nbsp;In this scenario, typically a general-purpose shell is built by a "shell development team" or the dev team with a "shell development" hat on&amp;nbsp;and business logic gets deployed as add-ins. Here you'll need common infrastructure like a catalog of plug-ins, a plug-in loader and an interface for your plug-ins with events such as ApplicationStart, BeforeApplicationClose and so on. CAB has an implementation of this that is extensible.&lt;BR&gt;&lt;BR&gt;b) &lt;STRONG&gt;Component Collaboration Patterns&lt;/STRONG&gt;: Apps may integrate many components visually and non-visually to fulfill a use case. There are many patterns that help here&amp;nbsp;like MVC, Application Controller, BlackBoard, Memento, Service Locator&amp;nbsp;and so on. CAB will have common infrastructure to help with these patterns.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;here are some teaser snippets that we are building to - these are either part of our codebase already or will be soon. These are mostly about non-visual component interaction - we'll deal with the visual part in a future post (and that'll give us the team a chance at stabilizing the designs a bit more :) )&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Verdana&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;U&gt;Example 1:&amp;nbsp;Simplify finding and connecting to events across components, even with your own eventArgs&lt;/U&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;PRE&gt;&lt;FONT size=2&gt;public class AAA &lt;BR&gt;{&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;    [EventHandler("event://MyApp/UpdatesAvailable")]&lt;BR&gt;    public void UpdatesAvailable(object o, UpdatesAvailableEventArgs)&amp;nbsp;&amp;nbsp;&lt;BR&gt;    &lt;/FONT&gt;&lt;FONT size=2&gt;{&lt;BR&gt;&lt;BR&gt;      ...&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;    }&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;PRE&gt;&lt;FONT size=2&gt;public class BBB&lt;BR&gt;{&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;    [EventSource("event://MyApp/UpdatesAvailable")]&lt;BR&gt;    public event EventHandler&amp;lt;UpdatesAvailableEventArgs&amp;gt; UpdatesAvailable;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;/PRE&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;U&gt;Example 2: Reuse of use cases encpasulated as a class for a modal interaction&lt;/U&gt;:&lt;/P&gt;&lt;/FONT&gt;&lt;PRE&gt;FindCustomerContext fcx = new FindCustomerContext();&lt;BR&gt;myId = fcx.FindCustomer("WA");&lt;/PRE&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;U&gt;Example 3: Referencing a Controller frm a View (e.g. for MVC), injection style (shown on a field for simplicity):&lt;/U&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;PRE&gt;public class SomeView&lt;BR&gt;{&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Controller]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public CustomerUpdatesController myController;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;}&lt;/PRE&gt;&lt;FONT face=Verdana&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;U&gt;Example 4: Finding infrastructure services, again injection style&lt;/U&gt;:&lt;/FONT&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT size=2&gt;public class AnyComponentYouBuild&lt;BR&gt;{&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ServiceDependency]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public IMyLogggingService logger;&lt;BR&gt;&lt;BR&gt;    &lt;BR&gt;    public void DoSomething()&lt;BR&gt;    {   &lt;BR&gt;        //use logger .... &lt;BR&gt;    }&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;}&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT face=Verdana&gt; &lt;/FONT&gt;&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;U&gt;Example 5: Adding UIP&lt;/U&gt;, or use cases with a strong "process control" need, using UIP whatever-process-style-you-like (e.g. petri nets for the fans out there). This area is not implemented yet but here is a teaser nevertheless:&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;public class MyProcessDrivenContext  : Context&lt;BR&gt;{&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Navigator("My Navgraph")]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public MyNavigator navigator;&lt;BR&gt;&lt;BR&gt;    &lt;BR&gt;    public void DoSomething()&lt;BR&gt;    {   &lt;BR&gt;        navigator.DoTransition("AddOrderItem");&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT size=2&gt;//or a strong typed flavor, since you've taken the work to build your own Navigator:&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;navigator.DoAddOrderItem()&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;    }&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;}&lt;/FONT&gt;&lt;/PRE&gt;&lt;/PRE&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;&lt;STRONG&gt;CAB Plans&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Explaining CAB Plans&amp;nbsp;is better left for eugeniop (our product manager), all I'll say for the moment is that we want to have a technical preview hopefully before august, based on VS.NET 2005 Beta 2 so you can play with it. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT face=Verdana&gt;/other/etc&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;STRONG&gt;&lt;EM&gt;A little bit of introspection on CAB...&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;There's many things I like about this project, from the team, technical and architectural perspective. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;STRONG&gt;Team&lt;/STRONG&gt;: Peter Provost is our Dev Lead, with Daniel Cazzulino, Juan Carlos Elichirigoity &amp;amp; John Luif as devs, Rohit Sharma as our test lead, RoAnn and Lin Joyner as our UX arm. Bill Loeffler is keeping us all on track as the PM and Eugenio is the product manager. The team is full of brilliant people and I've enjoyed working on it from day 1. This project has also strong legacy from David Hill and his team - he and Brenton Webster have been working with customers in this scenario&amp;nbsp;for a long time and they help us&amp;nbsp;"mine" the patterns that customers face.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;STRONG&gt;Process&lt;/STRONG&gt;: We are following our Smart Client community process. One thing we learnt is that it's good idea to have a staged approach with regards to the announcements of patterns &amp;amp; practices deliverables. So we have modified the process to first have a set of conference calls with the expert advisors only, and expand to include the world in the community by M0. This means that we have had already (3 or 4) roundtable sessions with product group, partners, field and customers to discuss CAB concepts and design. Internally we are doing a TDD, agile, everyone-in-the-same-room-as-much-as-they-can 2 week iteration approach (emphasis on as-much-as-we-can). We are switching to 1-week iterations as of today. We keep all our spec as part of the public documentation in an internal wiki, and a build-per-checkin rythm for continuous integration. So far it's worked out great.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Architecture stuff&lt;/STRONG&gt;: One of the things that strike me the most however may even be called predictable. The principles that drive&amp;nbsp;the integration patterns that exist across organizations and SOA-style services somehow get expressed in mostly similar patterns, at a smaller scale within a client application process. Computing and complexity of applications is growing and the patterns we have used to integrate large systems are making their way inside our applications. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Take some inter-system integration things for example - Communication tenets and&amp;nbsp;state ownership best practices to general patterns like event brokering, and process control, are all driven off a basic set of principles that are scale-invariant. Especially as the CPUs applications are built with become capable of more parallelism (HT, multi-core, and so on), we will have to build components that can run concurrently and share information with predictable rules - and it will demand for capabilities that go beyond the lock, mutex and sempahore style that we are used to today. Those things don't scale to share state&amp;nbsp;at the enterprise level (of course, that's not what they are for, but I'm trying to make a point) but in some time in the future they may stop being good ideas as ways of having multiple activities work with data even in the same process on a client.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=409495" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edjez/archive/tags/Smart+Client/default.aspx">Smart Client</category><category domain="http://blogs.msdn.com/edjez/archive/tags/Enterprise+Library/default.aspx">Enterprise Library</category></item><item><title>Would you like to "grade" patterns &amp; practices projects based on project execution?</title><link>http://blogs.msdn.com/edjez/archive/2005/04/01/404641.aspx</link><pubDate>Fri, 01 Apr 2005 16:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:404641</guid><dc:creator>edjez</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/edjez/comments/404641.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edjez/commentrss.aspx?PostID=404641</wfw:commentRss><description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;In the Smart Client Program we have been working in &lt;a href="http://www.gotdotnet.com/workspaces/releases/viewuploads.aspx?id=60dd1bb9-0d1e-45e0-975a-a7f398697344"&gt;a way that involves&amp;nbsp;community in building p&amp;amp;p guidance&lt;/a&gt;, especially the application blocks,&amp;nbsp;and lets expert advisors and community members influence the project execution, all the way to allowing the community to vote on our go/no-go process. We had a first try of the process with the Updater v2 block. I'd say that the CAB (Composite UI Application Block)&amp;nbsp;project that's about to go public is a showcase example of this.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;The Smart Client process is in many ways a "pilot" of the way we want to work with community. Working in this way has 3 main goals, driven by your feedback: Increase the trasnparency of our project execution and prioritization, increase the traceability of requirements to features and help adoption by making sure the scope, documentations and quickstarts have had extensive early input before shipping.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;The question I have is - if you feel that a p&amp;amp;p project has surprised you (suddenly come out and not letting you plan around that event, or building it in an opaque way and not letting you see early drops) or you would have liked to have more involvement during planning or development, send feedback around that to &lt;a href="mailto:devfdbck@microsoft.com"&gt;devfdbck@microsoft.com&lt;/a&gt; as well. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Hopefully we could get to the point where you can "rate" us on the end deliverable but also on "how" we got there&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;. Like we might get&amp;nbsp;a "7 out of 9" on the block itself, but "5 out of 9" on the way we managed the process. Until we get there, please rave and rant and suggest to that email. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Thanks!&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=404641" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edjez/archive/tags/Smart+Client/default.aspx">Smart Client</category></item><item><title>My Performance Review Document - Are these the right things to be working on?</title><link>http://blogs.msdn.com/edjez/archive/2005/03/23/401325.aspx</link><pubDate>Thu, 24 Mar 2005 04:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:401325</guid><dc:creator>edjez</dc:creator><slash:comments>16</slash:comments><comments>http://blogs.msdn.com/edjez/comments/401325.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edjez/commentrss.aspx?PostID=401325</wfw:commentRss><description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;I had a conversation with Ward today where he was asking me if it was common for folks in MS to share their goals (what you go against when you do performance appraisal) as a way of communicating to others what they are working on.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;It led me to think about a lot of things, but especially:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;1) How the performance and review process works at Microsoft. As with any measurment system that takes a zillion technical and human&amp;nbsp;factors and bangs it into a scalar value, it has a lot of issues. However, I noticed one thing: How I (and many others I admire) give a flying (d)uck about the score, especially if the perception is that there is a tradeoff&amp;nbsp;between getting a better score or doing what's right for the team and business. Regardless of the score, MS tends to be a place where doing the Right Thing tends to get rewarded one way or the other in the end. Kudos to the leadership on that. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;2) How I share my goals with anyone internally on the asking, yet haven't shared it externally. As one of the architects in the patterns &amp;amp; practices business, and the architect of the p&amp;amp;p EntLib and Smart Client Program and VB6 migration and what not, what I focus on has an impact on what you see. So, I think I owe it to you to all to share what I get measured on - &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;My Review Document&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;So, always your humble servant, here is my list of "commitments" for this year at MS.&amp;nbsp;&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;Am I focusing on the right things? Any disappointments? Anything glaringly obvious that is missing? Are our priorities right? Some things need translation from the "lingo" it seems to be written in, I'll happily clarify rather than masage it too much before posting and loosing the candor of it.&lt;/font&gt;&lt;/p&gt; &lt;p&gt; &lt;table class="MsoTableGrid" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BACKGROUND: #fdfbed; MARGIN: auto auto auto 5.4pt; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-table-layout-alt: fixed; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 2.9pt 5.75pt 2.9pt 5.75pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext" cellspacing="0" cellpadding="0" border="1"&gt; &lt;tbody&gt; &lt;tr style="HEIGHT: 12.25pt; mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 103.5pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt" valign="top" width="138"&gt; &lt;p class="UserInput" style="MARGIN: 1pt 0in"&gt;&lt;span style="COLOR: windowtext"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;Commitments&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 2.25in; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" valign="top" width="216"&gt; &lt;p class="UserInput" style="MARGIN: 1pt 0in"&gt;&lt;span style="COLOR: windowtext"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;Execution Plan &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 143.1pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" valign="top" width="191"&gt; &lt;p class="UserInput" style="MARGIN: 1pt 0in"&gt;&lt;span style="COLOR: windowtext"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;Accountabilities&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="HEIGHT: 12.25pt; mso-yfti-irow: 1"&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 103.5pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="138"&gt; &lt;p class="UserInput" style="MARGIN: 1pt 0in 0pt"&gt;&lt;span style="COLOR: windowtext"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;p&amp;amp;p Community Process&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 2.25in; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="216"&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;Initiate in Smart Client and evolve to 2.0 status&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;Define scenarios in terms of baseline architectures as composition of patterns implemented via tools and block libraries&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 143.1pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="191"&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;• Expose roadmaps for programs quarterly &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;• Proactively engage in the dialogue w the community as a key resource during the p&amp;amp;p lifecycle w other PAG resources, like feedback and priorities around scenarios, technical challenges, requirements, design options, features, and structured feedback of the asset during the phases&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;Define baseline architectures for key scenarios (Smart Client) and expose to community and luminaries.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;• Identify and promote MVPs and re-usable asset opportunities &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;• provide and review site requirements, features and roadmap&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;• define p&amp;amp;p asset/guidance lifecycle&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 6pt; FONT-FAMILY: Arial; mso-bidi-font-size: 9.0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 6pt; FONT-FAMILY: Arial; mso-bidi-font-size: 9.0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="HEIGHT: 12.25pt; mso-yfti-irow: 2"&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 103.5pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="138"&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3pt"&gt;&lt;span style="FONT-SIZE: 8pt; mso-bidi-font-family: Arial"&gt;&lt;font face="Arial"&gt;Quality Reach: Develop a compelling library of patterns &amp;amp; practices deliverables that are deeply integrated with Microsoft web, events, marketing campaigns, community and partner programs that drive a 20% improvement in awareness and usage of patterns &amp;amp; practices with the professional developer audience. &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="UserInput" style="MARGIN: 1pt 0in 0pt"&gt;&lt;span style="COLOR: windowtext"&gt;&lt;o:p&gt;&lt;font face="Arial" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 2.25in; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="216"&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3pt"&gt;&lt;span style="FONT-SIZE: 8pt; mso-bidi-font-family: Arial"&gt;&lt;font face="Arial"&gt;LOB Enablement&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&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&gt;&lt;font face="Arial"&gt;&lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:place w:st="on"&gt;&lt;st1:City w:st="on"&gt;&lt;span style="FONT-SIZE: 8pt; mso-bidi-font-family: Arial"&gt;Enterprise&lt;/span&gt;&lt;/st1:City&gt;&lt;/st1:place&gt;&lt;span style="FONT-SIZE: 8pt; mso-bidi-font-family: Arial"&gt; Library V1 and V2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3pt"&gt;&lt;span style="FONT-SIZE: 8pt; mso-bidi-font-family: Arial"&gt;&lt;font face="Arial"&gt;Integration&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&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&gt;&lt;span style="FONT-SIZE: 8pt; mso-bidi-font-family: Arial"&gt;&lt;font face="Arial"&gt;SOA Reference Implementation built on EntLib&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3pt"&gt;&lt;span style="FONT-SIZE: 8pt; mso-bidi-font-family: Arial"&gt;&lt;font face="Arial"&gt;Smart Client&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font size="2"&gt;·&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&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&gt;&lt;font face="Arial"&gt;&lt;span style="FONT-SIZE: 8pt; mso-bidi-font-family: Arial"&gt;SC Reference Implementation&lt;/span&gt;&lt;span style="mso-bidi-font-family: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 143.1pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="191"&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;* Develop architectural roadmaps for programs including relationships between projects and with other programs, updated quarterly based on PdM + community input&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;* Provide gap analysis between customer scenarios related to p&amp;amp;p programs and current/future product features.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;* Develop a technical strategy that aligns current and future products&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;* Develop roadmap of assets per program including relationships between projects and other programs&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;* Technical contribution to product group review, signoff, endorsement of deliverables incl industry / luminary reviews and endorsements&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;* Review and feedback on priorities, prototypes, technical specification (e.g. high level design), tests and development guidelines (including NFRs), test plans and end deliverables&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="HEIGHT: 12.25pt; mso-yfti-irow: 3"&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 103.5pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="138"&gt; &lt;p class="UserInput" style="MARGIN: 1pt 0in 0pt"&gt;&lt;span style="COLOR: windowtext"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;Product Group imitating p&amp;amp;p SDLC for assets&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 2.25in; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="216"&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;Prerequisite: Roll out community process&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;Assist PG in establishing their own Expert Board &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 143.1pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="191"&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;1 product group led p&amp;amp;p project&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;"Place" in p&amp;amp;p frame for such project&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="HEIGHT: 12.25pt; mso-yfti-irow: 4"&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 103.5pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="138"&gt; &lt;p class="UserInput" style="MARGIN: 1pt 0in 0pt"&gt;&lt;span style="COLOR: windowtext"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;EntLib Whidbey&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 2.25in; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="216"&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;Plan and build team around EntLib Whidbey, provide technical direction and relationships with PG&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 143.1pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="191"&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;PG signoff on EntLib-Whidbey &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;P&amp;amp;p members signoff on p&amp;amp;p Whidbey&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;Smart client initiative can build on EntLib-Whidbey&lt;br /&gt;Align EntLib w the directions of MBF and get a technology roadmap in place for PAG and MBF&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="HEIGHT: 12.25pt; mso-yfti-irow: 5"&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 103.5pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="138"&gt; &lt;p class="UserInput" style="MARGIN: 1pt 0in 0pt"&gt;&lt;span style="COLOR: windowtext"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;Patterns &amp;amp; Blocks&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 2.25in; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="216"&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;Establish &amp;amp; expose 2 way relationships between patterns and EntLib app design&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 143.1pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="191"&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;Patterns shipping in EntLib, Implementation-level patterns for EntLib.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;Expressing LOB scenarios as pattern composition&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="HEIGHT: 12.25pt; mso-yfti-irow: 6"&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 103.5pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="138"&gt; &lt;p class="UserInput" style="MARGIN: 1pt 0in 0pt"&gt;&lt;span style="COLOR: windowtext"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;IPE&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 2.25in; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="216"&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;Ship working Everett or Whidbey code generation / recipe / transformation mechanism&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 143.1pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="191"&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;CodeGen present in EntLib, Smart Client, or some other deliverable&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="HEIGHT: 12.25pt; mso-yfti-irow: 7"&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 103.5pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="138"&gt; &lt;p class="UserInput" style="MARGIN: 1pt 0in 0pt"&gt;&lt;span style="COLOR: windowtext"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;PG Feedback&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 2.25in; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="216"&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;Design shared schema for arch reviews w prioritized aggregated data&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;PdM sign-in to deliver&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 143.1pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="191"&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;2 Arch reviews by FY end + 1 exec review&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;* Contribution and review of the scenarios.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;* Participate in product group reviews&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="HEIGHT: 12.25pt; mso-yfti-irow: 8"&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 103.5pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="138"&gt; &lt;p class="UserInput" style="MARGIN: 1pt 0in 0pt"&gt;&lt;span style="COLOR: windowtext"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;R&amp;amp;D – Emergent &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 2.25in; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="216"&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;Identify PGs relevant to AOSD&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;Expose thinking from experts to relevant folks&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 143.1pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="191"&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;PG Feedback on AOSD&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;1 PG relevant member in external AOSD community&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="HEIGHT: 12.25pt; mso-yfti-irow: 9"&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 103.5pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="138"&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3pt"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;P&amp;amp;p Architecture transparency&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 2.25in; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="216"&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3pt"&gt;&lt;span style="mso-bidi-font-family: Arial"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;TBD, scoped to projects &amp;amp; programs allocated to me.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 143.1pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="191"&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3pt"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;Publish an architecture review checklist by end of Q1 for Reference apps, patterns, and blocks&lt;br /&gt;• Perform architecture reviews prior to M1 and prior to release for all pag deliverables and publish results and signoff on all pag deliverables. &lt;br /&gt;• Develop&amp;nbsp; architecture roadmap to ensure the technical integrity across pag deliverables by Q2&lt;br /&gt;• Provide vision for roadmap and product types.&lt;br /&gt;• Develop and maintain templates for design/artifact specs by product type by Q2&lt;span style="mso-bidi-font-family: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="HEIGHT: 12.25pt; mso-yfti-irow: 10; mso-yfti-lastrow: yes"&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 103.5pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="138"&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3pt"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;Library &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 2.25in; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="216"&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3pt"&gt;&lt;span style="mso-bidi-font-family: Arial"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;Inclusion of assets in library/ies w integration between and across p&amp;amp;p assets&lt;br /&gt;Adoption of the block spec – are there other specs that should be created and adopted&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.75pt; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 2.9pt; BORDER-LEFT: #ece9d8; WIDTH: 143.1pt; PADDING-TOP: 2.9pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="191"&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3pt"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;One MSIT, customer or partner asset built to asset spec&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3pt"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;Delivery of asset specification as key feedback to &lt;st1:place w:st="on"&gt;&lt;st1:City w:st="on"&gt;WhiteHorse&lt;/st1:City&gt;&lt;/st1:place&gt; / Software Factory initiative&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;font face="Verdana" size="2"&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Some things I won't be able to get to do, obviously, by the end of the fiscal year (June 30) so I'm blowing my own cover. :)&lt;/font&gt;&lt;/p&gt;&lt;/font&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Note this is a copy and paste from the core of doc I submit to my manager and to the HR system that then gets reviewed stack-ranked (yeah I know it could be more humane)&amp;nbsp;and all that stuff. Salary, bonus, etc if any gets worked out from this. If you give me feedback I'll consider it and&amp;nbsp;as appropriate put it into next year's goals.&amp;nbsp; And if you have feedback such as&amp;nbsp; "Where does it say app blocks will get simpler?!" "I don't see any consideration of using emergent patterns such as IoC" or "I'd like to see something saying you'll put all p&amp;amp;p documentation in a public wiki" just please suggest it with&amp;nbsp;a way of measuring and evaluating that the result was reached.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;I consider this an experiment.&amp;nbsp; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Thanks.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=401325" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edjez/archive/tags/Smart+Client/default.aspx">Smart Client</category><category domain="http://blogs.msdn.com/edjez/archive/tags/Enterprise+Library/default.aspx">Enterprise Library</category><category domain="http://blogs.msdn.com/edjez/archive/tags/Separation+Of+Concerns/default.aspx">Separation Of Concerns</category></item><item><title>Hook up to your GPS with .NET</title><link>http://blogs.msdn.com/edjez/archive/2005/02/20/377187.aspx</link><pubDate>Mon, 21 Feb 2005 06:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:377187</guid><dc:creator>edjez</dc:creator><slash:comments>42</slash:comments><comments>http://blogs.msdn.com/edjez/comments/377187.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edjez/commentrss.aspx?PostID=377187</wfw:commentRss><description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;Looking for the killer CAB&amp;nbsp;demo...&lt;/strong&gt;&lt;br /&gt;This week we spent a considerable amount of time working on the CAB - Composite UI Application Block ..aka Smart Client Portal. Part of the value it provides is simplifying how visual components (SmartParts&amp;nbsp;- think WebParts for windows) find, share data with, and control each other.&lt;br /&gt;One of the good things about this composable apprach is that it lets different teams with different expertise independently&amp;nbsp;build and deploy SmartParts and support services that the end user will see in his UI&amp;nbsp;. So I was thinking of a killer demo of how value can be added for incrementally&amp;nbsp;to apps, that highlighted the smart client benefits. I thought of some options - such as displaying a clock (big deal..), a regional weather report (better, but dèja vu thanks to Thunderbird..), and wasn't convinced of the options I was coming up with.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;Enter the nifty GPS gizmo...&lt;/strong&gt;&lt;br /&gt;So it happened that I was at the Microsoft Employee store and found a good deal for the &lt;a href="http://www.microsoft.com/streets/ProductDetails.aspx?pid=001"&gt;Microsoft Streets &amp;amp; Trips 2005 with GPS Locator&lt;/a&gt;. At $60 with discounts, I could get a reasonable GPS, even with WAAS compatibility (WAAS is a&amp;nbsp;GPS feature&amp;nbsp;that gives extra horizontal and vertical precision, increasingly used by airplane pilots. Without going too much into&amp;nbsp;it,&amp;nbsp;augmented GPS could eventually phase out other precision approach techniques for landing airplanes such as ILS, and it caught my eye a 5cm x 5cm x 1.5 cm GPS receiver had it). I connected it to my computer and after installing the USB Serial Port driver I had my Streets and Trips displaying my location with a car icon on a map:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;img src="http://www.gotdotnet.com/workspaces/customization/images.aspx?fileId=a4379d8f-c20c-41f8-b0cb-ec53daf24a6e&amp;amp;id=60dd1bb9-0d1e-45e0-975a-a7f398697344&amp;amp;flg=1" /&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="1"&gt;Note that my house was moving slowly (1 mph) at the time of the screenshot. I blame it on GPS inaccuracy and not giving it enough time to average out my position, but then again, the terrain is quite slanted and I could be drifitng, study laptop&amp;nbsp;and all, into the lake as I write this....&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;Doh! Cool demo idea: Physical Location &amp;amp; GPS display&lt;/strong&gt;&lt;br /&gt;OK, not everyone has a GPS and not every conference room has good GPS reception but what the heck - I decided to code a little LocationService and associated SmartParts to display stuff. If the&amp;nbsp;Streets &amp;amp; Trips team did it, so can I..Well after a little rumagging I figured out my computer was seeing my GPS (connected via a USB cable) as a serial port. If I could hook into the communication stream, I would be able to process the data and have my service tell any smart client app built with the CAB the position, speed and other GPS trivia.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;Hooking into the GPS stream:&lt;br /&gt;&lt;/strong&gt;First step was to figure out what type of communication went on between the GPS and the computer. Knowing it was a COM port, I opened HyperTerminal and hooked up to the COM port as in the old dial-up days. Not knowing the nature of the protocol and with a slight reminiscence of my telco days, hooked up and started seeing what I could do. Surprisingly (whew!) the protocol was just an incoming stream with nicely-formatted data and sentence delimiters. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;This is what it looks like. Note that with very little squinting patterns and obvious data points start appearing:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;img src="http://www.gotdotnet.com/workspaces/customization/images.aspx?fileId=3e485188-2883-45c4-b1a3-ad353cebc147&amp;amp;id=60dd1bb9-0d1e-45e0-975a-a7f398697344&amp;amp;flg=1" /&gt; &lt;br /&gt;The documentation with Streets &amp;amp; Trips about the physical GPS was very little (granted, I'm not the typical audience, but..) and had to look around before finding that the protocol was part of a standard called NMEA (duhh..it was printed on the box). A couple of google searches afterwards, I was in posession of a good document with the full protocol state machine and enough parsing info to get me started. The GPS supports NMEA 2.0 but apparently it hasn't changed much in the basics.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;The Visual GPS guys did a great job of explaining the protocol&amp;nbsp;- Thanks Monte Variakojis for the &lt;a href="http://www.visualgps.net/papers/nmeaparser/NMEA%20Parser%20Design.htm"&gt;NMEA Parser Design paper&lt;/a&gt;&amp;nbsp;&amp;amp; the permission to blink. I'll let you know when I post the code &amp;amp; good luck with your IXMLDOMDocument issues.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;Reading COM ports from .NET&lt;br /&gt;&lt;/strong&gt;The next step was hooking into the COM port stream using .NET. I knew COM ports are treated by Windows as file handles, so it was a matter of writing up some tests for&amp;nbsp;initialize, read and close functions and doing a simple helper to fullfill them (no, there won't be a SerialPortAccess App Block).&amp;nbsp;Here &lt;a href="http://www.pinvoke.net/"&gt;www.pinvoke.net&lt;/a&gt; was of invaluable help. I love Wikis, and hopefully my edits left it a little bit more complete than I found it, especially the DCB structure.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Once I had my serial helper up and running, I hooked it up to a simple window and tada! I had my GPS data streaming in and dumping to a textbox. Notice the occasional screwed up sentences. Fortunately the protocol is very robust - i.e. I can ignore bad sentences and move on to the next one.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;img src="http://www.gotdotnet.com/workspaces/customization/images.aspx?fileId=7ffd52d9-497c-4678-aec8-96046fdb9fd5&amp;amp;id=60dd1bb9-0d1e-45e0-975a-a7f398697344&amp;amp;flg=1" /&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;Parsing the NMEA&amp;nbsp;protocol&lt;br /&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;The NMEA protocol is quite simple - essentially the data streaming in is in a series of sentences clearly delimited by $GPxxx and \r\n. It has a couple of checksum characters at the end, and all the data in between is comma-delimited in the 1252 code page. My NMEA protocol parser just walks the bytes checking for full sentences and verifying the checksum - once a full sentence is found and verified it is a matter of passing the string over to a specific function that knows how to parse the sentence type. Different sentences have different information - e.g GPGGA has stuff about your location, GPGSV has information about the GPS satellites, and so on.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;After passing basic unit tests, and trying out example sentences, the code was ready to parse real data. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Here is my example window with a simple disply of the GPGGA sentences, with my latitude, longitude, altitude and zulu time:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;img src="http://www.gotdotnet.com/workspaces/customization/images.aspx?fileId=bb19431d-92a4-454b-9c97-0125006d9982&amp;amp;id=60dd1bb9-0d1e-45e0-975a-a7f398697344&amp;amp;flg=1" /&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;em&gt;&amp;lt;Digression topic="Model-Driven-testing"&amp;gt;&lt;/em&gt;&lt;br /&gt;Protocol parsers are a great place to use Model-Driven-Testing, but I lacked the tools or the intent to try it out with this excercise.&amp;nbsp;Model-driven-testing is an approach&amp;nbsp;where you use a model (e.g. a state machine representation) as a verfication tool. You could then write tests against the model, or the model itself&amp;nbsp;can then be used to generate tests. I think there may be promise in the future in this type of tools - you keep the inductive, TDD approach to development, but you use advanced tools to create better tests with better coverage of common and edge conditions.&lt;br /&gt;&lt;em&gt;&amp;lt;/Digression&amp;gt;&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;Displaying Satellite Locations&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;I set my end-goal to be able to show which GPS satellites are hovering on my head and where - fortunately this is part of the information provided by the device. With elevation (degrees from the horizon) and azimuth (bearing degrees from true north) info I could build this nifty display of the information:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;img src="http://www.gotdotnet.com/workspaces/customization/images.aspx?fileId=eb44ad1e-77f7-4ae9-9f4c-ef220990771d&amp;amp;id=60dd1bb9-0d1e-45e0-975a-a7f398697344&amp;amp;flg=1" /&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;The dots represent satellites - the closer they are to the center, the closer they are to being "right on top" of the receiver. In the picture, the satellite on the top of the outer circle was then very close to the horizon, looking northward from my study.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;Integrating it into CAB&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Next steps will be integrating this with my own CAB SmartPart as a utility SmartPart. I imagined I could have a SmartPart based on the Streets &amp;amp; Trips control that displays a location provided by a CAB event, and directions from the current latitude and longitude, courtesy of my PhysicalLocation service. But Doh! I left my VPC with my Whidbey + CAB stuff on the external disk @ the office. I guess I'll post the code to GotDotNet or something once I've cleaned it up.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;I wouldn't use this code as part of an airplane autopilot :) but if you are interested in this or the CAB just post here. Enjoy!&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;u&gt;Links &amp;amp; Resources&lt;/u&gt;&lt;br /&gt;MS GPS &amp;amp; Streets+Trips product with the GPS Locator: &lt;/font&gt;&lt;a href="http://www.microsoft.com/streets/ProductDetails.aspx?pid=001"&gt;&lt;font face="Verdana" size="2"&gt;http://www.microsoft.com/streets/ProductDetails.aspx?pid=001&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;font face="Verdana" size="2"&gt;The not-so-helpful KB article on accessing COM ports: &lt;/font&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;823179&amp;amp;Product=vb6"&gt;&lt;font face="Verdana" size="2"&gt;http://support.microsoft.com/default.aspx?scid=kb;en-us;823179&amp;amp;Product=vb6&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;font face="Verdana" size="2"&gt;Essential interop resource -&amp;nbsp;&lt;/font&gt;&lt;a href="http://www.pinvoke.net/"&gt;&lt;font face="Verdana" size="2"&gt;http://www.pinvoke.net/&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;font face="Verdana" size="2"&gt;The best NMEA 0813 description I could find: &lt;/font&gt;&lt;a href="http://www.visualgps.net/papers/nmeaparser/NMEA%20Parser%20Design.htm"&gt;&lt;font face="Verdana" size="2"&gt;http://www.visualgps.net/papers/nmeaparser/NMEA%20Parser%20Design.htm&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=377187" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edjez/archive/tags/Smart+Client/default.aspx">Smart Client</category></item><item><title>VB6 --&gt; VB.NET Guidance</title><link>http://blogs.msdn.com/edjez/archive/2005/02/08/368945.aspx</link><pubDate>Tue, 08 Feb 2005 09:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:368945</guid><dc:creator>edjez</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/edjez/comments/368945.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edjez/commentrss.aspx?PostID=368945</wfw:commentRss><description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;This is not about EntLib and not about Smart Client specifically, but&amp;nbsp;we expose some plans soon&amp;nbsp;around working on VB6&amp;nbsp;--&amp;gt; .NET guidance focused on Enterprise customers' LOB apps. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Part of the challenge with this guide will be finding and keeping to the line that exists between:&lt;/font&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;font face="Verdana" size="2"&gt;&lt;u&gt;The 6 tomes of 8000 tips &amp;amp; tricks&lt;/u&gt; (which would be ludicrous for PAG to attempt building, rather we'd work with the community to work on this in a way that is consumable by different audiences, so the expertise, the credit, and the liveliness of the data is all driven by current demand)&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Verdana" size="2"&gt;&lt;u&gt;Fluffy guidance&lt;/u&gt; - The high-level blurbage of "&lt;em&gt;VB.NET is good for you there's tools 'here' (link to some tool) and articles 'here' (link to some article)&lt;/em&gt;"&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;We want neither of these - &lt;/font&gt;&lt;font face="Verdana" size="2"&gt;In the end, good guidance will have to include:&lt;/font&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;font face="Verdana" size="2"&gt;Some &lt;/font&gt;&lt;font face="Verdana" size="2"&gt;process guidelines (deciding, planning, preparing, implementing, verifying, etc) &lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Verdana" size="2"&gt;Some app structure guidance guidance&amp;nbsp;(vertical &amp;amp; horizontal partitions, interop and migration, implementation, design &amp;amp; architecture tradeoffs, etc)&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Some of the characteristics we want to make sure 'percolate' the work is:&lt;/font&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;font face="Verdana" size="2"&gt;Explicitly tackle 'Choose your own&amp;nbsp;migration strategy' - helping you identify where you're currently at, and what is the right destination against your goals&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - maybe all you can afford, or need,&amp;nbsp;is a plain line-by-line move. On the other hand, you might want to do something about those 4000 lines of code in Button23_Click, and move them into some other class to have a better design, so this is the perfect opportunity for you. No, this is not about re-architecting for SOA, but just about eliminating sources of cost down the line (&lt;em&gt;and most importantly, letting you choose what plan makes sense for you)&lt;/em&gt;&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Verdana" size="2"&gt;Focus on app scenarios&amp;nbsp;- identify the shape of the app you start with and want to end with as a way of making the technical content more relevant (app scenarios include Windows-COM+-SQL, ASP-COM-SQL Windows-SOAP Toolkit-ASP page etc... example use-case scenarios include reporting, CRUD, transactions, office addins, you get it)&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Verdana" size="2"&gt;Highlight&amp;nbsp;learnings from the collective experience&amp;nbsp;- what are the common pitfalls, patterns, and antipatterns, in this type of effort.&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Verdana" size="2"&gt;Make the content usable - provide checklists, how-tos, etc.&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Verdana" size="2"&gt;Make the content 'extensible'&amp;nbsp; - we're still looking into how this will happen but I'd oh so much like a wiki focused around this topic to exist out there. Otherwise we'll have to look into creating one, I guess. Hint hint nudge nudge.&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Verdana" size="2"&gt;...ah other things but it's too late right now and you get the jist of it. We'll be working with many community folks on this and we'll be presenting them pretty soon.&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;A&amp;nbsp;good friend of&amp;nbsp;mine, and someone I trust for foresight and insight,&amp;nbsp;referred me to the "I've saved a nickel" Windows 2003 commercial. (If anyone has a video capture of it pls let me know) The point is, the economies of scale you could get out of just&amp;nbsp;squeezing some savings&amp;nbsp;from the VB6 app as it moves to .NET are huge. AGH, you see? That sounded like a marketing dude.&amp;nbsp;&amp;nbsp;...&amp;nbsp;Looking forward to this project.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=368945" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edjez/archive/tags/Smart+Client/default.aspx">Smart Client</category></item></channel></rss>