<?xml version="1.0"?>
<!-- RSS generated by Radio UserLand v8.0.8 on Mon, 30 Jun 2003 13:32:09 GMT -->
<rss version="2.0">
	<channel>
		<title>Alexis Smirnov: Alexis Smirnov &gt; .NET</title>
		<link>http://radio.weblogs.com/0112946/categories/net/</link>
		<description>Thinking about .NET</description>
		<copyright>Copyright 2003 Alexis Smirnov</copyright>
		<lastBuildDate>Mon, 30 Jun 2003 13:32:09 GMT</lastBuildDate>
		<docs>http://backend.userland.com/rss</docs>
		<generator>Radio UserLand v8.0.8</generator>
		<managingEditor>alexissmirnov@hotmail.com</managingEditor>
		<webMaster>alexissmirnov@hotmail.com</webMaster>
		<category domain="http://www.weblogs.com/rssUpdates/changes.xml">rssUpdates</category> 
		<skipHours>
			<hour>23</hour>
			<hour>0</hour>
			<hour>1</hour>
			<hour>2</hour>
			<hour>3</hour>
			<hour>4</hour>
			<hour>5</hour>
			<hour>6</hour>
			</skipHours>
		<cloud domain="radio.xmlstoragesystem.com" port="80" path="/RPC2" registerProcedure="xmlStorageSystem.rssPleaseNotify" protocol="xml-rpc"/>
		<ttl>60</ttl>
		<item>
			<link>http://radio.weblogs.com/0112946/categories/net/2003/06/25.html#a177</link>
			<description>&lt;div class=Section1&gt;

&lt;p&gt;&lt;span style=&apos;&apos;&gt;Some new
content on &lt;a href=&quot;http://www.microsoft.com/resources/practices/&quot;&gt;P&amp;amp;P&lt;/a&gt; site.
This happens to be very relevant to some of the internal development underway
in my team:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&apos;&apos;&gt;We have an
ASP.NET application that makes a remoting call to an object hosted in OS
service. It may take a long time to complete the call and we want to get the
page back to the user quickly. &lt;a
href=&quot;http://msdn.microsoft.com/library/en-us/dnpag/html/PAIBlock.asp&quot;&gt;Asynchronous
Invocation Application Block&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&apos;&apos;&gt;We want
to allow administrators to edit .config files that are used by a running OS
service without having to restart the service. We also want to use .config
files to store encrypted connection strings. &lt;a
href=&quot;http://msdn.microsoft.com/library/en-us/dnbda/html/cmab.asp&quot;&gt;Configuration
Management Application Block&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&apos;&apos;&gt;Once we
allow administrators to configure .config files on a live OS service, we want
to make sure that parsing errors are reported to event log. &lt;a
href=&quot;http://msdn.microsoft.com/library/en-us/dnbda/html/emab-rm.asp&quot;&gt;Exception
Management Application Block&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&apos;&apos;&gt;I though it&amp;#8217;d
be a good test to see how practical it is to use those application blocks as oppose
to simply code those features.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&apos;&apos;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&apos;&apos;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;/div&gt;</description>
			<guid>http://radio.weblogs.com/0112946/categories/net/2003/06/25.html#a177</guid>
			<pubDate>Wed, 25 Jun 2003 15:54:22 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0112946/categories/net/2003/06/16.html#a174</link>
			<description>&lt;div class=Section1&gt;

&lt;p&gt;&lt;span style=&apos;&apos;&gt;Weblog as
a better bookmark:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&apos;&apos;&gt;I&amp;#8217;ve
noticed that more and more I&amp;#8217;m coming back to my own weblog to get that
pointer to a resource I wanted to check out, but didn&amp;#8217;t have time. Here
again:&lt;/span&gt;&lt;/p&gt;

