<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" 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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>JP Hellemons</title>
    <description>Building E-commerce webapps</description>
    <link>http://www.jphellemons.nl/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 2.5.0.6</generator>
    <language>en-US</language>
    <blogChannel:blogRoll>http://www.jphellemons.nl/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
    <dc:creator>JP Hellemons</dc:creator>
    <dc:title>JP Hellemons</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/JpHellemons" /><feedburner:info uri="jphellemons" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><item>
      <title>Make your own Wordfeud helper</title>
      <description>&lt;p&gt;&lt;a href="http://www.jphellemons.nl/image.axd?picture=image_13.png" rel="lightbox"&gt;&lt;img style="background-image: none; margin: 0px 0px 0px 40px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="image" src="http://www.jphellemons.nl/image.axd?picture=image_thumb_12.png" alt="image" width="333" height="283" align="right" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Scrabble is funny, and to play it with friends even more. Especially because you can spread the game throughout your day. But I am a coder, I like math more than words. So to keep up with this Wordfeud trend, I need help. So why not code a helper?&lt;/p&gt;
&lt;p&gt;I only use the Dutch library which is a modified version of opentaal. I downloaded the &amp;lsquo;opentaal&amp;rsquo; library from this url:&lt;/p&gt;
&lt;p&gt;&lt;a title="http://www.opentaal.org/bestanden/doc_download/18-woordenlijst-v-210g-bronbestanden-" href="http://www.opentaal.org/bestanden/doc_download/18-woordenlijst-v-210g-bronbestanden-"&gt;http://www.opentaal.org/bestanden/doc_download/18-woordenlijst-v-210g-bronbestanden-&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;and used the following 48 lines of C# code to make a small helper.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class="brush: csharp; toolbar: false; auto-links: false;"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.IO;

namespace Opentaal
{
    public partial class Form1 : Form
    {
        private static List&amp;lt;string&amp;gt; _lijst;

        public Form1()
        {
            _lijst = File.ReadLines("OpenTaal.txt").ToList();
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Length &amp;gt; 0)
            {
                string zt = textBox1.Text.Trim(); // search parameter
                switch (comboBox1.SelectedItem.ToString())
                {
                    case "Begint met":
                        ShowFound(_lijst.Where(p =&amp;gt; p.StartsWith(zt)).ToList());
                        break;
                    case "Eindigt op":
                        ShowFound(_lijst.Where(p =&amp;gt; p.EndsWith(zt)).ToList());
                        break;
                    case "Bevat":
                        ShowFound(_lijst.Where(p =&amp;gt; p.Contains(zt)).ToList());
                        break;
                }
            }
        }

