<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>XML/XSLT</title>
        <link>http://ridgway.co.za/category/17.aspx</link>
        <description>XML/XSLT</description>
        <language>en-ZA</language>
        <copyright>Eden Ridgway</copyright>
        <managingEditor>eden@ridgway.co.za</managingEditor>
        <generator>Subtext Version 1.9.5.176</generator>
        <item>
            <title>Useful SourceMonitor Reports in CruiseControl</title>
            <link>http://ridgway.co.za/archive/2006/11/28/usefulsourcemonitorreportsincruisecontrol.aspx</link>
            <description>&lt;p&gt; &lt;span lang="EN-ZA"&gt;The ideas in this post were inspired by the work done by Robin Curry in his post &lt;/span&gt;&lt;a href="http://www.robincurry.org/blog/IntegratingSourceMonitorCodeMetricsIntoAnNAntCruiseControlNETBuild.aspx"&gt;Integrating SourceMonitor Code Metrics Into An NAnt / CruiseControl.NET Build&lt;/a&gt;.&lt;span&gt;  &lt;/span&gt;He did some great work and I would like to express my gratitude. &lt;/p&gt;
&lt;p&gt; Unfortunately I found that those CruiseControl stylesheets gave me far too much information.&lt;span&gt;  &lt;/span&gt;The summary data that SourceMonitor produces also is not as useful as it could be.&lt;span&gt;  &lt;/span&gt;What I wanted on my build server was a way to quickly glance at the state of the code on a project and to identify code that needed to be reviewed or refactored.&lt;span&gt;  &lt;/span&gt;At the end of the day the only information I was really interested in was the code complexity and how deeply nested the code blocks were.&lt;span&gt;  &lt;/span&gt; &lt;/p&gt;
&lt;p&gt; The other problem with the SourceMonitor output is that, depending on the size of the project, it could be between 100K and 300K and if you multiply that by the number of projects and checkins on your build server it quickly adds up.&lt;span&gt;  &lt;/span&gt;At my company it would amount to about 20MB a day.&lt;span&gt;  &lt;/span&gt;I therefore decided to take &lt;a href="http://www.kiwidude.com/blog"&gt;Grant Drake&lt;/a&gt;’s NCoverExplorer&lt;span&gt;  &lt;/span&gt;approach and &lt;span lang="EN-ZA"&gt;summarise&lt;/span&gt; the output before integrating it with CruiseControl.&lt;span&gt;  &lt;/span&gt;To do this I created a simple stylesheet that is run after creating a detailed SourceMonitor report. &lt;/p&gt;
&lt;p&gt; The end result of all that work is a report that looks like this: &lt;/p&gt;
&lt;p&gt; &lt;o:p&gt; &lt;/o:p&gt; &lt;img border="0" src="http://ridgway.co.za/images/ridgway_co_za/SourceMonitorReportSmall.jpg" alt="" /&gt; &lt;/p&gt;
&lt;p&gt; To get all this to work you need to do the following: &lt;/p&gt;
&lt;ol type="1" style="margin-top: 0cm;"&gt;
    &lt;li&gt; Copy the file &lt;a href="http://www.ridgway.co.za/Images/ridgway_co_za/SourceMonitor.xsl"&gt;SourceMonitor.xsl (2.88 KB)&lt;/a&gt; into your CruiseControl.Net\webdashboard\xsl folder.  &lt;/li&gt;
    &lt;li&gt; Add the following line to the dashboard.config (in CruiseControl.Net\webdashboard).&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="code"&gt; &lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;buildPlugins&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;   &lt;br /&gt;
