<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Software Architecture, Agility &amp; .NET</title><link>http://www.dotnetjunkies.com/WebLog/roydictus/default.aspx</link><description>Roy Dictus' .Net Development Corner</description><dc:language>en-US</dc:language><generator>CommunityServer 1.0 (Build: 1.0.1.50214)</generator><item><title>Object-Relational Mapping with ADO.NET vNext</title><link>http://www.dotnetjunkies.com/WebLog/roydictus/archive/2006/08/17/143914.aspx</link><pubDate>Thu, 17 Aug 2006 07:07:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:143914</guid><dc:creator>roydictus</dc:creator><slash:comments>0</slash:comments><comments>http://www.dotnetjunkies.com/WebLog/roydictus/comments/143914.aspx</comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/roydictus/commentrss.aspx?PostID=143914</wfw:commentRss><description>&lt;P&gt;Microsoft has just released the &lt;A href="http://www.microsoft.com/downloads/thankyou.aspx?familyId=b68f6f53-ec87-4122-b1c8-ee24a043bf72&amp;amp;displayLang=en&amp;amp;oRef="&gt;August 2006 CTP&lt;/A&gt; (Community Technology Preview) version of the next version of ADO.NET. The most important new feature of ADO.NET vNext is/will be an Entity Framework which supports &lt;A href="http://www.service-architecture.com/object-relational-mapping/"&gt;Object-Relational Mapping&lt;/A&gt; straight from ADO.NET. Does this mean &lt;A href="http://www.15seconds.com/issue/031223.htm"&gt;typed DataSets&lt;/A&gt; will be a thing of the past soon? It's too early to tell, but they are surely going to be used far less in the architectures of 2007 and later...&lt;/P&gt;
&lt;P&gt;What's also cool about it is that this Entity Framework integrates with &lt;A href="http://msdn.microsoft.com/data/linq/"&gt;LINQ&lt;/A&gt;, so you can run LINQ queries on Entity collections etc. Whenever you make a modification to an Entity object, it is marked "dirty" so that when changes to lists, collections and graphs are saved, only the dirty ones are actually saved, and then their status is restored to "clean" again. It's great to have that as part of the Framework -- I've been doing stuff like this using &lt;A href="http://www.jetbrains.com/resharper/features/liveTemplates.html"&gt;ReSharper templates&lt;/A&gt; and &lt;A href="http://msdn.microsoft.com/vstudio/downloads/codesnippets/"&gt;Visual Studio 2005 snippets&lt;/A&gt;, and now it's becoming standard behavior without requiring any custom coding. You can even split Entity objects over multiple tables -- so that certain properties of your entity are saved in one table and other properties in another table. It's reminiscent of &lt;A href="http://www.microsoft.com/commerceserver/"&gt;Commerce Server&lt;/A&gt;'s data aggregator.&lt;/P&gt;
&lt;P&gt;Get it while it's hot!&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=143914" width="1" height="1"&gt;</description></item><item><title>Notes on Team Foundation Server RTM</title><link>http://www.dotnetjunkies.com/WebLog/roydictus/archive/2006/03/28/136410.aspx</link><pubDate>Tue, 28 Mar 2006 08:00:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:136410</guid><dc:creator>roydictus</dc:creator><slash:comments>0</slash:comments><comments>http://www.dotnetjunkies.com/WebLog/roydictus/comments/136410.aspx</comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/roydictus/commentrss.aspx?PostID=136410</wfw:commentRss><description>&lt;P&gt;Now that Team Foundation Server is finally out, it's time to upgrade Beta/RC installations to this new version. Many teams who have been waiting for TFS and who didn't want to use the Beta versions can now rest assured the final version is among us -- you can download it from MSDN Subscriptions. There's a 5-person trial version available for free.&lt;/P&gt;
&lt;P&gt;For TFS to be installed successfully on a server, you'll need:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Windows Server 2003 (R2 is better)&lt;/LI&gt;
&lt;LI&gt;Windows SharePoint Services v2 (downloadable for free&amp;nbsp;if you're not running Windows 2003 R2)&lt;/LI&gt;
&lt;LI&gt;SQL Server (full installation including Analysis &amp;amp; Reporting Services)&lt;/LI&gt;
&lt;LI&gt;A couple of .NET and&amp;nbsp;SQL Server fixes (delivered with the installer)&lt;/LI&gt;
&lt;LI&gt;Active Directory (optional, if you're going for a multiserver, TFS-specific environment)&lt;/LI&gt;
&lt;LI&gt;The TFS installer (obviously).&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Of course, to use TFS, you'll need Visual Studio 2005 Team Edition on the client, or at least Team Explorer, which comes as part of the TFS installation.&lt;/P&gt;
&lt;P&gt;What's interesting abou the installer is that it verifies for you (since B3 Refresh), before installing, if your server is TFS-ready. This means checking CPU, disk and memory requirements as well as installed software and running services. The installer will simply refuse to continue when there are conditions that &lt;EM&gt;will&lt;/EM&gt; cause Setup to fail -- such as the SQL Server Browser service not running. This is an impressive and useful feature that I hope will make its way into many more installers from now on!&lt;/P&gt;
&lt;P&gt;Installing TFS, in other words, is a smooth if not time-consuming procedure. You need to make sure that you have all the necessary software, and that you stick to the procedure outlined in the installation manual. For instance, when installing Windows SharePoint Services, you have to configure it for server farm use, not single server, even if TFS will be running on a single machine. That's just what the TFS installation expects. It will auto-configure all other WSS properties for you, but that one you have to set yourself. So, after all else has failed, read the installation manual...&lt;/P&gt;
&lt;P&gt;I love Team System. My team has been using it since December now, and I haven't seen anything on the market yet that can beat it. Source code control is as smooth and fast as it is with SourceGear Vault. Unit testing is super-integrated, including the generation of unit test stubs and code coverage. There's bug tracking, iteration tracking, you name it. If you don't want to use&amp;nbsp; Team System's built-in support for CMMI or MSF Agile, then you can extend it to implement your own methodology. Excellent stuff and I'm sure we'll see many commercially avalable, or freeware, extensions on the market in the years to come.&lt;/P&gt;
&lt;P&gt;I understand that many companies or teams are not sure yet about switching to Visual Studio 2005 or Team System, because of training time and liense costs. But this system is so smooth to operate and so useful, that it pays back for itself very quickly. Just think of your team's higher productivity, less time wasted on meetings etc.&lt;/P&gt;
&lt;P&gt;Team System&amp;nbsp;rocks!!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=136410" width="1" height="1"&gt;</description></item><item><title>The Assert.AreEqual() Mystery</title><link>http://www.dotnetjunkies.com/WebLog/roydictus/archive/2006/02/09/135150.aspx</link><pubDate>Thu, 09 Feb 2006 09:48:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:135150</guid><dc:creator>roydictus</dc:creator><slash:comments>0</slash:comments><comments>http://www.dotnetjunkies.com/WebLog/roydictus/comments/135150.aspx</comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/roydictus/commentrss.aspx?PostID=135150</wfw:commentRss><description>&lt;P&gt;More strange and unexpected behavior from Visual Studio Team System (VSTS)... This time I'm experiencing a problem with unit testing. I have a solution although it seems more like a workaround to me, and I haven't been able to find out the exact&amp;nbsp;root of the problem. Here's the story.&lt;/P&gt;
&lt;P&gt;I have a custom class, let's call it &lt;FONT face="Courier New"&gt;Customer&lt;/FONT&gt; (name changed to protect the class' privacy). This class is derived from another custom generic container class. I've implemented &lt;FONT&gt;&lt;FONT face="Courier New"&gt;Equals&lt;/FONT&gt;, &lt;FONT face="Courier New"&gt;GetHashCode&lt;/FONT&gt;,&lt;/FONT&gt; and the &lt;FONT face="Courier New"&gt;==&lt;/FONT&gt; and &lt;FONT face="Courier New"&gt;!=&lt;/FONT&gt; operators on it. These are necessary because of the class' heritage: it has to make sure that, when comparing two instances, these two instances have identical elements in their collections. So far, so good.&lt;/P&gt;
&lt;P&gt;However, a unit test which creates two identical &lt;FONT face="Courier New"&gt;Customer&lt;/FONT&gt;s and then compares them, fails on the following line:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Assert.AreEqual(a, b, "Equality");&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;(the string being a message to display in case the test fails.)&lt;/P&gt;
&lt;P&gt;Close on-location examination of the facts revealed the startling truth that &lt;FONT face="Courier New"&gt;a&lt;/FONT&gt; and &lt;FONT face="Courier New"&gt;b&lt;/FONT&gt; were, in fact identical... But surely something must have gone wrong. After more examination, detective work, interrogations etc. I decided to try something else:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Assert.IsTrue(a ==&amp;nbsp;b, "Equality");&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Miraculously, this worked. Did this prove that&amp;nbsp;the objects&amp;nbsp;were indeed equal? I added some more tests to make sure.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Assert.IsTrue(b ==&amp;nbsp;a, "Equality 2");&lt;BR&gt;&lt;FONT face="Courier New"&gt;Assert.IsTrue(a.Equals(b), "Equality 3");&lt;BR&gt;Assert.IsTrue(b.Equals(a), "Equality 4");&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;And yes, these tests passed too. &lt;EM&gt;So why not &lt;FONT face="Courier New"&gt;Assert.AreEqual()&lt;/FONT&gt;??&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;My mole at Microsoft was stumped. He asked if I had done an inside examination of &lt;FONT face="Courier New"&gt;Assert.AreEqual()&lt;/FONT&gt; with Reflector. Turns out I hadn't, so I cranked it up.&lt;/P&gt;
&lt;P&gt;That revealed that &lt;FONT face="Courier New"&gt;Assert.AreEqual()&lt;/FONT&gt; depends on &lt;FONT face="Courier New"&gt;object.Equals()&lt;/FONT&gt; to determine equality. But then examination of &lt;FONT face="Courier New"&gt;object.Equals()&lt;/FONT&gt; showed that it first tries to use the &lt;FONT face="Courier New"&gt;==&lt;/FONT&gt; operator, and if that fails, it tries to use the object's &lt;FONT face="Courier New"&gt;Equals&lt;/FONT&gt; implementation.&lt;/P&gt;
&lt;P&gt;This would seem to suggest that &lt;FONT face="Courier New"&gt;Assert.AreEqual()&lt;/FONT&gt; is off the hook and that the problem should actually never appear. But it also suggests that &lt;FONT face="Courier New"&gt;object.Equals()&lt;/FONT&gt; doesn't always use the objects' own == or &lt;FONT face="Courier New"&gt;Equals&lt;/FONT&gt; implementation. How else can we explain why the other tests, as shown above, all work while the &lt;FONT face="Courier New"&gt;AreEqual&lt;/FONT&gt; test fails? This is corroborated by the fact that code coverage testing in Visual Studio shows that the object's own &lt;FONT face="Courier New"&gt;Equals&lt;/FONT&gt; and &lt;FONT face="Courier New"&gt;==&lt;/FONT&gt; implementations are &lt;EM&gt;not&lt;/EM&gt; executed by &lt;FONT face="Courier New"&gt;AreEqual&lt;/FONT&gt;.&lt;/P&gt;
&lt;P&gt;My workaround solution is simple: to not use &lt;FONT face="Courier New"&gt;Assert.AreEqual&lt;/FONT&gt; whenever it poses a problem. After all, the code that is being tested is always going to be used with the &lt;FONT face="Courier New"&gt;Equals&lt;/FONT&gt; and the &lt;FONT face="Courier New"&gt;==&lt;/FONT&gt; and &lt;FONT face="Courier New"&gt;!=&lt;/FONT&gt; operators, so replacing &lt;FONT face="Courier New"&gt;AreEqual()&lt;/FONT&gt; with &lt;FONT face="Courier New"&gt;IsTrue(==)&lt;/FONT&gt; etc. seems like a natural thing to do. But I do like the syntactic sugar of &lt;FONT face="Courier New"&gt;AreEqual&lt;/FONT&gt;, and it bugs me that I don't understand why this is a problem.&lt;/P&gt;
&lt;P&gt;Do you know what's going on? Hey, guys in the VSTS team (Jonathan! James!), what's the story here?&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=135150" width="1" height="1"&gt;</description></item><item><title>Visual Studio 2005 Code Coverage doesn't handle C# switch very well</title><link>http://www.dotnetjunkies.com/WebLog/roydictus/archive/2006/02/06/135079.aspx</link><pubDate>Mon, 06 Feb 2006 15:50:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:135079</guid><dc:creator>roydictus</dc:creator><slash:comments>1</slash:comments><comments>http://www.dotnetjunkies.com/WebLog/roydictus/comments/135079.aspx</comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/roydictus/commentrss.aspx?PostID=135079</wfw:commentRss><description>&lt;P&gt;&lt;FONT&gt;It's surprising to me that, so far, I haven't been able to find any blog entry or article anywhere about why the Visual Studio 2005 Code Coverage tool doesn't handle C#'s &lt;FONT face="Courier New"&gt;switch&lt;/FONT&gt; statement properly.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;I use &lt;FONT face="Courier New"&gt;switch&lt;/FONT&gt; a lot, because it's so much easier to read than lots of &lt;FONT face="Courier New"&gt;if/else if&lt;/FONT&gt;s, but the fact is any function in my code that contains switch gets marked, after complete and utter unit-testing, as not having been covered 100% -- there's always &lt;EM&gt;one&lt;/EM&gt; block counted as being untested. Yet every line of code in that function is marked nicely in light blue, indicating that it was run. The unit test code makes sure that all cases are covered...&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Then when I rewrite the code to use &lt;FONT face="Courier New"&gt;if/else if/...&lt;/FONT&gt; instead of &lt;FONT face="Courier New"&gt;switch&lt;/FONT&gt;, coverage is 100%.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Duh! I want to keep using &lt;FONT face="Courier New"&gt;switch&lt;/FONT&gt;!&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=135079" width="1" height="1"&gt;</description></item><item><title>Big-ass, kick-ass TV</title><link>http://www.dotnetjunkies.com/WebLog/roydictus/archive/2005/12/07/134167.aspx</link><pubDate>Wed, 07 Dec 2005 05:00:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:134167</guid><dc:creator>roydictus</dc:creator><slash:comments>0</slash:comments><comments>http://www.dotnetjunkies.com/WebLog/roydictus/comments/134167.aspx</comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/roydictus/commentrss.aspx?PostID=134167</wfw:commentRss><description>&lt;P&gt;&lt;FONT&gt;I bought a &lt;/FONT&gt;&lt;A href="http://www.samsung.com/Products/TV/PlasmaTV/HPR4262XXAA.asp"&gt;&lt;FONT&gt;big-ass (42"), kick-ass TV&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt; recently, a Samsung. If you're looking for a great plasma panel TV, you can't go wrong with the Samsung line. They feature a 1024 x 896-pixel resolution (great for HDTV and use as a computer monitor), dynamic image enhancement with noise reduction and color adaptation to your taste, simulated surround sound, picture-in-picture, burn-in protection,&amp;nbsp;and much more. The image quality is just amazing! Wonderful, rich colors, sharp image, just great. Far better than any LCD TV I have seen so far, and with a 60,000 hour life, you can watch TV for six hours a day for 27 years before the screen finally gives up.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;To top it off, I also purchased a kick-ass multimedia PC (which I haven't installed yet, unfortunately) to turn the TV into a full-scale digital entertainment system, and a &lt;/FONT&gt;&lt;A href="http://www.kelkoo.nl/b/a/sbs/126701/15377308.html"&gt;&lt;FONT&gt;Philips home cinema&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt;&amp;nbsp;to get to that full cinematic experience. This setup, in combination with Star Wars III, makes the whole house tremble!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;And the really amazing thing is, this whole lineup of kick-ass entertainment technology is available at roughly 2/3 the price of a year ago: just € 1800 for the TV, € 1000 for the PC (dual-core Pentium and full multimedia capabilities including a dual TV tuner,&amp;nbsp;hard disk recorder with delayed viewing, a dual-layer DVD burner and a second&amp;nbsp;DVD-ROM drive, yeah!) and € 300 for the home cinema. It's cheaper than a Team Foundation Server license ;-)&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=134167" width="1" height="1"&gt;</description></item><item><title>4th Belgian Geek Dinner on Thursday, featuring Robert Scoble</title><link>http://www.dotnetjunkies.com/WebLog/roydictus/archive/2005/12/06/134161.aspx</link><pubDate>Tue, 06 Dec 2005 11:34:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:134161</guid><dc:creator>roydictus</dc:creator><slash:comments>0</slash:comments><comments>http://www.dotnetjunkies.com/WebLog/roydictus/comments/134161.aspx</comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/roydictus/commentrss.aspx?PostID=134161</wfw:commentRss><description>&lt;P&gt;&lt;a href="http://dotnetjunkies.com/WebLog/davidb/"&gt;&lt;FONT&gt;David Boschmans&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt; of Microsoft fame is organizing the &lt;/FONT&gt;&lt;a href="http://dotnetjunkies.com/WebLog/davidb/archive/2005/11/22/133933.aspx"&gt;&lt;FONT&gt;fourth Belgian Geek Dinner&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt; at the &lt;/FONT&gt;&lt;A href="http://www.serenata.be/"&gt;&lt;FONT&gt;Serenata&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt; in Zaventem, near Brussels. The previous geek dinners were really great so expect more of the same: great (although mostly geeky) conversation, colleague architects and developers from all over the country, great food and an informal setting. You shouldn't carry any weapons but lightsabers are allowed.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;This edition even has two special guests: none other than &lt;/FONT&gt;&lt;A href="http://scobleizer.wordpress.com/"&gt;&lt;FONT&gt;Robert Scoble&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt; and his wife &lt;/FONT&gt;&lt;A href="http://spaces.msn.com/members/maryamie/"&gt;&lt;FONT&gt;Maryam&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt;. Robert is a well-known blogger about all things Microsoft (and related) and is a Technical Evangelist at the Redmond campus.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;See you there on Thursday, 8 December 2005 at 6:30 PM!&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=134161" width="1" height="1"&gt;</description></item><item><title>Visual Studio Team System User Group</title><link>http://www.dotnetjunkies.com/WebLog/roydictus/archive/2005/11/28/134024.aspx</link><pubDate>Mon, 28 Nov 2005 07:40:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:134024</guid><dc:creator>roydictus</dc:creator><slash:comments>0</slash:comments><comments>http://www.dotnetjunkies.com/WebLog/roydictus/comments/134024.aspx</comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/roydictus/commentrss.aspx?PostID=134024</wfw:commentRss><description>&lt;P&gt;&lt;FONT&gt;In his blog, &lt;/FONT&gt;&lt;A href="http://blog.u2u.info/DottextWeb/peter"&gt;&lt;FONT&gt;Peter Himschoot&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt; suggests the creation of a Belgian User Group (BUG, for short :-)) centered around Team System. I think this is a great idea and I'll certainly join and do my part. If you'd like to join too, send an email to &lt;/FONT&gt;&lt;A href="mailto:peter@u2u.net"&gt;&lt;FONT&gt;peter@u2u.net&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt; and let him know!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;In the meantime, I've been "playing" with &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/vstudio/teamsystem/tfsknownissues.aspx"&gt;&lt;FONT&gt;Team Foundation Server Beta 3&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt; and I really love it. My methodology of choice is &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/vstudio/teamsystem/msf/msfagile/default.aspx"&gt;&lt;FONT&gt;MSF for Agile Software Development&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt;, which is very very close to the pragmatic mix and selection of best practices from other agile methodologies (MSF, XP, Scrum) that I once concocted under the name "Smart Development". Team System is great for every team that wants to keep its eye on project progress and deliver a quality product.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;In short, Team Foundation Server is the back-end part of Team System that supports collaboration, project "planning" (work item tracking), bug tracking, daily build processes etc. You can develop software using Visual Studio without using Team Foundation Server, of course. But I really recommend using the tool, even if it's still just a beta, because it's so incredibly valuable. It integrates agile development processes right into the IDE,&amp;nbsp;as they should be. For instance, the tool generates a team website for you, where you can post announcements, downloadable tools, conventions documents etc., and where build and unit test results are automatically&amp;nbsp;posted. You can also keep track of the number of work items that still need to be done, the amount of work already done in the current iteration, etc. The source code control system is really powerful, and checkin policies make it possible, for instance, to disallow checking in code that doesn't build. How great is that??&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Incidentally, if you have an MSDN Subscription, then you can download a great virtual PC (VPC) image with Team Foundation Server Beta 3 and the RC version of Team System on it, complete with a sample project (AdventureWorks, of course).&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=134024" width="1" height="1"&gt;</description></item><item><title>Visual Studio 2005 launch and thoughts about the future</title><link>http://www.dotnetjunkies.com/WebLog/roydictus/archive/2005/11/14/133727.aspx</link><pubDate>Mon, 14 Nov 2005 09:01:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:133727</guid><dc:creator>roydictus</dc:creator><slash:comments>0</slash:comments><comments>http://www.dotnetjunkies.com/WebLog/roydictus/comments/133727.aspx</comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/roydictus/commentrss.aspx?PostID=133727</wfw:commentRss><description>&lt;P&gt;&lt;FONT&gt;Last week, Microsoft officially launched Visual Studio 2005, SQL Server 2005 and BizTalk Server 2006 (although the latter isn't really out yet -- they are launched together because, once BTS 2006 will be ready, the three systems form a very compelling and well-integrated platform together). I was at the launch event in my native Belgium on Thursday, in the honored presence of none other than &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/somasegar/"&gt;&lt;FONT&gt;S. "Soma" Somasegar&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt;, Vice President of Microsoft and responsible for the Development Division ("Dev Div"), and some of his &lt;A href="https://blogs.msdn.com/release_team/default.aspx"&gt;"crew"&lt;/A&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Most of us have already worked, or played, with the beta and CTP bits of Visual Studio 2005 and SQL Server 2005, so we already know what great environments these are. Now that the RTM bits are out, I'm sure more companies will feel at ease to ship their .NET 2.0-based products or to start development. So if you're reading this and you're still doubting whether or not to switch to .NET 2.0/SQL Server 2005&amp;nbsp;already: go ahead and make the jump now! You'll love it. If you're not sure, try it out first -- either by downloading the free &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/vstudio/express/visualCsharp/default.aspx"&gt;&lt;FONT&gt;Visual C# Express&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt;, &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/vstudio/express/vb/"&gt;&lt;FONT&gt;Visual Basic.NET Express&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt;, &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/vstudio/express/vwd/"&gt;&lt;FONT&gt;Visual Web Developer Express&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt;, &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/vstudio/express/visualc/"&gt;&lt;FONT&gt;Visual C++ Express&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt;, &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/vstudio/express/visualJ/"&gt;&lt;FONT&gt;Visual J# Express&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt;&amp;nbsp;or &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/vstudio/express/sql/"&gt;&lt;FONT&gt;SQL Server 2005 Express&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt; right now or by visiting the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/vstudio/tryit/hosted/"&gt;&lt;FONT&gt;Visual Studio 2005 Hosted Experience&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt;, which is a web-based tool for remotely trying out Visual Studio 2005 without any cost, downloading or installation effort on your part. There's no excuse for staying away now!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Of course, the Visual Studio 2005 team is already looking at the future. Until March, they'll be spending time in support mode and will be performing internal reviews so as to improve their development processes even further for the &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/dcoe/archive/2005/11/11/491888.aspx"&gt;&lt;FONT&gt;next version&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt;, code-named "Orcas". Soma and his team were kind enough to talk to a number of influential architects and consultants during the launch event in Belgium, and stated that Orcas will definitely contain more testing and architecture tools. For instance, the team is currently evaluating what they can include to automate testing of user interfaces. Other areas of focus are improvement of the ease of developing multitier applications, further &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/vcsharp/future/"&gt;&lt;FONT&gt;extending the languages&lt;/FONT&gt;&lt;/A&gt;&lt;FONT&gt;, etc. As Soma and his team are also looking into shortening the release cycle. This may mean that Orcas will become Visual Studio 2007 some day... Looking forward to it already? You bet!&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=133727" width="1" height="1"&gt;</description></item><item><title>The Architecture Journal #5 is out</title><link>http://www.dotnetjunkies.com/WebLog/roydictus/archive/2005/07/25/131465.aspx</link><pubDate>Mon, 25 Jul 2005 09:30:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:131465</guid><dc:creator>roydictus</dc:creator><slash:comments>0</slash:comments><comments>http://www.dotnetjunkies.com/WebLog/roydictus/comments/131465.aspx</comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/roydictus/commentrss.aspx?PostID=131465</wfw:commentRss><description>&lt;P&gt;Microsoft has just published &lt;A href="http://www.microsoft.com/architecture/default.aspx?pid=journal.5&amp;amp;abver=E9A00024-3DC1-4B6A-BC20-22716E4D2FEA"&gt;issue #5 of &lt;EM&gt;The Architecture Journal&lt;/EM&gt;&lt;/A&gt;. This excellent publication for .NET Architects features the following articles:&lt;/P&gt;
&lt;LI&gt;&lt;A&gt;&lt;STRONG&gt;Metropolis and SOA Governance&lt;/STRONG&gt;&lt;/A&gt; (part 1), about the need for SOA services to be both generalistic and specialized 
&lt;LI&gt;&lt;A&gt;&lt;STRONG&gt;An Introduction to Topic Maps&lt;/STRONG&gt;&lt;/A&gt; about an ISO XML standard for mapping real-world resources to abstract concepts 
&lt;LI&gt;&lt;A&gt;&lt;STRONG&gt;Value-Driven Architecture: Linking Product Strategy with Architecture&lt;/STRONG&gt;&lt;/A&gt; about how value models, as opposed to business requirements, influence application architecture 
&lt;LI&gt;&lt;A&gt;&lt;STRONG&gt;Process and Criteria for Evaluating Services-Based Integration Technologies&lt;/STRONG&gt;&lt;/A&gt; about the evaluation of technologies for integrating service-oriented systems 
&lt;LI&gt;&lt;A&gt;&lt;STRONG&gt;Service-Oriented, Distributed, High-Performance Computing&lt;/STRONG&gt;&lt;/A&gt; about a clustering/grid strategy for building HPC systems over the Internet 
&lt;LI&gt;&lt;A&gt;&lt;STRONG&gt;Planes, Trains and Automobiles: Choosing Alternate Transports for Web Services&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;about using message queues or an HTTP/SMTP combination for SOA instead of straight HTTP. 
&lt;P&gt;Every article is about 15 printed pages.&lt;/P&gt;&lt;/LI&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=131465" width="1" height="1"&gt;</description></item><item><title>The Gates Code</title><link>http://www.dotnetjunkies.com/WebLog/roydictus/archive/2005/07/15/131311.aspx</link><pubDate>Fri, 15 Jul 2005 15:08:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:131311</guid><dc:creator>roydictus</dc:creator><slash:comments>2</slash:comments><comments>http://www.dotnetjunkies.com/WebLog/roydictus/comments/131311.aspx</comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/roydictus/commentrss.aspx?PostID=131311</wfw:commentRss><description>&lt;P&gt;&lt;FONT&gt;1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;In the middle of the night, master coder Rupert Longdon got a phone call at his hotel in Sunnyvale, California. Longdon, who was an expert with modern symbols mostly found on computer keyboards and was in town to convert the local Java gurus to another development environment from way up North, was confused.&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; "Mr Longdon?"&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; "Speaking."&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;"Mr Longdon, this is the Sunnyvale Police. My name is Captain Faché."&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;"Yes?"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;"&lt;/FONT&gt;&lt;FONT&gt;Have you talked to any Java people recently?"&lt;BR&gt;&lt;/FONT&gt;&lt;FONT&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Strange. Maybe the Sunnyvale Police knows why nobody showed up at his presentation earlier?&lt;BR&gt;&lt;/EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Yes. But there was nobody there."&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Mr Longdon, this is because tonight, under very strange circumstances, Java got killed. I'm sending a car over to pick you up. We need your help to solve this mystery."&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Half an hour later, Rupert Longdon stood over the dead corpse of Java. It was surrounded by strange symbols carved in the floor, visible only to the trained eye. &lt;EM&gt;Who could have done this?&lt;/EM&gt; Longdon wondered. As if he could read his guest's mind, Faché answered.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Java did this to itself."&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Java committed suicide? Why?"&amp;nbsp; Longdon couldn't believe it.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Faché pointed to the strange symbols surrounding Java's lifeless shell. Very bizarre indeed. On Java's left side were the following words and numbers:&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT&gt;8 5 0 13&amp;nbsp;3 1 2 1 21 ...&lt;BR&gt;Bag, Sell It!&lt;BR&gt;A Stud, Louis IV!&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT&gt;On Java's right side was simply written:&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT&gt;&lt;EM&gt;.NET&lt;/EM&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Does all of this mean anything to you?" Faché wondered.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Only that I've read about a similar case recently, during my vacation," Longdon responded. "But that is not relevant here."&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;3&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Longdon studied the symbols carefully, made some calculations and was happy to give Captain Faché, who was getting anxious to crack the case quickly, an answer to the first riddle.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "NET can be read backwards, saying 'TEN'. This probably means that Java was attacked by ten maniacs, backwards. This would also explain the dot at the beginning of .NET, which would signify the end, when read back to front."&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Interesting hypothesis,"&amp;nbsp;Faché had to acknowledge. "What about the rest?"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "The rest was written by someone who knows more about math than Dan Brown, the mystery author."&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Oh? Why is that?" Faché wanted to know.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Because the number 0 is included. This, my dear Captain, is the beginning of the Fibonacci sequence, including the zero."&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Mr Brown omitted the zero, is that what you're saying?"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Indeed," Longdon replied. "And he forgot to mention that the Fibonacci sequence is endless -- it doesn't end at 21."&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Faché had to admit that his guest had a point. Which was unfortunate, because Faché had hoped to frame him for Java's demise. He decided to give it another try anyway.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "What about the funny order of the numbers? Isn't the Fibonacci sequence in order?"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "That is right. It goes 0, 1, 1, 2, 3, 5, etc. Maybe Java was dyslexic, that would explain what we're seeing here."&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Mr Longdon," Faché replied calmly, "I can assure you that with assumptions like the ones you make, you're not going to make many friends in some communities that may read my report. What else can you tell me?"&lt;BR&gt;The computer symbologist gave it some thought.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Maybe the other lines are in the wrong order, too. Maybe 'Bag, Sell It' has to be changed somehow, mingled, mixed, repositioned, to point to the Java killer."&lt;BR&gt;He didn't realize at the time how right he was. "Ti Less Gab" was not the answer, but Longdon was close.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;4&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;"I think we have to look for the solution somewhere else," offered Sophie VB, the just-arrived cryptologist who invented the late-bound variant-type variable. "I mean, let's look at the rivals of Java. Who would be happy with Java's demise?"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Faché decided to have a go.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Starbucks?"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Close, but no cigar. Bag, Sell It is an anagram..."&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Of &lt;EM&gt;Bill Gates!&lt;/EM&gt;" Longdon exclaimed. And indeed it was.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Java points to Bill Gates as the reason it was dying?" Faché wondered. "It makes sense. What about the bottom line?"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "The bottom line is that .NET, certainly the new version, is becoming the development environment of choice for many programmers who used to code in Java," Sophie replied.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "No, I mean, the bottom line of the riddle?"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "The reason Java was dying when it wrote down the mysterious symbols?"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The three of them looked at the desperate cry for help that was carved in the floor next to Java's corpse.&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT&gt;A Stud, Louis IV!&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT&gt;What could it mean?&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=131311" width="1" height="1"&gt;</description></item><item><title>Imagination at work: auctioning a GUID on Ebay</title><link>http://www.dotnetjunkies.com/WebLog/roydictus/archive/2005/06/24/128382.aspx</link><pubDate>Fri, 24 Jun 2005 12:59:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:128382</guid><dc:creator>roydictus</dc:creator><slash:comments>2</slash:comments><comments>http://www.dotnetjunkies.com/WebLog/roydictus/comments/128382.aspx</comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/roydictus/commentrss.aspx?PostID=128382</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Georgia&gt;How's this for inventive ways to make money without effort? Some funny, silly person is &lt;/FONT&gt;&lt;A href="http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&amp;amp;item=7163650842"&gt;&lt;FONT face=Georgia&gt;selling a GUID on Ebay&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Georgia&gt;!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;Somehow, I wish I had thought of that :-)&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=128382" width="1" height="1"&gt;</description></item><item><title>Software Factory: The Guidance Automation Toolkit (GAT) for Visual Studio 2005</title><link>http://www.dotnetjunkies.com/WebLog/roydictus/archive/2005/06/24/128381.aspx</link><pubDate>Fri, 24 Jun 2005 12:43:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:128381</guid><dc:creator>roydictus</dc:creator><slash:comments>2</slash:comments><comments>http://www.dotnetjunkies.com/WebLog/roydictus/comments/128381.aspx</comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/roydictus/commentrss.aspx?PostID=128381</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Georgia&gt;Visual Studio 2005 really is a dream environment for any serious .NET Solution Architect or Developer. The built-in designers, the great new CLR and the language extensions, super new controls etc. make designing and developing complex applications less of a hassle. And as you may have derived from some of my previous posts, I also really dig automation of mundane tasks such as daily builds, build verification tests and of course coding and documentation of Data Access Layers, collections and the like. Enter Microsoft's &lt;A href="http://msdn.microsoft.com/architecture/overview/softwarefactories"&gt;Software Factories&lt;/A&gt; initiative.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;A Software Factory, basically, is any automated process that generates software; be it code, a model, a spec, whatever. Software factories make the process of designing and building software less error-prone, faster and easier, freeing us up to focus on the interesting bits. And one of the absolutely coolest new things in this area is Microsoft's GAT.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;&lt;STRONG&gt;The Guidance Automation Toolkit (GAT)&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;This toolkit is a freely-downloadable package from Microsoft's &lt;A href="http://msdn.microsoft.com/practices"&gt;Patterns &amp;amp; Practices&lt;/A&gt; Group. Currently still in an early CTP version, GAT makes extending Visual Studio 2005 a lot easier than using the traditional means -- i.e., &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsent7/html/vxwlkWalkthroughCreatingNewEnterpriseTemplate.asp"&gt;creating Enterprise Templates&lt;/A&gt; or writing plugins that talk to &lt;A href="http://msdn2.microsoft.com/library/k3dys0y2(en-us,vs.80).aspx"&gt;EnvDTE&lt;/A&gt; and the like. With GAT, architects and senior developers create guidance packages for their teams, for instance to auto-generate code and documentation, to quickly implement common domain-specific design patterns, etc., all according to company or team standards.&lt;BR&gt;&lt;FONT face=Georgia&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Without GAT, such guidance is hard to create. With the current version of GAT, it still isn't super-easy (some XML handcoding is still required) but it's already a big improvement and we can be sure that the RTM version is going to kick some serious butt.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;GAT contains a set of tools which are really layers on top of Visual Studio's extensibility mechanisms -- actually, to be really purist, GAT builds on top of the &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C0A394C0-5EEB-47C4-9F7B-71E51866A7ED&amp;amp;displaylang=en"&gt;Guidance Automation eXtensions&lt;/A&gt; (GAX), which form another layer of abstraction on top of Visual Studio's APIs.&lt;BR&gt;For instance, using GAT it's easy to create wizards which connect to databases and auto-generate Data Access Layer (DAL) code, Business Layer code, database schema documentation, etc. In fact, one of the &lt;A href="http://guidanceautomation.net/library/View.aspx?Id=7"&gt;samples of GAT demonstrated at Tech-Ed this year&lt;/A&gt; did just that.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;At the core of GAT are concepts such as "recipes", "templates" etc. A recipe is basically a template for a use case. Recipes consist of actions which create, modify or delete "artifacts" (such as code or XML) in Visual Studio. Recipes can be parameterized and the parameters' input can be fetched from the user (using wizards), XML configuration files, databases etc. You can group related recipes and templates in Guidance Packages and distribute them in your team or on the Internet.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;Part of the GAT is T3, the templating engine with the cool name which will sadly be renamed T4 by RTM for reasons that are probably better left obscure. The T3 templating engine is similar to CodeSmith and uses a syntax similar to ASP's HTML/code mixing: embedding code between &amp;lt;# ... #&amp;gt; tags in output such as XML, HTML or code.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;Resources:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Georgia&gt;You can download GAT at &lt;/FONT&gt;&lt;A href="http://lab.msdn.microsoft.com/teamsystem/workshop/gat/default.aspx"&gt;&lt;FONT face=Georgia&gt;http://lab.msdn.microsoft.com/teamsystem/workshop/gat/default.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Georgia&gt;.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Georgia&gt;More about Software Factories at &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/architecture/overview/softwarefactories"&gt;&lt;FONT face=Georgia&gt;http://msdn.microsoft.com/architecture/overview/softwarefactories&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Georgia&gt;.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Georgia&gt;The GAT Forum is at &lt;A href="http://guidanceautomation.net/forums/?tab=2"&gt;http://guidanceautomation.net/forums/?tab=2&lt;/A&gt;.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Georgia&gt;The Blog of Wojtek Kozaczynski,&amp;nbsp;GAT's architect: &lt;A href="http://blogs.msdn.com/wojtek/default.aspx"&gt;http://blogs.msdn.com/wojtek/default.aspx&lt;/A&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Georgia&gt;The Blog of &lt;SPAN id=_user_kzu@clariusconsulting.net&gt;Daniel Cazzulino, GAT's development lead: &lt;A href="http://weblogs.asp.net/cazzu/"&gt;http://weblogs.asp.net/cazzu/&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=128381" width="1" height="1"&gt;</description></item><item><title>Architecture and Code Generation</title><link>http://www.dotnetjunkies.com/WebLog/roydictus/archive/2005/06/07/111327.aspx</link><pubDate>Wed, 08 Jun 2005 02:57:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:111327</guid><dc:creator>roydictus</dc:creator><slash:comments>0</slash:comments><comments>http://www.dotnetjunkies.com/WebLog/roydictus/comments/111327.aspx</comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/roydictus/commentrss.aspx?PostID=111327</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Georgia&gt;This morning, &lt;A href="http://www.hanselman.com/blog"&gt;Scott Hanselman&lt;/A&gt; presented his rather interesting talk on Code Generation (ARC305). I have mixed feelings on the subject -- I love the idea of generating chunks of code but I usually loathe the quality of the code. On top of that, often generated code can't be modified or built upon easily. For instance, I love the fact that you can generate &lt;A href="http://msdn.microsoft.com/library/en-us/cpguide/html/cpconWorkingWithTypedDataSet.asp"&gt;typed DataSets&lt;/A&gt; using the &lt;A href="http://msdn.microsoft.com/library/en-us/cptools/html/cpconXMLSchemaDefinitionToolXsdexe.asp"&gt;xsd.exe&lt;/A&gt; utility, but the code it produces is really bad and you can't add stuff to it, such as raising an event when a certain property changes -- which is what I like to do. Anyway, back to Scott's presentation.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;The basic idea of straight code generation is to build a specification, or call it a &lt;A href="http://c2.com/cgi/wiki?DomainModel"&gt;domain model&lt;/A&gt; if you will, for instance in XML files. You then have these XML files parsed, maybe along with some code templates (think &lt;A href="http://www.codesmithtools.com"&gt;CodeSmith&lt;/A&gt; or &lt;A href="http://www.sharppower.com"&gt;RapTier&lt;/A&gt; again), producing source code or compiled output (as in the case of xsd.exe). The key to making it successful is to shape it to fit your development processes and the domain you're working in. Obviously, if you're building small smartphone apps your code-generation procedure and the output is going to differ from your missile guidance system project. So you can make the input format (the XML schema for the domain models) as simple or as complex as needed, and provide very complex and flexible or very simple input templates.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;Of course, you don't have to limit yourself to generating source code. You can generate documentation and unit tests as well, possibly even Word documents (using &lt;A href="http://www.simonstl.com/articles/officeXML/wordML.html"&gt;WordML&lt;/A&gt;) or, why not, Excel sheets with statistics?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;Personally, I like to work with automated build systems that generate compiled Help files too, by tweaking Visual Studio.NET's project files before compilation (so that XML generation is turned on) and running &lt;A href="http://ndoc.sourceforge.net"&gt;NDoc&lt;/A&gt; on those XML files after compilation. In addition to code-generating tools such as CodeSmith, I also like to use &lt;A href="http://www.jetbrains.com/resharper"&gt;ReSharper&lt;/A&gt;'s template functions to automatically generate properties that raise &lt;FONT face="Courier New"&gt;&lt;EM&gt;xx&lt;/EM&gt;Changing&lt;/FONT&gt; and &lt;FONT face="Courier New"&gt;&lt;EM&gt;xx&lt;/EM&gt;Changed&lt;/FONT&gt; events, check for null input and the like. That's code generation too, but not the command-line variety that Scott was talking about. &lt;EM&gt;Digressing again...&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;Scott raised an interesting point when he talked about using &lt;A href="http://www.w3.org/TR/wsdl"&gt;WSDL&lt;/A&gt; as your specification language. Yes, WSDL was originally created for specifying the public APIs of web services -- it stands for &lt;EM&gt;Web Service Description Language,&lt;/EM&gt; after all -- but that doesn't have to keep you back. Why not just use WSDL's syntax to specify entity classes, data access operations etc.? All you have to do is leave out the binding part and the Web Service discovery part of the WSDL, or replace it with something more meaningful to your code generator.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;What's also nice about Visual Studio 2005 and .NET 2.0 is the &lt;A href="http://www.devx.com/dotnet/Article/22603"&gt;partial classes&lt;/A&gt; feature, which fixes, in a sense, the &lt;EM&gt;&amp;#8220;I can't edit this generated code&amp;#8221;&lt;/EM&gt; problem. To put in code that can't be generated off your model, you can tweak your code generator to output partial classes and then add code in other files that together make up the final class.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;Later this week there's a session planned on &lt;A href="http://nhibernate.sourceforge.net"&gt;NHibernate&lt;/A&gt;, the .NET version of Java's &lt;A href="http://www.hibernate.org"&gt;Hibernate&lt;/A&gt; which claims to be able to generate entity classes and business classes off databases and custom models. A couple of Java guys I'm working with use Hibernate and they're experiencing real pains with it. It'll be interesting to see how far NHibernate goes, and if it really is the holy grail that can generate half of any client/server app's code... Stay tuned, more to come on that subject!&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=111327" width="1" height="1"&gt;</description></item><item><title>Visual Studio 2005, SQL Server 2005 and BizTalk Server 2006 will be released</title><link>http://www.dotnetjunkies.com/WebLog/roydictus/archive/2005/06/07/111326.aspx</link><pubDate>Wed, 08 Jun 2005 02:28:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:111326</guid><dc:creator>roydictus</dc:creator><slash:comments>0</slash:comments><comments>http://www.dotnetjunkies.com/WebLog/roydictus/comments/111326.aspx</comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/roydictus/commentrss.aspx?PostID=111326</wfw:commentRss><description>&lt;FONT face=Georgia&gt;... the week of November 7 :-). This was announced at Tech-Ed Orlando this morning by Mr &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/presspass/exec/flessner/default.asp"&gt;&lt;FONT face=Georgia&gt;Paul Flessner&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Georgia&gt; himself. Check out the launch website at &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/launch2005/"&gt;&lt;FONT face=Georgia&gt;http://msdn.microsoft.com/launch2005/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Georgia&gt;&amp;nbsp;to stay up-to-date!&lt;/FONT&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=111326" width="1" height="1"&gt;</description></item><item><title>Sessions at Tech-Ed today: Exception handling, Mobile Development, Software Factories and Smart Client Architecture</title><link>http://www.dotnetjunkies.com/WebLog/roydictus/archive/2005/06/06/111177.aspx</link><pubDate>Tue, 07 Jun 2005 01:29:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:111177</guid><dc:creator>roydictus</dc:creator><slash:comments>0</slash:comments><comments>http://www.dotnetjunkies.com/WebLog/roydictus/comments/111177.aspx</comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/roydictus/commentrss.aspx?PostID=111177</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Georgia&gt;I went to a number of Tech-Ed sessions today of course, some more interesting than others. DEV320, about Exception Handling Best Practices, I found really rather basic (of course it &lt;EM&gt;was&lt;/EM&gt; a level-300), talking about the obvious practices of avoiding having to throw and catch exceptions when they're not really necessary, the cost of exceptions, rethrowing exceptions etc. The presenter did a good job of explaining these basics. He should know them pretty well, as exception handling is one of his priorities in the CLR development group.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT face=Georgia&gt;Windows Mobile Development&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;Then there was the Windows Mobile development cabana talk -- a soft of informal talk targeted to a smaller audience -- which was kind of interesting. A couple of topics were covered such as developing using the emulator images (you can develop for Windows Mobile 5.0 now here at Tech-Ed; the emulator images for this new OS are available in the Hands-On Labs), using mobile controls in ASP.NET applications and the use of &lt;A href="http://www.microsoft.com/sql/CE/default.asp"&gt;SQL Server Mobile&lt;/A&gt; (the new name of SQL CE) for database-oriented smart device applications. The coolness here is that you can synchronize and replicate&amp;nbsp;SQL Server databases between your desktop/server and smart devices directly via ActiveSync.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT face=Georgia&gt;Software Factories&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;One of my favorite topics as of late: software factories. The basic idea is that you find patterns in your software projects and pour them into a &amp;#8220;factory,&amp;#8221; i.e. a collection of code templates, configuration presets, reusable blocks etc. so that you can generate parts of your new applications automagically. The talk gave an introduction to software factories and there was a live demonstration of using a factory. If you're going to one of the international Tech-Ed events and you're into software architecture, this session is not to be missed!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;The way Microsoft envisions software factories in Visual Studio 2005 is by using that tool's support for &lt;/FONT&gt;&lt;A href="http://lab.msdn.microsoft.com/teamsystem/workshop/dsltools/"&gt;&lt;FONT face=Georgia&gt;DSL&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Georgia&gt;s (Domain-Specific Languages and the upcoming Guidance Automation Technology, or &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/wojtek/archive/2005/5/2.aspx"&gt;&lt;FONT face=Georgia&gt;GAT&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Georgia&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;DSLs are&amp;nbsp;abstractions of given problem domains and the solutions to those domains -- or rather, your solutions. You can compare this roughly to UML in sense of notation (class diagrams, use cases etc.) of the problem and the solution, through patterns. Visual Studio 2005 comes with designer support for DSLs and you can even create them programmatically using the DSL SDK. GAT then provides a &amp;#8220;recipe&amp;#8220; infrastructure for building your apps step by step, as a set of Visual Studio extensions.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;Basically, you open an application recipe (a software factory) in Visual Studio, you design the flow of your solution as a state&amp;nbsp;machine&amp;nbsp;on a drawing canvas in Visio/Rose style, and you connect the missing parts by filling in the code that does actual work. Some of the code will be generated by the DSL system based on templates (compare to CodeSmith and ASP.NET, because you're embedding code that must be run at code generation time between &amp;lt;# ... #&amp;gt; and &amp;lt;#= ... #&amp;gt; tags).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;The speakers demo'ed building an&amp;nbsp;application that allows users to complete an order. The code they generated used the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/dnpag/html/uipab.asp"&gt;&lt;FONT face=Georgia&gt;UIP Application Block&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Georgia&gt; to manage how users navigate from one screen to the next, which is of course the smart thing to do. When data needed to be retrieved from a back-end system -- a web service of course -- they created a Web Reference proxy as usual and added a caching Service Agent on top. Data would only be retrieved from the back end if it was not already in the service agent instance's cache. And, yes, the service agent was auto-generated too, again based on a code template and some input from the developer. The generated code used the Caching Application Block. As Darth Vader would say, &amp;#8220;Impressive... Most impressive!&amp;#8220;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;FONT face=Georgia&gt;Yes, you can do it with other tools too&lt;/FONT&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;Of course, the basic ideas here are not new. You can use Visio templates today&amp;nbsp;to come up with reusable general designs; you can use tools such as &lt;/FONT&gt;&lt;A href="http://www.codesmithtools.com"&gt;&lt;FONT face=Georgia&gt;CodeSmith&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Georgia&gt; to generate code based on templates, including code that uses the &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=0325B97A-9534-4349-8038-D56B38EC394C&amp;amp;displaylang=en"&gt;&lt;FONT face=Georgia&gt;Enterprise Library&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Georgia&gt; and the other &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/resources/practices/"&gt;&lt;FONT face=Georgia&gt;Application Blocks&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Georgia&gt;. But in Visual Studio 2005 and the extensions these gentlemen demonstrated, it's all so nicely integrated with the IDE and wizards and designers make it much easier, saving us developers and architects time.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;FONT face=Georgia&gt;Software Factories are the Architect's Domain&lt;/FONT&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;I think that consuming software factories is for developers and that creating them is mostly work for the Solution Architect and the Senior Developer, based on code written in previous projects. It is their job to spot patterns in the enterprise's software designs and needs, and to extract those into a set of reusable factories and application blocks. Moreover, I think that while software factories are definitely another step in the right direction towards delivering 4GL's promise, the common problems related to reuse will resurface with factories: are people going to spend time to write code and create templates and factories that are actually reusable, and will they actually be reused? From experience I have learned that this is only true if reuse is enforced on the team by the Solution Architect, who must posess strong reuse and mentoring skills to drive this point home and to actually get it used by the rest of the team...&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;FONT face=Georgia&gt;Smart Client Architecture&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;The final session I attended, or at least entered before I left 10 minutes later, was the one on Smart Client Architecture. This subject is &amp;#8220;totally my bag,&amp;#8221; to quote Austin Powers, and again I felt as if the presenters were dissing up old material that anyone can find in the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/dnpag/html/scag.asp"&gt;&lt;FONT face=Georgia&gt;Patterns &amp;amp; Practices materials&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Georgia&gt;. Anyway, I left the session quickly without waiting for any potential juicy bits to appear because I got tired of listening to&amp;nbsp;the Buffalo Bill-soundalike onstage...&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia&gt;Well, I'm off to the reception now. Talk to you again tomorrow and keep those comments coming :-)&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=111177" width="1" height="1"&gt;</description></item></channel></rss>