<?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/"
	>

<channel>
	<title>Brian Hartsock&#039;s Blog &#187; Software</title>
	<atom:link href="http://blog.brianhartsock.com/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.brianhartsock.com</link>
	<description>The exciting life of a software developer and nerd</description>
	<lastBuildDate>Thu, 29 Jul 2010 02:40:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>DRY for training</title>
		<link>http://blog.brianhartsock.com/2008/09/19/dry-for-training/</link>
		<comments>http://blog.brianhartsock.com/2008/09/19/dry-for-training/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 17:36:36 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/?p=129</guid>
		<description><![CDATA[Most developers know the term DRY, don&#8217;t repeat yourself. To code monkeys, it is second nature. What&#8217;s funny is it can be applied to everything, not just coding. Most developers don&#8217;t get this. Today, one of my team leads did a tech talk for his team. The talk was an intro to MVC, specific to [...]]]></description>
			<content:encoded><![CDATA[<p>Most developers know the term DRY, <em>don&#8217;t repeat yourself</em>.  To code monkeys, it is second nature.  What&#8217;s funny is it can be applied to everything, not just coding.  Most developers don&#8217;t get this.</p>
<p>Today, one of my team leads did a <em>tech talk</em> for his team.  The talk was an intro to <a href="http://en.wikipedia.org/wiki/Model-view-controller">MVC</a>, specific to their project.  It was awesome.  You might be thinking, <em>MVC is second nature to me</em>.  <em>I have been using MVC for years</em>.  <em>Any noob should know what MVC is</em>.  That&#8217;s not true.</p>
<p>At <a href="http://www.mailtrust.com/">Mailtrust</a>, the vast majority of our developers come from the coolest school across the street, Virginia Tech.  Many of them didn&#8217;t learn MVC in school.  Even if they did, they have never used it in an enterprise environment working in a team.</p>
<p><img src="http://blog.brianhartsock.com/wp-content/uploads/2008/09/camtasia_studio.jpg" alt="" title="camtasia_studio" width="300" height="167" class="alignleft size-medium wp-image-130" style="float:left" /><a href="http://www.techsmith.com/camtasia.asp">Camtasia </a>to the rescue.  For this tech talk, we did our first <a href="http://en.wikipedia.org/wiki/Screencast">screencast</a> recording.  Now we have a reusable, applicable, and awesome training tool.  The next time someone asks what MVC is, they won&#8217;t get the 5 minute high level talk that leaves them more lost than before.  They get an hour long presentation, with full demo and discussion.  Sweet.  No more repeat training sessions.</p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+DRY+for+training+http://bit.ly/H6bPW" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2008/09/19/dry-for-training/&amp;title=DRY+for+training" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg-micro3.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2008/09/19/dry-for-training/&amp;t=DRY+for+training" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2008/09/19/dry-for-training/&amp;title=DRY+for+training" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit-micro3.png" alt="Post to Reddit" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2008/09/19/dry-for-training/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KDiff, try it</title>
		<link>http://blog.brianhartsock.com/2008/09/11/kdiff-try-it/</link>
		<comments>http://blog.brianhartsock.com/2008/09/11/kdiff-try-it/#comments</comments>
		<pubDate>Thu, 11 Sep 2008 17:04:59 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/?p=127</guid>
		<description><![CDATA[I had the need to compare two different directories on a Windows box and I came across KDiff. It integrates with Explorer and does exactly what I need. Try it.]]></description>
			<content:encoded><![CDATA[<p>I had the need to compare two different directories on a Windows box and I came across <a href="http://kdiff3.sourceforge.net/">KDiff</a>.  It integrates with Explorer and does exactly what I need.  Try it.</p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+KDiff%2C+try+it+http://bit.ly/Y8cvb" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2008/09/11/kdiff-try-it/&amp;title=KDiff%2C+try+it" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg-micro3.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2008/09/11/kdiff-try-it/&amp;t=KDiff%2C+try+it" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2008/09/11/kdiff-try-it/&amp;title=KDiff%2C+try+it" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit-micro3.png" alt="Post to Reddit" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2008/09/11/kdiff-try-it/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Break the Feature Paradigm</title>
		<link>http://blog.brianhartsock.com/2008/09/08/break-the-feature-paradigm/</link>
		<comments>http://blog.brianhartsock.com/2008/09/08/break-the-feature-paradigm/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 23:49:00 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/?p=124</guid>
		<description><![CDATA[I was thinking about product backlogs today, and I realized that they represent an interesting paradigm. In short, they equate features to a checklist. Once it is done, it is marked off. Completed. Done. Finito. In reality, this isn&#8217;t true at all. A feature is a commitment to your users. For every feature, the initial [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.brianhartsock.com/wp-content/uploads/2008/09/checklist.jpg" alt="" title="checklist" width="73" height="127" class="size-medium wp-image-125" align="right" />I was thinking about product backlogs today, and I realized that they represent an interesting paradigm.  In short, they equate features to a checklist.  Once it is done, it is marked off.  Completed.  Done.  Finito.</p>
<p>In reality, this isn&#8217;t true at all.  A feature is a commitment to your users.  For every feature, the initial cost is usually design, development, testing, documentation, and support.  What&#8217;s funny, is every single one of those is a continuing cost that usually gets overlooked.  For every feature, there are bugs that developers need to fix, testers need to verify, and writers need to document.  For every design, there is usability testing that reveals flaws.  For every feature, there is support.</p>
<p>To succeed, I think there are really two choices.  One, eliminate as much continuing cost from each feature as possible.  This can be accomplished by reducing uncertainty.  Unit tests, functional tests,  usability tests, continuous integration, and multiple testing environments all reduce this uncertainty.  Unfortunately, this slows your turnaround time down unless you can hire at a rate greater than your continuing cost, which is hard.</p>
<p>Or you can implement less features.  This means every feature you implement has to be super important and you can spend a lot of time making it awesome.  What&#8217;s funny is you now have time to do all the things necessary to build a feature with a very low continuing cost.  The obvious downside is, you may not be able to compete because your competitor has everything you don&#8217;t.</p>
<p>What&#8217;s better?  I honestly don&#8217;t know.  What I do know is every feature should be thought of this way and not as a checklist item.  Then skipping that <em>useless </em>unit or functional test doesn&#8217;t seem as appealing.</p>
<p><center><img src="http://blog.brianhartsock.com/wp-content/uploads/2008/09/jennifer_lopez_-_love_dont_cost_a_thing_-_cd_single_cover.jpg" alt="" title="jennifer_lopez_-_love_dont_cost_a_thing_-_cd_single_cover" width="300" height="300" class="aligncenter size-medium wp-image-126" /></center></p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+Break+the+Feature+Paradigm+http://bit.ly/gFLLG" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2008/09/08/break-the-feature-paradigm/&amp;title=Break+the+Feature+Paradigm" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg-micro3.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2008/09/08/break-the-feature-paradigm/&amp;t=Break+the+Feature+Paradigm" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2008/09/08/break-the-feature-paradigm/&amp;title=Break+the+Feature+Paradigm" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit-micro3.png" alt="Post to Reddit" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2008/09/08/break-the-feature-paradigm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amazon Unbox</title>
		<link>http://blog.brianhartsock.com/2008/08/11/amazon-unbox/</link>
		<comments>http://blog.brianhartsock.com/2008/08/11/amazon-unbox/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 21:16:14 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MythTV]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Amazon]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/?p=115</guid>
		<description><![CDATA[I downloaded Amazon&#8217;s Unbox this weekend to watch some BSG (yes I am a nerd). Unbox is Amazon&#8217;s video download service. I say service because it is much more than just another download. Amazon allows me to re-download videos or transfer them to multiple machines. Obviously, the Unbox player doesn&#8217;t allow burning to DVD, but [...]]]></description>
			<content:encoded><![CDATA[<p>I downloaded <a href="http://www.amazon.com/gp/video/help/faq.html?pf_rd_p=298517001&#038;pf_rd_s=center-1&#038;pf_rd_t=101&#038;pf_rd_i=16261631&#038;pf_rd_m=ATVPDKIKX0DER&#038;pf_rd_r=0KECERDC2B9H9BSJ6Q7A">Amazon&#8217;s Unbox</a> this weekend to watch some <a href="http://www.scifi.com/battlestar/">BSG</a> (yes I am a nerd).  Unbox is Amazon&#8217;s video download service.  I say service because it is much more than just another download.  Amazon allows me to re-download videos or transfer them to multiple machines.  Obviously, the Unbox player doesn&#8217;t allow burning to DVD, but I am over my purist-open-world days.</p>
<p>As with any service, there is room for vast improvements.  The software is slow and buggy, but not bad enough to piss me off, which means it is still very usable.  Also, the software only works on Windows XP or Vista, which is annoying for me because I run Ubuntu and Windows.  In the future, software for linux that could be integrated with MythTV would be stellar-sweet.  (Something tells me the suits are worried about the ability to rip the videos easier in linux).</p>
<p>All things considered, it is exactly what I wanted when my craving for season 4 of BSG got the best of me.  I can&#8217;t compare it to similar services, but it is worth trying if you don&#8217;t care to hook your laptop up to your TV and pay $1.89 an episode.</p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+Amazon+Unbox+http://bit.ly/IVWvG" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2008/08/11/amazon-unbox/&amp;title=Amazon+Unbox" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg-micro3.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2008/08/11/amazon-unbox/&amp;t=Amazon+Unbox" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2008/08/11/amazon-unbox/&amp;title=Amazon+Unbox" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit-micro3.png" alt="Post to Reddit" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2008/08/11/amazon-unbox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Code your Documents</title>
		<link>http://blog.brianhartsock.com/2008/07/26/code-your-documents/</link>
		<comments>http://blog.brianhartsock.com/2008/07/26/code-your-documents/#comments</comments>
		<pubDate>Sat, 26 Jul 2008 18:09:44 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Best Practices]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/?p=111</guid>
		<description><![CDATA[Every developer has heard the phrase document your code. The reason this is important is the functionality is now coupled with a description of how it works. Now a future developer can load up a single source of information and understand the functionality. But, more importantly, the odds of the documentation staying updated are higher [...]]]></description>
			<content:encoded><![CDATA[<p>Every developer has heard the phrase <em>document your code</em>.  The reason this is important is the functionality is now coupled with a description of how it works.   Now a future developer can load up a single source of information and understand the functionality.  But, more importantly, the odds of the documentation staying updated are higher because of this coupling.  The same can&#8217;t be said for a standalone document.</p>
<p>Well, shouldn&#8217;t the same be true for documents, specifically those that describe some sort of process?  For example, a document describing the steps to setup an IIS web server for a particular application is perfect to convert to an automated script.  So, today, I started on a simple script to setup IIS compression using <a href="http://msdn.microsoft.com/en-us/library/wea2sca5(VS.80).aspx">MSBuild</a>.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Project</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
  <span style="color: #808080; font-style: italic;">&lt;!-- Types --&gt;</span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;PropertyGroup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;adsutilPath<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>C:\inetpub\AdminScripts\adsutil.vbs<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/adsutilPath<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;cscriptPath<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>cscript<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/cscriptPath<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;StaticFilesToCompress<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>html htm js txt<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/StaticFilesToCompress<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;DynamicFilesToCompress<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>aspx asp dll exe axd<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/DynamicFilesToCompress<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/PropertyGroup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Target</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">&quot;IisCompression&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Message</span> <span style="color: #000066;">Text</span>=<span style="color: #ff0000;">&quot;Turn on static and dynamic compression for all of IIS.&quot;</span> <span style="color: #000066;">Importance</span>=<span style="color: #ff0000;">&quot;high&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #808080; font-style: italic;">&lt;!-- http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/502ef631-3695-4616-b268-cbe7cf1351ce.mspx?mfr=true --&gt;</span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Exec</span> <span style="color: #000066;">Command</span>=<span style="color: #ff0000;">&quot;$(cscriptPath) $(adsutilPath) set w3svc/filters/compression/parameters/HcDoStaticCompression true&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Exec</span> <span style="color: #000066;">Command</span>=<span style="color: #ff0000;">&quot;$(cscriptPath) $(adsutilPath) set w3svc/filters/compression/parameters/HcDoDynamicCompression true &quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Message</span> <span style="color: #000066;">Text</span>=<span style="color: #ff0000;">&quot;Select files to compress for static and dyanamic compression.&quot;</span> <span style="color: #000066;">Importance</span>=<span style="color: #ff0000;">&quot;high&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #808080; font-style: italic;">&lt;!-- http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/d52ff289-94d3-4085-bc4e-24eb4f312e0e.mspx?mfr=true --&gt;</span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Exec</span> <span style="color: #000066;">Command</span>=<span style="color: #ff0000;">&quot;$(cscriptPath) $(adsutilPath) set W3SVC/Filters/Compression/Deflate/HcFileExtensions $(StaticFilesToCompress)&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Exec</span> <span style="color: #000066;">Command</span>=<span style="color: #ff0000;">&quot;$(cscriptPath) $(adsutilPath) set W3SVC/Filters/Compression/gzip/HcFileExtensions $(StaticFilesToCompress)&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Exec</span> <span style="color: #000066;">Command</span>=<span style="color: #ff0000;">&quot;$(cscriptPath) $(adsutilPath) set W3SVC/Filters/Compression/Deflate/HcScriptFileExtensions $(DynamicFilesToCompress)&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Exec</span> <span style="color: #000066;">Command</span>=<span style="color: #ff0000;">&quot;$(cscriptPath) $(adsutilPath) set W3SVC/Filters/Compression/gzip/HcScriptFileExtensions $(DynamicFilesToCompress)&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Project<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Not only does this script automate the process, but it serves as a living document for the process.  By doing this, the documented process is now coupled to the task itself.</p>
<p>The next step to coding processes is coding tasks that can&#8217;t be automated.  For example, during a deployment, if some sort of fatal error occurs, the next task might be to call your boss and clean up your resume.  Why not code a message in the deploy script to give you the list of people and phone numbers to call in case of an emergency, then load up your resume in Word?  Again, the documented process is now coupled with the task itself.</p>
<p>Obviously, this article grows out of my dislike of documentation.  I dislike it, not because it isn&#8217;t useful, but because it takes a lot of time and, in my personal experience, isn&#8217;t used very often.  By integrating the documentation with the task itself, I think we gain more value from it.</p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+Code+your+Documents+http://bit.ly/bBQR3" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2008/07/26/code-your-documents/&amp;title=Code+your+Documents" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg-micro3.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2008/07/26/code-your-documents/&amp;t=Code+your+Documents" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2008/07/26/code-your-documents/&amp;title=Code+your+Documents" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit-micro3.png" alt="Post to Reddit" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2008/07/26/code-your-documents/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>NHibernate O/R Mapper: Part 2</title>
		<link>http://blog.brianhartsock.com/2008/02/10/nhibernate-or-mapper-part-2/</link>
		<comments>http://blog.brianhartsock.com/2008/02/10/nhibernate-or-mapper-part-2/#comments</comments>
		<pubDate>Mon, 11 Feb 2008 00:32:01 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/2008/02/10/nhibernate-or-mapper-part-2/</guid>
		<description><![CDATA[In a previous post I talked about my first impressions of NHibernate. Not a whole lot has changed since then, except I have learned a lot more. But, I said I would discuss what I didn&#8217;t like about NHibernate so here it goes. Session Management The biggest thing that I don&#8217;t like is the session [...]]]></description>
			<content:encoded><![CDATA[<p>In a previous <a href="http://blog.brianhartsock.com/2007/12/10/nhibernate-or-mapper-part-1/">post</a> I talked about my first impressions of <a href="http://www.nhibernate.org/">NHibernate</a>.  Not a whole lot has changed since then, except I have learned a lot more.  But, I said I would discuss what I didn&#8217;t like about NHibernate so here it goes.</p>
<h4>Session Management</h4>
<p>The biggest thing that I don&#8217;t like is the session management aspect.  Although I have come to understand why NHibernate sessions are so valuable and critical to its functionality, it doesn&#8217;t stop the fact that persistent objects are tied to a single database.  For a project that follows the patterns and practices set forth in ivory towers, this works great.  All business entities are stored in a database in 6th <a href="http://en.wikipedia.org/wiki/Database_normalization#Normal_forms">normal form</a> and everyone is happy.  Well, when working with legacy and enterprise systems, that usually isn&#8217;t the case.  There are many different databases that are used and objects are stored across a variety of them.</p>
<p>In order to get my system to use NHibernate, the first challenge was incorporating multiple sessions.  A session is basically a connection to a single database that manages persistent objects.  This <a href="http://www.codeproject.com/KB/aspnet/NHibernateMultipleDBs.aspx">article</a> describes a really complex way to accomplish it, but all you really need to pay attention to is the <em>NHibernateSessionModule</em> and <em>NHibernateSessionManager.</em>  Using the outline described in the article, I successfully got multiple sessions to work fairly painlessly.</p>
<p>The second challenge was storing a persistent object in multiple database.  Since persistent objects in NHibernate can&#8217;t span multiple sessions, some data massaging has to be performed.  As I see it, there are two possibilities for storing an object in multiple database. </p>
<ol>
<li>Different objects for each database with type conversion operators</li>
<li>The same object for all databases with extra session logic</li>
</ol>
<p>The latter is obviously easier from a domain model perspective, but not from an implementation perspective.  For a persistent object from one session to be stored in another session, all references must be removed from the session.  This means unproxying the object and unpersisting any collections contained within the object.  Looking through the NHibernate source code, I was able to accomplish this with only a few lines of code.</p>
<h4>Setup &#038; Documentation</h4>
<p>Most of the getting started guides for NHibernate are no where near complete or up-to-date.  It took a couple days to get my environment up and running.  This isn&#8217;t really a problem with the library itself, but is still a problem for first time users.  In all reality, there seems to be a lack of documentation in general.  Three example mappings in the documentation is no where near enough for what is marketed as an enterprise ORM solution.</p>
<h4>Conclusion</h4>
<p>NHibernate is awesome.  Even with these minor issues, it is one of the greatest tools for web development I have ever used.  I hope that the development of this library continues to improve, and hopefully some of these issues will be resolved.</p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+NHibernate+O%2FR+Mapper%3A+Part+2+http://bit.ly/2jl38j" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2008/02/10/nhibernate-or-mapper-part-2/&amp;title=NHibernate+O%2FR+Mapper%3A+Part+2" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg-micro3.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2008/02/10/nhibernate-or-mapper-part-2/&amp;t=NHibernate+O%2FR+Mapper%3A+Part+2" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2008/02/10/nhibernate-or-mapper-part-2/&amp;title=NHibernate+O%2FR+Mapper%3A+Part+2" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit-micro3.png" alt="Post to Reddit" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2008/02/10/nhibernate-or-mapper-part-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Data Access Application Blocks</title>
		<link>http://blog.brianhartsock.com/2007/09/18/data-access-application-blocks/</link>
		<comments>http://blog.brianhartsock.com/2007/09/18/data-access-application-blocks/#comments</comments>
		<pubDate>Tue, 18 Sep 2007 14:13:01 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/2007/09/18/data-access-application-blocks/</guid>
		<description><![CDATA[Last week I discussed using ADO.NET in enterprise applications. A good part of the article was explaining the negatives of using the DataSet class. Although I stand by that conclusion, I also want to say that I like ADO.net overall. Some of the tools it provides are good for enterprise applications, while others are better [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I discussed using ADO.NET in enterprise applications.  A good part of the article was explaining the negatives of using the DataSet class.  Although I stand by that conclusion, I also want to say that I like ADO.net overall.  Some of the tools it provides are good for enterprise applications, while others are better for smaller applications.</p>
<p>ADO.NET provides common interfaces and base classes that can be used with different database providers.  While some companies use everything Microsoft, we do not.  In all honesty, I would choose MySQL over SQL Server for almost any project but that is an argument for another day.  Like I was saying, ADO.NET is good, but can have some very repetitive code.  Managing connections, creating commands, adding parameters, and executing readers is pretty annoying.  But, the worst thing about ADO.NET is having to create database provider specific code.  To create a connection to an Odbc database, you have to actually load the OdbcConnection class.</p>
<p>Luckily, Microsoft realized that ADO.NET had these short comings and created Data Access Application blocks, which are part of their Enterprise Library.  I have been using them for a couple weeks and am definitely a fan.  The greatest thing about it is the ability to completely abstract out the database provider.  For example (Copied from the Microsoft website):</p>
<pre lang="c#" line="1">
Database db = DatabaseFactory.CreateDatabase();
DbCommand dbCommand = db.GetStoredProcCommand("GetProductsByCategory"); 

// Retrieve products from category 7.
db.AddInParameter(dbCommand, "CategoryID", DbType.Int32, 7);
DataSet productDataSet = db.ExecuteDataSet(dbCommand);
</pre>
<p>If you didn&#8217;t notice, there was no mention about an Ole, SQL, Oracle, or Odbc provider.  Also, I think it is a really clean and logical way to abstract the database.  I definitely recommend checking out Data Access Application blocks, as well as the entire Enterprise library. </p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+Data+Access+Application+Blocks+http://bit.ly/13Vh7h" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2007/09/18/data-access-application-blocks/&amp;title=Data+Access+Application+Blocks" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg-micro3.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2007/09/18/data-access-application-blocks/&amp;t=Data+Access+Application+Blocks" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2007/09/18/data-access-application-blocks/&amp;title=Data+Access+Application+Blocks" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit-micro3.png" alt="Post to Reddit" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2007/09/18/data-access-application-blocks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ADO.NET</title>
		<link>http://blog.brianhartsock.com/2007/09/06/adonet/</link>
		<comments>http://blog.brianhartsock.com/2007/09/06/adonet/#comments</comments>
		<pubDate>Thu, 06 Sep 2007 16:08:15 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/2007/09/06/adonet/</guid>
		<description><![CDATA[I recently started a new project here at Webmail.us which will be a .NET based web application. One of the core pieces of .NET web apps is, not surprisingly, ADO.NET. It is Microsoft&#8217;s upgrade from ADO, but it is more of a rewrite. Almost everything has been refactored, with many new abstractions and paradigms for [...]]]></description>
			<content:encoded><![CDATA[<p>I recently started a new project here at Webmail.us which will be a .NET based web application.  One of the core pieces of .NET web apps is, not surprisingly, ADO.NET.  It is Microsoft&#8217;s upgrade from ADO, but it is more of a rewrite.  Almost everything has been refactored, with many new abstractions and paradigms for how to access data.  When I first read about ADO.NET, I was very skeptical.  I didn&#8217;t understand the need for these complex, hard to understand abstractions like DataTable&#8217;s and DataRelation&#8217;s and DataSet&#8217;s.  It all seemed foreign to me for a multitude of reasons.  Unfortunately, Microsoft seems to be pushing DataSet&#8217;s so loudly, its hard to see what else is out there.</p>
<p>After a few days of digging though, I found a few great articles (<a href="http://www.informit.com/articles/article.aspx?p=31099">Choosing Data Containers for .NET</a>, <a href="http://msdn2.microsoft.com/En-US/library/aa479317.aspx">On the Way to Mastering ASP.NET: Introducing Custom Entity Classes</a>) on why not to use DataSets, as well as why you should.  DataSets were designed for rapid application development, and seems to be Microsoft&#8217;s answer to the Rails ActiveRecord pattern.  It is a quick and dirty way to build the data access layer for web applications.  To be more specific, by quick I mean it allows version 1.0 of a product to be released quickly, because a data abstraction already exists.  By dirty, I mean it isn&#8217;t an abstraction created for your application, it is a data abstraction created for any application.  </p>
<h4>Pro&#8217;s of ADO.net</h4>
<ul>
<li>Fast development time</li>
<li>In place architecture.<br />
Developing custom data access solutions can be very powerful, and very risky.  A bad design can lead to bad performance and is inherently error prone</li>
<li>Feature rich
<ul>
<li>Disconnected data</li>
<li>Concurrency</li>
<li>Many more&#8230;</li>
</ul>
</li>
<li>Easily serializable</li>
</ul>
<h4>Con&#8217;s of DataSets</h4>
<ul>
<li>Large memory footprint</li>
<li>Not object oriented.<br />
DataSet&#8217;s represent relation data, just like a database.  But I don&#8217;t want an in-memory representation of the Employee table, I want Employee objects.  <a href="http://www.hanselman.com/blog/PermaLink.aspx?guid=d88f7539-10d8-4697-8c6e-1badb08bb3f5">Scott Hanselman</a> sums it up pretty nicely:</p>
<blockquote><p>A DataSet is an object, right?  But it&#8217;s not a Domain Object, it&#8217;s not an &#8220;Apple&#8221; or &#8220;Orange&#8221; &#8211; it&#8217;s an object of type &#8220;DataSet.&#8221;  A DataSet is a bowl (one that knows about the backing Data Store).  A DataSet is an object that knows how to HOLD Rows and Columns.  It&#8217;s an object that knows a LOT about the Database.  But I don&#8217;t want to return bowls.  I want to return Domain Objects, like &#8220;Apples.&#8221;
</p></blockquote>
</li>
<li>Not abstracted.<br />
Directly connected with database data and structure.  So, any change to the database schema, could trickle down to the presentation layer.</li>
</ul>
<h4>Conclusion</h4>
<p>ADO.NET is a huge improvement from old ADO, but don&#8217;t buy into the entire framework.  Microsoft is trying to push DataSets but they might not always be the best solution.  For enterprise applications, I don&#8217;t think DataSet&#8217;s are the answer.  On the other hand, for smaller web application, it might be a perfect fit. </p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+ADO.NET+http://bit.ly/2lsN65" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2007/09/06/adonet/&amp;title=ADO.NET" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg-micro3.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2007/09/06/adonet/&amp;t=ADO.NET" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2007/09/06/adonet/&amp;title=ADO.NET" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit-micro3.png" alt="Post to Reddit" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2007/09/06/adonet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>K2 WordPress theme</title>
		<link>http://blog.brianhartsock.com/2007/09/04/k2-wordpress-theme/</link>
		<comments>http://blog.brianhartsock.com/2007/09/04/k2-wordpress-theme/#comments</comments>
		<pubDate>Tue, 04 Sep 2007 18:48:40 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/2007/09/04/k2-wordpress-theme/</guid>
		<description><![CDATA[For the past few weeks, I log into my blog and am disgusted at the theme I was using. It was pretty awful, but I couldn&#8217;t find anything I liked better. My requirements for a theme are simple: Widget ready At least 1 sidebar, maybe 2 Simple Being a web developer, I hoped for a [...]]]></description>
			<content:encoded><![CDATA[<p>For the past few weeks, I log into my blog and am disgusted at the theme I was using.  It was pretty awful, but I couldn&#8217;t find anything I liked better.</p>
<p>My requirements for a theme are simple:</p>
<ul>
<li>Widget ready</li>
<li>At least 1 sidebar, maybe 2</li>
<li>Simple</li>
</ul>
<p>Being a web developer, I hoped for a little more though.  I wanted an Ajax theme.  It took a while, but I finally found <a href="http://getk2.com/">K2</a>, the second version of the default Kubrick theme.  So far I am super happy with it, but I need to tweak the <a href="http://robm.me.uk/projects/plugins/wordpress/now-reading/">Now Reading</a> plugin to not suck at HTML.</p>
<p>Maybe I can get back to blogging about important things soon since this one annoyance is gone &#8230;</p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+K2+WordPress+theme+http://bit.ly/4qHc4S" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2007/09/04/k2-wordpress-theme/&amp;title=K2+WordPress+theme" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg-micro3.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2007/09/04/k2-wordpress-theme/&amp;t=K2+WordPress+theme" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2007/09/04/k2-wordpress-theme/&amp;title=K2+WordPress+theme" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit-micro3.png" alt="Post to Reddit" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2007/09/04/k2-wordpress-theme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework 1.0</title>
		<link>http://blog.brianhartsock.com/2007/07/13/zend-framework-10/</link>
		<comments>http://blog.brianhartsock.com/2007/07/13/zend-framework-10/#comments</comments>
		<pubDate>Fri, 13 Jul 2007 16:33:37 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/2007/07/13/zend-framework-10/</guid>
		<description><![CDATA[A while back, I posted a review of some existing Active Record implementations. One of those happened to be the Zend frameworks DB portion. I believe that was about the time of version 0.7, and I recently looked on their website and discovered 1.0 had been released. I initially had low expectations, expecting 1.0 to [...]]]></description>
			<content:encoded><![CDATA[<p>A while back, I<a href="http://blog.brianhartsock.com/2007/02/19/active-record/"> posted a review</a> of some existing Active Record implementations.  One of those happened to be the Zend frameworks DB portion.  I believe that was about the time of version 0.7, and I recently looked on their <a href="http://framework.zend.com/home">website</a> and discovered 1.0 had been released.</p>
<p>I initially had low expectations, expecting 1.0 to just clean up 0.7 code, with minimal feature additions.  After I downloaded it, I found out how wrong I was.  The 1.0 release fixed every negative comment I had about 0.7.  Although it&#8217;s not perfect, it&#8217;s a lot better than it used to be.</p>
<h4>The Good..</h4>
<ul>
<li>Variables for defining which row and rowset classes to use in Zend_Db_Table.  This enables custom row and rowset classes which I believe is a must-have.</li>
<li>Support for compound primary keys</li>
<li>Ability to cache the table meta data and prevent unnecessary database access</li>
</ul>
<h4>The Bad&#8230;</h4>
<ul>
<li>Application level support for foreign keys, namely cascading deletes.  This feature is awesome since a lot of the tables I work with are myisam and don&#8217;t support cascading deletes.  Too bad it doesn&#8217;t truly cascade.  If you delete a <strong>single</strong> record, it will cascade that delete to all related tables, but no cascading after that.  Basically,  a worthless feature that causes more confusion than it helps.  Just use MySQL&#8217;s Innodb storage engine and clean up the code</li>
<li>Complexity.  Lots of classes and lots going on.</li>
</ul>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+Zend+Framework+1.0+http://bit.ly/ZuDrd" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2007/07/13/zend-framework-10/&amp;title=Zend+Framework+1.0" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg-micro3.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2007/07/13/zend-framework-10/&amp;t=Zend+Framework+1.0" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2007/07/13/zend-framework-10/&amp;title=Zend+Framework+1.0" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit-micro3.png" alt="Post to Reddit" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2007/07/13/zend-framework-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