        private void ShowFound(List&amp;lt;string&amp;gt; l)
        {
            textBox2.Clear(); // for second search
            foreach (string st in l.OrderBy(s =&amp;gt; s)) // order by alfabet 
                textBox2.Text += st + Environment.NewLine;
            int eind = textBox2.Text.LastIndexOf(Environment.NewLine);
            textBox2.Text = textBox2.Text.Substring(0, eind); // remove last linebreak
        }
    }
}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You can take this code and make more search options. Please note that the opentaal library is released under a creative commons license.&lt;/p&gt;
&lt;div id="scid:F60BB8FA-6F02-4999-8F5E-9DD4E92C4DA7:3d7d1be6-7ada-4ce4-8082-f81210d03136" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;"&gt;
&lt;div&gt;&lt;a href="http://www.jphellemons.nl/file.axd?file=Opentaal.zip" target="_self"&gt;Download the Visual Studio project as zip&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://www.jphellemons.nl/post/Make-your-own-Wordfeud-helper.aspx&amp;amp;title=Make your own Wordfeud helper" target="_blank"&gt; &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.jphellemons.nl/post/Make-your-own-Wordfeud-helper.aspx" alt="kick it on DotNetKicks.com" border="0" /&gt; &lt;/a&gt;&lt;a href="http://dotnetshoutout.com/Submit?url=http://www.jphellemons.nl/post/Make-your-own-Wordfeud-helper.aspx&amp;amp;title=Make your own Wordfeud helper" rev="vote-for" target="_blank"&gt; &lt;img style="border: 0px;" src="http://dotnetshoutout.com/image.axd?url=http://www.jphellemons.nl/post/Make-your-own-Wordfeud-helper.aspx" alt="Shout it" /&gt; &lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=AhvELTssQ4k:RjNKV397R3A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=AhvELTssQ4k:RjNKV397R3A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JpHellemons/~4/AhvELTssQ4k" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/JpHellemons/~3/AhvELTssQ4k/post.aspx</link>
      <comments>http://www.jphellemons.nl/post/Make-your-own-Wordfeud-helper.aspx#comment</comments>
      <guid isPermaLink="false">http://www.jphellemons.nl/post.aspx?id=e2b7d14d-9071-430d-93e4-fad8c71f6667</guid>
      <pubDate>Fri, 24 Feb 2012 18:04:00 +0100</pubDate>
      <category>C#</category>
      <category>WinForms</category>
      <dc:publisher>capsoft</dc:publisher>
      <pingback:server>http://www.jphellemons.nl/pingback.axd</pingback:server>
      <pingback:target>http://www.jphellemons.nl/post.aspx?id=e2b7d14d-9071-430d-93e4-fad8c71f6667</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.jphellemons.nl/trackback.axd?id=e2b7d14d-9071-430d-93e4-fad8c71f6667</trackback:ping>
      <wfw:comment>http://www.jphellemons.nl/post/Make-your-own-Wordfeud-helper.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.jphellemons.nl/syndication.axd?post=e2b7d14d-9071-430d-93e4-fad8c71f6667</wfw:commentRss>
    <feedburner:origLink>http://www.jphellemons.nl/post.aspx?id=e2b7d14d-9071-430d-93e4-fad8c71f6667</feedburner:origLink></item>
    <item>
      <title>Browser speed test 2012</title>
      <description>&lt;p&gt;How fast are we today? More and more web applications are using JavaScript to improve the UX (User eXperience) Almost all websites use frameworks like &lt;a href="http://jquery.com/" target="_blank"&gt;jQuery&lt;/a&gt; and &lt;a href="http://mootools.net/" target="_blank"&gt;mooTools&lt;/a&gt;, &lt;a href="http://www.sencha.com/products/extjs/" target="_blank"&gt;extJs&lt;/a&gt; etc. for this. So it is important that our browsers are fast with JavaScript!&lt;/p&gt;  &lt;p&gt;Browsers are updated more often because they are more important every day. Since I have several extensions for Chrome and Firefox, it’s not fair to compare RAM usage. So I only looked at JavaScript performance. A way to compare it, is to run SunSpider &lt;a title="http://www.webkit.org/perf/sunspider/sunspider.html" href="http://www.webkit.org/perf/sunspider/sunspider.html"&gt;http://www.webkit.org/perf/sunspider/sunspider.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So I run all my installed browsers with my Centrino 2 cpu, win7sp1x64 and here are &lt;u&gt;my&lt;/u&gt; results, run with &lt;u&gt;my&lt;/u&gt; hardware.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.jphellemons.nl/image.axd?picture=image_12.png" rel="lightbox"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.jphellemons.nl/image.axd?picture=image_thumb_11.png" width="599" height="228" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;table border="0" cellpadding="2" width="592"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="510"&gt;Internet Explorer 9.0.8112.16421&lt;/td&gt;        &lt;td valign="top" width="80"&gt;220ms&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="510"&gt;Internet Explorer 10 platform preview 2.10.1008.16421)&lt;/td&gt;        &lt;td valign="top" width="80"&gt;234ms&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="510"&gt;Firefox 11 beta&lt;/td&gt;        &lt;td valign="top" width="80"&gt;250ms&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="510"&gt;Opera 11.61 (build 1250)&lt;/td&gt;        &lt;td valign="top" width="80"&gt;255ms&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="510"&gt;Safari 5.1 (7534.50)&lt;/td&gt;        &lt;td valign="top" width="80"&gt;257ms&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="510"&gt;Chrome 17.0.963.46 beta-m&lt;/td&gt;        &lt;td valign="top" width="80"&gt;277ms&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;   &lt;br /&gt;As you can see, &lt;strong&gt;the results are very similar these days&lt;/strong&gt;. So if you have an up-to-date browser, your fine.&lt;/p&gt;  &lt;p&gt;Also check out this blog from 2 years ago:    &lt;br /&gt;&lt;a title="http://lifehacker.com/5457242/browser-speed-tests-firefox-36-chrome-4-opera-105-and-extensions" href="http://lifehacker.com/5457242/browser-speed-tests-firefox-36-chrome-4-opera-105-and-extensions"&gt;http://lifehacker.com/5457242/browser-speed-tests-firefox-36-chrome-4-opera-105-and-extensions&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And if someone is still using IE6 or 7, please upgrade a.s.a.p. check out the &lt;a href="http://crashie.ajaxmasters.com/" target="_blank"&gt;kill bill’s browser website&lt;/a&gt; if you are not convinced.&lt;/p&gt;  &lt;p&gt;Enjoy your browser!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=KEjGFZTWDp4:sq4F6Nbymok:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=KEjGFZTWDp4:sq4F6Nbymok:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JpHellemons/~4/KEjGFZTWDp4" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/JpHellemons/~3/KEjGFZTWDp4/post.aspx</link>
      <comments>http://www.jphellemons.nl/post/Browser-speed-test-2012.aspx#comment</comments>
      <guid isPermaLink="false">http://www.jphellemons.nl/post.aspx?id=18c1bf66-6c3d-4dfe-a04f-81e0f895b7c3</guid>
      <pubDate>Thu, 09 Feb 2012 23:41:00 +0100</pubDate>
      <category>Tools</category>
      <dc:publisher>capsoft</dc:publisher>
      <pingback:server>http://www.jphellemons.nl/pingback.axd</pingback:server>
      <pingback:target>http://www.jphellemons.nl/post.aspx?id=18c1bf66-6c3d-4dfe-a04f-81e0f895b7c3</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.jphellemons.nl/trackback.axd?id=18c1bf66-6c3d-4dfe-a04f-81e0f895b7c3</trackback:ping>
      <wfw:comment>http://www.jphellemons.nl/post/Browser-speed-test-2012.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.jphellemons.nl/syndication.axd?post=18c1bf66-6c3d-4dfe-a04f-81e0f895b7c3</wfw:commentRss>
    <feedburner:origLink>http://www.jphellemons.nl/post.aspx?id=18c1bf66-6c3d-4dfe-a04f-81e0f895b7c3</feedburner:origLink></item>
    <item>
      <title>Testdrive Windows 8</title>
      <description>&lt;p&gt;It is always nice when there is a new version available from an operating system! I am currently using Windows 7 as primary OS on my development machine for Asp.Net development. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; Before you start, make sure that you have a &lt;a href="https://signup.live.com/" target="_blank"&gt;Live ID&lt;/a&gt; and a powerful machine to run virtualization software!&lt;/p&gt;  &lt;p&gt;I have downloaded this ISO from Microsoft.com:&lt;/p&gt;  &lt;p&gt;Windows 8 Developer Preview with developer tools English, 64-bit (x64)&lt;/p&gt;  &lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/windows/apps/br229516" href="http://msdn.microsoft.com/en-us/windows/apps/br229516"&gt;http://msdn.microsoft.com/en-us/windows/apps/br229516&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I have tried dual boot solutions several times. With Ubuntu, Fedora etc. But this time, I didn’t want to come near a boot loader. So my only option was virtually. Even though when I read a nice post about &lt;a href="http://www.hanselman.com/blog/GuideToInstallingAndBootingWindows8DeveloperPreviewOffAVHDVirtualHardDisk.aspx" target="_blank"&gt;attaching a *.vhd&lt;/a&gt; file. My favorite and easiest virtualization software (&lt;a href="http://www.microsoft.com/windows/virtual-pc/" target="_blank"&gt;Microsoft Virtual PC&lt;/a&gt;) didn’t want to run this ISO. So I had to use different virtualization software. I decided to go with &lt;a href="http://www.vmware.com/go/get-player" target="_blank"&gt;VMware player&lt;/a&gt;. VMware player is free, it only requires a registration, but that is totally worth it! VMware has a lot of experience with virtualization software, but upgrading from 4.0 to 4.0.1 is really annoying, because of all the reboots. It took me a lot of time. (I have a 2,5 year old notebook)&lt;/p&gt;  &lt;p&gt;When you install Windows 8 in VMware you can get an error because it requires a product key. After searching the web for a while, I found a good workaround which is to disable the floppy disk reader in VMware. &lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.jphellemons.nl/image.axd?picture=image_11.png" width="567" height="321" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Have fun testing Windows 8 with VMware!&lt;/p&gt;  &lt;p&gt;A few screenshots:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.jphellemons.nl/image.axd?picture=dev-prev1.jpg" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="dev-prev1" border="0" alt="dev-prev1" src="http://www.jphellemons.nl/image.axd?picture=dev-prev1_thumb.jpg" width="605" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.jphellemons.nl/image.axd?picture=dev-prev2.jpg" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="dev-prev2" border="0" alt="dev-prev2" src="http://www.jphellemons.nl/image.axd?picture=dev-prev2_thumb.jpg" width="595" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.jphellemons.nl/image.axd?picture=dev-prev3.jpg" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="dev-prev3" border="0" alt="dev-prev3" src="http://www.jphellemons.nl/image.axd?picture=dev-prev3_thumb.jpg" width="595" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.jphellemons.nl/image.axd?picture=dev-prev4.jpg" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="dev-prev4" border="0" alt="dev-prev4" src="http://www.jphellemons.nl/image.axd?picture=dev-prev4_thumb.jpg" width="605" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=tleKz-h5na0:mo32Kgi_JZs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=tleKz-h5na0:mo32Kgi_JZs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JpHellemons/~4/tleKz-h5na0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/JpHellemons/~3/tleKz-h5na0/post.aspx</link>
      <comments>http://www.jphellemons.nl/post/Testdrive-Windows-8.aspx#comment</comments>
      <guid isPermaLink="false">http://www.jphellemons.nl/post.aspx?id=c6a479aa-b310-4d23-bd68-52338b83a076</guid>
      <pubDate>Fri, 30 Dec 2011 05:40:00 +0100</pubDate>
      <category>Testing</category>
      <dc:publisher>capsoft</dc:publisher>
      <pingback:server>http://www.jphellemons.nl/pingback.axd</pingback:server>
      <pingback:target>http://www.jphellemons.nl/post.aspx?id=c6a479aa-b310-4d23-bd68-52338b83a076</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.jphellemons.nl/trackback.axd?id=c6a479aa-b310-4d23-bd68-52338b83a076</trackback:ping>
      <wfw:comment>http://www.jphellemons.nl/post/Testdrive-Windows-8.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.jphellemons.nl/syndication.axd?post=c6a479aa-b310-4d23-bd68-52338b83a076</wfw:commentRss>
    <feedburner:origLink>http://www.jphellemons.nl/post.aspx?id=c6a479aa-b310-4d23-bd68-52338b83a076</feedburner:origLink></item>
    <item>
      <title>NDepend first view</title>
      <description>&lt;p&gt;&lt;img style="background-image: none; margin: 0px 0px 0px 20px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border: 0px;" title="image" src="http://www.jphellemons.nl/image.axd?picture=image_thumb_10.png" alt="image" width="248" height="549" align="right" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Today I have installed NDepend for the first time! I was really convinced because of this &lt;a href="http://www.ndepend.com/GettingStarted.aspx#Demo" target="_blank"&gt;short video&lt;/a&gt; and the &lt;a href="http://www.ndepend.com/Features.aspx#Tour" target="_blank"&gt;7 minute version&lt;/a&gt;. Too bad that it isn&amp;rsquo;t really a human voice, but the feature set of NDepend will make up for that. I followed these &lt;a href="http://www.ndepend.com/GettingStarted.aspx#Part1" target="_blank"&gt;instructions for the installation&lt;/a&gt; and installed the Visual Studio Add-In.&lt;/p&gt;