&lt;/font&gt;&lt;font color="darkgreen"&gt;&amp;lt;!-- Summary reports --&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;buildLogBuildPlugin&lt;/font&gt;&lt;font color="red"&gt; &lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="darkgreen"&gt;&amp;lt;!-- Other detail reports --&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xslReportBuildPlugin&lt;/font&gt;&lt;font color="red"&gt; description&lt;/font&gt;&lt;font color="blue"&gt;="SourceMonitor Report"&lt;/font&gt;&lt;font color="red"&gt; actionName&lt;/font&gt;&lt;font color="blue"&gt;="SourceMonitorReport"&lt;/font&gt;&lt;font color="red"&gt; xslFileName&lt;/font&gt;&lt;font color="blue"&gt;="xsl\SourceMonitor.xsl"&lt;/font&gt;&lt;font color="red"&gt; &lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;buildPlugins&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;/font&gt; 	&lt;/div&gt;
&lt;ol type="1" start="3" style="margin-top: 0cm;"&gt;
    &lt;li&gt; Copy the file &lt;a href="http://www.ridgway.co.za/Images/ridgway_co_za/SourceMonitorSummaryGeneration.xsl"&gt;SourceMonitorSummaryGeneration.xsl (2.18 KB)&lt;/a&gt; to your build script folder or a common location.  &lt;/li&gt;
    &lt;li&gt; Ensure that you have installed MsBuild Community Tasks available at &lt;a href="http://msbuildtasks.tigris.org/"&gt;http://msbuildtasks.tigris.org/&lt;/a&gt;.&lt;span&gt;  &lt;/span&gt;You also need to ensure that you have imported the Community Task targets in your build file:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="code"&gt; &lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;Import&lt;/font&gt;&lt;font color="red"&gt; Project&lt;/font&gt;&lt;font color="blue"&gt;="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"&lt;/font&gt;&lt;font color="red"&gt; &lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;/font&gt; 	&lt;/div&gt;