&lt;ul type=disc&gt;
 &lt;li class=MsoNormal&gt;&lt;i&gt;&lt;span
     style=&apos;;font-style:italic&apos;&gt;Also out with a new release is &lt;a
     href=&quot;http://www.gotdotnet.com/team/fxcop/&quot;&gt;FxCop&lt;/a&gt;, the code analysis
     tool that checks for conformance to the .NET Framework Design Guidelines.
     I&apos;m toying with making this a part of my build process in the future. Note
     that there is not yet an SDK for this version, so you might want to hold
     off if you need to write your own rules. &lt;/span&gt;&lt;/i&gt;&lt;/li&gt;
 &lt;li class=MsoNormal&gt;&lt;i&gt;&lt;span
     style=&apos;;font-style:italic&apos;&gt;&lt;a
     href=&quot;http://www.agilebuildengineering.com/wiki&quot;&gt;Agile Build Engineering&lt;/a&gt;
     - new Wiki hoping to cover the areas &amp;quot;where Agile Software
     Development and Build Engineering collide.&amp;quot; [&lt;a
     href=&quot;http://www.larkware.com/Articles/TheDailyGrind101.html&quot;&gt;Larkware&lt;/a&gt;]&lt;/span&gt;&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;</description>
			<guid>http://radio.weblogs.com/0112946/categories/net/2003/06/16.html#a174</guid>
			<pubDate>Mon, 16 Jun 2003 21:00:39 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0112946/categories/net/2003/06/13.html#a173</link>
			<description>&lt;div class=Section1&gt;

&lt;p style=&apos;margin-left:.5in&apos;&gt;&lt;i&gt;&lt;span
style=&apos;;font-family:Verdana;font-style:italic&apos;&gt;[&lt;a
href=&quot;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/threatcounter.asp&quot;&gt;MSDN&lt;/a&gt;]:&amp;nbsp;&lt;a
href=&quot;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/threatcounter.asp&quot;&gt;&lt;font
color=black&gt;&lt;span style=&apos;color:windowtext;text-decoration:none&apos;&gt;Improving Web
Application Security: Threats and Countermeasures Roadmap&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;

&lt;p style=&apos;margin-left:.5in&apos;&gt;&lt;i&gt;&lt;span
style=&apos;;font-family:Verdana;font-style:italic&apos;&gt;This guide gives
you a solid foundation for designing, building, and configuring secure ASP.NET
Web applications. Whether you have existing applications or are building new
ones, you can apply the guidance to help you make sure that your Web
applications are hack-resilient.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&apos;;font-family:Verdana&apos;&gt;Stating
the obvious, &lt;a href=&quot;http://www.msdn.microsoft.com/practices/&quot;&gt;Patterns &amp;amp; Practices&lt;/a&gt;
section of MSDN consistently delivers some of the most solid content of entire MSDN
site. &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&apos;;font-family:Verdana&apos;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&apos;&apos;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;/div&gt;</description>
			<guid>http://radio.weblogs.com/0112946/categories/net/2003/06/13.html#a173</guid>
			<pubDate>Fri, 13 Jun 2003 17:22:14 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0112946/categories/net/2003/06/13.html#a172</link>
			<description>&lt;div class=Section1&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&apos;&apos;&gt;&lt;a href=&quot;http://www.sellsbrothers.com/spout/#MyFirstAPIReview&quot;&gt;Chris tells&lt;/a&gt;
us about of Longhorn API review&amp;nbsp;and in the process, lists some generally
useful design guidelines that can benefit any .NET development team. It seems
that API review is not a peer code review because it is done not by people involved
in actual coding of a component. It&amp;#8217;s not a design review because the
team focuses on interfaces as oppose to their internal implementation. &lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&apos;&apos;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&apos;&apos;&gt;Here&amp;#8217;s my takeaway:&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&apos;&apos;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&apos;&apos;&gt;The team building the API had answers a standard questionnaire from the
review team, which includes:&lt;br&gt;
- target users&lt;br&gt;
- potential security problems&lt;br&gt;
- representative sample code that users would be expected to construct. &lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&apos;&apos;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&apos;&apos;&gt;Specific advice from reviewers:&lt;br&gt;
- use best practice coding conventions in sample code&lt;br&gt;
- support IDisposable at a macro level instead of a micro level&lt;br&gt;
- expose collections from properties returning IEnumerable (not from the parent
object itself)&lt;br&gt;
- prefer properties over Get/Set methods (as appropriate)&lt;br&gt;
- don&apos;t tack the name of the enumeration type onto the enumeration values
themselves&lt;br&gt;
- prefer overloads to parameters that can be null&lt;br&gt;
- prefer typed parameters to object parameters&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&apos;&apos;&gt;Points above
seem to be aligned with these &lt;a
href=&quot;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconpropertyusageguidelines.asp&quot;&gt;guidelines&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;

&lt;/div&gt;</description>
			<guid>http://radio.weblogs.com/0112946/categories/net/2003/06/13.html#a172</guid>
			<pubDate>Fri, 13 Jun 2003 15:15:02 GMT</pubDate>
			</item>
		<item>
			<title>table: 2 items</title>
			<link>http://radio.weblogs.com/0112946/categories/net/2003/06/05.html#a168</link>
			<description>&lt;div class=Section1&gt;

&lt;p&gt;&lt;span style=&apos;&apos;&gt;&lt;a
href=&quot;http://www.nikhilk.net/Entry.aspx?id=11&quot;&gt;Nikhil&lt;/a&gt; (architect of &lt;a
href=&quot;http://www.asp.net/WebMatrix&quot; target=&quot;_new&quot;
title=&quot;http://www.asp.net/WebMatrix&quot;&gt;Web Matrix&lt;/a&gt;) posts the &lt;a
href=&quot;Content/Samples/HtmlComponent.zip&quot;
title=&quot;Content\Samples\HtmlComponent.zip&quot;&gt;sample code&lt;/a&gt; for HTML viewing and
editing component. Something like this must be part of Web Matrix code base
anyway. Speaking &lt;a href=&quot;http://www.asp.net/webmatrix/AboutProject.aspx&quot;&gt;about&lt;/a&gt;
it: &amp;#8220;&lt;/span&gt;&lt;span style=&apos;;
font-family:Verdana&apos;&gt;Web Matrix wasn&apos;t built by a formal team at Microsoft --
but rather by a group of people across the ASP.NET team who worked on it in
their spare time (mainly nights and weekends).&lt;/span&gt; &amp;#8220; &lt;/p&gt;

&lt;p&gt;&lt;span style=&apos;&apos;&gt;How cool
would it be to see &lt;i&gt;&lt;span style=&apos;font-style:italic&apos;&gt;all&lt;/span&gt;&lt;/i&gt; of Web Matrix
code released?&lt;/span&gt;&lt;/p&gt;

&lt;/div&gt;</description>
			<guid>http://radio.weblogs.com/0112946/categories/net/2003/06/05.html#a168</guid>
			<pubDate>Thu, 05 Jun 2003 14:27:15 GMT</pubDate>
			</item>
		<item>
			<title>.NET Enterprise Services and COM+ 1.5 Architecture</title>
			<link>http://radio.weblogs.com/0112946/categories/net/2003/05/29.html#a164</link>
			<description>&lt;P class=Section1 style=&quot;MARGIN-LEFT: 0.5in&quot;&gt;&lt;I&gt;&lt;SPAN style=&quot;FONT-STYLE: italic&quot;&gt;Introduces new COM+ 1.5 features and offers design guidelines to take full advantage of these new capabilities in .NET applications. [&lt;A href=&quot;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnentsrv/html/NETEnterpriseandCOMplus.asp&quot;&gt;MSDN: .NET Framework and CLR&lt;/A&gt;]&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;BLOCKQUOTE class=Section1 dir=ltr style=&quot;MARGIN-TOP: 5pt; MARGIN-BOTTOM: 5pt; MARGIN-RIGHT: 0px&quot;&gt;
&lt;P class=MsoNormal style=&quot;MARGIN-LEFT: -0.5in&quot;&gt;&lt;SPAN&gt;COM+ 1.5 ships with Windows XP and Windows Server 2003, but this article looks like a good read even&amp;nbsp;if you&amp;#146;re targeting Windows 2000 (with COM+ 1.0). It talks about the quirks of using COM+ services from .NET. &lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;</description>
			<guid>http://radio.weblogs.com/0112946/categories/net/2003/05/29.html#a164</guid>
			<pubDate>Thu, 29 May 2003 17:31:22 GMT</pubDate>
			</item>
		<item>
			<title>Where NUnit tests should go?</title>
			<link>http://radio.weblogs.com/0112946/categories/net/2003/05/28.html#a163</link>
			<description>&lt;DIV class=Section1&gt;
&lt;P&gt;&lt;SPAN&gt;There&amp;#146;s a &lt;A href=&quot;https://sourceforge.net/forum/message.php?msg_id=1945559&quot;&gt;discussion&lt;/A&gt; going on the &lt;A href=&quot;http://www.nunit.org/&quot;&gt;NUnit&lt;/A&gt; mailing list about where to put unit testing code. This important question needs to be answered by any project team before embarking on unit testing bandwagon in the context of medium-to-large scale project. Here&amp;#146;s why: &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Developing unit tests will end up taking a significant amount of team&amp;#146;s time and will result in significant amount of code. As with any other development and coding guidelines you want to have clear guidelines with respect to organization of unit testing to avoid chaos and confusion. You will want to make it easy for every developer to introduce a unit test &amp;#150; not more difficult than introducing any other piece of code. Finally, you will want to be able to strip unit testing code when you prepare a distribution package of your product. You will also want to exclude NUnit binaries from your distribution package.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;A href=&quot;http://www.zks.net/business&quot;&gt;My team&lt;/A&gt; has spent some time pondering the following alternatives:&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Put all the tests in a separate assembly.&lt;/SPAN&gt;&lt;/B&gt; The idea here is to have a single assembly that would depend on NUnit binaries. When shipping the product this test assembly would be left out of the distribution package. That&amp;#146;s easy. The drawbacks of such solution are that you&amp;#146;ll end up creating a big assembly with lots of tests. This assembly would end up depending on lots of &amp;#145;production&amp;#146; assemblies. The source control of this central test assembly would be problematic since many developers would often need to make concurrent changes to it. Unit tests would have to be limited to public interfaces of production types. We have dismissed this idea because of these drawbacks.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Create a satellite test assembly per each &amp;#145;production&amp;#146; assembly. &lt;/SPAN&gt;&lt;/B&gt;In this solution it is equally easy to create nunit-less distribution package. It becomes easier for developers to add new tests and not step on each other those in source control. The trouble is, would still be impossible to test internals of production types. This solution would also make the project have twice the amount of assemblies you&amp;#146;d normally need. Source tree and build management issues usually grow with the number of assemblies you have to manage. We have abandoned this idea too.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;We&amp;#146;ve ended up the following: &lt;B&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Put tests together with the production code, but make them separate. &lt;/SPAN&gt;&lt;/B&gt;&amp;nbsp;The idea here is to put all unit test code in the same assembly along with the production code, but be able to separate the unit-testing code when building the distribution package. We put all the unit-testing code in the separate namespace just below the namespace of the production code. A namespace MyCorp.MyProduct.MyComponent will have its tests in MyCorp.MyProduct.MyComponent.Test namespace. Furthermore, all the unit-test source files are located in the separate test directory (Test) under the directory that holds the production code. The same Test directory usually holds data files needed to run the tests. This organization solves all the above issues, but makes the generation of test-less distribution package fairly easy as well and makes XML based build files (like &lt;A href=&quot;http://nant.sf.net/&quot;&gt;NAnt&lt;/A&gt; or VS.NET) really shine. Since the organization of test files follows strict rules, nant build files can be changed using XSLT to exclude ./Test/*.cs files from the build. The dependency can also be excluded by the same transform. This solution represent a little bit more work for build-master, but saves a lot of hassle for developers. (I&amp;#146;m not posting the XSLT transform because we don&amp;#146;t have it yet. But stay tuned :)&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;</description>
			<guid>http://radio.weblogs.com/0112946/categories/net/2003/05/28.html#a163</guid>
			<pubDate>Wed, 28 May 2003 14:27:21 GMT</pubDate>
			</item>
		<item>
			<title>xsd2db 0.1</title>
			<link>http://radio.weblogs.com/0112946/categories/net/2003/05/23.html#a161</link>
			<description>&lt;DIV class=Section1&gt;
&lt;P&gt;&lt;SPAN&gt;Not long ago I&amp;#146;ve &lt;A href=&quot;http://radio.weblogs.com/0112946/2003/04/29.html#a146&quot;&gt;talked&lt;/A&gt; about a utility called xsd2db that we use to create a database schema directly from .XSD files. A few people told me they about different scenarios where such tool could be useful. &lt;A href=&quot;http://www.iunknown.com/Weblog/VS.NETSchemaEditor.html&quot;&gt;John&lt;/A&gt; writes re-writing Pet Shop using code-generation tools. To me, it looks like xsd2db could help. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;So to put the bits where my mouth is, I&amp;#146;ve created a &lt;A href=&quot;http://sourceforge.net/projects/xsd2db/&quot;&gt;project&lt;/A&gt; on SourceForge to share the code and let others contribute. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I know this initial release works in our environment (.NET 1.0, Sql Server, VS.NET 2002). But there&amp;#146;s plenty of room for improvement of course. The utility can easily be extended to support other databases (Teradata is next on our list). 0.1 version can only create new databases from scratch. A neat feature that would be nice to have is the ability to merge existing database schema with .XSD file. In other words, being able to update (&lt;A href=&quot;http://martinfowler.com/dbrefact/&quot;&gt;refactor&lt;/A&gt;?) existing database schemas using XSD. Comparing a DB schema with a given XSD file is another useful thing to have. It is all about &lt;A href=&quot;http://radio.weblogs.com/0112946/stories/2003/04/29/unifyingObjectAndRelationalDataStructures.html&quot;&gt;unifying&lt;/A&gt; relational and object-oriented data structures. What do you want xsd2db to be? Who knows how far this experiment will go.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;As added benefit it gave me a chance to compare SF projects with GDN workspaces. Early results: 10 minutes to set up GDN workspace. 2-3 hours to figure out SF and CVS setup. Needless to say SF/CVS combination is clearly more powerful platform with much more features than GDN/VSS, but it comes with a bit of a cost. &lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;</description>
			<guid>http://radio.weblogs.com/0112946/categories/net/2003/05/23.html#a161</guid>
			<pubDate>Fri, 23 May 2003 19:57:39 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0112946/categories/net/2003/05/06.html#a149</link>
			<description>&lt;P&gt;Objectnation has released a new vesion of stored-procedure stub generator &lt;A href=&quot;http://www.objectnation.com/default.aspx?pageid=downloads&quot;&gt;SP/Invoke&lt;/A&gt;.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;New functionality includes: &lt;BR&gt;1. Support for SQL Server UDTs (user-defined data types) &lt;BR&gt;2. Events which allow you to trace/log SP/Invoke calls from a central&lt;BR&gt;location in your code.&amp;nbsp; &lt;BR&gt;3. NDoc support. &lt;BR&gt;4. Use of ADO.NET provider-independent types in generated code. &lt;/P&gt;
&lt;P&gt;There&apos;s a good article on &lt;A href=&quot;http://www.codeproject.com/dotnet/spinvoke.asp?target=sp%2Finvoke&quot;&gt;codeproject&lt;/A&gt; explaining how it works.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0112946/categories/net/2003/05/06.html#a149</guid>
			<pubDate>Tue, 06 May 2003 16:24:01 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0112946/categories/net/2003/05/05.html#a148</link>
			<description>&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: Arial&quot;&gt;&lt;FONT face=Arial&gt;&lt;A href=&quot;http://radio.weblogs.com/0108971/2003/05/04.html#a171&quot;&gt;Clemens&lt;/A&gt; and &lt;A href=&quot;http://www.iserializable.com/&quot;&gt;Roy&lt;/A&gt; are having a conversation about when it is appropriate to to expose DataSets out to other layers of your system. As Clemens puts it, &amp;#147;Ideally, you don&apos;t expose the DataSet and hide that fact that you use it.&amp;#148;&lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: Arial&quot;&gt;&lt;o:p&gt;&lt;FONT face=Arial&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: Arial&quot;&gt;&lt;FONT face=Arial&gt;Let&amp;#146;s see if I understand&amp;#133;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: Arial&quot;&gt;&lt;FONT face=Arial&gt;To put it more generally, you don&amp;#146;t want to leak the programming model from one layer to the next. The absolute lowest common denominator between layers is of course InfoSet (XML InfoSet, really) and that&amp;#146;s what you want your layers to exchange. But looking at the issue from a practical standpoint, I wonder if it is such a big sin to extend InfoSet with metadata understandable only to a particular programming model. By doing so, you make it easier to cross layers that share the programming model. For example, what&amp;#146;s wrong with making an interface return InfoSet that is enriched with some special metadata understandable by, say, DataSet? &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0112946/categories/net/2003/05/05.html#a148</guid>
			<pubDate>Mon, 05 May 2003 13:43:23 GMT</pubDate>
			</item>
		<item>
			<link>http://yquem/hardball/categories/net/2003/04/29.html#a146</link>
			<description>&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: Arial&quot;&gt;&lt;FONT face=Arial&gt;&lt;A href=&quot;http://www.iunknown.com/Weblog/Cross-technologyabstracti.html&quot;&gt;John&amp;nbsp;Lam&lt;/A&gt; wanted to hear about people who work with code-generation techniques, so I though I&amp;#146;d talk a bit about our solution to a particular problem we had: &lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: Arial&quot;&gt;&lt;o:p&gt;&lt;FONT face=Arial&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: Arial&quot;&gt;&lt;FONT face=Arial&gt;First, a bit of context:&amp;nbsp;For the past couple of years we&amp;#146;ve been developing a &lt;/FONT&gt;&lt;A href=&quot;http://www.zeroknowledge.com/business/epmproduct.asp&quot;&gt;&lt;FONT face=Arial&gt;product&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt; based on CLIPS inference engine. As with most inference-engine based systems, the data structure is defined as an ontology. We&amp;#146;ve used CLIPS language to define the ontology and rules around it. The data structures defined in CLIPS were loaded in memory and represented as &lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;regular object model (using COM) to allow data entry and data display.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: Arial&quot;&gt;&lt;o:p&gt;&lt;FONT face=Arial&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: Arial&quot;&gt;&lt;FONT face=Arial&gt;We&amp;#146;re now looking to persist application&amp;#146;s data in a database to provide the data to other applciations. One of the first questions we have to address is to decide how to design the database schema. Once we understood how to map CLIPS constructs to relational world, the actual converting of CLIPS data structures into their relational representation seemed like a good job for an automated tool. We wanted to automate the process because we wanted to quickly react to changes in ontology. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: Arial&quot;&gt;&lt;o:p&gt;&lt;FONT face=Arial&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: Arial&quot;&gt;&lt;FONT face=Arial&gt;After thinking about our particular problem in more general terms, we&amp;#146;ve decided to convert CLIPS data structures into XSD. With a newly generated .XSD we can now create strongly-typed DataSets that would correspond to ontology data structures. Sweet! The only thing missing was the ability to create a new database schema from .XSD. I was surprised to find out that only Oracle supports this feature. So I&amp;#146;ve put together a utility called xsd2db that would work with SQL Server. A colleague of mine have extend it to support Jet engine too. We&amp;#146;re likely to be adding support to Teradata quite soon.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: Arial&quot;&gt;&lt;o:p&gt;&lt;FONT face=Arial&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: Arial&quot;&gt;&lt;FONT face=Arial&gt;Here&amp;#146;s &lt;/FONT&gt;&lt;A href=&quot;http://radio.weblogs.com/0112946/stories/2003/04/29/unifyingObjectAndRelationalDataStructures.html&quot;&gt;&lt;FONT face=Arial&gt;more about&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt; the motivations of xsd2db.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: Arial&quot;&gt;&lt;o:p&gt;&lt;FONT face=Arial&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: Arial&quot;&gt;&lt;FONT face=Arial&gt;John asked for stories of &amp;#147;code generation&amp;#148;. I don&amp;#146;t know if my story qualifies as such. After all what we&amp;#146;re trying to abstract out are representations of data structures by unifying them via XSD.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
			<guid>http://yquem/hardball/categories/net/2003/04/29.html#a146</guid>
			<pubDate>Tue, 29 Apr 2003 16:16:24 GMT</pubDate>
			</item>
		<item>
			<link>http://yquem/hardball/categories/net/2003/04/25.html#a141</link>
			<description>&lt;P dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;The value of any ontology can be measured by the number of applications that use it. &lt;A href=&quot;http://www.amazon.com/exec/obidos/ASIN/0201633612/ref=ase_alexissmirnos-20/104-7242361-9394302&quot;&gt;GOF book&lt;/A&gt; represents of the best introduction of a new ontology i&apos;ve seen so far. By now design pattern terminology as defined by this book&amp;nbsp;is firmly embedded in developer&apos;s vocabulary.&lt;/P&gt;
&lt;P&gt;Take Cooper&apos;s seminal book &quot;&lt;A href=&quot;http://www.amazon.com/exec/obidos/ASIN/1568843224/ref=ase_alexissmirnos-20/104-7242361-9394302&quot;&gt;About Face: The Essentials of User Interface Design&lt;/A&gt;&quot; for example. Cooper defined a rich and comprehensive set of terms to describe elements and concepts of user interface.&amp;nbsp;Fast forward&amp;nbsp;a couple of years. Have you heard any developer say &quot;But out application is &lt;EM&gt;sovereign&lt;/EM&gt;! Why&amp;nbsp;do we start it &lt;EM&gt;pluralized&lt;/EM&gt;???&quot; Very few people talk about user interface in terms of Cooper&apos;s ontology.&lt;/P&gt;
&lt;P&gt;I have great expectation about Fowler&apos;s book on &lt;A href=&quot;http://www.amazon.com/exec/obidos/ASIN/0321127420/ref=ase_alexissmirnos-20/104-7242361-9394302&quot;&gt;patterns of enterprise architecture&lt;/A&gt;. I think Fowler&apos;s &lt;A href=&quot;http://www.martinfowler.com/eaaCatalog/&quot;&gt;ontology&lt;/A&gt; of enterprise patters has a real chance of becoming integral part of vocabulary of enterprise developers. It is great to see &lt;A href=&quot;http://msdn.microsoft.com/practices/type/Patterns/default.asp&quot;&gt;MSDN patterns site&lt;/A&gt; (via &lt;A href=&quot;http://www.devhawk.net/default.aspx?date=4%2f24%2f2003#86&quot;&gt;Harry Pierson&lt;/A&gt;) running with Fowler&apos;s ontology.&lt;/P&gt;</description>
			<guid>http://yquem/hardball/categories/net/2003/04/25.html#a141</guid>
			<pubDate>Fri, 25 Apr 2003 13:14:47 GMT</pubDate>
			</item>
		<item>
			<link>http://yquem/hardball/categories/net/2003/04/23.html#a140</link>
			<description>&lt;P&gt;Here&apos;s the &lt;A href=&quot;http://radio.weblogs.com/0108971/2003/04/23.html#a159&quot;&gt;official announcement&lt;/A&gt; of &lt;A href=&quot;http://radio.weblogs.com/0108971/2003/04/23.html#a161 &quot;&gt;COM+ 1.75&lt;/A&gt;! Enterprise AOP baby:)&lt;/P&gt;
&lt;P&gt;I&apos;ve &lt;A href=&quot;http://radio.weblogs.com/0112946/2002/10/17.html#a54&quot;&gt;seen&lt;/A&gt; the beginings of this work back in October at &lt;A href=&quot;http://www.sellsbrothers.com&quot;&gt;Chris&lt;/A&gt;&apos; WS DevCon and though to myself - &quot;this usage of attibutes is so elegant&amp;nbsp;and natural - why didn&apos;t Microsoft&amp;nbsp;shipped it already&quot;. newtelligence&apos;s library is definetely worth checking out.&lt;/P&gt;</description>
			<guid>http://yquem/hardball/categories/net/2003/04/23.html#a140</guid>
			<pubDate>Wed, 23 Apr 2003 22:50:42 GMT</pubDate>
			</item>
		<item>
			<link>http://yquem/hardball/categories/net/2003/04/22.html#a139</link>
			<description>Finished&amp;nbsp;&lt;A href=&quot;http://www.develop.com/books/essentialasp.net/&quot;&gt;Essential ASP.NET&lt;/A&gt; over the weekend. Truly &lt;A href=&quot;http://radio.weblogs.com/0112946/categories/books/2003/03/28.html#a129&quot;&gt;Wonderful book&lt;/A&gt;!</description>
			<guid>http://yquem/hardball/categories/net/2003/04/22.html#a139</guid>
			<pubDate>Tue, 22 Apr 2003 15:49:16 GMT</pubDate>
			</item>
		<item>
			<link>http://yquem/hardball/categories/net/2003/04/16.html#a138</link>
			<description>&lt;P&gt;&lt;A href=&quot;http://blogs.gotdotnet.com/cbrumme/&quot;&gt;Chris Brumme&lt;/A&gt; is a sr. architect on the CLR. [&lt;A href=&quot;http://www.gotdotnet.com/team/dbox/default.aspx#nn2003-04-15T07:25:45Z&quot;&gt;DonBox&lt;/A&gt;]&lt;/P&gt;
&lt;P&gt;If you like to hung out on &lt;A href=&quot;http://discuss.develop.com/advanced-dotnet.html&quot;&gt;advanced-dotnet&lt;/A&gt; list, you&apos;ll love Chris&apos; weblog.&lt;/P&gt;</description>
			<guid>http://yquem/hardball/categories/net/2003/04/16.html#a138</guid>
			<pubDate>Wed, 16 Apr 2003 17:38:04 GMT</pubDate>
			</item>
		<item>
			<link>http://yquem/hardball/categories/net/2003/04/15.html#a137</link>
			<description>&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;EM&gt;There&apos;s now a sneak preview of the new &lt;/EM&gt;&lt;A href=&quot;http://hipponet.sourceforge.net/&quot;&gt;&lt;EM&gt;Hippo.NET&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt; build system available for download.[&lt;/EM&gt;&lt;A href=&quot;http://www.larkware.com/Articles/TheDailyGrind49.html&quot;&gt;&lt;EM&gt;Larkware&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;]&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Our team development environment integrates &lt;A href=&quot;http://www.cvshome.org&quot;&gt;CVS&lt;/A&gt; for source control,&amp;nbsp;&amp;nbsp;&lt;A href=&quot;http://nant.sourceforge.net&quot;&gt;NAnt&lt;/A&gt; for build scripts, &lt;A href=&quot;http://draconet.sourceforge.net&quot;&gt;Draco.NET&lt;/A&gt; for continuous build support and finally &lt;A href=&quot;http://tinderbox.mozilla.org&quot;&gt;Tinderbox&lt;/A&gt; as a front-end for the build process.&amp;nbsp;(I &lt;A href=&quot;http://sourceforge.net/mailarchive/forum.php?thread_id=1890613&amp;amp;forum_id=16602&quot;&gt;don&apos;t know&lt;/A&gt; if anyone else is experimenting with the same setup.) &lt;/P&gt;
&lt;P&gt;From the collection of these tools, we&apos;ve inherited CVS and Tinderbox from earlier C++/COM projects. Tinderbox does a decent job being a front-end to the build process, but I can easily see how one can create a nicer and more powerful front-end for server-side build process. Putting&amp;nbsp;&lt;A href=&quot;http://hipponet.sourceforge.net/&quot;&gt;Hippo.NET&lt;/A&gt; one on my tools-to-watch list.&lt;/P&gt;</description>
			<guid>http://yquem/hardball/categories/net/2003/04/15.html#a137</guid>
			<pubDate>Tue, 15 Apr 2003 14:20:49 GMT</pubDate>
			</item>
		<item>
			<link>http://yquem/hardball/categories/net/2003/04/11.html#a136</link>
			<description>Father of Agile methods &lt;A href=&quot;http://www.martinfowler.com&quot;&gt;Martin Fowler&lt;/A&gt; has an &lt;A href=&quot;http://www.martinfowler.com/updates.rss&quot;&gt;RSS feed&lt;/A&gt;&amp;nbsp;for updates of his site.&amp;nbsp;A must-subscribe on&amp;nbsp;anyone interested in pushing the envelope of enterprise software development.</description>
			<guid>http://yquem/hardball/categories/net/2003/04/11.html#a136</guid>
			<pubDate>Fri, 11 Apr 2003 19:38:49 GMT</pubDate>
			</item>
		<item>
			<link>http://yquem/hardball/categories/net/2003/04/04.html#a134</link>
			<description>&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;EM&gt;Take&amp;nbsp;two days off and listen ;) [&lt;/EM&gt;&lt;A href=&quot;http://radio.weblogs.com/0108971/2003/04/03.html#a148&quot;&gt;&lt;EM&gt;Clemens&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;]&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;VERY cool. The whole Architect&apos;s Tour event up on &lt;A href=&quot;http://www.dotnetmaailma.com/dotnetmaailma/seminaarit/online/EMEA+Architects+Tour.htm&quot;&gt;this site&lt;/A&gt;. &lt;/P&gt;</description>
			<guid>http://yquem/hardball/categories/net/2003/04/04.html#a134</guid>
			<pubDate>Fri, 04 Apr 2003 15:11:31 GMT</pubDate>
			</item>
		<item>
			<link>http://yquem/hardball/categories/net/2003/04/04.html#a133</link>
			<description>&lt;P&gt;&lt;A href=&quot;http://staff.develop.com/candera/weblog/&quot;&gt;Craig&lt;/A&gt; posts a real&amp;nbsp;neat trick to create an array then size isn&apos;t known in advance:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;EM&gt;A question that comes up occasionally on the mailing lists revolves around how to manipulate arrays of things. The problem is that once created, arrays can&apos;t change size. But what if you don&apos;t necessarily know how big it&apos;ll be right off the bat. Here&apos;s my favorite way to deal with arrays. &lt;/EM&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-layout-grid-align: none&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &apos;Courier New&apos;&quot;&gt;&lt;EM&gt;ArrayList al = new ArrayList();&lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-layout-grid-align: none&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &apos;Courier New&apos;&quot;&gt;&lt;o:p&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-layout-grid-align: none&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &apos;Courier New&apos;&quot;&gt;&lt;EM&gt;for (loop over some set of things)&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-layout-grid-align: none&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &apos;Courier New&apos;&quot;&gt;&lt;EM&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-layout-grid-align: none&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &apos;Courier New&apos;&quot;&gt;&lt;EM&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;al.Add(thing);&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-layout-grid-align: none&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &apos;Courier New&apos;&quot;&gt;&lt;EM&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-layout-grid-align: none&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &apos;Courier New&apos;&quot;&gt;&lt;EM&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-layout-grid-align: none&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &apos;Courier New&apos;&quot;&gt;&lt;EM&gt;Thing[] things = &lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt; mso-layout-grid-align: none&quot;&gt;&lt;EM&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &apos;Courier New&apos;&quot;&gt;&amp;nbsp; (Thing[]) &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &apos;Courier New&apos;&quot;&gt;al.ToArray(typeof(Thing)); &lt;A href=&quot;http://staff.develop.com/candera/weblog/2003/04/03.html#a79&quot;&gt;more...&lt;/A&gt;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;</description>
			<guid>http://yquem/hardball/categories/net/2003/04/04.html#a133</guid>
			<pubDate>Fri, 04 Apr 2003 13:28:45 GMT</pubDate>
			</item>
		<item>
			<link>http://yquem/hardball/categories/net/2003/04/02.html#a132</link>
			<description>&lt;P&gt;Another addition to .NET developer&apos;s toolbox. A command-line front-end to &lt;A href=&quot;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconxslttransformationswithxsltransformclass.asp&quot; target=_top&gt;&lt;TT&gt;System.Xml.Xsl.XslTransform&lt;/TT&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://www.tkachenko.com/blog/&quot;&gt;Oleg Tkachenko&lt;/A&gt; has released a verison of XSLT trasform utility called &lt;A href=&quot;http://www.tkachenko.com/dotnet/nxslt.html&quot;&gt;nxslt&lt;/A&gt;.&lt;/P&gt;</description>
			<guid>http://yquem/hardball/categories/net/2003/04/02.html#a132</guid>
			<pubDate>Wed, 02 Apr 2003 13:28:16 GMT</pubDate>
			</item>
		<item>
			<link>http://yquem/hardball/categories/net/2003/03/28.html#a129</link>
			<description>&lt;P&gt;Ordered &lt;A href=&quot;http://www.amazon.com/exec/obidos/ASIN/0201760401/alexissmirnos-20&quot;&gt;Essential ASP.NET With Examples in C#&lt;/A&gt; (&lt;A href=&quot;http://www.amazon.ca/exec/obidos/ASIN/0201760401/alexissmirn0d-20&quot;&gt;on amazon.ca&lt;/A&gt;)&lt;IMG height=150 alt=&quot;A picture named essential-aspnet.jpg&quot; hspace=15 src=&quot;http://radio.weblogs.com/0112946/images/2003/03/28/essential-aspnet.jpg&quot; width=120 align=right vspace=5 border=0&gt;&amp;nbsp;primarely based on rave reviews of wellow webloggers as well as the fact that every single book from AW .NET series was worth the money. &lt;SPAN style=&quot;FONT-SIZE: 9pt; FONT-FAMILY: Verdana&quot;&gt;This book did not disappoint.&lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt; FONT-FAMILY: Verdana&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt; FONT-FAMILY: Verdana&quot;&gt;Fritz has found the right to mix of giving the reader the theory and practical advice. The author assumes that the reader is familiar with .NET and is experienced in application design (I soooo wish more authors would make the same assumption!). &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt; FONT-FAMILY: Verdana&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt; FONT-FAMILY: Verdana&quot;&gt;This book gives an experienced developer enough background to be able to make some of the most important design decisions such as when and how to separate presentation logic in custom controls; how to manage state; what data caching option to use etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt; FONT-FAMILY: Verdana&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt; FONT-FAMILY: Verdana&quot;&gt;The flow of Essential ASP.NET is absolutely impeccable. Every detail and feature of the technology is introduced at exactly the right place. &lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;I liked the flow of the book so much I&amp;#146;ve used it to put together a presentation on ASP.NET for our team.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt; FONT-FAMILY: Verdana&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt; FONT-FAMILY: Verdana&quot;&gt;A couple of points I wish would be better:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt; FONT-FAMILY: Verdana&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt; FONT-FAMILY: Verdana&quot;&gt;- The book has no description of ASP.NET Web Services &amp;#150; the only major topic omitted. &lt;SPAN style=&quot;mso-spacerun: yes&quot;&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=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt; FONT-FAMILY: Verdana&quot;&gt;- There&amp;#146;s a few graphics in the book that suppose to illustrate processing sequences. The layout of those graphics could have been done better and didn&amp;#146;t really clarify the text they were trying to illustrate. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt; FONT-FAMILY: Verdana&quot;&gt;- The chapter on configuration spends a lot of its text describing how to work with .config files. This topic isn&amp;#146;t really specific to ASP.NET and could have been shortened.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt; FONT-FAMILY: Verdana&quot;&gt;- The author gives valuable recommendations on design choices, but most of the advice is directed towards an Internet web application developers. I wish the author would give more consideration to options relevant to Intranet developers. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt; FONT-FAMILY: Verdana&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt; FONT-FAMILY: Verdana; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-bidi-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt;Overall: highly recommended for experienced developers.&lt;/SPAN&gt;&lt;/P&gt;</description>
			<guid>http://yquem/hardball/categories/net/2003/03/28.html#a129</guid>
			<pubDate>Fri, 28 Mar 2003 12:57:31 GMT</pubDate>
			</item>
		<item>
			<link>http://yquem/hardball/categories/net/2003/03/28.html#a128</link>
			<description>&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;A href=&quot;http://www.csharphelp.com/archives2/archive442.html&quot;&gt;&lt;FONT face=Arial&gt;&lt;EM&gt;XSLT Transformations and XSLT Intellisense within the .NET IDE&lt;/EM&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;&lt;EM&gt; [via &lt;/EM&gt;&lt;/FONT&gt;&lt;A href=&quot;http://www.larkware.com/Articles/TheDailyGrind34.html&quot;&gt;&lt;FONT face=Arial&gt;&lt;EM&gt;Larkware&lt;/EM&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;&lt;EM&gt;]&lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: Arial; mso-bidi-font-style: italic&quot;&gt;&lt;o:p&gt;&lt;FONT face=Arial&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: Arial; mso-bidi-font-style: italic&quot;&gt;&lt;A href=&quot;mailto:MikeG1@larkware.com&quot;&gt;&lt;FONT face=Arial&gt;Mike Gunderloy&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-bidi-font-family: Arial&quot;&gt;&lt;FONT face=Arial&gt; continues to amaze me with his abilities to find useful tools from all over the web.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
			<guid>http://yquem/hardball/categories/net/2003/03/28.html#a128</guid>
			<pubDate>Fri, 28 Mar 2003 12:29:29 GMT</pubDate>
			</item>
		<item>
			<link>http://yquem/hardball/categories/net/2003/03/26.html#a127</link>
			<description>&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;A href=&quot;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnadvnet/html/vbnet02252003.asp&quot;&gt;&lt;EM&gt;Here&apos;s a great MSDN article&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;&amp;nbsp;on data-binding to custom types and collections of those types.&amp;nbsp;&lt;SPAN class=601245913-26032003&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&amp;nbsp;[&lt;A href=&quot;http://dotnetweblogs.com/dmarsh/posts/4275.aspx&quot;&gt;Drew&lt;/A&gt;]&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;SPAN class=601245913-26032003&gt;
&lt;DIV&gt;&lt;SPAN class=601245913-26032003&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Note to self: read this one.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=601245913-26032003&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=601245913-26032003&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Back in COM era I&apos;ve played a part in developing two extensive notification schemes for several different rich-client applications. In every case we have quickly dismissed this whole IConnectionPoint, IConnectionPointContainer nonsense for being at the same time too heavy and not comprehensive. In both cases we&apos;ve ventured in implementing our own solution still based on publisher/subscriber design pattern. In both bases it took a lot of effort to get things right.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=601245913-26032003&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=601245913-26032003&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=601245913-26032003&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;IMO&amp;nbsp;a robust notification scheme is an absolute must for every serious rich client application and it looks like .NET Framework team is taking another stab at the issue. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;</description>
			<guid>http://yquem/hardball/categories/net/2003/03/26.html#a127</guid>
			<pubDate>Wed, 26 Mar 2003 13:13:57 GMT</pubDate>
			</item>
		<item>
			<link>http://yquem/hardball/categories/net/2003/03/24.html#a126</link>
			<description>&lt;P&gt;Anyone who attempts to build ADO.NET layer that is portable from one DB to another will quickly realize that there are several holes in the library. Biggest holes are connection creation and exception handling.&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://abstractadonet.sourceforge.net/&quot;&gt;Abstract ADO.NET&lt;/A&gt; project on sourceforge is about plugging those holes. &lt;/P&gt;</description>
			<guid>http://yquem/hardball/categories/net/2003/03/24.html#a126</guid>
			<pubDate>Mon, 24 Mar 2003 13:02:00 GMT</pubDate>
			</item>
		<item>
			<link>http://yquem/hardball/categories/net/2003/03/20.html#a125</link>
			<description>&lt;P&gt;From the tool-du-jour department: &lt;A href=&quot;http://kristopherjohnson.net/cgi-bin/twiki/view/KJ/TypedCollectionGenerator&quot;&gt;Typed Collection Generator&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Here&apos;s&amp;nbsp;a neat little utility to generate strongly-typed Collections and Dictionaries. You provide collection&apos;s name and the data type for the collection values. It puts the C# collection/dictionary class in the clapboard. Works Great! Thanks &lt;A href=&quot;http://www.kristopherjohnson.net&quot;&gt;kristopherjohnson&lt;/A&gt;!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
			<guid>http://yquem/hardball/categories/net/2003/03/20.html#a125</guid>
			<pubDate>Thu, 20 Mar 2003 12:15:09 GMT</pubDate>
			</item>
		</channel>
	</rss>