&lt;p&gt;All I had to do was select NDepend &amp;ndash;&amp;gt; attach new NDepend project to current VS Solution. NDepend immediately showed that two critical rules are violated!&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Method too complex&lt;/strong&gt; (well some programmers might see this one as a compliment, but this does affect maintainability and scalability of your code)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Methods with two many parameters&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;so just two issues, I am flattered!&lt;/p&gt;
&lt;p&gt;When you click on the &amp;lsquo;Show CQL Explorer&amp;rsquo; You will see the Code Query Language which is required to select the critical rules. So you can simply navigate to the issues.&lt;/p&gt;
&lt;h2&gt;FXCop vs. NDepend&lt;/h2&gt;
&lt;p&gt;As you all know, you can also choose to use FxCop to check your source code against a coding standard. Here is a link where you can see how you can check your code for the use of the object &amp;lsquo;Arraylist&amp;rsquo; instead of the generic &amp;lsquo;List&amp;lt;obj&amp;gt;&amp;rsquo; &lt;a title="http://www.binarycoder.net/fxcop/html/ex_usegenericlist.html" href="http://www.binarycoder.net/fxcop/html/ex_usegenericlist.html"&gt;http://www.binarycoder.net/fxcop/html/ex_usegenericlist.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With NDepend this can be done with CQL like this:&lt;/p&gt;
&lt;p&gt;SELECT TYPES WHERE IsDirectlyUsing "System.Collections.ArrayList" &lt;/p&gt;
&lt;h2&gt;CQL&lt;/h2&gt;
&lt;p&gt;CQL (Code Query Language) is great. You can read more about it here: &lt;a title="http://www.ndepend.com/CQL.htm" href="http://www.ndepend.com/CQL.htm"&gt;http://www.ndepend.com/CQL.htm&lt;/a&gt; Like SQL is for relational databases, is CQL for selecting source code. The default rules that NDepend uses to validate your source code are divided in several categories. You can enable rules (CQL) disable the rules that are less important according to you. You can add your own rules or edit the default rule set. Here is the rule for one of my two violations:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.jphellemons.nl/image.axd?picture=image_10.png" rel="lightbox"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.jphellemons.nl/image.axd?picture=image_thumb_9.png" alt="image" width="509" height="373" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The CQL even has syntax highlighting!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I recommend that everybody checks out the &lt;a href="http://www.ndepend.com/NDependDownload.aspx" target="_blank"&gt;NDepend trial&lt;/a&gt; and go see it for yourself. You can check out the &lt;a href="http://ndepend.com/Purchase.aspx" target="_blank"&gt;license costs of NDepend&lt;/a&gt; here. For developers who work with continuous integration like &lt;a href="http://cruisecontrol.sourceforge.net/" target="_blank"&gt;Cruisecontrol.net&lt;/a&gt;, &lt;a href="http://www.jetbrains.com/teamcity/" target="_blank"&gt;Teamcity&lt;/a&gt; or &lt;a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/team-foundation-server/overview" target="_blank"&gt;Microsoft Team Foundation Server&lt;/a&gt;, it is really recommended to check your code against a code standard.&lt;/p&gt;
&lt;p&gt;Let me know if you have NDepend best practices in the comments! Looking forward to it. NDepend is together with &lt;a href="http://www.jetbrains.com/resharper/" target="_blank"&gt;Resharper&lt;/a&gt; my favorite Visual Studio add-in.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://www.jphellemons.nl/post/NDepend-first-view.aspx&amp;amp;title=NDepend first view" target="_blank"&gt; &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.jphellemons.nl/post/NDepend-first-view.aspx" alt="kick it on DotNetKicks.com" border="0" /&gt; &lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://www.jphellemons.nl/post/NDepend-first-view.aspx&amp;amp;title=NDepend first view" rev="vote-for" target="_blank"&gt; &lt;img style="border: 0px;" src="http://dotnetshoutout.com/image.axd?url=http://www.jphellemons.nl/post/NDepend-first-view.aspx" alt="Shout it" /&gt; &lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=_kPY3bekLHM:VWpPz52Ob7E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=_kPY3bekLHM:VWpPz52Ob7E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JpHellemons/~4/_kPY3bekLHM" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/JpHellemons/~3/_kPY3bekLHM/post.aspx</link>
      <comments>http://www.jphellemons.nl/post/NDepend-first-view.aspx#comment</comments>
      <guid isPermaLink="false">http://www.jphellemons.nl/post.aspx?id=d7bcec84-7fe1-4659-adb5-fe2f1ab4b472</guid>
      <pubDate>Fri, 02 Dec 2011 07:36:00 +0100</pubDate>
      <category>Tools</category>
      <dc:publisher>capsoft</dc:publisher>
      <pingback:server>http://www.jphellemons.nl/pingback.axd</pingback:server>
      <pingback:target>http://www.jphellemons.nl/post.aspx?id=d7bcec84-7fe1-4659-adb5-fe2f1ab4b472</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://www.jphellemons.nl/trackback.axd?id=d7bcec84-7fe1-4659-adb5-fe2f1ab4b472</trackback:ping>
      <wfw:comment>http://www.jphellemons.nl/post/NDepend-first-view.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.jphellemons.nl/syndication.axd?post=d7bcec84-7fe1-4659-adb5-fe2f1ab4b472</wfw:commentRss>
    <feedburner:origLink>http://www.jphellemons.nl/post.aspx?id=d7bcec84-7fe1-4659-adb5-fe2f1ab4b472</feedburner:origLink></item>
    <item>
      <title>Equal column height, div problem</title>
      <description>&lt;p&gt;&lt;img style="background-image: none; margin: 0px 0px 15px 15px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="image" src="http://www.jphellemons.nl/image.axd?picture=image_8.png" alt="image" width="177" height="240" align="right" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Years ago, everybody made a column layout with an &lt;a href="http://www.w3schools.com/tags/tag_table.asp" target="_blank"&gt;Html table&lt;/a&gt;. If you do not remember why tables are bad, I recommend reading these &lt;a href="http://phrogz.net/css/WhyTablesAreBadForLayout.html" target="_blank"&gt;nine reasons not to use tables&lt;/a&gt;. Today we use (external) cascading style sheets to solve it. Most of the time with the famous &amp;lsquo;faux columns&amp;rsquo; trick.&lt;/p&gt;
&lt;pre class="brush: xml;"&gt;&amp;lt;div id="left"&amp;gt;
    leftside
&amp;lt;/div&amp;gt;
&amp;lt;div id="right"&amp;gt;
    &amp;lt;div&amp;gt;block one&amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;block two&amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;block three&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://jsfiddle.net/jphellemons/wZs5z/" target="_blank"&gt;equal height problem&lt;/a&gt; is sometimes hard to solve. As you can see here with &lt;a href="http://jsfiddle.net/jphellemons/UNPLJ/" target="_blank"&gt;multiple blocks&lt;/a&gt;. The red should be as large as all the yellow blocks together. This is hard to solve with faux columns because the height of the yellow part and therefor the white space between them is hard to determine. It is even more difficult when sometimes the red part is longer then the total yellow part.&lt;/p&gt;
&lt;p&gt;The easiest fix for this, is to use a bit of &lt;a href="http://api.jquery.com/height/" target="_blank"&gt;jQuery&lt;/a&gt;. I only had to add this single line:&amp;nbsp;&lt;/p&gt;
&lt;pre class="brush: js;"&gt;$('#left').height($('#right').height()-15);&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Here is the final example: &lt;a title="http://jsfiddle.net/jphellemons/VTna6/" href="http://jsfiddle.net/jphellemons/VTna6/"&gt;http://jsfiddle.net/jphellemons/VTna6/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Good luck!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://www.jphellemons.nl/post/Equal-column-height-div-problem.aspx&amp;amp;title=Equal column height, div problem" target="_blank"&gt; &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.jphellemons.nl/post/Equal-column-height-div-problem.aspx" alt="kick it on DotNetKicks.com" border="0" /&gt; &lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://www.jphellemons.nl/post/Equal-column-height-div-problem.aspx&amp;amp;title=Equal column height, div problem" rev="vote-for" target="_blank"&gt; &lt;img style="border: 0px;" src="http://dotnetshoutout.com/image.axd?url=http://www.jphellemons.nl/post/Equal-column-height-div-problem.aspx" alt="Shout it" /&gt; &lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=PeHBY2AOLL0:fpoSWr0hxh4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=PeHBY2AOLL0:fpoSWr0hxh4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JpHellemons/~4/PeHBY2AOLL0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/JpHellemons/~3/PeHBY2AOLL0/post.aspx</link>
      <comments>http://www.jphellemons.nl/post/Equal-column-height-div-problem.aspx#comment</comments>
      <guid isPermaLink="false">http://www.jphellemons.nl/post.aspx?id=493d8ce2-642b-4d3e-a0a9-993def58fbe5</guid>
      <pubDate>Tue, 08 Nov 2011 05:29:00 +0100</pubDate>
      <category>jQuery</category>
      <dc:publisher>capsoft</dc:publisher>
      <pingback:server>http://www.jphellemons.nl/pingback.axd</pingback:server>
      <pingback:target>http://www.jphellemons.nl/post.aspx?id=493d8ce2-642b-4d3e-a0a9-993def58fbe5</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://www.jphellemons.nl/trackback.axd?id=493d8ce2-642b-4d3e-a0a9-993def58fbe5</trackback:ping>
      <wfw:comment>http://www.jphellemons.nl/post/Equal-column-height-div-problem.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.jphellemons.nl/syndication.axd?post=493d8ce2-642b-4d3e-a0a9-993def58fbe5</wfw:commentRss>
    <feedburner:origLink>http://www.jphellemons.nl/post.aspx?id=493d8ce2-642b-4d3e-a0a9-993def58fbe5</feedburner:origLink></item>
    <item>
      <title>Update to FxCop 10</title>
      <description>&lt;p&gt;So we have all used &lt;a href="http://en.wikipedia.org/wiki/FxCop" target="_blank"&gt;FxCop&lt;/a&gt; before haven&amp;rsquo;t we? Well I found out, that my version was 9.x and it prompted with an available update! So Microsoft&amp;rsquo;s download page opened. &lt;a title="http://www.microsoft.com/download/en/details.aspx?id=6544" href="http://www.microsoft.com/download/en/details.aspx?id=6544"&gt;http://www.microsoft.com/download/en/details.aspx?id=6544&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It only displays a small 1 kb file! a &amp;ldquo;readme.txt&amp;rdquo; file. That&amp;rsquo;s strange. So I checked again for an available download link, but ended up with the same readme file.&lt;/p&gt;
