<?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>Wojtek's Blog</title><link>http://blogs.msdn.com/wojtek/default.aspx</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Code Generators: when can you live with them?</title><link>http://blogs.msdn.com/wojtek/archive/2007/11/18/code-generators-when-can-you-live-with-them.aspx</link><pubDate>Sun, 18 Nov 2007 22:04:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6378718</guid><dc:creator>Wojtek Kozaczynski</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/wojtek/comments/6378718.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wojtek/commentrss.aspx?PostID=6378718</wfw:commentRss><description>&lt;p&gt;Tom Hollander just posted a note &lt;a href="http://blogs.msdn.com/tomholl/archive/2007/11/17/code-generators-can-t-live-with-them-can-t-live-without-them.aspx" target="_blank"&gt;Code Generators: Can't live with them, can't live without them&lt;/a&gt;. His question is really about the ROI on developing code generators. Most of the comments, however, are about the specific case he is trying to address with generators; creation of database mapping code. &lt;/p&gt;  &lt;p&gt;Let me try to address Tom's key question: When it is worth creating a code generator as opposed to either (a) writing the code by hand or (b) trying to bake the logic (in this case db mapping) into a framework? &lt;/p&gt;  &lt;p&gt;My experience with writing code generators is that their complexity grows very fast. Simple code generators, like the ones based on T4 templates used in GAX and DSL designers, are relatively inexpensive. However they suffer from the issues Tom outlines like, how to separate the generated code and the hand-written code, or how to generate and regenerated only the code that you need?&amp;#160; &lt;/p&gt;  &lt;p&gt;As soon as you attempt to address those issue, the complexity of the generator sky rockets. Take the latest version of the &lt;a href="http://msdn2.microsoft.com/en-us/library/bb931187.aspx" target="_blank"&gt;Web Service Software Factory&lt;/a&gt; as an example. The code is selectively generated from models. You can generate code only for selected model elements, the entire model, or even connected models. However to do that, we had to create a code generation framework that extends the out-of-the-box T4 template-based code generation of the DSL toolkit. We also had to add a model validation framework to ensure that the models are consistent before we attempt to generate the code. Developing those mechanisms was a significant portion of the cost of building the factory. Our estimate, which we presented at the last &lt;a href="http://www.pnpsummit.com/west2007.aspx" target="_blank"&gt;p&amp;amp;p Summit&lt;/a&gt;, was that we spent over 50% of the effort on building the factory infrastructure, which did not include writing templates, code generation strategies, etc. &lt;/p&gt;  &lt;p&gt;As another example take the &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx" target="_blank"&gt;LINQ-to-SQL modeling tool&lt;/a&gt;. It selectively generates LINQ code, but to do that it introduces a model that sits between the database and the code generators.&lt;/p&gt;  &lt;p&gt;Bottom line, unless simple code generator addresses your needs, think very hard about the cost of building a more sophisticated generator. Almost always you end up introducing an explicit or implicit model of what you are generating or the generation mappings. However if you &lt;strong&gt;really&lt;/strong&gt; need to do that, take a look at what we have done in the Web Service Software Factory and see if you can reuse the mechanisms we developed. &lt;/p&gt;  &lt;p&gt;Wojtek &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6378718" width="1" height="1"&gt;</description></item><item><title>Inputs to Web Service Software Factory: Take 2</title><link>http://blogs.msdn.com/wojtek/archive/2007/11/18/inputs-to-web-service-software-factory-take-2.aspx</link><pubDate>Sun, 18 Nov 2007 21:24:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6377630</guid><dc:creator>Wojtek Kozaczynski</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wojtek/comments/6377630.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wojtek/commentrss.aspx?PostID=6377630</wfw:commentRss><description>&lt;p&gt;After my post &amp;quot;&lt;em&gt;Web Service Software Factory; the Modeling Edition&lt;/em&gt;&amp;quot; Jason Hogg reminded me that I missed two significant inputs: &lt;a href="http://channel9.msdn.com/wiki/default.aspx/Channel9.EDRAWiki" target="_blank"&gt;EDRA&lt;/a&gt; and &lt;a href="http://msdn2.microsoft.com/en-us/library/Aa480545.aspx" target="_blank"&gt;Web Service Security Patterns&lt;/a&gt;. I have added them to the top of the diagram below. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/wojtek/WindowsLiveWriter/InputstoWebServiceSoftwareFactoryTake2_BC5C/HistoryOfWSSF_1.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="328" alt="HistoryOfWSSF" src="http://blogs.msdn.com/blogfiles/wojtek/WindowsLiveWriter/InputstoWebServiceSoftwareFactoryTake2_BC5C/HistoryOfWSSF_thumb_1.jpg" width="625" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;EDRA, which stands for Enterprise Development Reference Architecture, goes almost four years back. This guidance has been since phased out, but it had significant influence in two areas. One, it got us thinking about code generation from architecture templates is an alternative to &amp;quot;baking&amp;quot; things into frameworks (EDRA was a framework with no generated code). That led to GAX and then BATs. Second, it taught us a lot about the desired architecture of Web Services, and those lessons were carried forward by Jason and Don into the WSSF. &lt;/p&gt;  &lt;p&gt;Web Service Security Patterns have been implemented as a separate guidance package, which moved from the Web Service Software Factory v2 to the Modeling Edition with almost no change. This show the durability of well defined patterns and their automation.&lt;/p&gt;  &lt;p&gt;Wojtek&amp;#160;&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6377630" width="1" height="1"&gt;</description></item><item><title>Application Management, Here I Come</title><link>http://blogs.msdn.com/wojtek/archive/2007/11/17/application-management-here-i-come.aspx</link><pubDate>Sun, 18 Nov 2007 07:27:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6357395</guid><dc:creator>Wojtek Kozaczynski</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wojtek/comments/6357395.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wojtek/commentrss.aspx?PostID=6357395</wfw:commentRss><description>&lt;p&gt;After almost 5 years in &lt;em&gt;patterns &amp;amp; practices, &lt;/em&gt;after participating in building EDRA, architecting GAX, working on three software factories, helping define the software factory platform, working on pattern languages, and doing other tings, I am moving on. I am not moving far, however. I will be an architect in the Dynamic Systems Foundation group, which is a part of the Microsoft Management &amp;amp; Services Division (MSD). &lt;/p&gt;  &lt;p&gt;For the foreseeable future, I tend not to plan too far ahead though, I will be working on tools for modeling managed systems and applications. In order to manage anything, and in particular a complex hardware and software systems, one needs to &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;know what the managed reality &lt;u&gt;should be&lt;/u&gt; &lt;/li&gt;    &lt;li&gt;what the managed reality actual &lt;u&gt;is&lt;/u&gt; &lt;/li&gt;    &lt;li&gt;what the &lt;u&gt;differences&lt;/u&gt; between the &lt;u&gt;is&lt;/u&gt; and the &lt;u&gt;should&lt;/u&gt; are, and &lt;/li&gt;    &lt;li&gt;how to &lt;u&gt;change&lt;/u&gt; the actual reality to meet its intended &lt;u&gt;should be&lt;/u&gt; state.&amp;#160;&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You cannot do any of the above effectively without describing (or modeling) the &amp;quot;&lt;u&gt;should be&lt;/u&gt;&amp;quot; and the rules for the &amp;quot;&lt;u&gt;change&lt;/u&gt;&amp;quot;. Problem is, that there is no one agreed upon way of doing that and hence there are not tools to effectively model managed systems and applications. This, the shared models and tools, is what I will be working on. &lt;/p&gt;  &lt;p&gt;Wojtek &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6357395" width="1" height="1"&gt;</description></item><item><title>Web Service Software Factory; the Modeling Edition</title><link>http://blogs.msdn.com/wojtek/archive/2007/11/17/web-service-software-factory-the-modeling-edition.aspx</link><pubDate>Sun, 18 Nov 2007 07:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6357027</guid><dc:creator>Wojtek Kozaczynski</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wojtek/comments/6357027.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wojtek/commentrss.aspx?PostID=6357027</wfw:commentRss><description>&lt;P&gt;Last week we (the Microsoft &lt;EM&gt;patterns &amp;amp; practices team &lt;/EM&gt;) released the Web Service Software Factory (or WSSF), the Modeling Edition (&lt;A href="http://msdn2.microsoft.com/en-us/library/bb931187.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb931187.aspx"&gt;WSSF MD&lt;/A&gt;). When I looked back I realized that this factory is a cumulative result of an interesting chain of developments. I don't know how soon &lt;EM&gt;patterns &amp;amp; practices&lt;/EM&gt; will build another factory like this one and when it does, I probably will not be participating in that work. So I thought it would be nice to recount those developments before we all forget about them. The diagram below should help. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wojtek/WindowsLiveWriter/WebServiceSoftwareFactorytheModelingEdit_12DBA/HistoryOfWSSF_1.jpg" mce_href="http://blogs.msdn.com/blogfiles/wojtek/WindowsLiveWriter/WebServiceSoftwareFactorytheModelingEdit_12DBA/HistoryOfWSSF_1.jpg"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=302 alt=HistoryOfWSSF src="http://blogs.msdn.com/blogfiles/wojtek/WindowsLiveWriter/WebServiceSoftwareFactorytheModelingEdit_12DBA/HistoryOfWSSF_thumb_1.jpg" width=624 border=0 mce_src="http://blogs.msdn.com/blogfiles/wojtek/WindowsLiveWriter/WebServiceSoftwareFactorytheModelingEdit_12DBA/HistoryOfWSSF_thumb_1.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;The story starts almost 3 years ago when David Trowbridge and his team were working on the Integration Patterns (&lt;A href="http://msdn2.microsoft.com/en-us/library/ms978729.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms978729.aspx"&gt;Integration Patterns&lt;/A&gt;) and Daniel Cazullino (&lt;A class="" href="http://www.clariusconsulting.net/kzu/" mce_href="http://www.clariusconsulting.net/kzu/"&gt;Kzu&lt;/A&gt;), Oscar Calvo (&lt;A href="http://blogs.artinsoft.net/ocalvo/" mce_href="http://blogs.artinsoft.net/ocalvo/"&gt;Oscar&lt;/A&gt;), Tom Hollander (&lt;A href="http://blogs.msdn.com/tomholl/default.aspx" mce_href="http://blogs.msdn.com/tomholl/default.aspx"&gt;Tom&lt;/A&gt;) and I were working of GAX and GET. I was arguing with David about how to best package guidance in Visual Studio. He finally got my point, looked at me and said: "So you want to build toolkits for architecture baselines." This is how the term Baseline Architecture Toolkit (or BAT for short) was born and this is the term Eugenio Pace (&lt;A href="http://blogs.msdn.com/eugeniop/" mce_href="http://blogs.msdn.com/eugeniop/"&gt;Eugenio&lt;/A&gt;) and I used when we started developing what later became the Smart Client Software Factory. We changed the name when Tom and I agreed that there were more similarities between BATs and Software Factories described by Jack Greenfield (&lt;A href="http://blogs.msdn.com/jackgr/" mce_href="http://blogs.msdn.com/jackgr/"&gt;Jack&lt;/A&gt;) than differences. We understood that there were differences, but our thinking was that it would be better to have one term, not two. &lt;/P&gt;
&lt;P&gt;At the same time Stuart Kent (&lt;A href="http://blogs.msdn.com/stuart_kent/" mce_href="http://blogs.msdn.com/stuart_kent/"&gt;Stuart&lt;/A&gt;), Steve Cook (&lt;A href="http://blogs.msdn.com/stevecook/" mce_href="http://blogs.msdn.com/stevecook/"&gt;Steve&lt;/A&gt;) and Gareth Jones (&lt;A href="http://blogs.msdn.com/garethj/" mce_href="http://blogs.msdn.com/garethj/"&gt;Gareth&lt;/A&gt;) were busy developing the Domain Specific Languages (DSL) SDK (&lt;A href="http://msdn2.microsoft.com/en-us/vstudio/aa718368.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/vstudio/aa718368.aspx"&gt;DSL Tools&lt;/A&gt;). We cooperated with them very closely because GAX and DSL SDK share the code templating engine. &lt;/P&gt;
&lt;P&gt;The Smart Client Software Factory is what we call a wizard-driven factory, that uses only GAX. It was followed by two versions of GAX-based Web Service Software Factory. This effort was led by Jason Hogg (&lt;A href="http://blogs.msdn.com/thehoggblog/" target=_blank mce_href="http://blogs.msdn.com/thehoggblog/"&gt;Jason&lt;/A&gt;) and Don Smith (&lt;A href="http://blogs.msdn.com/donsmith/" target=_blank mce_href="http://blogs.msdn.com/donsmith/"&gt;Don&lt;/A&gt;). &lt;/P&gt;
&lt;P&gt;At about the the same time two factory efforts started that used both GAX and DLSs. The first one was Mauro Regio's (&lt;A href="http://blogs.msdn.com/mauroregio/" target=_blank mce_href="http://blogs.msdn.com/mauroregio/"&gt;Mauro&lt;/A&gt;) HL7 Factory (&lt;A href="http://softwarefactories.com/workshops/OOPSLA-2005/Papers/Regio.pdf" target=_blank mce_href="http://softwarefactories.com/workshops/OOPSLA-2005/Papers/Regio.pdf"&gt;HL7 SF&lt;/A&gt;) and the second was Jezz Santos' (&lt;A href="http://blogs.msdn.com/jezzsa/" target=_blank mce_href="http://blogs.msdn.com/jezzsa/"&gt;Jezz&lt;/A&gt;) EFx Software Factory (&lt;A href="http://en.wikipedia.org/wiki/EFx_Factory" target=_blank mce_href="http://en.wikipedia.org/wiki/EFx_Factory"&gt;EFx SF&lt;/A&gt;). Since Mauro's factory uses a number of interacting DSL designers, he was the first one who was really faced with the model integration problem. Daniel Cazzulino was one of the HL7 factory developers and from what I recall, he and Victore Aprea (&lt;A href="http://www.clariusconsulting.net/blogs/vga/" target=_blank mce_href="http://www.clariusconsulting.net/blogs/vga/"&gt;vga&lt;/A&gt;) developed the first version of the Designer Integration Service, which is a Visual Studio service that can create, resolve and navigate cross-model links. Jezz, on the other hand, was the first who separated technology-independent models from technology-specific extensions. &lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;We reused his experiences when creating the Web Service factory model extension framework.&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In the meantime the second version of Web Service Software Factory was very well received, but the overwhelming community demand was to simplify its user experience by introducing models. So in February we started the development of the modeling addition, and it was finished in October. The factory uses three types of models to generate service code &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Service Contract models&lt;/LI&gt;
&lt;LI&gt;Data Contract models, and &lt;/LI&gt;
&lt;LI&gt;Hosting models. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The factory uses GAX, DSL SDK and a modified version of the DIS. It also introduces model, code generation, and validation extensions of the DSL toolkit. It is the first fully articulated, model-driven factory (automation, reference implementations, documentation, etc.) released by &lt;EM&gt;patterns &amp;amp; practices&lt;/EM&gt;. &lt;/P&gt;
&lt;P&gt;Wojtek &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6357027" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wojtek/archive/tags/Software+Factories/default.aspx">Software Factories</category></item><item><title>Patterns vs. Tooling</title><link>http://blogs.msdn.com/wojtek/archive/2007/11/13/patterns-vs-tooling.aspx</link><pubDate>Tue, 13 Nov 2007 21:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6184467</guid><dc:creator>Wojtek Kozaczynski</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wojtek/comments/6184467.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wojtek/commentrss.aspx?PostID=6184467</wfw:commentRss><description>&lt;P&gt;At the p&amp;amp;p Summit last week Jason (&lt;A href="http://blogs.msdn.com/thehoggblog/" mce_href="http://blogs.msdn.com/thehoggblog/"&gt;The Hogg Blog&lt;/A&gt;), Ade (&lt;A href="http://www.ademiller.com/blogs/tech/" mce_href="http://www.ademiller.com/blogs/tech/"&gt;#2872&lt;/A&gt;), Dragos (&lt;A href="http://blogs.msdn.com/dragoman/" mce_href="http://blogs.msdn.com/dragoman/"&gt;Dragos Manolescu's blog&lt;/A&gt;) and I staged a discussion that was designed to polarize and divide the audience along "patterns vs. tools" line. Jason describes the event (&lt;A href="http://blogs.msdn.com/thehoggblog/" mce_href="http://blogs.msdn.com/thehoggblog/"&gt;The Hogg Blog&lt;/A&gt;)and J.D. adds interesting remark in (&lt;A href="http://blogs.msdn.com/jmeier/archive/2007/11/12/patterns-vs-tooling.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/11/12/patterns-vs-tooling.aspx"&gt;Patterns vs. Tooling&lt;/A&gt;). &lt;/P&gt;
&lt;P&gt;On stage we intestinally took inflexible, all-or-nothing positions. In reality we all believe, at least I do, that tools and patterns complement each other. For example, on the following day I gave a presentation on "Patterns of Software Factories" in which I showed how the p&amp;amp;p factories (smart client, web client, web service, and repository factories) use patterns to build what they build. I have identified over 20 major patterns and showed how the factories put them together and implement them. &lt;/P&gt;
&lt;P&gt;My key point in the discussion, and the thing I believe in, is that most useful are instrumented (encoded in tools) collections of carefully selected patterns that together build parts of applications: composite clients, WCF services, data mapping layers, etc. &lt;/P&gt;
&lt;P&gt;Libraries of pattens, like Pattern Share, suffer from two major problems:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;it is difficult to map a large design problem onto a collection of patterns that if put together will address is, and&lt;/LI&gt;
&lt;LI&gt;the distance between the pattern description and its running implementation can be large. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Even the current, initial versions of factories address both of these problems; they come with pre-selected patterns and they come with tooling to commit those patterns to code. The major shortcoming of the current factories is that if the selected patterns don't exactly fit your needs, they (the factories) are difficult to change. But this is a subject of a different discussion. &lt;/P&gt;
&lt;P&gt;Bottom line, I don't believe that this is "either patterns or tools" situation. On the other hand, today I will put my money on instrumented collections of pattens that do something, over an open-ended library of patterns. &lt;/P&gt;
&lt;P&gt;Wojtek &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6184467" width="1" height="1"&gt;</description></item><item><title>I have been tegged </title><link>http://blogs.msdn.com/wojtek/archive/2007/01/17/i-have-been-tegged.aspx</link><pubDate>Thu, 18 Jan 2007 05:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1487368</guid><dc:creator>Wojtek Kozaczynski</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wojtek/comments/1487368.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wojtek/commentrss.aspx?PostID=1487368</wfw:commentRss><description>&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%"&gt;&lt;FONT size=3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;I have been “tagged” by &lt;A href="http://blogs.msdn.com/jezzsa/" mce_href="http://blogs.msdn.com/jezzsa/"&gt;Jezz Santos&lt;/A&gt;, &lt;A href="http://clariusconsulting.net/blogs/kzu/" mce_href="http://clariusconsulting.net/blogs/kzu/"&gt;Daniel Cazzulino&lt;/A&gt; and &lt;A href="http://blogs.msdn.com/jmeier/" mce_href="http://blogs.msdn.com/jmeier/"&gt;J.D. Meier&lt;/A&gt;. There aren’t that many things about me that are either interesting or worth knowing &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: Wingdings; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;J&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;. So after searching my memory banks for a while, here are a few possible candidates &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;1.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;I almost ended up being a mechanical engineer. As a teen I was fascinated with cars and motorcycles, which I was disassembling and putting beck together. I got accepted to a mechanical engineering school and spent a year trying to convince myself that I liked learning about the physical properties of different materials. Eventually I gave up, and switched to EECS. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;2.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;At about the time I was accepted to graduate school, I also got an offer to work as a professional skiing instructor in Canada. After many sleepless nights I decided to continue my education. To this day I am not positive that I made the right choice. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;3.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;However I never managed to get rid of the skiing bug. My dream is to spend a year traveling around the world skiing every patch of snow I could find (well, many be every patch of snow that I could get on the top of using some means of transportation other than climbing). &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;4.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;I love dogs; there was always at least one dog in my house.&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 class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;5.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;I programmed in assemblers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt; mso-add-space: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;I will tag &lt;A href="http://www.peterprovost.org/" mce_href="http://www.peterprovost.org/"&gt;Peter Provost&lt;/A&gt;, &lt;A href="http://blogs.msdn.com/tomholl/" mce_href="http://blogs.msdn.com/tomholl/"&gt;&lt;FONT color=#0000ff&gt;Tom Hollander&lt;/FONT&gt;&lt;/A&gt;, &lt;A class="" href="http://blogs.msdn.com/thehoggblog/" mce_href="http://blogs.msdn.com/thehoggblog/"&gt;Jason Hogg&lt;/A&gt;, &lt;A href="http://blogs.msdn.com/donsmith/" mce_href="http://blogs.msdn.com/donsmith/"&gt;Don Smith&lt;/A&gt; and &lt;A href="http://micro-workflow.com/" mce_href="http://micro-workflow.com/"&gt;Dragos Manolescu&lt;/A&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt; mso-add-space: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt; mso-add-space: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Wojtek&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1487368" width="1" height="1"&gt;</description></item><item><title>The First Three Software Factories From p&amp;p</title><link>http://blogs.msdn.com/wojtek/archive/2006/08/06/the-first-three-software-factories-from-p-p.aspx</link><pubDate>Sun, 06 Aug 2006 21:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:690319</guid><dc:creator>Wojtek Kozaczynski</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wojtek/comments/690319.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wojtek/commentrss.aspx?PostID=690319</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;FONT face=Arial size=2&gt;You may have noticed that in the span on one month the patterns&amp;amp;practices group (&lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/practices/" mce_href="http://msdn.microsoft.com/practices/"&gt;&lt;FONT face=Arial size=2&gt;p&amp;amp;p&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;) released three software factories. &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;UL style="MARGIN-TOP: 0in" type=disc&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;FONT face=Arial size=2&gt;The first out was the Smart Client Software Factory (&lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/scsflp.asp" mce_href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/scsflp.asp"&gt;&lt;FONT face=Arial size=2&gt;SCSF&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;). It is a factory for developing WinForm-based, composable client applications. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;FONT face=Arial size=2&gt;The second out of the gate was the Mobile Client Software Factory (&lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/mcsflp.asp" mce_href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/mcsflp.asp"&gt;&lt;FONT face=Arial size=2&gt;MCSF&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;) for developing applications where the client is running on mobile devices such as PDAs and smart phones. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;FONT face=Arial size=2&gt;The third was Web Service Software Factory (&lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/servicefactory.asp" mce_href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/servicefactory.asp"&gt;&lt;FONT face=Arial size=2&gt;WSSF&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;) for developing distributed applications communicating via Web services. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;FONT face=Arial size=2&gt;If you take a look at the three factories you will find that they are quire similar in the way they are structured, documented and built. But upon closer inspection you will also find that they are not strictly derived from the same software factory template (called software factory schema, see &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/jezzsa/archive/2006/05/27/608890.aspx" mce_href="http://blogs.msdn.com/jezzsa/archive/2006/05/27/608890.aspx"&gt;&lt;FONT face=Arial size=2&gt;Jezz’s&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt; blog for a summary). &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&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;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;FONT face=Arial size=2&gt;This is going to change for the better moving forward. A few of us at Microsoft have joined forces to work on a common schema and the Visual Studio factory authoring tools. The group now includes &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/jackgr/" mce_href="http://blogs.msdn.com/jackgr/"&gt;&lt;FONT face=Arial size=2&gt;Jack Greenfield&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial size=2&gt;, who started it all :-)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;FONT face=Arial&gt;, &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;A href="http://blogs.msdn.com/tomholl/" mce_href="http://blogs.msdn.com/tomholl/"&gt;&lt;FONT face=Arial&gt;Tom Hollander&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;, who had his fingers in the two out of three p&amp;amp;p factories, &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/architecture/Modeling/" mce_href="http://msdn.microsoft.com/architecture/Modeling/"&gt;&lt;FONT face=Arial&gt;Mauro Regio&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;, who led the development of the HL7 software factory , &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:PersonName w:st="on"&gt;Jezz Santos&lt;/st1:PersonName&gt; mentioned already, &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/stevecook/" mce_href="http://blogs.msdn.com/stevecook/"&gt;&lt;FONT face=Arial&gt;Steve Cook&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt; and &lt;st1:PersonName w:st="on"&gt;&lt;A href="http://blogs.msdn.com/stuart_kent/" mce_href="http://blogs.msdn.com/stuart_kent/"&gt;Stuart Kent&lt;/A&gt;&lt;/st1:PersonName&gt; who gave us the DSL tools, and your’s truly, an accomplice to many of the above crimes. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&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;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;I am hoping we will be able to share the early results of our work with the community soon. If you are interested in contributing please ping us.&amp;nbsp;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&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;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;-- &lt;EM&gt;Wojtek&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=690319" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wojtek/archive/tags/Software+Factories/default.aspx">Software Factories</category></item><item><title>New Version of GAX</title><link>http://blogs.msdn.com/wojtek/archive/2006/06/06/619445.aspx</link><pubDate>Tue, 06 Jun 2006 21:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:619445</guid><dc:creator>Wojtek Kozaczynski</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/wojtek/comments/619445.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wojtek/commentrss.aspx?PostID=619445</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial"&gt;It has been a while since I posted a message, but this occasion is hard to pass; we will be releasing a new version of GAX. &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial"&gt;Since the last release in December we have been using GAX and GAT extensively on a number of projects including the Smart Client Software Factory project (practices.gotdotnet.com/scbat) and the Web Services Software Factory &lt;SPAN style="mso-bidi-font-weight: bold"&gt;project&lt;/SPAN&gt; (practices.gotdotnet.com/svc&lt;SPAN style="mso-bidi-font-weight: bold"&gt;factory). Needless to say, we found some things that needed fixing and some opportunities for improvements. Here is the list of major fixes and improvements that are coming up&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-fareast-font-family: Arial; mso-bidi-font-weight: bold"&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: 11pt; FONT-FAMILY: Arial; mso-bidi-font-weight: bold"&gt;GAX and GAT will now work in non-English versions of Windows &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-fareast-font-family: Arial"&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: 11pt; FONT-FAMILY: Arial; mso-bidi-font-weight: bold"&gt;We have fixed the annoying bug that prevented text from appearing in wizard fields if you changed the font size on the desktop to Extra Large Fonts (this one caused me a very tense moment during a demo). &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-fareast-font-family: Arial"&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: 11pt; FONT-FAMILY: Arial; mso-bidi-font-weight: bold"&gt;We have moved the guidance package state from the .suo file to a separate file stored in the solution root folder (this one is actually interesting and may require a separate discussion). &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-fareast-font-family: Arial"&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: 11pt; FONT-FAMILY: Arial; mso-bidi-font-weight: bold"&gt;We have provided a mechanism to associate ms-help pages (or plain html pages) with wizards.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-weight: bold"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-weight: bold"&gt;A brand new feature is the Guidance Navigator. The navigator is a new VS view (by default shown as a tab in the same workspace as the Properties view) showing for each guidance package &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-fareast-font-family: Arial; mso-bidi-font-weight: bold"&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: 11pt; FONT-FAMILY: Arial; mso-bidi-font-weight: bold"&gt;applicable recipes and templates (the recipes and templates that cannot be executed are not show)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-fareast-font-family: Arial; mso-bidi-font-weight: bold"&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: 11pt; FONT-FAMILY: Arial; mso-bidi-font-weight: bold"&gt;history of the executed recipes with suggested applicable next steps &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 class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-fareast-font-family: Arial; mso-bidi-font-weight: bold"&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: 11pt; FONT-FAMILY: Arial; mso-bidi-font-weight: bold"&gt;help pages associated with each recipe.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-weight: bold"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-weight: bold"&gt;The navigator addresses a common request of the community to make the recipes and templates easier to discover and apply. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-weight: bold"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-weight: bold"&gt;So when will the new version be available? If nothing unexpected happens, it should be available to the community in the next two weeks. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-weight: bold"&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: 11pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;-- &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:PersonName w:st="on"&gt;Wojtek&lt;/st1:PersonName&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=619445" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wojtek/archive/tags/GAT/default.aspx">GAT</category></item><item><title>Recipes Are Not Wizards</title><link>http://blogs.msdn.com/wojtek/archive/2005/05/29/423038.aspx</link><pubDate>Sun, 29 May 2005 19:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:423038</guid><dc:creator>Wojtek Kozaczynski</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/wojtek/comments/423038.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wojtek/commentrss.aspx?PostID=423038</wfw:commentRss><description>&lt;P class=MsoNormal&gt;&lt;SPAN&gt;I was helping another friend design a guidance package, and I realized that he was thinking about recipes as wizards. This is not such a good idea, and may lead to misusing GAT. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Recipes are simple animals; they get information from the user and/or their environment, and execute a sequence of actions. That's it. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;You can make a recipe implement a conditional flow. To do that you have to make an earlier action in the sequence provide input to a later action (through an Output property), and program that later action to take a conditional flow depending on this input. This, however, breaks atomicity of actions and will be difficult to debug. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;The GAT wizard has been designed to simplify obtaining recipe arguments values. If you wanted conditional flow, you would most likely wanted a wizard to show or not show (gray out) fields depending on values of other fields. This can be done in the GAT wizard framework extension, but only with custom wizard pages. Even if you do that, you end up with Null arguments (the grayed out ones) and have to make actions behave differently depending on if they have or have no argument values (back to the previous point about breaking action atomicity).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Recipes use simple wizard mechanism to collect information from the user, but they are not like wizards. They are atomic, in that they perform a sequences of chainable, yet independent actions. They don't perform actions between wizard pages and have not been designed to execute actions conditionally. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;If you think you need a conditional recipe, try to break it up into different recipes, each performing one thing. Let the user decide which recipe is applicable in what situation. Also, remember that one recipe can attach (spawn) another recipe.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;-- Wojtek &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=423038" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wojtek/archive/tags/GAT/default.aspx">GAT</category></item><item><title>Nothing Shows Up Without a Reference</title><link>http://blogs.msdn.com/wojtek/archive/2005/05/17/418706.aspx</link><pubDate>Tue, 17 May 2005 16:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:418706</guid><dc:creator>Wojtek Kozaczynski</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wojtek/comments/418706.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wojtek/commentrss.aspx?PostID=418706</wfw:commentRss><description>&lt;P class=MsoNormal&gt;I was helping Eugenio write his first guidance package. He asked me to show him a few things "so he did not have to read the documentation" &lt;SPAN&gt;&lt;SPAN&gt;J&lt;/SPAN&gt;&lt;/SPAN&gt;. He created a project template by copying one of the existing ones, rebuilt the guidance package solution (which registered the package), and tried it. His template did not show up?! Why? Because he did not create a reference. I gave him a quick overview of what reference are for, which I have summarized below . &lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;GAX shows recipes and templates only if it has references for/to them (so in reality, it shows references to templates and recipes). If a recipe is defined as "bound" (an attribute of the Recipe element in the config file), you need to "attach" that recipes to a solution element before it shows up. The easiest way to attach a reference to an element is to make it a side effect of unfolding a VS template (by using the RecipeReference element in the WizardData). You can also do it the hard way, using GAX services. &lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;If you define a recipe as unbound, you have to create a reference instance yourself. This is because the instance has to implement a method that GAX calls to ask the reference if it wants to be shown on the current selection. You can also create unbound references to templates (this is what Eugenio forgot to do). &lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;We can go into details of creating references (if we need to) in other postings. Right now, however, I would like to get back to the main point I want to make; &lt;B&gt;nothing shows up unless there is a reference&lt;/B&gt;. This is by design. One of the key design goals of GAT was to enable guidance (recipes and templates) "only where it applies and only when it applies". References are the mechanism to achieve this goal. &lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;-- Wojtek &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=418706" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wojtek/archive/tags/GAT/default.aspx">GAT</category></item><item><title>A Short History of the GAT Project</title><link>http://blogs.msdn.com/wojtek/archive/2005/05/02/414129.aspx</link><pubDate>Tue, 03 May 2005 00:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:414129</guid><dc:creator>Wojtek Kozaczynski</dc:creator><slash:comments>12</slash:comments><comments>http://blogs.msdn.com/wojtek/comments/414129.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wojtek/commentrss.aspx?PostID=414129</wfw:commentRss><description>&lt;P class=MsoNormal&gt;&lt;FONT color=#000000&gt;I though you might be interested in how it happened that PAG developed a VS extensibility mechanism. So here is a short, unedited, history of the project. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT color=#000000&gt;The history starts before I joined PAG two years ago. When I came onboard Scott Densmore (yes, the EntLib Scott) was experimenting with using the VS Enterprise Templates to make the PAG code-based guidance appear in VS. It was sometimes painful to see Scott trying to put a square peg into a round hole, so to speak. The main problem was that Enterprise Templates were designed to constrain what you can do, not to help you do things in the context of what you have already done. Scott's project was called Daedalus, and it was part of what we called IPE, which stood for In Product Experience. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT color=#000000&gt;We concluded that Enterprise Templates did not have what we needed, but we were neither ready to embark on building something else or new what that would be (yet). But here came Shadowfax, and Ed Jezierski (yes, the EntLib and CAB Ed) and I realized, that the architecture of the framework would have been simpler and easier to use, have we had a VS extensibility mechanism that would allow us to manipulate VS solution artifacts at the design time. We had a few initial ides of what that mechanism would look like, and we asked Daniel Cazzulino to build a prototype. This was bit over a year ago. The prototype came out quite interesting and promising, so we decided it was time to give IPE the second chance. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT color=#000000&gt;Our initial design objectives where quite lofty (aren’t they always?), and we asked the Whitehorse team to help us investigate if we should use the MDF (Meta Data Framework). This is how Stuart Kent ended up working with us for a couple of months and greatly contributed to the articulation of the key GAT concept; the &lt;I&gt;recipe&lt;/I&gt;. It was about May last year when we prototyped enough of the design to start a development project. In PAG-speak it means that you assemble a project team and you push the project acceleration pedal all the way to the floor. The project was named IPG, which stands for In Product Guidance, and the team members were Tom Hollander (product management), Bill Loeffler (program management), Daniel Cazzulino and Oscar Calvo (development) , Ashish Babbar (testing) and your truly (architecture). The rest is, as they say, history, but this history has a few interesting twists and turns worth mentioning. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT color=#000000&gt;Once we realized that we were building a VS extensibility machines, we was time to go to VS team and "confessed". Our VS brethren didn't like a number of the details (parts of user experience in particular), but they did liked our ideas in general, so they assigned a, Stephanie Saad (VS core program management), to be our "guardian angel". Although not an important project milestone, this was to me a very important moment. It was the first real indication that we were up to something interesting. Over the course of next few months Stephanie helped us tremendously.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;In particular, when we were integrating recipes with new VS templates and we needed a few changes in VS core (aka DCRs). &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT color=#000000&gt;Another interesting twist was deciding what GAT really was. Was it a piece of guidance, was it a product, or was it something in-between? This is where the Whitehorse team helped again. Julia Liuson, the Whitehorse team Product Unit Manger, and Jack Greenfield (yes, the Software Factories Jack), offered a home fo GAT under the emerging tools initiative. This is why you can find GAT on the VS workbenches site, next to DSL SDK. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT color=#000000&gt;Coming up with the "official" name was surprisingly hard. Until late in the project we were working on what we called "Recipe Framework" and what is now called guidance packages, we called recipe clusters. When confronted with the unavoidable need to give "it" a proper name, we proposed VS-IGT, that stood for VS Integrated Guidance Toolkit. I liked the name quite a bit, but techies have little to say when it comes to selecting names of things we release to communities. The marketing folks have a lot to say, and then did not like VS-IGT. After running around a number of circles, Tom finally worked out a compromise, and GAT got its name. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT color=#000000&gt;The last interesting tidbit (one day I will ask Stuart to write his side of the story) is that about mid way through the project (it was fall by then) the DSL SDK team and us realized, that independently we crated very similar text templating engines. Daniel wrote the GAT's T3 (stands for Text Template Transformations) and Gareth Jones form the DLS team wrote their nameless engine. The two engines were remarkably similar, so we decided to merge them. The review (Beta2) version of GAT still has T3 inside, but the Whidbey version will have the shared T4 engine (Stuart added one more T to out three Ts, so unless you know this bit of the project history, the name makes little sense). &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT color=#000000&gt;Well, this is my recollection of what was worth sharing about the project. If I missed anything or anybody, my team member will certainly catch the omissions and blog about it. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;-- Wojtek&lt;/FONT&gt; &lt;/SPAN&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=414129" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wojtek/archive/tags/GAT/default.aspx">GAT</category></item><item><title>Introduction</title><link>http://blogs.msdn.com/wojtek/archive/2005/05/02/414124.aspx</link><pubDate>Tue, 03 May 2005 00:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:414124</guid><dc:creator>Wojtek Kozaczynski</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/wojtek/comments/414124.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wojtek/commentrss.aspx?PostID=414124</wfw:commentRss><description>&lt;P class=MsoNormal&gt;I am a Software Architect in the PAG (Platform Architecture Guidance) group, which is behind most of the developer and architect content posted on the Microsoft &lt;I&gt;patterns &amp;amp; practices&lt;/I&gt; site. If you ever need to say my names, here is a few helpfull phonetic substitution rules: W sounds like V, J sounds like Y, and CZ sounds like TCH. So my names should sound something like: Voy-tek Koza-tchin-ski. Enough about pronouncing Polish names. &lt;/P&gt;
&lt;P class=MsoNormal&gt;I have been with PAG for two years. I was the architect on the Shadowfax project (aka EDRA project), on the GAT project (this is the main reason why I decided that it is time to start bloging), and I am the architect on a new project called Smart Client Candidate Baseline Architectures (with time you should also see me posting about that). &lt;/P&gt;
&lt;P class=MsoNormal&gt;I don't know how this bloging thing will go, but I intend to blog only when I have something to say (which will be probably infrequently). &lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;-- Wojtek (or is it Voy-tek?)&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=414124" width="1" height="1"&gt;</description></item></channel></rss>