<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Matt Hooper</title>
	<atom:link href="http://mhoop.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mhoop.wordpress.com</link>
	<description>The art and craft of building, designing and managing software products</description>
	<lastBuildDate>Mon, 24 Oct 2011 16:08:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='mhoop.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Matt Hooper</title>
		<link>http://mhoop.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://mhoop.wordpress.com/osd.xml" title="Matt Hooper" />
	<atom:link rel='hub' href='http://mhoop.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Usability issues with multi-column form layouts</title>
		<link>http://mhoop.wordpress.com/2011/08/18/usability-issues-with-multi-column-form-layouts/</link>
		<comments>http://mhoop.wordpress.com/2011/08/18/usability-issues-with-multi-column-form-layouts/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 15:31:02 +0000</pubDate>
		<dc:creator>mhoop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mhoop.wordpress.com/?p=143</guid>
		<description><![CDATA[Here&#8217;s an interesting eye tracking study done on web page forms that have multiple columns of form fields. The conclusion is that people found multi-column layouts more confusing than a single column ones (with a few small exceptions). Using multi column forms in Enrich is a request I hear sometimes because some feel that there&#8217;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=143&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://baymard.com/blog/avoid-multi-column-forms">Here&#8217;s an interesting eye tracking study</a> done on web page forms that have multiple columns of form fields. The conclusion is that people found multi-column layouts more confusing than a single column ones (with a few small exceptions).</p>
<p>Using multi column forms in Enrich is a request I hear sometimes because some feel that there&#8217;s too much white space on screens.  This study makes a good argument that we should avoid doing so.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mhoop.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mhoop.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mhoop.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mhoop.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mhoop.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mhoop.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mhoop.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mhoop.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mhoop.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mhoop.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mhoop.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mhoop.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mhoop.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mhoop.wordpress.com/143/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=143&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mhoop.wordpress.com/2011/08/18/usability-issues-with-multi-column-form-layouts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a67a687ce31175e097f43634d7de01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mhoop</media:title>
		</media:content>
	</item>
		<item>
		<title>Afterthought: the free PostSharp alternative</title>
		<link>http://mhoop.wordpress.com/2011/04/11/afterthought-the-free-postsharp-alternative/</link>
		<comments>http://mhoop.wordpress.com/2011/04/11/afterthought-the-free-postsharp-alternative/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 15:51:04 +0000</pubDate>
		<dc:creator>mhoop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mhoop.wordpress.com/?p=138</guid>
		<description><![CDATA[Jamie Thomas at VC3 has released Afterthought, a free, open source alternative to the very excellent, but not free, PostSharp. The API is somewhat different than PostSharp&#8217;s but it accomplishes the same thing. We&#8217;ll be using it on our various projects at VC3 to help us integrate our ORM with ExoGraph. It supports .NET 4 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=138&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Jamie Thomas at VC3 has released <strong><a href="http://blogs.app.vc3.com/?p=472">Afterthought</a></strong>, a free, open source alternative to the very excellent, but not free, PostSharp.  The API is somewhat different than PostSharp&#8217;s but it accomplishes the same thing.  We&#8217;ll be using it on our various projects at VC3 to help us integrate our ORM with ExoGraph.  It supports .NET 4 too.</p>
<p>Download the release from <a href="http://nuget.org/List/Packages/Afterthought">NuGet</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mhoop.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mhoop.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mhoop.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mhoop.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mhoop.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mhoop.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mhoop.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mhoop.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mhoop.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mhoop.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mhoop.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mhoop.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mhoop.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mhoop.wordpress.com/138/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=138&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mhoop.wordpress.com/2011/04/11/afterthought-the-free-postsharp-alternative/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a67a687ce31175e097f43634d7de01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mhoop</media:title>
		</media:content>
	</item>
		<item>
		<title>Managing a homogeneous Windows server environment with PsExec</title>
		<link>http://mhoop.wordpress.com/2011/04/05/managing-a-homogeneous-windows-server-environment-with-psexec/</link>
		<comments>http://mhoop.wordpress.com/2011/04/05/managing-a-homogeneous-windows-server-environment-with-psexec/#comments</comments>
		<pubDate>Tue, 05 Apr 2011 12:04:26 +0000</pubDate>
		<dc:creator>mhoop</dc:creator>
				<category><![CDATA[system administration]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://mhoop.wordpress.com/?p=126</guid>
		<description><![CDATA[The Enrich team has a suite of automated UI tests that run as part of our continuous integration process. UI tests tend to be slow in nature so we use a server farm of 14 identical virtual machines, each running a mstest agent, to speed things up. One challenge I face is how to manage [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=126&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.excent.com/products/enrich">Enrich</a> team has a suite of automated UI tests that run as part of our continuous integration process. UI tests tend to be slow in nature so we use a server farm of 14 identical virtual machines, each running a mstest agent, to speed things up. One challenge I face is how to manage all of the identical Windows systems in an efficient, automated manner.  An example of this is needing to copy a database backup and restore it to each server periodically.</p>
<p>Here&#8217;s a simple way to administer the group of servers sort of like a <a href="http://en.wikipedia.org/wiki/SIMD">Single instruction, multiple data (SIMD)</a> system using freely available tools.</p>
<p>First download Mark Russinovich&#8217;s, <a href="http://technet.microsoft.com/en-us/sysinternals/bb897553">PsExec</a> which lets you run commands on remote systems:</p>
<blockquote><p>PsExec is a light-weight telnet-replacement that lets you execute processes on other systems, complete with full interactivity for console applications, without having to manually install client software.</p></blockquote>
<p>This utility will let you forward a command to a remote system for execution and is the foundation of this technique.  The fact that this tool doesn&#8217;t require an install on the environments makes setup a breeze. However, you may need to make a few security/firewall changes on each system to get it the communication between systems to work.</p>
<p>Next, I&#8217;ve devised a simple batch file (VMs-cmd.bat) that I can pass a command to that will then be executed in sequence on every server in the environment. For example, the following command will create the c:\whatever directory on every server:</p>
<pre><code>VMs-cmd "mkdir c:\whatever"
</code></pre>
<p>Here&#8217;s the source code for <strong>VMs-cmd.bat</strong>:</p>
<pre>SET VMs=01, 02, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14
FOR %%t in (%VMs%) DO (PsExec.exe \\YouServer-%%t -u username -p password c:\windows\system32\cmd.exe /C %1)</pre>
<p>Note that:</p>
<ul>
<li>This assumes a naming convention of YourServer-XX where XX is the server number. Update the code with your server naming convention and numbers.</li>
<li>You will need to replace the username and password in the batch file</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mhoop.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mhoop.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mhoop.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mhoop.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mhoop.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mhoop.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mhoop.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mhoop.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mhoop.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mhoop.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mhoop.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mhoop.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mhoop.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mhoop.wordpress.com/126/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=126&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mhoop.wordpress.com/2011/04/05/managing-a-homogeneous-windows-server-environment-with-psexec/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a67a687ce31175e097f43634d7de01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mhoop</media:title>
		</media:content>
	</item>
		<item>
		<title>Reducing memory used by the .NET garbage collector</title>
		<link>http://mhoop.wordpress.com/2011/03/23/reducing-memory-used-by-the-net-garbage-collector/</link>
		<comments>http://mhoop.wordpress.com/2011/03/23/reducing-memory-used-by-the-net-garbage-collector/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 11:48:33 +0000</pubDate>
		<dc:creator>mhoop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mhoop.wordpress.com/?p=118</guid>
		<description><![CDATA[Recently I’ve been analyzing memory usage of one of our ASP.Net applications and discovered a configuration setting that greatly reduces an application’s memory footprint. Since .Net 2.0 there are two main kinds of garbage collectors used by the CLR: 1)      Server – Optimized for long running applications that will be the primary software on a system. Memory [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=118&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recently I’ve been analyzing memory usage of one of our ASP.Net applications and discovered a configuration setting that greatly reduces an application’s memory footprint.</p>
<p>Since .Net 2.0 there are two main kinds of garbage collectors used by the CLR:</p>
<p>1)      <strong>Server</strong> – Optimized for long running applications that will be the primary software on a system. Memory is allocated more aggressively to the .NET memory heaps causing more memory is used overall by the application but with the hope of faster performance.   Recommended by Microsoft to be used on multi-processor systems and it appears to be on by default on those systems.</p>
<p>2)      <strong>Workstation</strong> – Optimized for applications that will be running alongside many other processes. Memory is allocated more conservatively at the possible expense of more time being spent in the GC.</p>
<p>Btw, you can determine which GC is being used by checking the <a href="http://msdn.microsoft.com/en-us/library/system.runtime.gcsettings.isservergc.aspx" target="_blank">GCSettings.IsServerGC</a> property.</p>
<p>The GC can be changed via the aspnet.config file under C:\Windows\Microsoft.NET. Note that this setting affects ALL ASP.Net applications on the server:</p>
<pre>&lt;configuration&gt;
    &lt;runtime&gt;
        &lt;<a href="http://msdn.microsoft.com/en-us/library/ms229357.aspx" target="_blank">gcServer</a> enabled="false" /&gt;
    &lt;/runtime&gt;
&lt;/configuration&gt;</pre>
<p>While testing this setting the effect of the different GC&#8217;s under ASP.Net I&#8217;ve noticed that the Workstation GC requires around <strong>65-75% of the memory required for the Server GC</strong>. This is very good news for those of us trying to have an economical shared hosted environment (ie, trying to host as many application instances on a single server as possible).</p>
<p>Here is the specific data collected from the test for the two different garbage collectors showing the difference before and after the aspnet.config change:</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="19%" valign="bottom"></td>
<td colspan="2" width="62%" valign="bottom"><strong>Memory Usage (megabytes)</strong></td>
<td width="13%" valign="bottom"></td>
</tr>
<tr>
<td width="19%" valign="bottom"></td>
<td width="45%" valign="bottom"><span style="text-decoration:underline;">Idle after GC.Collect() and app caches filled</span></td>
<td width="17%" valign="bottom"><span style="text-decoration:underline;">Avg under test</span></td>
<td width="17%" valign="bottom"><span style="text-decoration:underline;">Max under test</span></td>
</tr>
<tr>
<td width="19%" valign="bottom"><strong>Workstation GC</strong></td>
<td width="45%" valign="bottom">329</td>
<td width="17%" valign="bottom">555</td>
<td width="17%" valign="bottom">660</td>
</tr>
<tr>
<td width="19%" valign="bottom"><strong>Server GC</strong></td>
<td width="45%" valign="bottom">415</td>
<td width="17%" valign="bottom">920</td>
<td width="17%" valign="bottom">1002</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mhoop.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mhoop.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mhoop.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mhoop.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mhoop.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mhoop.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mhoop.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mhoop.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mhoop.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mhoop.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mhoop.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mhoop.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mhoop.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mhoop.wordpress.com/118/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=118&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mhoop.wordpress.com/2011/03/23/reducing-memory-used-by-the-net-garbage-collector/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a67a687ce31175e097f43634d7de01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mhoop</media:title>
		</media:content>
	</item>
		<item>
		<title>Reliable approach to discovering and fixing .NET memory leaks</title>
		<link>http://mhoop.wordpress.com/2011/02/02/reliable-approach-to-discovering-and-fixing-net-memory-leaks/</link>
		<comments>http://mhoop.wordpress.com/2011/02/02/reliable-approach-to-discovering-and-fixing-net-memory-leaks/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 15:42:39 +0000</pubDate>
		<dc:creator>mhoop</dc:creator>
				<category><![CDATA[debugging]]></category>

		<guid isPermaLink="false">http://mhoop.wordpress.com/?p=108</guid>
		<description><![CDATA[Tracking down memory leaks can be very time consuming and inexact but WinDbg helps. A lot. WinDbg is a free, very low level debugger you can download from Microsoft. If you&#8217;ve only done debugging through an IDE, such as Visual Studio, it may be a little intimidating at first but you really only need to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=108&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Tracking down memory leaks can be very time consuming and inexact but WinDbg helps. A lot. WinDbg is a free, very low level debugger you can download from Microsoft. If you&#8217;ve only done debugging through an IDE, such as Visual Studio, it may be a little intimidating at first but you really only need to know a couple of commands. You can even do this analysis on production systems by creating a quick memory dump on the server, copying the dump over to a development workstation, and then opening the dump file in WinDbg.</p>
<p>The basic strategy to follow is:</p>
<ol>
<li>Use the application</li>
<li>Force Garbage Collection</li>
<li>Using WinDbg inspect the application&#8217;s memory, looking for objects of a certain type should have been collected</li>
<li>If objects are found, determine what references to them is preventing collection.</li>
<li>Fix the problem</li>
<li>Repeat as needed</li>
</ol>
<p>Without WinDbg, or a similar tool, there would be much guesswork or application instrumentation to locate leaked objects.</p>
<p>Here are the detailed instructions:</p>
<ol>
<li>
<div>Restart the application</div>
</li>
<li>
<div>Exercise the functionality to test for memory leaks.  Be sure to repeat actions several times to magnify the results.</div>
</li>
<li>
<div>Force the garbage collector to run (GC.Collect() and GC.Collect(gen, GCCollectionMode.Forced)).  The GC is non-deterministic so you should do this a few times until you notice memory for the process is no longer changing in Task Manager.</div>
</li>
<li>
<div>Attach to the application process in WinDbg. If you&#8217;re debugging an ASP.Net web application attach to w3wp.exe.</div>
<p><img src="http://mhoop.files.wordpress.com/2011/02/020211_1541_reliableapp11.png?w=600" alt="" /></li>
<li>
<div>Next, load the .Net debugging extensions by entering the following command (the command entry is at the very bottom of the screen)<span style="font-family:Courier;font-size:12pt;"><br />
</span></div>
<p style="margin-left:36pt;">&nbsp;</p>
<pre style="margin-left:36pt;"><span style="font-family:Courier;font-size:12pt;">.loadby sos mscorwks
</span></pre>
</li>
<li>
<div>Get a list of uncollected objects.  Replace &lt;TypeName&gt; with the name of a class that you would expect to not be loaded in memory. In the example below: VC3.TestView.Business.Student.</div>
<p style="margin-left:36pt;">&nbsp;</p>
<pre style="margin-left:36pt;"><span style="font-family:Courier;font-size:12pt;">!dumpheap -type &lt;TypeName&gt;
</span></pre>
<p style="margin-left:36pt;">The command will list the memory address objects of that type that have not yet been garbage collected, followed by some statistics on the objects. You&#8217;ll need to cross reference the type name (MT) in the Statistics section with objects in the heap to locate the address of a single object.</p>
<p style="margin-left:36pt;">&nbsp;</p>
<p style="margin-left:36pt;"><img src="http://mhoop.files.wordpress.com/2011/02/020211_1541_reliableapp21.png?w=600" alt="" /></p>
<p style="margin-left:36pt;">&nbsp;</p>
</li>
<li>
<div>Now, use WinDbg which will tell you what GC rooted reference is keeping the object alive</div>
<p style="margin-left:36pt;">&nbsp;</p>
<pre style="margin-left:36pt;"><span style="font-family:Courier;font-size:12pt;">!gcroot -nostacks &lt;ObjectAddress&gt;
</span></pre>
<p style="margin-left:18pt;"><img src="http://mhoop.files.wordpress.com/2011/02/020211_1541_reliableapp31.png?w=600" alt="" /></p>
</li>
</ol>
<p style="margin-left:54pt;">&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mhoop.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mhoop.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mhoop.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mhoop.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mhoop.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mhoop.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mhoop.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mhoop.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mhoop.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mhoop.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mhoop.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mhoop.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mhoop.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mhoop.wordpress.com/108/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=108&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mhoop.wordpress.com/2011/02/02/reliable-approach-to-discovering-and-fixing-net-memory-leaks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a67a687ce31175e097f43634d7de01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mhoop</media:title>
		</media:content>

		<media:content url="http://mhoop.files.wordpress.com/2011/02/020211_1541_reliableapp11.png" medium="image" />

		<media:content url="http://mhoop.files.wordpress.com/2011/02/020211_1541_reliableapp21.png" medium="image" />

		<media:content url="http://mhoop.files.wordpress.com/2011/02/020211_1541_reliableapp31.png" medium="image" />
	</item>
		<item>
		<title>ExoWeb&#8217;s Entity System</title>
		<link>http://mhoop.wordpress.com/2011/01/13/exowebs-entity-system/</link>
		<comments>http://mhoop.wordpress.com/2011/01/13/exowebs-entity-system/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 03:19:00 +0000</pubDate>
		<dc:creator>mhoop</dc:creator>
				<category><![CDATA[exoweb]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://mhoop.wordpress.com/?p=92</guid>
		<description><![CDATA[In this post I present a short overview of the key concepts that describe how ExoWeb establishes JavaScript &#8220;classes&#8221; on the client to represent entities in your object model. Because its brand new, the first question however is: what is ExoWeb?  Bryan Matthews in his overview of ExoWeb (read it!) has a nice description: &#8220;ExoWeb [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=92&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In this post I present a short overview of the key concepts that describe how ExoWeb establishes JavaScript &#8220;classes&#8221; on the client to represent entities in your object model. Because its brand new, the first question however is: what is ExoWeb?  Bryan Matthews in his <a href="http://endlessobsession.com/2011/01/10/a-brief-introduction-to-exoweb/">overview of ExoWeb</a> (read it!) has a nice description: &#8220;ExoWeb exists to bridge the gap between the client and server.&#8221;  In other words its a JavaScript library that moves your app&#8217;s object model to the web browser to make AJAX-style apps easier.</p>
<p>Luckily the classes ExoWeb generates for your entities will likely seem quite familar to you. ExoWeb lets you write JavaScript like this (contrived example):</p>
<pre style="padding-left:30px;">// prompt for the person's new name</pre>
<pre style="padding-left:30px;">myPerson.set_Name(window.prompt("Edit Name", p.get_Name()));</pre>
<pre style="padding-left:30px;">// insert a new dog as a pet</pre>
<pre style="padding-left:30px;">myPerson.set_Pet(new Dog({Name: "Fido", Weight: "20"}));</pre>
<pre style="padding-left:30px;">// save the changes on the server</pre>
<pre style="padding-left:30px;">window.context.server.save(myPerson);</pre>
<p>We&#8217;ve done our best to make sure the parts and pieces that comprise the ExoWeb entity system work consistently, fit together cleanly and take advantage of JavaScript&#8217;s language features. Here is a short overview of the essential concepts as to how ExoWeb entity classes and objects work (after they have been loaded on the client &#8212; more on that another day):</p>
<h2>Classes</h2>
<p><strong>Client-class per server-class</strong> &#8211; There&#8217;s one JavaScript class generated by ExoWeb for each class in your server-side object model. Classes can be selectively loaded for efficency so only the classes you need are sent to the client.</p>
<p><strong>JavaScript friendly</strong> &#8211; Each entity class comes with all of the standard benefits of javascript classes so new, instanceof, prototypes and inheritance all work as expected:  new Person() instanceof Person == true.</p>
<p><strong>Inheritance</strong> &#8211; Classes support single inheritance implemented via JavaScript prototyping. All generated entity classes ultimately derive from ExoWeb.Model.Entity.</p>
<h2>Object Identity, Construction and Pooling</h2>
<p><strong>Object ids</strong> &#8211; Every instance, including yet to be persisted ones, have a single string identifier associated with it.  If server-side objects have non-string ids (such as numbers, guides, or multipart ids) they will be converted to a string representation for use in the client object model.</p>
<p><strong>Every instance has a unique id</strong> &#8211; No two instances can share the same ID. Period.</p>
<p><strong>Equals (==) works</strong> &#8211; new Person(1) == new Person(1).</p>
<p><strong>New objects have ids too, and they may change</strong> &#8211; A client-only id is assigned to new, yet to be persisted, objects. If the object is later persisted and an ID is assigned server-side, ExoWeb will reflect the new id on the client but keep the temporary one around behind the scenes so that they are both valid references.</p>
<p><strong>Objects are created via their constructor</strong> &#8211; This works as you&#8217;d expect. If the object already exists server-side, pass its ID into the constructor: new Person(); or, new Person(1).  There are also some shortcut constructors to combine construction and property (see the pet example at the beginning of this post).</p>
<p><strong>Objects are pooled</strong> &#8211; ExoWeb tracks objects in an object pool.  Object construction queries and updates the pool as needed.  Invoking the same constructor with the same ID twice will result in a single object being created (new Person(1) === new Person(1))</p>
<p><strong>Pooling works with inheritance</strong> &#8211; Subclass instances appear in their base class&#8217; pools. new Dog(32) === Animal.meta.get(32)</p>
<h2>Object Properties and Methods</h2>
<p><strong>Objects have properties</strong> &#8211; The properties are generated based on the server-side object model.</p>
<p><strong>Objects have methods</strong> &#8211; Methods are generated based on the server-side object model and cause a server roundtrip to occur when invokved.  Client-only methods can also be defined.</p>
<p><strong>Property getters/setters</strong> &#8211; Properties are accessed via getters and setters:  myObj.set_FirstName(&#8220;George&#8221;); myObj.get_FirstName().  This may seem annoying, and should be familar to Java developers, but is required so that eventing, validation and rules will work.</p>
<p><strong>Properties are typed</strong> &#8211; Each property is of a specific type and both either entity types or javascript intrinsic types are supported. If a property&#8217;s value is set to the wrong type and exception is thrown and the value is discarded.</p>
<p><strong>Property change eventing</strong> &#8211; Events are raised when properties change which can trigger UI updates.  Changes are tracked behind the scenes by ExoWeb so they can be persisted later.</p>
<p><strong>Property validation</strong> &#8211; Properties are validated based on metadata provided by your ORM. Validation events can be used to drive validation presentation in the UI.  Checkout the jQuery plugin we&#8217;ve put together that makes this easy.</p>
<p><strong>Client-only properties</strong> &#8211; Properties can be declared in JavaScript on the client to help simplify certain UI tasks.  Checkout the $extend() function for more details.</p>
<p><strong>Calculated properties</strong> &#8211; Properties can have calculated values.  ExoWeb automatically recalculates the property when one of its dependencies change. Like other all properties, a change events are raised so the UI can reflect the changes.</p>
<h2>Metadata</h2>
<p><strong>Class metadata</strong> &#8211; Information about each entity type, such as properties, are available client-side through the type&#8217;s meta property:  Person.meta</p>
<p><strong>Object metadata</strong> &#8211; Each object has metadata, such as its identity and type metadata, accessible via its meta object:  myObj.meta</p>
<p><strong>Conditions metadata</strong> &#8211; Information calculated about the current state of each object are tracked as object conditions.  This includes things like validation errors and basic security checks. This concept was taken directly from ExoRule, our open source rules engine.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mhoop.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mhoop.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mhoop.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mhoop.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mhoop.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mhoop.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mhoop.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mhoop.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mhoop.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mhoop.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mhoop.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mhoop.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mhoop.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mhoop.wordpress.com/92/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=92&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mhoop.wordpress.com/2011/01/13/exowebs-entity-system/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a67a687ce31175e097f43634d7de01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mhoop</media:title>
		</media:content>
	</item>
		<item>
		<title>Amnesia 1.0 released &#8211; database rollbacks for automated UI tests</title>
		<link>http://mhoop.wordpress.com/2010/11/23/amnesia-1-0-released-database-rollbacks-for-automated-ui-tests/</link>
		<comments>http://mhoop.wordpress.com/2010/11/23/amnesia-1-0-released-database-rollbacks-for-automated-ui-tests/#comments</comments>
		<pubDate>Tue, 23 Nov 2010 16:05:12 +0000</pubDate>
		<dc:creator>mhoop</dc:creator>
				<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://mhoop.wordpress.com/?p=80</guid>
		<description><![CDATA[One of the central problems of automated software tested is how to deal with tests that have side effects. Ideally, each test is isolated from all other tests and as such has no side effects. For tests that cause changes to a database, transactions are a great help to undo all changes made during the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=80&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One of the central problems of automated software tested is how to deal with tests that have side effects.  Ideally, each test is isolated from all other tests and as such has no side effects. For tests that cause changes to a database, transactions are a great help to undo all changes made during the test. However, for UI tests and integration tests that span tiers of your application transaction management is difficult.  </p>
<p>At <a href="http://www.vc3.com">VC3</a> we&#8217;ve solved this problem for our own automated UI tests and I&#8217;m happy to announce we&#8217;ve released the code as free, open source software: <strong><a href="http://amnesia.codeplex.com">Amnesia</a></strong>.</p>
<p>With Amnesia the setup and tear down of automated UI tests is easy and very fast. Amnesia uses distributed transactions and forces all requests made to the web app under test to participate in a database transaction so all work can be rolled back at the end of each test.</p>
<p>Please check out the project site for more information and to download the code: <a href="http://amnesia.codeplex.com">http://amnesia.codeplex.com</a>.</p>
<p>Thanks to Graeme Hill (<a href="http://graemehill.ca/high-performance-database-rollback-in-automated-tests-with-sql-server">High performance database rollback in automated tests with SQL Server</a>) for the concept.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mhoop.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mhoop.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mhoop.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mhoop.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mhoop.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mhoop.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mhoop.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mhoop.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mhoop.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mhoop.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mhoop.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mhoop.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mhoop.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mhoop.wordpress.com/80/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=80&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mhoop.wordpress.com/2010/11/23/amnesia-1-0-released-database-rollbacks-for-automated-ui-tests/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a67a687ce31175e097f43634d7de01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mhoop</media:title>
		</media:content>
	</item>
		<item>
		<title>jQuery plugin for SELECT ALL check boxes</title>
		<link>http://mhoop.wordpress.com/2010/07/31/jquery-plugin-for-select-all-check-boxes/</link>
		<comments>http://mhoop.wordpress.com/2010/07/31/jquery-plugin-for-select-all-check-boxes/#comments</comments>
		<pubDate>Sat, 31 Jul 2010 18:44:03 +0000</pubDate>
		<dc:creator>mhoop</dc:creator>
				<category><![CDATA[jquery]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://mhoop.wordpress.com/?p=72</guid>
		<description><![CDATA[Here&#8217;s a simple jQuery plugin for implementing a &#8220;Select All&#8221; checkbox. Usage: checkboxes.checkAll(allSelector) where: checkboxes &#8211;  jQuery object for the set of checkboxes to control allSelector &#8211; CSS selector string to match the &#8220;select all&#8221; checkbox Example: &#60;input id="all" type="checkbox" name="all"&#62;&#60;/input&#62;Select All&#60;br /&#62; &#60;div id="myCheckBoxes"&#62; &#60;input type="checkbox" name="1"&#62;&#60;/input&#62;1&#60;br /&#62; &#60;input type="checkbox" name="2"&#62;&#60;/input&#62;2&#60;br /&#62; &#60;input type="checkbox" [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=72&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a simple jQuery plugin for implementing a &#8220;Select All&#8221; checkbox.</p>
<h3>Usage:</h3>
<pre style="padding-left:30px;">checkboxes.checkAll(allSelector)</pre>
<p>where:</p>
<ul>
<li><strong>checkboxes</strong> &#8211;  jQuery object for the set of checkboxes to control</li>
<li><strong>allSelector</strong> &#8211; CSS selector string to match the &#8220;select all&#8221; checkbox</li>
</ul>
<h3>Example:</h3>
<pre style="padding-left:30px;">
<pre>&lt;input id="all" type="checkbox" name="all"&gt;&lt;/input&gt;Select All&lt;br /&gt;</pre>
</pre>
<pre style="padding-left:30px;">&lt;div id="myCheckBoxes"&gt;</pre>
<pre style="padding-left:60px;">&lt;input type="checkbox" name="1"&gt;&lt;/input&gt;1&lt;br /&gt;</pre>
<pre style="padding-left:60px;">
<pre>&lt;input type="checkbox" name="2"&gt;&lt;/input&gt;2&lt;br /&gt;
<pre>&lt;input type="checkbox" name="3"&gt;&lt;/input&gt;3</pre>
</pre>
</pre>
<pre style="padding-left:30px;">&lt;/div&gt;</pre>
<pre style="padding-left:30px;">&lt;script type="text/javascript"&gt;</pre>
<pre style="padding-left:30px;">
<pre style="padding-left:30px;">$(function() {</pre>
<pre style="padding-left:60px;">$("#myCheckBoxes input").checkAll("#all");</pre>
<pre style="padding-left:30px;">});</pre>
</pre>
<pre style="padding-left:30px;">&lt;/script&gt;</pre>
<h2></h2>
<h2>Plug-In Code:</h2>
<pre>
;(function($) {
	$.fn.checkAll = function checkAll(allSelector) {
		var all = $(allSelector);
		var items = this;

		all.click(function() {
			if (all.get(0).checked)
				items.attr("checked", "checked");
			else
				items.removeAttr("checked");
		});

		function evalAllChecked() {
			if (items.filter(":checked").length == items.length)
				all.attr("checked", "checked");
			else
				all.removeAttr("checked");
		}

		evalAllChecked();
		items.click(evalAllChecked);
	}
})(jQuery);
</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mhoop.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mhoop.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mhoop.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mhoop.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mhoop.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mhoop.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mhoop.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mhoop.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mhoop.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mhoop.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mhoop.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mhoop.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mhoop.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mhoop.wordpress.com/72/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=72&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mhoop.wordpress.com/2010/07/31/jquery-plugin-for-select-all-check-boxes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a67a687ce31175e097f43634d7de01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mhoop</media:title>
		</media:content>
	</item>
		<item>
		<title>Automated Website Testing slides</title>
		<link>http://mhoop.wordpress.com/2009/10/01/67/</link>
		<comments>http://mhoop.wordpress.com/2009/10/01/67/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 12:27:19 +0000</pubDate>
		<dc:creator>mhoop</dc:creator>
				<category><![CDATA[presentations]]></category>

		<guid isPermaLink="false">http://mhoop.wordpress.com/?p=67</guid>
		<description><![CDATA[Here are the slides from the Automated Website Testing presentation from yesterday&#8217;s Refresh Columbia meetup.  I enjoyed meeting everyone!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=67&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here are the <a href="http://mhoop.files.wordpress.com/2009/10/automated-website-testing.pptx">slides</a> from the Automated Website Testing presentation from yesterday&#8217;s <a title="Refresh Columbia meeting" href="http://www.refreshcolumbia.org/meetings/september-2009-meetup/">Refresh Columbia meetup</a>.  I enjoyed meeting everyone!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mhoop.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mhoop.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mhoop.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mhoop.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mhoop.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mhoop.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mhoop.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mhoop.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mhoop.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mhoop.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mhoop.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mhoop.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mhoop.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mhoop.wordpress.com/67/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=67&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mhoop.wordpress.com/2009/10/01/67/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a67a687ce31175e097f43634d7de01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mhoop</media:title>
		</media:content>
	</item>
		<item>
		<title>Presenting at Refresh Columbia</title>
		<link>http://mhoop.wordpress.com/2009/09/28/presenting-at-refresh-columbia/</link>
		<comments>http://mhoop.wordpress.com/2009/09/28/presenting-at-refresh-columbia/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 23:47:00 +0000</pubDate>
		<dc:creator>mhoop</dc:creator>
				<category><![CDATA[events]]></category>

		<guid isPermaLink="false">http://mhoop.wordpress.com/?p=62</guid>
		<description><![CDATA[At the September meeting of Refresh Columbia I’ll be presenting techniques for automated website testing using WatiN, an open source tool for browser-based testing.  I’ll discuss ways to approach test writing and the pros and cons this style of integration testing vs more focused unit tests.  Additionally I&#8217;ll cover how we have used it over [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=62&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.refreshcolumbia.org/meetings/september-2009-meetup/">At the September meeting of Refresh Columbia</a> I’ll be presenting techniques for automated website testing using <a href="http://watin.sourceforge.net/">WatiN</a>, an open source tool for browser-based testing.  I’ll discuss ways to approach test writing and the pros and cons this style of integration testing vs more focused unit tests.  Additionally I&#8217;ll cover how we have used it over the past year to test some of our web-based apps at <a href="http://www.vc3.com/">VC3</a>.</p>
<p><strong>When: </strong>Weds 9/30, 6:00 PM</p>
<p><strong>Where: </strong>Richland County Public Library &#8211; Bostick Auditorium</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mhoop.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mhoop.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mhoop.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mhoop.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mhoop.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mhoop.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mhoop.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mhoop.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mhoop.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mhoop.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mhoop.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mhoop.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mhoop.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mhoop.wordpress.com/62/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mhoop.wordpress.com&amp;blog=8830496&amp;post=62&amp;subd=mhoop&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mhoop.wordpress.com/2009/09/28/presenting-at-refresh-columbia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a67a687ce31175e097f43634d7de01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mhoop</media:title>
		</media:content>
	</item>
	</channel>
</rss>
