<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/"><channel><title>.NET</title><link>http://janetandkevin.com/Blog/category/3.aspx</link><description>.NET related posts.</description><managingEditor>Kevin</managingEditor><dc:language>en-US</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Kevin</dc:creator><title>Evolving Web Forms</title><link>http://janetandkevin.com/Blog/archive/2007/11/30/446.aspx</link><pubDate>Fri, 30 Nov 2007 15:51:00 GMT</pubDate><guid>http://janetandkevin.com/Blog/archive/2007/11/30/446.aspx</guid><wfw:comment>http://janetandkevin.com/Blog/comments/446.aspx</wfw:comment><comments>http://janetandkevin.com/Blog/archive/2007/11/30/446.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://janetandkevin.com/Blog/comments/commentRss/446.aspx</wfw:commentRss><trackback:ping>http://janetandkevin.com/Blog/services/trackbacks/446.aspx</trackback:ping><description>&lt;P&gt;I found the&amp;nbsp;recent article &amp;#8220;&lt;A href="http://west-wind.com/weblog/posts/198731.aspx"&gt;What's Ailing ASP.NET WEB Forms&lt;/A&gt;&amp;#8221;&amp;nbsp;by Rick Strahl to be very interesting.&amp;nbsp; I still agree that the ASP.NET server side has a strong advantage over alternate technologies, but the client needs to be richer.&amp;nbsp;&amp;nbsp;Web Forms are too simple and people are not ready to fully except&amp;nbsp;&lt;A href="http://silverlight.net/"&gt;Silverlight&lt;/A&gt; (and the control set is not there yet).&amp;nbsp; &lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Integrating &lt;/SPAN&gt;a client side framework like &lt;A href="http://extjs.com/"&gt;ExtJS&lt;/A&gt; seems like the best approach... for now.&lt;/P&gt;&lt;img src ="http://janetandkevin.com/Blog/aggbug/446.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Kevin</dc:creator><title>WPF/E?</title><link>http://janetandkevin.com/Blog/archive/2006/07/26/425.aspx</link><pubDate>Wed, 26 Jul 2006 10:34:00 GMT</pubDate><guid>http://janetandkevin.com/Blog/archive/2006/07/26/425.aspx</guid><wfw:comment>http://janetandkevin.com/Blog/comments/425.aspx</wfw:comment><comments>http://janetandkevin.com/Blog/archive/2006/07/26/425.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://janetandkevin.com/Blog/comments/commentRss/425.aspx</wfw:commentRss><trackback:ping>http://janetandkevin.com/Blog/services/trackbacks/425.aspx</trackback:ping><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;WPF/E?&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;(Where WPF = Windows Presentation Foundation and E stands for "Everywhere")&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;What is this?&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It&amp;#8217;s the supposed Flash killer.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;A plugin/extension for all browsers on all platforms that knows how to render XAML and has a mini CLR running on the client.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://channel9.msdn.com/showpost.aspx?postid=193367"&gt;http://channel9.msdn.com/showpost.aspx?postid=193367&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;&lt;o:p&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Some day maybe the client will not matter&amp;#8230;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;/o:p&gt;&lt;img src ="http://janetandkevin.com/Blog/aggbug/425.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Kevin</dc:creator><title>Quail - Query and Tail Support for Large Logfiles.</title><link>http://janetandkevin.com/Blog/archive/2006/01/27/226.aspx</link><pubDate>Fri, 27 Jan 2006 13:25:00 GMT</pubDate><guid>http://janetandkevin.com/Blog/archive/2006/01/27/226.aspx</guid><wfw:comment>http://janetandkevin.com/Blog/comments/226.aspx</wfw:comment><comments>http://janetandkevin.com/Blog/archive/2006/01/27/226.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://janetandkevin.com/Blog/comments/commentRss/226.aspx</wfw:commentRss><trackback:ping>http://janetandkevin.com/Blog/services/trackbacks/226.aspx</trackback:ping><description>&lt;P&gt;&lt;STRONG&gt;&lt;A href="http://janetandkevin.com/blog/articles/224.aspx"&gt;Quail&lt;/A&gt;&lt;/STRONG&gt; is a real-time log viewing program that I wrote to&amp;nbsp;support large files with color highlighting and search functionality.&amp;nbsp; Quail also provides a front end to LogParser enabling SQL query support for your logs.&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;Update (2/25/2006): Fixed bugs around display issues, key handling, and file reload on log rollover.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;Update (5/22/2006): Enhanced highlight feature and added load from non-working directory.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;Update (10/1/2006): Launch external commands, and window positioning added.&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://janetandkevin.com/Blog/aggbug/226.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Kevin</dc:creator><title>The Simple Way to  Read Config Options for Your App</title><link>http://janetandkevin.com/Blog/archive/2006/01/27/225.aspx</link><pubDate>Fri, 27 Jan 2006 11:25:00 GMT</pubDate><guid>http://janetandkevin.com/Blog/archive/2006/01/27/225.aspx</guid><wfw:comment>http://janetandkevin.com/Blog/comments/225.aspx</wfw:comment><comments>http://janetandkevin.com/Blog/archive/2006/01/27/225.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://janetandkevin.com/Blog/comments/commentRss/225.aspx</wfw:commentRss><trackback:ping>http://janetandkevin.com/Blog/services/trackbacks/225.aspx</trackback:ping><description>&lt;P&gt;Usually you want to control settings in your application via MetaData instead of hard coding values that may change.&amp;nbsp; With C# serialization this is so easy that you will gladly place settings in a config file.&amp;nbsp; Take the following example that I have recently been working on:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;XML Config File:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;PRE class=csharpcode&gt;&lt;SPAN class=kwrd&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN class=html&gt;xml&lt;/SPAN&gt; &lt;SPAN class=attr&gt;version&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="1.0"&lt;/SPAN&gt; &lt;SPAN class=attr&gt;encoding&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="utf-8"&lt;/SPAN&gt;?&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;Options&lt;/SPAN&gt; &lt;SPAN class=attr&gt;xmlns:xsd&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="http://www.w3.org/2001/XMLSchema"&lt;/SPAN&gt; &lt;SPAN class=attr&gt;xmlns:xsi&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="http://www.w3.org/2001/XMLSchema-instance"&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;Option&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;DefaultLogLocation&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;c:\temp\mtlog.txt&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;DefaultLogLocation&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;AutoLoadLog&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;false&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;AutoLoadLog&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;TailTimeout&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;1000&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;TailTimeout&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;MaxBytesToLoad&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;100000000&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;MaxBytesToLoad&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;BackgroundColor&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;WhiteSmoke&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;BackgroundColor&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;FilterColor&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;Teal&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;FilterColor&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;DefaultColor&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;Black&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;DefaultColor&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;Option&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightItem&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;ContainsString&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;[DEBUG&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;ContainsString&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightColor&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;Black&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightColor&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightItem&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightItem&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;ContainsString&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;[INFO&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;ContainsString&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightColor&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;Navy&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightColor&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightItem&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightItem&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;ContainsString&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;[WARNING&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;ContainsString&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightColor&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;Orange&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightColor&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightItem&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightItem&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;ContainsString&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;[ERROR&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;ContainsString&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightColor&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;DarkRed&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightColor&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightItem&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightItem&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;ContainsString&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;[FATAL&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;ContainsString&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightColor&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;Red&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightColor&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightItem&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightItem&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;ContainsString&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;***&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;ContainsString&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightColor&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;DarkRed&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightColor&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;HighlightItem&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;Options&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;C# Class to Read and Save:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;PRE class=csharpcode&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System;
&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Collections;
&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.IO;
&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Xml;
&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Xml.Serialization;
&lt;SPAN class=kwrd&gt;namespace&lt;/SPAN&gt; Quail
{
  &lt;SPAN class=rem&gt;/// &amp;lt;summary&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class=rem&gt;/// Options class which will be serialized.&lt;/SPAN&gt;
  &lt;SPAN class=rem&gt;/// &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;
  [XmlRoot(&lt;SPAN class=str&gt;"Options"&lt;/SPAN&gt;)]
  &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;class&lt;/SPAN&gt; MyOptions
  {
    [XmlElement(&lt;SPAN class=str&gt;"Option"&lt;/SPAN&gt;)]
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; Option option;
    &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; ArrayList mHighlightItems;
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; MyOptions() 
    {
      option = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Option();
      mHighlightItems = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; ArrayList();
    }
    [XmlElement(&lt;SPAN class=str&gt;"HighlightItem"&lt;/SPAN&gt;)]
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; HighlightItem[] HighlightItems 
    {
      get 
      {
        HighlightItem[] items = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; HighlightItem[ mHighlightItems.Count ];
        mHighlightItems.CopyTo( items );
        &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; items;
      }
      set 
      {
        &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt;( &lt;SPAN class=kwrd&gt;value&lt;/SPAN&gt; == &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt; ) &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt;;
        HighlightItem[] items = (HighlightItem[])&lt;SPAN class=kwrd&gt;value&lt;/SPAN&gt;;
        mHighlightItems.Clear();
        &lt;SPAN class=kwrd&gt;foreach&lt;/SPAN&gt;( HighlightItem item &lt;SPAN class=kwrd&gt;in&lt;/SPAN&gt; items )
          mHighlightItems.Add( item );
      }
    }
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; AddItem(HighlightItem item) 
    {
      &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; mHighlightItems.Add( item );
    }
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;bool&lt;/SPAN&gt; Save()
    {
      &lt;SPAN class=rem&gt;// Serialization&lt;/SPAN&gt;
      XmlSerializer s = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; XmlSerializer( &lt;SPAN class=kwrd&gt;typeof&lt;/SPAN&gt;( MyOptions ) );
      TextWriter w = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; StreamWriter( &lt;SPAN class=str&gt;@"options.xml"&lt;/SPAN&gt; );
      s.Serialize( w, &lt;SPAN class=kwrd&gt;this&lt;/SPAN&gt; );
      w.Close();
      &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;true&lt;/SPAN&gt;;
    }
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; MyOptions Load()
    {
      &lt;SPAN class=rem&gt;// Deserialization&lt;/SPAN&gt;
      XmlSerializer s = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; XmlSerializer( &lt;SPAN class=kwrd&gt;typeof&lt;/SPAN&gt;( MyOptions ) );
      MyOptions opt;
      TextReader r = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; StreamReader( &lt;SPAN class=str&gt;@"options.xml"&lt;/SPAN&gt; );
      opt = (MyOptions)s.Deserialize( r );
      r.Close();
      &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; opt;
    }
  }
  &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;class&lt;/SPAN&gt; HighlightItem 
  {
    [XmlElement(&lt;SPAN class=str&gt;"ContainsString"&lt;/SPAN&gt;)] 
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; ContainsString;
    [XmlElement(&lt;SPAN class=str&gt;"HighlightColor"&lt;/SPAN&gt;)]
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; HiglightColor;
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; HighlightItem() 
    {
    }
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; HighlightItem(&lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; containsString, &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; color) 
    {
      ContainsString = containsString;
      HiglightColor = color;
    }
  }
  &lt;SPAN class=rem&gt;// Option&lt;/SPAN&gt;
  &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;class&lt;/SPAN&gt; Option 
  {
    [XmlElement(&lt;SPAN class=str&gt;"DefaultLogLocation"&lt;/SPAN&gt;)] 
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; DefaultLogLocation = &lt;SPAN class=str&gt;@"c:\temp\mtlog.txt"&lt;/SPAN&gt;;
    [XmlElement(&lt;SPAN class=str&gt;"AutoLoadLog"&lt;/SPAN&gt;)] 
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;bool&lt;/SPAN&gt; AutoLoadLog = &lt;SPAN class=kwrd&gt;false&lt;/SPAN&gt;;
    [XmlElement(&lt;SPAN class=str&gt;"TailTimeout"&lt;/SPAN&gt;)] 
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; TailTimeout = 1000;
    [XmlElement(&lt;SPAN class=str&gt;"MaxBytesToLoad"&lt;/SPAN&gt;)] 
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;long&lt;/SPAN&gt; MaxBytesToLoad = 100000000;
    [XmlElement(&lt;SPAN class=str&gt;"BackgroundColor"&lt;/SPAN&gt;)] 
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; BackgroundColor = &lt;SPAN class=str&gt;"WhiteSmoke"&lt;/SPAN&gt;;
    [XmlElement(&lt;SPAN class=str&gt;"FilterColor"&lt;/SPAN&gt;)] 
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; FilterColor = &lt;SPAN class=str&gt;"Teal"&lt;/SPAN&gt;;
    [XmlElement(&lt;SPAN class=str&gt;"DefaultColor"&lt;/SPAN&gt;)] 
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; DefaultColor = &lt;SPAN class=str&gt;"Black"&lt;/SPAN&gt;;
  
    [XmlElement(&lt;SPAN class=str&gt;"BorderColor"&lt;/SPAN&gt;)] 
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; BorderColor = &lt;SPAN class=str&gt;"WhiteSmoke"&lt;/SPAN&gt;;
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; Option() 
    {
    }
  }
}
&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;&lt;img src ="http://janetandkevin.com/Blog/aggbug/225.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Kevin</dc:creator><title>LINQ (Language Integrated Query)</title><link>http://janetandkevin.com/Blog/archive/2005/09/25/222.aspx</link><pubDate>Sun, 25 Sep 2005 10:24:00 GMT</pubDate><guid>http://janetandkevin.com/Blog/archive/2005/09/25/222.aspx</guid><wfw:comment>http://janetandkevin.com/Blog/comments/222.aspx</wfw:comment><comments>http://janetandkevin.com/Blog/archive/2005/09/25/222.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://janetandkevin.com/Blog/comments/commentRss/222.aspx</wfw:commentRss><trackback:ping>http://janetandkevin.com/Blog/services/trackbacks/222.aspx</trackback:ping><description>&lt;P&gt;Data lives in many different places and the middle layer&amp;nbsp;is always struggling to get it together for the clients.&amp;nbsp; LINQ will allow developers to treat data in a standard way whether it is in memory or not.&amp;nbsp; Query set operations become first class citizens in the programming language allowing you to query against objects (that support&amp;nbsp;&lt;!--StartFragment --&gt; IEnumerable&lt;T&gt;&lt;/T&gt;), relational databases, or XML.&amp;nbsp; LINQ allows you to join in memory data with data in the&amp;nbsp;database.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;!--StartFragment --&gt;See: &lt;A href="http://msdn.microsoft.com/netframework/future/linq/" name=Intro&gt;&lt;FONT size=2&gt;The LINQ Project&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://janetandkevin.com/Blog/aggbug/222.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Kevin</dc:creator><title>Why AJAX?</title><link>http://janetandkevin.com/Blog/archive/2005/07/06/220.aspx</link><pubDate>Wed, 06 Jul 2005 20:20:00 GMT</pubDate><guid>http://janetandkevin.com/Blog/archive/2005/07/06/220.aspx</guid><wfw:comment>http://janetandkevin.com/Blog/comments/220.aspx</wfw:comment><comments>http://janetandkevin.com/Blog/archive/2005/07/06/220.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://janetandkevin.com/Blog/comments/commentRss/220.aspx</wfw:commentRss><trackback:ping>http://janetandkevin.com/Blog/services/trackbacks/220.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://en.wikipedia.org/wiki/AJAX"&gt;AJAX&lt;/A&gt;&amp;nbsp;or&amp;nbsp;&lt;B&gt;Asynchronous JavaScript and XML&lt;/B&gt; is by no means a new technology.&amp;nbsp; I have been using this technique to prevent page refreshes and create dynamic pages for 5 years now.&amp;nbsp; However, it seems that tossing a new acronym at technology makes people believe it will save the world.&amp;nbsp; No wait that is XML.&amp;nbsp; Alas, I'm not sure Microsoft has the right idea with the &lt;A href="http://weblogs.asp.net/scottgu/archive/2005/06/28/416185.aspx"&gt;Atlas project&lt;/A&gt;&amp;nbsp;(and they are a bit late).&amp;nbsp; To me it&amp;nbsp;seems the user is still stuck in an environment that was not created for a rich end user experience.&amp;nbsp; I have written an article (&lt;A href="http://www.janetandkevin.com/blog/projects/managedclientsidecontrols/hybrid%20client%20model.htm"&gt;Putting Performance into Your ASP.NET Application with Managed Client Side Controls&lt;/A&gt;) that proposes a work around to this problem for now.&amp;nbsp; In the end, I do think &lt;A href="http://msdn.microsoft.com/longhorn/default.aspx?pull=/library/en-us/dnlong/html/hgtomayavalonctp.asp#hgtomayavalonctp_topic1"&gt;Avalon's Express Applications&lt;/A&gt; may be the real answer (as long as we don't leave Firefox behind).&amp;nbsp; I'm not&amp;nbsp;crazy about another markup language like&amp;nbsp;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnintlong/html/longhornch03.asp"&gt;XAML&lt;/A&gt;, but often creating a&amp;nbsp;specific language can be the best way to solve a discrete problem.&lt;/P&gt;
&lt;P&gt;There is obviously&amp;nbsp;still a place for AJAX in simple web applications that require an interactive dynamic element to improve usability.&lt;/P&gt;&lt;img src ="http://janetandkevin.com/Blog/aggbug/220.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Kevin</dc:creator><title>Locality Caching</title><link>http://janetandkevin.com/Blog/archive/2005/05/10/195.aspx</link><pubDate>Tue, 10 May 2005 13:11:00 GMT</pubDate><guid>http://janetandkevin.com/Blog/archive/2005/05/10/195.aspx</guid><wfw:comment>http://janetandkevin.com/Blog/comments/195.aspx</wfw:comment><comments>http://janetandkevin.com/Blog/archive/2005/05/10/195.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://janetandkevin.com/Blog/comments/commentRss/195.aspx</wfw:commentRss><trackback:ping>http://janetandkevin.com/Blog/services/trackbacks/195.aspx</trackback:ping><description>&lt;FONT color=#ffffff size=2&gt;
&lt;P&gt;&lt;FONT face=Tahoma color=#000000&gt;A new technique I have for caching items on a web page is to use what I call Locality Caching. Locality Caching determines on it's own when to free your cached items and when to keep them around. Unlike traditional caching techniques such as file dependency, key dependency, or the guessing game of time expiration; Locality Caching knows what the user is doing. Locality Caching keeps the items of a web page cached until those pages are no longer used. This works much like a garbage collector. If a page is in scope/being used then the age of this page remains 1. If the user clicks on another page the age of the first page goes up to 2 and the new page is added to a list of pages to be freed with an age of 1. This technique insures that items that are currently being used remain cached in memory, while older pages (deemed such by the collector) are freed. The nice thing about Locality Caching is you don't have to predict what a user will do or what they will need cached. The fact that they are using a page ensures the items they will need will be cached.&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;img src ="http://janetandkevin.com/Blog/aggbug/195.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Kevin</dc:creator><title>Improving Web Service Performance</title><link>http://janetandkevin.com/Blog/archive/2005/03/14/193.aspx</link><pubDate>Mon, 14 Mar 2005 12:55:00 GMT</pubDate><guid>http://janetandkevin.com/Blog/archive/2005/03/14/193.aspx</guid><wfw:comment>http://janetandkevin.com/Blog/comments/193.aspx</wfw:comment><comments>http://janetandkevin.com/Blog/archive/2005/03/14/193.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://janetandkevin.com/Blog/comments/commentRss/193.aspx</wfw:commentRss><trackback:ping>http://janetandkevin.com/Blog/services/trackbacks/193.aspx</trackback:ping><description>&lt;P&gt;Improve your web service performance by supporting zip compression.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://janetandkevin.com/blog/articles/189.aspx"&gt;Improving Web Service Perfomance Article&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://janetandkevin.com/Blog/aggbug/193.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Kevin</dc:creator><title>Reverse a char array in C# with XOR</title><link>http://janetandkevin.com/Blog/archive/2005/01/27/190.aspx</link><pubDate>Thu, 27 Jan 2005 22:00:00 GMT</pubDate><guid>http://janetandkevin.com/Blog/archive/2005/01/27/190.aspx</guid><wfw:comment>http://janetandkevin.com/Blog/comments/190.aspx</wfw:comment><comments>http://janetandkevin.com/Blog/archive/2005/01/27/190.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://janetandkevin.com/Blog/comments/commentRss/190.aspx</wfw:commentRss><trackback:ping>http://janetandkevin.com/Blog/services/trackbacks/190.aspx</trackback:ping><description>&lt;FONT color=#0000ff&gt;
&lt;P&gt;&lt;FONT face=Tahoma color=#000000 size=2&gt;Here's a neat trick.&amp;nbsp; Use XOR operations to&amp;nbsp;reverse a char array without using a temporary variable.&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=1&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=1&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; ReverseIt(&lt;FONT color=#0000ff&gt;ref&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;char&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;[] c)&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=1&gt;{&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT face="Courier New" color=#0000ff&gt;&amp;nbsp; int&lt;/FONT&gt;&lt;FONT face="Courier New"&gt; l = c.Length - 1;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff&gt;&lt;BR&gt;&amp;nbsp; for&lt;/FONT&gt;(&lt;FONT color=#0000ff&gt;int&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt; i=0; i&amp;lt;l; i++, l--)&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=1&gt;&amp;nbsp; {&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c[i] ^= c[l]; &lt;/FONT&gt;&lt;FONT color=#008000&gt;&lt;FONT face="Courier New"&gt;// xor trick&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=1&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c[l] ^= c[i];&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=1&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c[i] ^= c[l];&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=1&gt;&amp;nbsp; }&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=1&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://janetandkevin.com/Blog/aggbug/190.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Kevin</dc:creator><title>Top 10 things to be thankful for in .NET</title><link>http://janetandkevin.com/Blog/archive/2004/12/03/188.aspx</link><pubDate>Fri, 03 Dec 2004 23:22:00 GMT</pubDate><guid>http://janetandkevin.com/Blog/archive/2004/12/03/188.aspx</guid><wfw:comment>http://janetandkevin.com/Blog/comments/188.aspx</wfw:comment><comments>http://janetandkevin.com/Blog/archive/2004/12/03/188.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://janetandkevin.com/Blog/comments/commentRss/188.aspx</wfw:commentRss><trackback:ping>http://janetandkevin.com/Blog/services/trackbacks/188.aspx</trackback:ping><description>I came across the top 10 things to be thankful for in .NET.&amp;nbsp; It's pretty funny.&amp;nbsp; &lt;A href="http://www.theserverside.net/cartoons/Top10_NET_Thankful/Top10_NET_Thankful.swf"&gt;Check it out&lt;/A&gt;.&lt;img src ="http://janetandkevin.com/Blog/aggbug/188.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>