&lt;ol type="1" start="5" style="margin-top: 0cm;"&gt;
    &lt;li&gt; Add the following to your MsBuild script and call the RunSourceMonitor target.&lt;span&gt;  &lt;/span&gt;Substitute the paths depending on your project directory structure and the location of the xsl file above.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="code"&gt;  &lt;font color="darkgreen"&gt;&amp;lt;!-- Source Monitor Command File --&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;PropertyGroup&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;SourceMonitorCommand&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;![CDATA[&lt;br /&gt;
&lt;/font&gt;&lt;font color="red"&gt;         &amp;lt;?xml version&lt;/font&gt;&lt;font color="blue"&gt;='1.0'&lt;/font&gt;&lt;font color="red"&gt; encoding&lt;/font&gt;&lt;font color="blue"&gt;='UTF-8'&lt;/font&gt;&lt;font color="red"&gt; ?&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;sourcemonitor_commands&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;write_log&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;false&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;write_log&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;command&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;project_file&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;TempProject.smp&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;project_file&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;project_language&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;CSharp&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;project_language&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;source_directory&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;..\&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;source_directory&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;include_subdirectories&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;true&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;include_subdirectories&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;export&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;export_file&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;..\SourceMonitorDetailedOutput.xml&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;export_file&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;export_type&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;2&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;export_type&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;export&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;command&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;sourcemonitor_commands&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;SourceMonitorCommand&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;PropertyGroup&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;font color="darkgreen"&gt;&amp;lt;!-- Runs the source monitor metrics program and creates a summarised report for CruiseControl--&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;Target&lt;/font&gt;&lt;font color="red"&gt; Name&lt;/font&gt;&lt;font color="blue"&gt;="RunSourceMonitor"&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;font color="darkgreen"&gt;&amp;lt;!-- Create the command file --&amp;gt;  &lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;WriteLinesToFile&lt;/font&gt;&lt;font color="red"&gt; &lt;br /&gt;
File&lt;/font&gt;&lt;font color="blue"&gt;="SourceMonitorCommands.xml"&lt;/font&gt;&lt;font color="red"&gt; &lt;br /&gt;
Lines&lt;/font&gt;&lt;font color="blue"&gt;="$(SourceMonitorCommand)"&lt;/font&gt;&lt;font color="red"&gt; &lt;br /&gt;
Overwrite&lt;/font&gt;&lt;font color="blue"&gt;="true"&lt;/font&gt;&lt;font color="red"&gt; &lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;font color="darkgreen"&gt;&amp;lt;!-- SourceMonitor Metrics --&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;Exec&lt;br /&gt;
&lt;/font&gt;&lt;font color="red"&gt;       Command&lt;/font&gt;&lt;font color="blue"&gt;="&amp;amp;quote;C:\Program&lt;/font&gt;&lt;font color="red"&gt; Files\SourceMonitor\SourceMonitor.exe&lt;/font&gt;&lt;font color="blue"&gt;&amp;amp;quote;&lt;/font&gt;&lt;font color="blue"&gt; /C SourceMonitorCommands.xml"&lt;/font&gt;&lt;font color="red"&gt; &lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;font color="darkgreen"&gt;&amp;lt;!-- Convert the SourceMonitor Output into a more usable summarised version --&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;Xslt&lt;/font&gt;&lt;font color="red"&gt; &lt;br /&gt;
Inputs&lt;/font&gt;&lt;font color="blue"&gt;="..\SourceMonitorDetailedOutput.xml"&lt;/font&gt;&lt;font color="red"&gt;&lt;br /&gt;
Xsl&lt;/font&gt;&lt;font color="blue"&gt;="SourceMonitorSummaryGeneration.xsl"&lt;/font&gt;&lt;font color="red"&gt; &lt;br /&gt;
Output&lt;/font&gt;&lt;font color="blue"&gt;="..\SourceMonitorResults.xml"&lt;/font&gt;&lt;font color="red"&gt; &lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;font color="darkgreen"&gt;&amp;lt;!-- Remove the intermediate files --&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;Delete&lt;/font&gt;&lt;font color="red"&gt; Files&lt;/font&gt;&lt;font color="blue"&gt;="..\SourceMonitorDetailedOutput.xml;TempProject.smp;SourceMonitorCommands.xml"&lt;/font&gt;&lt;font color="red"&gt; &lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;Target&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;/font&gt; 	&lt;/div&gt;
&lt;ol type="1" start="6" style="margin-top: 0cm;"&gt;
    &lt;li&gt; Make sure you are integrating the XML output into your CruiseControl report.&lt;span&gt;  &lt;/span&gt;I set it up so that all files ending with Results.xml are included.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="code"&gt; &lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;publishers&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;merge&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;files&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;file&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;*Results.xml&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;file&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;files&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;merge&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;publishers&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;/font&gt; 	&lt;/div&gt;
&lt;p&gt; And viola you should have your summarised SourceMonitor view of the 15 most complex and deeply nested pieces of code for your current system. &lt;/p&gt;
&lt;p&gt; I hope that you find this useful.&lt;br /&gt;
&lt;/p&gt;&lt;img src="http://ridgway.co.za/aggbug/171.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Eden Ridgway</dc:creator>
            <guid>http://ridgway.co.za/archive/2006/11/28/usefulsourcemonitorreportsincruisecontrol.aspx</guid>
            <pubDate>Tue, 28 Nov 2006 01:09:28 GMT</pubDate>
            <comments>http://ridgway.co.za/archive/2006/11/28/usefulsourcemonitorreportsincruisecontrol.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://ridgway.co.za/comments/commentRss/171.aspx</wfw:commentRss>
        </item>
        <item>
            <title>AJAX Sites</title>
            <link>http://ridgway.co.za/archive/2005/09/10/ajaxsites.aspx</link>
            <description>&lt;p&gt;
The following AJAX related sites/posting are quite interesting:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Dan Grossman blogged about the &lt;a href="http://www.aventureforth.com/?p=13"&gt;top 10
AJAX applications&lt;/a&gt; that he's seen  
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.backbase.com/"&gt;Backbase&lt;/a&gt; sells AJAX .Net controls
which could be quite useful &lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.ajaxian.com/"&gt;Ajaxian&lt;/a&gt; is a blog containing a list of
AJAX sites and developments&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Playing with a few of the AJAX applications and controls it would appear that quite
a few of the authors have not made the XMLHttp calls work asynchronously because the
browser locks while processing which kind of defeats the purpose of AJAX in my opinion. 
If the browser is unresponsive while processing a call to the server you might as
well post the whole page back to the server.
&lt;/p&gt;
&lt;img src="http://ridgway.co.za/aggbug/130.aspx" width="1" height="1" /&gt;</description>
            <guid>http://ridgway.co.za/archive/2005/09/10/ajaxsites.aspx</guid>
            <pubDate>Sat, 10 Sep 2005 01:24:31 GMT</pubDate>
            <comments>http://ridgway.co.za/archive/2005/09/10/ajaxsites.aspx#feedback</comments>
            <wfw:commentRss>http://ridgway.co.za/comments/commentRss/130.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Xml Serialization - Useful Information</title>
            <link>http://ridgway.co.za/archive/2005/09/08/xmlserializationusefulinformation.aspx</link>
            <description>&lt;p&gt;
Lately I've been dealing with a fair amount of XML serialization and since I know
that I'll need this information again, I'm going to blog it.  Here are useful
sites:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.sellsbrothers.com/tools/#XmlSerializerPreCompiler"&gt;XmlSerializerPreCompiler&lt;/a&gt; -
allows you to find out why that &lt;font color="#000000"&gt;darn&lt;/font&gt; object won't serialize
:) 
&lt;/li&gt;&lt;li&gt;
The &lt;a href="http://weblogs.asp.net/cazzu/archive/2003/10/27/33693.aspx"&gt;IXmlSerializable&lt;/a&gt; interface
- can potentially be used to validate the stream before serialization&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Adding the following to you config file will generate the serialization class in C:\Documents
and Settings\[YourMachineName]\ASPNET\Local Settings\Temp or C:\Documents and Settings\[YourMachineName]\[Current
User]\Local Settings\Temp (information from &lt;a href="http://weblogs.asp.net/cazzu/posts/32822.aspx"&gt;Daniel
Cazzulino&lt;/a&gt;)
&lt;/p&gt;
&lt;div class="code"&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;system.diagnostics&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;
&lt;br /&gt;
  &lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;switches&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;
&lt;br /&gt;
    &lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;add&lt;/font&gt;&lt;font color="red"&gt; name&lt;/font&gt;&lt;font color="blue"&gt;="XmlSerialization.Compilation"&lt;/font&gt;&lt;font color="red"&gt; value&lt;/font&gt;&lt;font color="blue"&gt;="4"/&amp;gt;&lt;br /&gt;
  &amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;switches&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;system.diagnostics&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;/font&gt; 
&lt;/div&gt;
&lt;img src="http://ridgway.co.za/aggbug/128.aspx" width="1" height="1" /&gt;</description>
            <guid>http://ridgway.co.za/archive/2005/09/08/xmlserializationusefulinformation.aspx</guid>
            <pubDate>Thu, 08 Sep 2005 06:47:09 GMT</pubDate>
            <comments>http://ridgway.co.za/archive/2005/09/08/xmlserializationusefulinformation.aspx#feedback</comments>
            <wfw:commentRss>http://ridgway.co.za/comments/commentRss/128.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Autogenerating a Normal Class and not a Strongly Typed Dataset from an XSD</title>
            <link>http://ridgway.co.za/archive/2005/08/09/autogeneratinganormalclassandnotastronglytypeddataset.aspx</link>
            <description>&lt;p&gt;
The xsd.exe .Net SDK utility is seemingly not well known.  I knew that it could
be used to generate an XSD from an XML example, but I had never used it to generate
a serializable C# class.  This turns out to be exactly what is needed on a project
I'm currently working on.
&lt;/p&gt;
&lt;p&gt;
To get the xsd utility (possibly found at C:\Program Files\Microsoft.NET\SDK\v1.1\Bin)
to generate a class, uses the following command:
&lt;/p&gt;
&lt;p class="code"&gt;
xsd.exe /c SourceSchema.xsd
&lt;/p&gt;
&lt;p&gt;
The code it will generate will look something like this:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;font color="darkgreen"&gt;//------------------------------------------------------------------------------&lt;br /&gt;
// &amp;lt;autogenerated&amp;gt;&lt;br /&gt;
//     This code was generated by a tool.&lt;br /&gt;
//     Runtime Version: 1.1.4322.2032&lt;br /&gt;
//&lt;br /&gt;
//     Changes to this file may cause incorrect behavior and will be lost if &lt;br /&gt;
//     the code is regenerated.&lt;br /&gt;
// &amp;lt;/autogenerated&amp;gt;&lt;br /&gt;
//------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
// &lt;br /&gt;
// This source code was auto-generated by xsd, Version=1.1.4322.2032.&lt;br /&gt;
// &lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;using &lt;/font&gt;&lt;font color="black"&gt;System.Xml.Serialization&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;font color="darkgreen"&gt;/// &amp;lt;remarks/&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="black"&gt;[System.Xml.Serialization.XmlRootAttribute(Namespace&lt;/font&gt;&lt;font color="blue"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;""&lt;/font&gt;&lt;font color="black"&gt;, IsNullable&lt;/font&gt;&lt;font color="blue"&gt;=false&lt;/font&gt;&lt;font color="black"&gt;)]&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;public class &lt;/font&gt;&lt;font color="black"&gt;CreateApplication {&lt;br /&gt;
    &lt;br /&gt;
    &lt;/font&gt;&lt;font color="darkgreen"&gt;/// &amp;lt;remarks/&amp;gt;&lt;br /&gt;
    &lt;/font&gt;&lt;font color="black"&gt;[System.Xml.Serialization.XmlElementAttribute(&lt;/font&gt;&lt;font color="#808080"&gt;"CreatedApplications"&lt;/font&gt;&lt;font color="black"&gt;)]&lt;br /&gt;
    &lt;/font&gt;&lt;font color="blue"&gt;public &lt;/font&gt;&lt;font color="black"&gt;CreateApplicationOutput[] CreatedApplications&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;font color="darkgreen"&gt;/// &amp;lt;remarks/&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;font color="blue"&gt;public class &lt;/font&gt;&lt;font color="black"&gt;CreateApplicationOutput {&lt;br /&gt;
    &lt;br /&gt;
    &lt;/font&gt;&lt;font color="darkgreen"&gt;/// &amp;lt;remarks/&amp;gt;&lt;br /&gt;
    &lt;/font&gt;&lt;font color="blue"&gt;public string &lt;/font&gt;&lt;font color="black"&gt;Account&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
&lt;br /&gt;
    &lt;/font&gt;&lt;font color="darkgreen"&gt;/// &amp;lt;remarks/&amp;gt;&lt;br /&gt;
    &lt;/font&gt;&lt;font color="blue"&gt;public object &lt;/font&gt;&lt;font color="black"&gt;ApplicationID&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
&lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt; 
&lt;/div&gt;
&lt;p&gt;
You should also read the following relevant articles:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnexxml/html/xml01202003.asp"&gt;Xml
Serialization in the .Net Framework&lt;/a&gt; 
&lt;/li&gt;&lt;li&gt;
&lt;a href="http://www.dotnetjohn.com/articles.aspx?articleid=173"&gt;Xml Serialization
using C#&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://ridgway.co.za/aggbug/116.aspx" width="1" height="1" /&gt;</description>
            <guid>http://ridgway.co.za/archive/2005/08/09/autogeneratinganormalclassandnotastronglytypeddataset.aspx</guid>
            <pubDate>Tue, 09 Aug 2005 15:18:04 GMT</pubDate>
            <comments>http://ridgway.co.za/archive/2005/08/09/autogeneratinganormalclassandnotastronglytypeddataset.aspx#feedback</comments>
            <wfw:commentRss>http://ridgway.co.za/comments/commentRss/116.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>