&lt;p&gt;This is the content of the text file:&lt;/p&gt;
&lt;blockquote&gt;&lt;span style="font-size: xx-small;"&gt;FxCop Installation Instructions 1. Download the Microsoft Windows SDK for Windows 7 and .NET Framework 4 version 7.1. 2. Run %ProgramFiles%\Microsoft SDKs\Windows\v7.1\Bin\FXCop\FxCopSetup.exe to install FxCop.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Ok, so you need the Windows 7 Software Development Kit. That download can be found on &lt;a title="http://www.microsoft.com/download/en/details.aspx?id=8279" href="http://www.microsoft.com/download/en/details.aspx?id=8279"&gt;http://www.microsoft.com/download/en/details.aspx?id=8279&lt;/a&gt; and contains a web installer. So more bytes to download.&lt;/p&gt;
&lt;p&gt;Make sure that you check the box next to the Tools under .Net Development when you are going to install the SDK.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.jphellemons.nl/image.axd?picture=image_7.png" rel="lightbox"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://www.jphellemons.nl/image.axd?picture=image_thumb_7.png" alt="image" width="576" height="405" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After the installation you can navigate to:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\FXCop&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;And there you will find the FxCop 10 installer: FxCopSetup.exe ! Or you can save yourself a lot of time and download it zipped here:&lt;/p&gt;
&lt;div id="scid:F60BB8FA-6F02-4999-8F5E-9DD4E92C4DA7:ff6345d0-1b13-466d-800e-eb0368402966" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;"&gt;
&lt;div&gt;&lt;a onclick="javascript: pageTracker._trackPageview('FxCopSetup.10.zip');" href="http://www.jphellemons.nl/file.axd?file=FxCopSetup.10.zip" target="_self"&gt;FxCopSetup 10.zip&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Good luck!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://www.jphellemons.nl/post/Update-to-FxCop-10.aspx&amp;amp;title=Update to FxCop 10" target="_blank"&gt; &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.jphellemons.nl/post/Update-to-FxCop-10.aspx" alt="kick it on DotNetKicks.com" border="0" /&gt; &lt;/a&gt;&lt;a href="http://dotnetshoutout.com/Update-to-FxCop-10" rev="vote-for"&gt;&lt;img style="border: 0px;" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fwww.jphellemons.nl%2Fpost%2FUpdate-to-FxCop-10.aspx" alt="Shout it" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=DJj36b-XhoU:CxQd93rp404:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=DJj36b-XhoU:CxQd93rp404:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JpHellemons/~4/DJj36b-XhoU" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/JpHellemons/~3/DJj36b-XhoU/post.aspx</link>
      <comments>http://www.jphellemons.nl/post/Update-to-FxCop-10.aspx#comment</comments>
      <guid isPermaLink="false">http://www.jphellemons.nl/post.aspx?id=0f91972f-f367-4ec4-acc0-35dbbed21e1f</guid>
      <pubDate>Tue, 01 Nov 2011 04:49:00 +0100</pubDate>
      <category>Tools</category>
      <dc:publisher>capsoft</dc:publisher>
      <pingback:server>http://www.jphellemons.nl/pingback.axd</pingback:server>
      <pingback:target>http://www.jphellemons.nl/post.aspx?id=0f91972f-f367-4ec4-acc0-35dbbed21e1f</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://www.jphellemons.nl/trackback.axd?id=0f91972f-f367-4ec4-acc0-35dbbed21e1f</trackback:ping>
      <wfw:comment>http://www.jphellemons.nl/post/Update-to-FxCop-10.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.jphellemons.nl/syndication.axd?post=0f91972f-f367-4ec4-acc0-35dbbed21e1f</wfw:commentRss>
    <feedburner:origLink>http://www.jphellemons.nl/post.aspx?id=0f91972f-f367-4ec4-acc0-35dbbed21e1f</feedburner:origLink></item>
    <item>
      <title>Tidy your HTML with Asp.Net TidyManaged vs Tidy.net</title>
      <description>&lt;p&gt;I recently stumbled upon a small bug which had to do with a part of C# code that cleans up an HTML string which came from a database. This string is used as output on the web and therefore needs to be w3c and tidy!&lt;/p&gt;  &lt;p&gt;I always used Tidy.Net for it. Really liked it and decided to check for a new version of that library while I was doing some code maintenance. That library's latest release date is from &lt;a href="http://sourceforge.net/projects/tidynet/files/" target="_blank"&gt;June 2005&lt;/a&gt;! that’s over 6 years old!&lt;/p&gt;  &lt;p&gt;So I decided to go and look for a better solution. I found the &lt;a href="https://github.com/markbeaton/TidyManaged" target="_blank"&gt;TidyManaged&lt;/a&gt; project from June 2010. I wasn’t directly motivated to migrate to this library so my next step was a showdown between the two. &lt;/p&gt;  &lt;p&gt;I fired up Visual Studio 2010 and started a new console application. Because ‘&lt;em&gt;the numbers tell the tale&lt;/em&gt;’. I used the &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx" target="_blank"&gt;StopWatch&lt;/a&gt; class which is awesome! I have downloaded the HTML source code from a website and passed that to both the Libraries. &lt;/p&gt;  &lt;br /&gt;  &lt;pre class="brush: csharp;"&gt;static void Main(string[] args)
{
    WebClient wc = new WebClient();
    string testInput = wc.DownloadString(&amp;quot;http://www.jphellemons.nl&amp;quot;);

    Stopwatch sw = new Stopwatch();
    sw.Start();
    ParseWithOldLib(testInput);           
    sw.Stop();
    Console.WriteLine(&amp;quot;Tidy.Net lib from 2005 took: &amp;quot; + sw.ElapsedTicks);
    sw.Restart();
    ParseWithNewLib(testInput);
    sw.Stop();
    Console.WriteLine(&amp;quot;TidyManaged lib from 2010 took: &amp;quot; + sw.ElapsedTicks);
    Console.ReadKey(); // to keep console open
}&lt;/pre&gt;

&lt;p&gt;The results: 
  &lt;table border="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;
      &lt;tr&gt;
        &lt;td valign="top" width="133"&gt;&amp;nbsp;&lt;/td&gt;

        &lt;td style="text-align: right" valign="top" width="133"&gt;&lt;strong&gt;Tidy.Net&lt;/strong&gt;&lt;/td&gt;

        &lt;td style="text-align: right" valign="top" width="133"&gt;&lt;strong&gt;TidyManaged&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="133"&gt;website 1&lt;/td&gt;

        &lt;td style="text-align: right" valign="top" width="133"&gt;1080148&lt;/td&gt;

        &lt;td style="text-align: right" valign="top" width="133"&gt;359861&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="133"&gt;website 2&lt;/td&gt;

        &lt;td style="text-align: right" valign="top" width="133"&gt;644471&lt;/td&gt;

        &lt;td style="text-align: right" valign="top" width="133"&gt;140835&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="133"&gt;website 3&lt;/td&gt;

        &lt;td style="text-align: right" valign="top" width="133"&gt;467094&lt;/td&gt;

        &lt;td style="text-align: right" valign="top" width="133"&gt;84472&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="133"&gt;website 4&lt;/td&gt;

        &lt;td style="text-align: right" valign="top" width="133"&gt;495851&lt;/td&gt;

        &lt;td style="text-align: right" valign="top" width="133"&gt;191426&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;&lt;/table&gt;

  &lt;br /&gt;So this managed code wrapper for the unmanaged &lt;a href="http://tidy.sourceforge.net/" target="_blank"&gt;tidy&lt;/a&gt; project’s DLL is always a lot faster! I have the tidy DLL placed in “&lt;em&gt;C:\Windows\system”. &lt;/em&gt;That DLL is 323kb and the unmanaged DLL is 25kb. (together 348kb) The Tidy.Net (which is an older .Net port of the 323kb DLL is 188kb. So that is smaller, but an older library.&lt;/p&gt;

&lt;p&gt;If you look at the output of both libraries, you will see that the Tidy.Net library makes smaller html files then the TidyManaged. But the TidyManaged takes inline CSS styles and combines them in the header of your document. &lt;/p&gt;

&lt;p&gt;I will attach my sample project, so that you can test the difference yourself.&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:F60BB8FA-6F02-4999-8F5E-9DD4E92C4DA7:23e2209f-1982-4f16-b528-6ad0d0f475d4" class="wlWriterEditableSmartContent"&gt;&lt;div&gt;&lt;a href="http://www.jphellemons.nl/file.axd?file=TidyConsoleApp.zip" target="_self" onClick="javascript: pageTracker._trackPageview('TidyConsoleApp.zip');"&gt;TidyConsoleApp.zip&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Good luck!&lt;/p&gt;

&lt;p&gt;&lt;a target="_blank" href="http://www.dotnetkicks.com/kick/?url=http://www.jphellemons.nl/post/Tidy-your-HTML-with-AspNet-TidyManaged-vs-Tidynet.aspx&amp;amp;title=Tidy your HTML with Asp.Net TidyManaged vs Tidy.net"&gt;
                    &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.jphellemons.nl/post/Tidy-your-HTML-with-AspNet-TidyManaged-vs-Tidynet.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;
                  &lt;/a&gt;&lt;a target='_blank' rev='vote-for' href='http://dotnetshoutout.com/Submit?url=http://www.jphellemons.nl/post/Tidy-your-HTML-with-AspNet-TidyManaged-vs-Tidynet.aspx&amp;amp;title=Tidy your HTML with Asp.Net TidyManaged vs Tidy.net'&gt;
                                           &lt;img style='border: 0px;' alt='Shout it' src='http://dotnetshoutout.com/image.axd?url=http://www.jphellemons.nl/post/Tidy-your-HTML-with-AspNet-TidyManaged-vs-Tidynet.aspx'/&gt;
                                        &lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=62-TZFM-u88:C8nzQZ_21wM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=62-TZFM-u88:C8nzQZ_21wM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JpHellemons/~4/62-TZFM-u88" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/JpHellemons/~3/62-TZFM-u88/post.aspx</link>
      <comments>http://www.jphellemons.nl/post/Tidy-your-HTML-with-AspNet-TidyManaged-vs-Tidynet.aspx#comment</comments>
      <guid isPermaLink="false">http://www.jphellemons.nl/post.aspx?id=4cc517df-df3e-4531-a345-7ffe61d65a55</guid>
      <pubDate>Tue, 25 Oct 2011 05:05:00 +0100</pubDate>
      <category>C#</category>
      <dc:publisher>capsoft</dc:publisher>
      <pingback:server>http://www.jphellemons.nl/pingback.axd</pingback:server>
      <pingback:target>http://www.jphellemons.nl/post.aspx?id=4cc517df-df3e-4531-a345-7ffe61d65a55</pingback:target>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://www.jphellemons.nl/trackback.axd?id=4cc517df-df3e-4531-a345-7ffe61d65a55</trackback:ping>
      <wfw:comment>http://www.jphellemons.nl/post/Tidy-your-HTML-with-AspNet-TidyManaged-vs-Tidynet.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.jphellemons.nl/syndication.axd?post=4cc517df-df3e-4531-a345-7ffe61d65a55</wfw:commentRss>
    <feedburner:origLink>http://www.jphellemons.nl/post.aspx?id=4cc517df-df3e-4531-a345-7ffe61d65a55</feedburner:origLink></item>
    <item>
      <title>Filter a DataTable with LINQ to Objects</title>
      <description>&lt;p&gt;Today I had a DataTable object with the top x rows of a query.&lt;/p&gt;  &lt;pre class="brush: sql; toolbar: false; auto-links: false;"&gt;select top 23 * from products&lt;/pre&gt;

&lt;p&gt;So my Asp.Net C# code looked like this:&lt;/p&gt;

&lt;pre class="brush: csharp; toolbar: false; auto-links: false;"&gt;private void SampleMethod(int toShow)
{
    string sql = &amp;quot;SELECT top &amp;quot; + toShow + &amp;quot; * from products&amp;quot;;
    SqlCommand com = new SqlCommand(sql);
    DataTable dt = dal.GetDataTable(com);
    if (dt.Rows.Count &amp;gt; 0)
    {
        var a = dt.AsEnumerable().Where(
                p =&amp;gt; p.Field&amp;lt;int&amp;gt;(&amp;quot;stock&amp;quot;) &amp;gt; p.Field&amp;lt;int&amp;gt;(&amp;quot;ProductMinStock&amp;quot;))
        DataList2.DataSource = a;
        DataList2.DataBind();
    }
}&lt;/pre&gt;

&lt;p&gt;This crashed as you might have noticed. The error was: &lt;/p&gt;
 

&lt;p&gt;&lt;em&gt;&lt;font color="#ff0000"&gt;DataBinding: System.Data.DataRow does not contain a property with the name&lt;/font&gt;&amp;#160;&lt;/em&gt;&lt;/p&gt;

&lt;br /&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="DataRow does not contain" border="0" alt="DataRow does not contain" src="http://www.jphellemons.nl/image.axd?picture=doesnotcontain.jpg" width="452" height="269" /&gt; 

&lt;br /&gt;

&lt;p&gt;The problem was, that I did not specify the columns. The unfiltered DataTable could be bind to the DataList. Those DataRows where known. Since I did not use Entity Framework, but just try to filter a DataTable object which holds a DataRowCollection, I had to specify the return object(s). The types have to respond with your DataColumns in your database. You can set everything to string and see where it crashes if you do not know what type to use and change it. That’s how I found out that a field which should have been an int(32) was a float in the database (and therefor should have used double in C#) &lt;/p&gt;

&lt;br /&gt;

&lt;p&gt;Here is my final code, which has exactly the same columns as the unfiltered DataTable so that I can bind both result sets to the same DataList.&lt;/p&gt;

&lt;pre class="brush: csharp; toolbar: false; auto-links: false;"&gt;var a = dt.AsEnumerable().Where(
    p =&amp;gt; p.Field&amp;lt;int&amp;gt;(&amp;quot;stock&amp;quot;) &amp;gt; p.Field&amp;lt;int&amp;gt;(&amp;quot;ProductMinStock&amp;quot;)).Select(p =&amp;gt; new {
        ProductPictureName = p.Field&amp;lt;string&amp;gt;(&amp;quot;ProductPictureName&amp;quot;),
        ProductCode = p.Field&amp;lt;string&amp;gt;(&amp;quot;ProductCode&amp;quot;),
        ProductDescription = p.Field&amp;lt;string&amp;gt;(&amp;quot;ProductDescription&amp;quot;),
        price = p.Field&amp;lt;double&amp;gt;(&amp;quot;price&amp;quot;),
        productid = p.Field&amp;lt;Int32&amp;gt;(&amp;quot;productid&amp;quot;),
        productpricebreak = p.Field&amp;lt;double&amp;gt;(&amp;quot;productpricebreak&amp;quot;)
    });&lt;/pre&gt;

&lt;p&gt;I hope that someone might have found this snippet useful to see how to manually specify the 'unknown' fields.&lt;/p&gt;

&lt;p&gt;Good luck!&lt;/p&gt;
&lt;a target="_blank" href="http://www.dotnetkicks.com/kick/?url=http://www.jphellemons.nl/post/Filter-a-DataTable-with-LINQ-to-Objects.aspx&amp;amp;title=Filter a DataTable with LINQ to Objects"&gt;
                    &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.jphellemons.nl/post/Filter-a-DataTable-with-LINQ-to-Objects.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;
                  &lt;/a&gt;&lt;a target='_blank' rev='vote-for' href='http://dotnetshoutout.com/Submit?url=http://www.jphellemons.nl/post/Filter-a-DataTable-with-LINQ-to-Objects.aspx&amp;amp;title=Filter a DataTable with LINQ to Objects'&gt;
                                           &lt;img style='border: 0px;' alt='Shout it' src='http://dotnetshoutout.com/image.axd?url=http://www.jphellemons.nl/post/Filter-a-DataTable-with-LINQ-to-Objects.aspx'/&gt;
                                        &lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=FQsoW_ON1ZQ:MEZIuLoJxRQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=FQsoW_ON1ZQ:MEZIuLoJxRQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JpHellemons/~4/FQsoW_ON1ZQ" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/JpHellemons/~3/FQsoW_ON1ZQ/post.aspx</link>
      <comments>http://www.jphellemons.nl/post/Filter-a-DataTable-with-LINQ-to-Objects.aspx#comment</comments>
      <guid isPermaLink="false">http://www.jphellemons.nl/post.aspx?id=258c257c-0293-43ff-814a-15ed6384c21d</guid>
      <pubDate>Mon, 03 Oct 2011 05:44:00 +0100</pubDate>
      <category>C#</category>
      <dc:publisher>capsoft</dc:publisher>
      <pingback:server>http://www.jphellemons.nl/pingback.axd</pingback:server>
      <pingback:target>http://www.jphellemons.nl/post.aspx?id=258c257c-0293-43ff-814a-15ed6384c21d</pingback:target>
      <slash:comments>8</slash:comments>
      <trackback:ping>http://www.jphellemons.nl/trackback.axd?id=258c257c-0293-43ff-814a-15ed6384c21d</trackback:ping>
      <wfw:comment>http://www.jphellemons.nl/post/Filter-a-DataTable-with-LINQ-to-Objects.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.jphellemons.nl/syndication.axd?post=258c257c-0293-43ff-814a-15ed6384c21d</wfw:commentRss>
    <feedburner:origLink>http://www.jphellemons.nl/post.aspx?id=258c257c-0293-43ff-814a-15ed6384c21d</feedburner:origLink></item>
    <item>
      <title>JQuery with webform input validation, ajax posting json to asp.net C#</title>
      <description>&lt;p&gt;This blog post is all about how to make a nice form and have client side validation with jQuery and the famous validation plugin. After validation the data, the form will be posted asynchronous to an Asp.Net C# Webservice/webmethod. While the post is being processed, a nice loading image will be displayed to notify the user of the progress. &lt;/p&gt;  &lt;h2&gt;Add jQuery&lt;/h2&gt;  &lt;p&gt;First you have to add jQuery to the form. This can be done by downloading a version from jQuery.com (option 1) or get jQuery as Nuget Package or (option 2) get jQuery from a CDN (Content Delivery Network) (option 3) so that the request is being handled by the closest server based on Geolocation. This approach has also another benefit called browser caching. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;option 1:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;1. go to &lt;a title="http://jquery.com/" href="http://jquery.com/"&gt;http://jquery.com/&lt;/a&gt; and right click download and select ‘save-as’&lt;/p&gt;  &lt;p&gt;2. save in your javascript folder of your solution&lt;/p&gt;  &lt;p&gt;3. add a reference in your form page&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#00ff00"&gt;Pro:&lt;/font&gt; &lt;/strong&gt;Just a few easy steps, things won’t break if there is a newer version.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Con:&lt;/font&gt; &lt;/strong&gt;No CDN, no auto update&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;option 2:&lt;a href="http://www.jphellemons.nl/image.axd?picture=image_6.png" rel="lightbox"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="right" src="http://www.jphellemons.nl/image.axd?picture=image_thumb_6.png" width="312" height="229" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;1. install Nuget from &lt;a title="http://nuget.org/" href="http://nuget.org/"&gt;http://nuget.org/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. restart visual studio&lt;/p&gt;  &lt;p&gt;3. click project&lt;/p&gt;  &lt;p&gt;4. click manage nuget packages&lt;/p&gt;  &lt;p&gt;5. type in the search box on the top right: jQuery&lt;/p&gt;  &lt;p&gt;6. click on install&lt;/p&gt;  &lt;p&gt;7. add a reference in your form page&lt;/p&gt;  &lt;p&gt;optional: view the package info online on nuget.org: &lt;a title="http://nuget.org/List/Packages/jQuery" href="http://nuget.org/List/Packages/jQuery"&gt;http://nuget.org/List/Packages/jQuery&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#00ff00"&gt;Pro:&lt;/font&gt;&lt;/strong&gt; Nuget will update the library if there is a new version&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Con:&lt;/font&gt;&lt;/strong&gt; No CDN, requires a small but awesome extension for Visual Studio&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;option 3:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;1. Choose between networks (Google or Microsoft)&lt;/p&gt;  &lt;p&gt;2. Add a reference to either&lt;/p&gt;  &lt;p&gt;&lt;a href="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"&gt;https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;or &lt;/p&gt;  &lt;p&gt;&lt;a href="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.5.1.js"&gt;http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.5.1.js&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Google CDN: &lt;a title="http://code.google.com/apis/libraries/devguide.html#jquery" href="http://code.google.com/apis/libraries/devguide.html#jquery"&gt;http://code.google.com/apis/libraries/devguide.html#jquery&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Microsoft CDN: &lt;a title="http://www.asp.net/ajaxlibrary/CDN.ashx#Using_jQuery_from_the_CDN_12" href="http://www.asp.net/ajaxlibrary/CDN.ashx#Using_jQuery_from_the_CDN_12"&gt;http://www.asp.net/ajaxlibrary/CDN.ashx#Using_jQuery_from_the_CDN_12&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;pre class="brush: xml; toolbar: false; auto-links: false;"&gt;&amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

&lt;br /&gt;

&lt;p&gt;&lt;strong&gt;&lt;font color="#00ff00"&gt;Pro:&lt;/font&gt;&lt;/strong&gt; Geo benefit, Browser Cache, saves your bandwith&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Con:&lt;/font&gt;&lt;/strong&gt; No auto update&lt;/p&gt;

&lt;h2&gt;Adding validation&lt;/h2&gt;

&lt;p&gt;The next step is to add a nice jQuery plugin called ‘validation’. This plugin is maintained by a member of the jQuery team. His name is Jörn Zaefferer. You can get it from his website:&lt;/p&gt;

&lt;p&gt;&lt;a title="http://jquery.bassistance.de/validate/jquery-validation-1.8.1.zip" href="http://jquery.bassistance.de/validate/jquery-validation-1.8.1.zip"&gt;http://jquery.bassistance.de/validate/jquery-validation-1.8.1.zip&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and you can read more about it on his site:&lt;/p&gt;

&lt;p&gt;&lt;a title="http://bassistance.de/jquery-plugins/jquery-plugin-validation/" href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/"&gt;http://bassistance.de/jquery-plugins/jquery-plugin-validation/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;His plugin is also available through Nuget and the Microsoft CDN (not Google’s)&lt;/p&gt;

&lt;p&gt;&lt;a title="http://nuget.org/List/Packages/jQuery.Validation" href="http://nuget.org/List/Packages/jQuery.Validation"&gt;http://nuget.org/List/Packages/jQuery.Validation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Extract the zip and add the file ‘jquery.validate.min.js’ to your Javascript folder in your solution and add a reference to it.&lt;/p&gt;

&lt;pre class="brush: xml; toolbar: false; auto-links: false;"&gt;&amp;lt;script src=&amp;quot;js/jquery.validate.min.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

&lt;p&gt;I have attached an example of how I made a simple form with jQuery 1.6 from the Google CDN and the validation plugin.&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:F60BB8FA-6F02-4999-8F5E-9DD4E92C4DA7:f3ec6867-b85c-48b9-8987-2a45d118a887" class="wlWriterEditableSmartContent"&gt;&lt;div&gt;&lt;a href="http://www.jphellemons.nl/file.axd?file=html5-jquery-validation.zip" target="_blank" onClick="javascript: pageTracker._trackPageview('html5-jquery-validation.zip');"&gt;html5-jquery-validation.zip&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;

&lt;pre class="brush: js; toolbar: false; auto-links: false;"&gt;$(document).ready(function () {
    $('#sub').click(function () {
    var container = $('div.error');

    var validator = $(&amp;quot;#form1&amp;quot;).validate({
        errorContainer: container,
        errorLabelContainer: $(&amp;quot;ul&amp;quot;, container),
        ignore: &amp;quot;:not(:visible)&amp;quot;, // if you have input fields in your form which are temp invisible
        wrapper: 'li',
        rules: {
            tbMail2: { equalTo: &amp;quot;#tbMail1&amp;quot;, required: true, email: true }
        },
        messages: {
            tbMail2: &amp;quot;The mailadresses are not the same!&amp;quot;
        }
    });
    if ($(&amp;quot;#form1&amp;quot;).valid()) {
        alert('ok nice!');
    }
    else {
        alert('this is optional, the error is shown below');
    }
});
});&lt;/pre&gt;

&lt;p&gt;This is the HTML for my simple form:&lt;/p&gt;

&lt;pre class="brush: xml; toolbar: false; auto-links: false;"&gt;&amp;lt;form id=&amp;quot;form1&amp;quot;&amp;gt;
    &amp;lt;fieldset&amp;gt;
        &amp;lt;legend&amp;gt;Personal Information&amp;lt;/legend&amp;gt;
        &amp;lt;label for=&amp;quot;fname&amp;quot;&amp;gt;First Name:&amp;lt;/label&amp;gt;
        &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;firstname&amp;quot; id=&amp;quot;fname&amp;quot; class=&amp;quot;required&amp;quot;/&amp;gt;
        &amp;lt;label for=&amp;quot;tbMail1&amp;quot;&amp;gt;E-Mail:&amp;lt;/label&amp;gt;
        &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;mail1&amp;quot; id=&amp;quot;tbMail1&amp;quot; class=&amp;quot;required email&amp;quot;/&amp;gt;
        &amp;lt;label for=&amp;quot;tbMail2&amp;quot;&amp;gt;E-Mail again:&amp;lt;/label&amp;gt;
        &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;mail2&amp;quot; id=&amp;quot;tbMail2&amp;quot; class=&amp;quot;required email&amp;quot;/&amp;gt;
        &amp;lt;input id=&amp;quot;sub&amp;quot; type=&amp;quot;submit&amp;quot; value=&amp;quot;Send&amp;quot;/&amp;gt; &amp;lt;input type=&amp;quot;reset&amp;quot;/&amp;gt;
    &amp;lt;/fieldset&amp;gt;
&amp;lt;/form&amp;gt;
&amp;lt;div class=&amp;quot;error&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;
    &amp;lt;h2&amp;gt;Something goes wrong!&amp;lt;/h2&amp;gt;
    &amp;lt;ul&amp;gt;
        &amp;lt;li&amp;gt;&amp;lt;label for=&amp;quot;fname&amp;quot; class=&amp;quot;error&amp;quot;&amp;gt;Please fill in your firstname&amp;lt;/label&amp;gt;&amp;lt;/li&amp;gt;
        &amp;lt;li&amp;gt;&amp;lt;label for=&amp;quot;tbMail2&amp;quot; class=&amp;quot;error&amp;quot;&amp;gt;The second mailadres is an invalid adress&amp;lt;/label&amp;gt;&amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;
&amp;lt;/div&amp;gt;&lt;/pre&gt;

&lt;p&gt;As you might notice, I haven't added an error message in the container for all form elements. All form elements are required fields and two are marked as email. Those classes can be found in the documentation of the validation plugin.&lt;/p&gt;

&lt;p&gt;I added an image from &lt;a title="http://www.ajaxload.info/" href="http://www.ajaxload.info/"&gt;http://www.ajaxload.info/&lt;/a&gt; as loading image and added the style=”display:none;” When the validation has succeeded, the image will be faded in. and when the Ajax JSON post has completed, it will be faded out.&lt;/p&gt;

&lt;p&gt;Here is my Asp.Net ASMX file which will handle the AJAX JSON request and will return an URL. &lt;/p&gt;

&lt;pre class="brush: csharp; toolbar: false; auto-links: false;"&gt;using System;
using System.Web;
using System.Web.Script.Services;
using System.Web.Services;

[WebService(Namespace = &amp;quot;http://tempuri.org/&amp;quot;)]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService]
public class myAjaxHandler : WebService
{
    [WebMethod(EnableSession = true)]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string ProcessSampleForm(string first, string mail, string mailinglist)
    {
        // sample code
        bool mailingList = false;
        bool.TryParse(ml, out mailingList);
        string redir = &amp;quot;youraccount.aspx&amp;quot;;
        if(first.Contains(&amp;quot;admin&amp;quot;))
            redir = &amp;quot;admin/admin.aspx&amp;quot;;
        
        return redir;
    }
}&lt;/pre&gt;

&lt;p&gt;To call this ASMX, I used jQuery. It's very easy to make Async calls with jQuery and combine it with Asp.Net logic.&lt;/p&gt;

&lt;pre class="brush: js; toolbar: false; auto-links: false;"&gt;if ($(&amp;quot;#form1&amp;quot;).valid()) 
{
    $(&amp;quot;.loadingimg&amp;quot;).fadeIn();
    var dataString = &amp;quot;{ 'first' : '&amp;quot; + escape($('#fname').val()) + 
        &amp;quot;', 'mail' : '&amp;quot; + escape($('#tbMail1').val()) + 
        &amp;quot;', 'mailinglist' : '&amp;quot; + $(&amp;quot;input[name='ml']:checked&amp;quot;).val() + 
        &amp;quot;' }&amp;quot;;
        /*alert(dataString.replace('\',','\',\n'));*/ // just for debugging ;)
    $.ajax({
        type: &amp;quot;POST&amp;quot;,
        url: &amp;quot;myAjaxHandler.asmx/ProcessSampleForm&amp;quot;,
        data: dataString,
        cache: false,
        contentType: &amp;quot;application/json; charset=utf-8&amp;quot;,
        dataType: &amp;quot;json&amp;quot;,
        success: function (msg) {
            $(&amp;quot;.loadingimg&amp;quot;).fadeOut();
            window.location.replace(msg.d);
        },
        error:function(xhr,err){
            $(&amp;quot;.loadingimg&amp;quot;).fadeOut();
            alert(&amp;quot;readyState: &amp;quot; + xhr.readyState + &amp;quot;\nstatus: &amp;quot; + xhr.status);
            alert(&amp;quot;responseText: &amp;quot; + xhr.responseText);
        }
    });
}&lt;/pre&gt;

&lt;p&gt;Please let me know in the comments if this will work for you. I will attach the full source code below:&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:F60BB8FA-6F02-4999-8F5E-9DD4E92C4DA7:205376b7-9da3-421b-a943-3c38421199a7" class="wlWriterEditableSmartContent"&gt;&lt;div&gt;&lt;a href="http://www.jphellemons.nl/file.axd?file=html5-jquery-json-ajax-aspnet-asmx.zip" target="_blank" onClick="javascript: pageTracker._trackPageview('html5-jquery-validation.zip');"&gt;html5-jquery-json-ajax-aspnet-asmx.zip&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2&gt;Summary&lt;/h2&gt;

&lt;p&gt;Use HTML5! Add the jQuery library by one of the three options mentioned in this post. Add the jQuery validation plugin. Use jQuery to validate your form and if it's validated, send a JSON string asynchronously to an Asp.Net (C#) Asmx and process the result of the method in jQuery again. Also use nice gif images to let users know that something is currently running.&lt;/p&gt;

&lt;p&gt;Good luck!&lt;/p&gt;

&lt;p&gt;&lt;a target="_blank" href="http://www.dotnetkicks.com/kick/?url=http://www.jphellemons.nl/post/JQuery-with-webform-input-validation-ajax-posting-json-to-aspnet-C.aspx&amp;amp;title=JQuery with webform input validation, ajax posting json to asp.net C#"&gt;
                    &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.jphellemons.nl/post/JQuery-with-webform-input-validation-ajax-posting-json-to-aspnet-C.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;
                  &lt;/a&gt; &lt;a target='_blank' rev='vote-for' href='http://dotnetshoutout.com/Submit?url=http://www.jphellemons.nl/post/JQuery-with-webform-input-validation-ajax-posting-json-to-aspnet-C.aspx&amp;amp;title=JQuery with webform input validation, ajax posting json to asp.net C#'&gt;
                                           &lt;img style='border: 0px;' alt='Shout it' src='http://dotnetshoutout.com/image.axd?url=http://www.jphellemons.nl/post/JQuery-with-webform-input-validation-ajax-posting-json-to-aspnet-C.aspx'/&gt;
                                        &lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=tRZYnDkc0Qg:9fE_ZZfWXAY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=tRZYnDkc0Qg:9fE_ZZfWXAY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JpHellemons/~4/tRZYnDkc0Qg" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/JpHellemons/~3/tRZYnDkc0Qg/post.aspx</link>
      <comments>http://www.jphellemons.nl/post/JQuery-with-webform-input-validation-ajax-posting-json-to-aspnet-C.aspx#comment</comments>
      <guid isPermaLink="false">http://www.jphellemons.nl/post.aspx?id=87ecdc7e-4634-4867-b166-b7ab999edd49</guid>
      <pubDate>Mon, 26 Sep 2011 05:39:00 +0100</pubDate>
      <category>C#</category>
      <dc:publisher>capsoft</dc:publisher>
      <pingback:server>http://www.jphellemons.nl/pingback.axd</pingback:server>
      <pingback:target>http://www.jphellemons.nl/post.aspx?id=87ecdc7e-4634-4867-b166-b7ab999edd49</pingback:target>
      <slash:comments>5</slash:comments>
      <trackback:ping>http://www.jphellemons.nl/trackback.axd?id=87ecdc7e-4634-4867-b166-b7ab999edd49</trackback:ping>
      <wfw:comment>http://www.jphellemons.nl/post/JQuery-with-webform-input-validation-ajax-posting-json-to-aspnet-C.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.jphellemons.nl/syndication.axd?post=87ecdc7e-4634-4867-b166-b7ab999edd49</wfw:commentRss>
    <feedburner:origLink>http://www.jphellemons.nl/post.aspx?id=87ecdc7e-4634-4867-b166-b7ab999edd49</feedburner:origLink></item>
    <item>
      <title>Upgrade BlogEngine 2.0 to 2.5</title>
      <description>&lt;p&gt;The BlogEngine team has released BlogEngine 2.5 last 27th of June. I postponed it for a while but you have to keep your Online Software up to date! So I decided to give it a try. The migration from 1.x to 2.0 was almost painless, so moving to 2.5 should work out fine too. My installation as no database, but stores stuff in the App_Data folder. I followed this guide:&amp;nbsp; &lt;a title="http://blogengine.codeplex.com/wikipage?title=Upgrading%20to%20BlogEngine.NET%202.5" href="http://blogengine.codeplex.com/wikipage?title=Upgrading%20to%20BlogEngine.NET%202.5"&gt;http://blogengine.codeplex.com/wikipage?title=Upgrading%20to%20BlogEngine.NET%202.5&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;my &lt;strong&gt;8 easy steps&lt;/strong&gt;: (maybe you only need &lt;strong&gt;4&lt;/strong&gt;) &lt;/p&gt;
&lt;p&gt;1) download current 2.0 installation as backup&lt;/p&gt;
&lt;p&gt;2) download 2.5 web version &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a title="http://blogengine.codeplex.com/releases/view/69117#DownloadId=253216" href="http://blogengine.codeplex.com/releases/view/69117#DownloadId=253216"&gt;http://blogengine.codeplex.com/releases/view/69117#DownloadId=253216&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3) removed everything in the 2.5 App_Data folder except: &lt;strong&gt;blogs &lt;/strong&gt;folder and &lt;strong&gt;blogs.xml &lt;/strong&gt;file&lt;/p&gt;
&lt;p&gt;4) copied the App_Data from 2.0 local backup to the 2.5 local folder and uploaded everything to the online version with overwriting enabled. (I recommend &lt;a href="http://filezilla-project.org/download.php?type=client" target="_blank"&gt;FileZilla&lt;/a&gt; for everything FTP related)&lt;/p&gt;
&lt;p&gt;5) go to your online URL (mine crashed)&lt;/p&gt;
&lt;p&gt;6) I received &amp;lsquo;&lt;strong&gt;Unrecognized configuration section system.web.extensions&amp;rsquo; &lt;/strong&gt;So I had to ask the hosting company to migrate my site from an Asp.Net 2.0 application pool to 4.0&lt;/p&gt;
&lt;p&gt;7) After that I received another crash in &lt;em&gt;imaginary.twitterfeed.cs&lt;/em&gt; (rule 21) and &lt;em&gt;imaginary.twittersearch.cs &lt;/em&gt;(rule 22) on almost the same line:&lt;/p&gt;
&lt;pre class="brush: csharp; auto-links: false;"&gt;private string _dataFileName = HostingEnvironment.MapPath(
Path.Combine(BlogSettings.Instance.StorageLocation, TWITTERFEED_DATA_FILENAME));&lt;/pre&gt;
&lt;p&gt;change it to: &lt;/p&gt;
&lt;pre class="brush: csharp; auto-links: false;"&gt;private string _dataFileName = HostingEnvironment.MapPath(
Path.Combine(Blog.CurrentInstance.StorageLocation, TWITTERFEED_DATA_FILENAME));&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;8) The next crash was in &lt;em&gt;admin/extension manager/extensions.ascx.cs &lt;/em&gt;from line 202 after some research that was because according to this thread &lt;a title="http://blogengine.codeplex.com/discussions/252979" href="http://blogengine.codeplex.com/discussions/252979"&gt;http://blogengine.codeplex.com/discussions/252979&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You should remove the directory of &lt;em&gt;admin/extension manager&lt;/em&gt; because that is renamed to &lt;em&gt;admin/extensions &lt;/em&gt;from version 2.0.0.49&lt;/p&gt;
&lt;p&gt;My blog worked after these 8 easy steps! The following steps are &lt;span style="text-decoration: underline;"&gt;optional&lt;/span&gt;:&lt;/p&gt;
&lt;p&gt;in &lt;em&gt;app_code/extensions/sentcommentmail.cs &lt;/em&gt;(rule 95) and &lt;em&gt;contact.aspx.cs &lt;/em&gt;(rule 100) there was some obsolete use of &lt;em&gt;replyto. &lt;/em&gt;So I changed it to:&lt;/p&gt;
&lt;pre class="brush: csharp; auto-links: false;"&gt;var mail = new MailMessage
{
   From = new MailAddress(BlogSettings.Instance.Email),
   Subject = BlogSettings.Instance.EmailSubjectPrefix + subject + post.Title
};
mail.ReplyToList.Add(new MailAddress(replyTo, HttpUtility.HtmlDecode(comment.Author)));&lt;/pre&gt;
&lt;p&gt;and in contact.aspx.cs:&lt;/p&gt;
&lt;pre class="brush: csharp; auto-links: false;"&gt;mail.ReplyTo = new MailAddress(email, name);&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class="brush: csharp; auto-links: false;"&gt;mail.ReplyToList.Add(new MailAddress(email, name));&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So everybody should update their BlogEngine installation &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.jphellemons.nl/image.axd?picture=wlEmoticon-smile_2.png" alt="Glimlach" /&gt; because of all the &lt;a href="http://www.dotnetblogengine.net/post/BlogEngineNET-25-Now-Available.aspx" target="_blank"&gt;nice features&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://www.jphellemons.nl/post/Upgrade-BlogEngine-20-to-25.aspx&amp;amp;title=Upgrade BlogEngine 2.0 to 2.5" target="_blank"&gt; &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.jphellemons.nl/post/Upgrade-BlogEngine-20-to-25.aspx" alt="kick it on DotNetKicks.com" border="0" /&gt; &lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://www.jphellemons.nl/post/Upgrade-BlogEngine-20-to-25.aspx&amp;amp;title=Upgrade BlogEngine 2.0 to 2.5" rev="vote-for" target="_blank"&gt; &lt;img style="border: 0px;" src="http://dotnetshoutout.com/image.axd?url=http://www.jphellemons.nl/post/Upgrade-BlogEngine-20-to-25.aspx" alt="Shout it" /&gt; &lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=9zb3VPyrY9c:-iNvBcbo1yQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JpHellemons?a=9zb3VPyrY9c:-iNvBcbo1yQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JpHellemons?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JpHellemons/~4/9zb3VPyrY9c" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/JpHellemons/~3/9zb3VPyrY9c/post.aspx</link>
      <comments>http://www.jphellemons.nl/post/Upgrade-BlogEngine-20-to-25.aspx#comment</comments>
      <guid isPermaLink="false">http://www.jphellemons.nl/post.aspx?id=8f1d7360-b4c2-43be-84d3-65979270a872</guid>
      <pubDate>Mon, 01 Aug 2011 19:34:00 +0100</pubDate>
      <category>Blog</category>
      <category>BlogEngine.NET</category>
      <category>C#</category>
      <dc:publisher>capsoft</dc:publisher>
      <pingback:server>http://www.jphellemons.nl/pingback.axd</pingback:server>
      <pingback:target>http://www.jphellemons.nl/post.aspx?id=8f1d7360-b4c2-43be-84d3-65979270a872</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://www.jphellemons.nl/trackback.axd?id=8f1d7360-b4c2-43be-84d3-65979270a872</trackback:ping>
      <wfw:comment>http://www.jphellemons.nl/post/Upgrade-BlogEngine-20-to-25.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.jphellemons.nl/syndication.axd?post=8f1d7360-b4c2-43be-84d3-65979270a872</wfw:commentRss>
    <feedburner:origLink>http://www.jphellemons.nl/post.aspx?id=8f1d7360-b4c2-43be-84d3-65979270a872</feedburner:origLink></item>
  </channel>
</rss>

