<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns: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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Brian Hartsock's Blog</title>
	
	<link>http://blog.brianhartsock.com</link>
	<description>The exciting life of a software developer and nerd</description>
	<lastBuildDate>Thu, 09 Sep 2010 18:11:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/BrianHartsocksBlog" /><feedburner:info uri="brianhartsocksblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>The Rule of Doubling</title>
		<link>http://feedproxy.google.com/~r/BrianHartsocksBlog/~3/BJKX1wXFEXs/</link>
		<comments>http://blog.brianhartsock.com/2010/09/09/the-rule-of-doubling/#comments</comments>
		<pubDate>Thu, 09 Sep 2010 18:11:49 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/?p=837</guid>
		<description><![CDATA[A long time ago when I was a team lead, we were in a planning session and I made up the rule of doubling. Jokingly, I said we should just double the estimates of all our developers (at the time estimates were in hours or days, not story points). The reason behind it was the [...]]]></description>
			<content:encoded><![CDATA[<p>A long time ago when I was a team lead, we were in a planning session and I made up the rule of doubling.  Jokingly, I said we should just double the estimates of all our developers (at the time estimates were in hours or days, not story points).  The reason behind it was the fact that doubling would make the outcome more realistic, as I knew the developers were vastly underestimating tasks.</p>
<p>The problem with the rule of doubling is that it compounds.  When I told someone how long a feature would take, they doubled it.  Then, when that person told someone the date, the next person doubled it.  What&#8217;s even crazier is the rule of doubling actual yields pretty good results. <strong> So as an organization gets larger, the rule of doubling is really the root cause of why projects take longer to get out the door.</strong></p>
<p>I know what you are thinking, I am crazy but it is true.  The rule of doubling is a real thing!  Why?</p>
<p>There are two main reasons.  <strong>Developer estimates have very little to do with releasing software</strong> and <strong>because you never take the time to make the rule of doubling not true.</strong></p>
<p><strong>Developer estimates have very little to do with releasing software</strong> because coding is not the only variable involved with releasing software.  A great example of this is an article published 7 years ago entitled, <a href="http://blogs.msdn.com/b/ericlippert/archive/2003/10/28/how-many-microsoft-employees-does-it-take-to-change-a-lightbulb.aspx"><em>How many Microsoft employees does it take to change a light bulb?</em></a>  Microsoft is definitely an extreme case, but I still experience a very similar reality.  To release a new feature, the following parties are usually involved.</p>
<ul>
<li>Developer codes something</li>
<li>Designers help if UI changes are involved</li>
<li>Writers help if text changes are involved</li>
<li>One or two team members review the code</li>
<li>One or two team members help to QA the changes</li>
<li>Project manager works on including information about the change in an upcoming release</li>
<li>Support and Ops teams discuss upcoming release with Project Manager and Software Development Managers</li>
<li>Ops and Development team deploy and verify changes for a release</li>
</ul>
<p>It seems like a lot, but at Rackspace we take Fanatical Support seriously, and what that means from our software development teams is a lot of time spent to  release a quality product.  I honestly wouldn&#8217;t get rid of a single part of this process.  All of it makes our software better and hopefully our customers happier.</p>
<p>This is why story points are more <em>accurate</em>.  They measure relative size of different pieces of work and then apply past history to estimate for the future.  Don&#8217;t forget that story points mean absolutely nothing to organizations or customers.  If you can&#8217;t use story points to give relatively accurate delivery dates, they are worthless.</p>
<p><strong>Because you never take the time to make the rule of doubling not true</strong> means that the inefficiencies that slow development teams accumulate over time rarely get fixed.  Developers can easily miss the forest for the trees, working slowly on features instead of fixing inefficiencies to work faster on those features.   Bad build scripts, lack of testing automation, crappy development environment, and repetitive manual processes are all build ups of technical debt that need to get resolved at some point.</p>
<p>The solution is good Software Development Managers.  <strong>Managers need to understand the true cost of developing software</strong>, both from an initial implementation standpoint and a future maintenance cost perspective.  All to often, <a href="http://blog.scottbellware.com/2010/09/manager-or-bully.html">managers don&#8217;t understand software development</a> and hinder a teams success by setting up unrealistic expectations. </p>
<p>As a manager, you need to be able to set realistic expectations around timelines and also make decisions on what <em>technical debt</em> really needs to get resolved and what can wait.  Neither of these are easy and I have made my share of mistakes in these two areas over the years.  But, as a manager, I need to constantly remind myself of two questions.</p>
<p><strong>Are my teams regularly meeting my expectations around releasing software (and note that if they aren&#8217;t, that is probably a managerial problem, not a team problem)?</strong></p>
<p><strong>What roadblocks do I need eliminate to help my teams meet more of my expecations?</strong></p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+The+Rule+of+Doubling+http://bit.ly/9jCLuJ" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.brianhartsock.com/2010/09/09/the-rule-of-doubling/&amp;title=The+Rule+of+Doubling" title="Post to Delicious"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2010/09/09/the-rule-of-doubling/&amp;title=The+Rule+of+Doubling" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2010/09/09/the-rule-of-doubling/&amp;t=The+Rule+of+Doubling" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2010/09/09/the-rule-of-doubling/&amp;title=The+Rule+of+Doubling" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a></p><img src="http://feeds.feedburner.com/~r/BrianHartsocksBlog/~4/BJKX1wXFEXs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2010/09/09/the-rule-of-doubling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.brianhartsock.com/2010/09/09/the-rule-of-doubling/</feedburner:origLink></item>
		<item>
		<title>WordPress plugins I am currently using</title>
		<link>http://feedproxy.google.com/~r/BrianHartsocksBlog/~3/bDI33dCcfbQ/</link>
		<comments>http://blog.brianhartsock.com/2010/08/14/wordpress-plugins-i-am-currently-using/#comments</comments>
		<pubDate>Sat, 14 Aug 2010 15:13:36 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/?p=1531</guid>
		<description><![CDATA[Akismet &#8211; Defactor spam comment blocker. All in one SEO &#8211; Not really for sure why I use it, hope it generates more traffic? Broken Link Checker &#8211; Spits out all the broken links across your entire wordpress site. FancyBox &#8211; Makes images look o-so-pretty. Feedburner Feedsmith &#8211; Nice and easy integration with feedburner. Google [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://akismet.com/">Akismet</a> &#8211; Defactor spam comment blocker.</a></li>
<li><a href="http://semperfiwebdesign.com/">All in one SEO</a> &#8211; Not really for sure why I use it, hope it generates more traffic?</li>
<li><a href="http://w-shadow.com/blog/2007/08/05/broken-link-checker-for-wordpress/">Broken Link Checker</a> &#8211; Spits out all the broken links across your entire wordpress site.</li>
<li><a href="http://blog.moskis.net/downloads/plugins/fancybox-for-wordpress/">FancyBox</a> &#8211; Makes images look o-so-pretty.</li>
<li><a href="http://www.google.com/support/feedburner/bin/answer.py?hl=en&#038;answer=78483">Feedburner Feedsmith</a> &#8211; Nice and easy integration with <a href="http://feedburner.google.com">feedburner</a>.</li>
<li><a href="http://yoast.com/wordpress/analytics/#utm_source=wordpress&#038;utm_medium=plugin&#038;utm_campaign=google-analytics-for-wordpress&#038;utm_content=v406">Google Analytics</a></li>
<li><a href="http://www.arnebrachhold.de/redir/sitemap-home/">Google XML Sitemap</a> &#8211; Generates a pretty XML sitemap for search engines to use</li>
<li><a href="http://wordpress.org/extend/plugins/pb-embedflash/">pb-embedflash</a> &#8211; Easy way to embed flash
<li><a href="http://blog.matrixagents.org/wp-plugins/">StatsPress Reloaded</a> &#8211; Gather nice post stats</li>
<li><a href="http://richardxthripp.thripp.com/tweet-this">Tweet-This</a> &#8211; Adds a few links on every post to allow users to Tweet, Digg, etc</li>
<li><a href="http://www.bravenewcode.com/wordtwit">Wordtwit</a> &#8211; Automatically tweets after every post with a shortened URL</li>
<li><a href="http://wordpress.org/extend/plugins/wp-syntax/">WP-Syntax</a> &#8211; Add easy syntax highlighting to your posts</li>
<li><a href="http://ocaoimh.ie/wp-super-cache/">WP-SuperCache</a> &#8211; Great set of caching options to keep your site fast</li>
</ul>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+WordPress+plugins+I+am+currently+using+http://bit.ly/8YfFBN" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.brianhartsock.com/2010/08/14/wordpress-plugins-i-am-currently-using/&amp;title=WordPress+plugins+I+am+currently+using" title="Post to Delicious"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2010/08/14/wordpress-plugins-i-am-currently-using/&amp;title=WordPress+plugins+I+am+currently+using" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2010/08/14/wordpress-plugins-i-am-currently-using/&amp;t=WordPress+plugins+I+am+currently+using" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2010/08/14/wordpress-plugins-i-am-currently-using/&amp;title=WordPress+plugins+I+am+currently+using" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a></p><img src="http://feeds.feedburner.com/~r/BrianHartsocksBlog/~4/bDI33dCcfbQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2010/08/14/wordpress-plugins-i-am-currently-using/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.brianhartsock.com/2010/08/14/wordpress-plugins-i-am-currently-using/</feedburner:origLink></item>
		<item>
		<title>5 things every developer should learn from Rails</title>
		<link>http://feedproxy.google.com/~r/BrianHartsocksBlog/~3/Y82Li9ZCq60/</link>
		<comments>http://blog.brianhartsock.com/2010/08/12/5-things-every-developer-should-learn-from-rails/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 01:01:59 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/?p=1363</guid>
		<description><![CDATA[I spent the last few weeks working on a Rails project. Although there was a lot to learn, I feel as though I have a decent understanding of Ruby and Rails at this point. I am by no means an expert, but I can do the basics without googling. I figured I would document my [...]]]></description>
			<content:encoded><![CDATA[<p>I spent the last few weeks working on a Rails project.  Although there was a lot to learn, I feel as though I have a decent understanding of Ruby and Rails at this point.  I am by no means an expert, but I can do the basics without googling.  I figured I would document my thoughts on what every developer should learn from the Rails framework.</p>
<ul>
<li><strong>Gems </strong>- Having a package manager to to handle dependencies rocks.   In contrast, every single .NET library includes all its dependencies because there is no package manager to make it easy.  Hopefully <a href="http://groups.google.com/group/nu-net">nu</a> can start to fill this void.</li>
<li><strong>Generators </strong>- Generators save your team time because they aren&#8217;t spending time typing out common patterns in a project.  Many frameworks like .NET have code generation, but the barrier to entry seems high.  Maybe I just haven&#8217;t spent enough time out it, but in a few years of programming .NET, I haven&#8217;t generated a single class.</li>
<li><strong>Conventions </strong>- Developers shouldn&#8217;t have to ask, <em>Where should this class go?</em>.  Conventions should define that, otherwise teams are forced to define their own (which usually leads to a lack thereof except in experienced teams).</li>
<li><strong>Database management</strong> &#8211; In nearly every app I have worked with, schema gen, creation, migration, and testing integration are a pain point.  Many libraries like NHibernate have the capability of doing all these tasks, but there is no instruction manual for setting it up.  Therefore, most projects don&#8217;t manage their database very well.</li>
<li><strong>The build, the build, the build</strong> &#8211; Dependencies, database migrations, multiple environments, testing&#8230;need I say more?  Having an out of the box build that does more than plain old compilation is a must in any solid framework.  Like everything else, tools like MSBuild can do all this but the team is forced to start from scratch.</li>
</ul>
<p>Where does Rails succeed where many applications and frameworks like ASP.NET MVC fail?  <strong>Rails succeeds at allowing developers to focus on the application, not the plumbing</strong>.</p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+5+things+every+developer+should+learn+from+Rails+http://bit.ly/dfzj09" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.brianhartsock.com/2010/08/12/5-things-every-developer-should-learn-from-rails/&amp;title=5+things+every+developer+should+learn+from+Rails" title="Post to Delicious"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2010/08/12/5-things-every-developer-should-learn-from-rails/&amp;title=5+things+every+developer+should+learn+from+Rails" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2010/08/12/5-things-every-developer-should-learn-from-rails/&amp;t=5+things+every+developer+should+learn+from+Rails" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2010/08/12/5-things-every-developer-should-learn-from-rails/&amp;title=5+things+every+developer+should+learn+from+Rails" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a></p><img src="http://feeds.feedburner.com/~r/BrianHartsocksBlog/~4/Y82Li9ZCq60" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2010/08/12/5-things-every-developer-should-learn-from-rails/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.brianhartsock.com/2010/08/12/5-things-every-developer-should-learn-from-rails/</feedburner:origLink></item>
		<item>
		<title>nu – Gems for .NET</title>
		<link>http://feedproxy.google.com/~r/BrianHartsocksBlog/~3/5vIKjdP57oQ/</link>
		<comments>http://blog.brianhartsock.com/2010/07/28/nu-gems-for-net/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 02:40:27 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[nu]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/?p=1492</guid>
		<description><![CDATA[Package management has been on my mind for months as one of the greatest short comings in .NET. If you spend two hours using Ruby and gems, you realize how much easier it is than finding the appropriate .NET assemblies to use. It also promotes using open source libraries, instead of re-inventing the wheel. nu [...]]]></description>
			<content:encoded><![CDATA[<p>Package management has been on my mind for months as one of the greatest short comings in .NET.  If you spend two hours using Ruby and gems, you realize how much easier it is than finding the appropriate .NET assemblies to use.  It also promotes using open source libraries, instead of re-inventing the wheel.</p>
<p><a href="http://codebetter.com/blogs/dru.sellers/archive/2010/07/17/nu.aspx">nu</a> aims to provide this for .NET.</p>
<p>I checked it out tonight.  Here is my experience.</p>
<p>First step is to install it, and ruby is the only pre-req.  The following commands show how to install and use it.</p>
<pre>
> gem install nu
> mkdir test
> cd test
> nu install nunit
> nu install nhibernate
</pre>
<p>Wow, that was easy.  <em>nu</em> downloaded nhibernate and nunit, and placed them in the lib folder (including all of NHibernate&#8217;s dependencies).  By the way, it literally took less than <strong>30s</strong> for me to do this.</p>
<p><a href="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-28-2010-10-18-47-PM.png"><img src="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-28-2010-10-18-47-PM-300x213.png" alt="" title="7-28-2010 10-18-47 PM" width="300" height="213" class="aligncenter size-medium wp-image-1495" /></a></p>
<p>So what do I think?</p>
<ul>
<li>It is an easy and fast delivery tool.</li>
<li>Using Ruby isn&#8217;t that big of a deal, but I think that is my opinion, not the community opinion.</li>
<li>It is new, so it has a ways to go in terms of functionality in discovery.  I can&#8217;t hate because at least they have released something and I have just dreamed about releasing something.</li>
<li>Build integration (and probably Visual Studio) is going to be key.  And by build, I don&#8217;t just mean NAnt and <a href="http://code.google.com/p/uppercut/">UppercuT</a>, but MSbuild too.</li>
<li>The biggest hurdle is building a &#8220;gem&#8221; community in .NET.  For some reason, <a href="http://devlicio.us/blogs/rob_reynolds/archive/2010/07/16/how-to-gems-and-net.aspx">creating a .NET gem</a> seems kind of awkward (even though it isn&#8217;t that hard).</li>
</ul>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+nu+%E2%80%93+Gems+for+.NET+http://bit.ly/cNjTAI" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.brianhartsock.com/2010/07/28/nu-gems-for-net/&amp;title=nu+%E2%80%93+Gems+for+.NET" title="Post to Delicious"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2010/07/28/nu-gems-for-net/&amp;title=nu+%E2%80%93+Gems+for+.NET" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2010/07/28/nu-gems-for-net/&amp;t=nu+%E2%80%93+Gems+for+.NET" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2010/07/28/nu-gems-for-net/&amp;title=nu+%E2%80%93+Gems+for+.NET" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a></p><img src="http://feeds.feedburner.com/~r/BrianHartsocksBlog/~4/5vIKjdP57oQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2010/07/28/nu-gems-for-net/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.brianhartsock.com/2010/07/28/nu-gems-for-net/</feedburner:origLink></item>
		<item>
		<title>Data driving Ruby tests with meta-programming</title>
		<link>http://feedproxy.google.com/~r/BrianHartsocksBlog/~3/FApAqx_dbYI/</link>
		<comments>http://blog.brianhartsock.com/2010/07/17/data-driving-ruby-tests-with-meta-programming/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 17:51:05 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Meta-programming]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/?p=1484</guid>
		<description><![CDATA[Data driving ruby tests with meta-programming is one of the more elegant examples of meta-programming in my opinion. Understanding that class definitions are active, and you can add methods in a loop is very powerful. class LocationTest &#60; ActiveSupport::TestCase &#160; def setup @location = Location.new end &#160; &#123;:empty =&#62; '', :nil =&#62; nil&#125;.each do &#124;key, [...]]]></description>
			<content:encoded><![CDATA[<p>Data driving ruby tests with meta-programming is one of the more elegant examples of meta-programming in my opinion.  Understanding that class definitions are active, and you can add methods in a loop is very powerful.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> LocationTest <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#6666ff; font-weight:bold;">ActiveSupport::TestCase</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> setup
    <span style="color:#0066ff; font-weight:bold;">@location</span> = Location.<span style="color:#9900CC;">new</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#006600; font-weight:bold;">&#123;</span>:empty <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">''</span>, <span style="color:#ff3333; font-weight:bold;">:nil</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">nil</span><span style="color:#006600; font-weight:bold;">&#125;</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>key, value<span style="color:#006600; font-weight:bold;">|</span>
    test <span style="color:#996600;">&quot;address can't be &quot;</span> <span style="color:#006600; font-weight:bold;">+</span> key  <span style="color:#9966CC; font-weight:bold;">do</span>
      <span style="color:#0066ff; font-weight:bold;">@location</span>.<span style="color:#9900CC;">address</span> = value
&nbsp;
      assert !@location.<span style="color:#9900CC;">valid</span>?
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>NUnit has the <a href="http://nunit.com/index.php?p=testCase&#038;r=2.5.5">ability to do the same thing</a>, but attributes and reflection just aren&#8217;t as elegant.</p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+Data+driving+Ruby+tests+with+meta-programming+http://bit.ly/drdTVa" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.brianhartsock.com/2010/07/17/data-driving-ruby-tests-with-meta-programming/&amp;title=Data+driving+Ruby+tests+with+meta-programming" title="Post to Delicious"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2010/07/17/data-driving-ruby-tests-with-meta-programming/&amp;title=Data+driving+Ruby+tests+with+meta-programming" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2010/07/17/data-driving-ruby-tests-with-meta-programming/&amp;t=Data+driving+Ruby+tests+with+meta-programming" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2010/07/17/data-driving-ruby-tests-with-meta-programming/&amp;title=Data+driving+Ruby+tests+with+meta-programming" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a></p><img src="http://feeds.feedburner.com/~r/BrianHartsocksBlog/~4/FApAqx_dbYI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2010/07/17/data-driving-ruby-tests-with-meta-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.brianhartsock.com/2010/07/17/data-driving-ruby-tests-with-meta-programming/</feedburner:origLink></item>
		<item>
		<title>A MSBuild convention proposal – Targets per assembly</title>
		<link>http://feedproxy.google.com/~r/BrianHartsocksBlog/~3/wormhaXGNpU/</link>
		<comments>http://blog.brianhartsock.com/2010/07/14/a-msbuild-convention-proposal/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 15:10:40 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[MSBuild]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/?p=1471</guid>
		<description><![CDATA[MSBuild is a very powerful build tool. Unfortunately, in my experience, I have seen it utilized very little. Instead, developers rely entirely on Visual Studio for the build, which is a mistake. I think there are a couple reasons for this: Modifying the build feels like you are mucking in the internals of Visual Studio [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://msdn.microsoft.com/en-us/library/wea2sca5(VS.90).aspx">MSBuild</a> is a very powerful build tool.  Unfortunately, in my experience, I have seen it utilized very little.  Instead, developers rely entirely on Visual Studio for the build, which is a mistake.  I think there are a couple reasons for this:</p>
<ul>
<li>Modifying the build feels like you are mucking in the internals of Visual Studio</li>
<li>There is no convention based approaches for how to handle custom bulid targets</li>
</ul>
<p>Now, you could go the way of <a href="http://nant.sourceforge.net/">NAnt</a>, and have complete independence from Visual Studio.  I think this is a mistake as well.  Visual Studio, while being a royal pain much of the time, is still a very very very powerful tool.  I believe we should embrace it, while using MSBuild plus conventions to achieve ultimate flexibility.</p>
<h4>The proposal</h4>
<p>It&#8217;s actually quite simple.  Each assembly/project already has its own <em>*.csproj</em> file, which is in essence a partial MSBuild file.  The problem is <a href="http://blog.brianhartsock.com/2009/10/20/editing-csproj-files-within-visual-studio/">editing it</a> is weird and scary at times, because it is auto-generated by Visual Studio.</p>
<p>Just add the following to any or all your <em>csproj</em> files.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Project<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  ... All the visual studio muck ...
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Import</span> <span style="color: #000066;">Project</span>=<span style="color: #ff0000;">&quot;$(MSBuildProjectName).targets&quot;</span> <span style="color: #000066;">Condition</span>=<span style="color: #ff0000;">&quot;Exists('$(MSBuildProjectName).targets')&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</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></div></div>

<p>Then add a file with that name.  If your projects name is <em>Reference.Web</em>, then add a file named <em>Reference.Web.targets</em> and include it in the project.  The content could contain something like the following.</p>

<div class="wp_syntax"><div 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: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ItemGroup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Files</span> <span style="color: #000066;">Include</span>=<span style="color: #ff0000;">&quot;$(SolutionDir)\configuration\$(Configuration)\$(AssemblyName).*.config&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Files</span> <span style="color: #000066;">Include</span>=<span style="color: #ff0000;">&quot;$(SolutionDir)\configuration\$(Configuration)\Common.*&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ItemGroup<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;InstallConfiguration&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>    
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Copy</span> <span style="color: #000066;">SourceFiles</span>=<span style="color: #ff0000;">&quot;@(Files)&quot;</span> <span style="color: #000066;">DestinationFolder</span>=<span style="color: #ff0000;">&quot;$(OutputPath)&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
  <span style="color: #808080; font-style: italic;">&lt;!-- Override the AfterBuild target --&gt;</span>
  <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;AfterBuild&quot;</span> <span style="color: #000066;">DependsOnTargets</span>=<span style="color: #ff0000;">&quot;InstallConfiguration&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;/Project<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Now you have a build file separate from the project that is really easy setup and use, straight for Visual Studio.<br />
<a href="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-13-2010-9-26-28-PM.png"><img src="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-13-2010-9-26-28-PM-300x182.png" alt="" title="7-13-2010 9-26-28 PM" width="300" height="182" class="aligncenter size-medium wp-image-1478" /></a></p>
<p>The only gotcha is <strong>Visual Studio won&#8217;t automatically notice the build file changes</strong>, so you still have to relad the assembly after you make a build file change.</p>
<h4><strong>UPDATE &#8211; More robust <em>Import</em> statement</strong></h4>
<p>Via <a href="http://twitter.com/sayedihashimi">@sayedihashimi</a></p>
<blockquote><p>
Even better would be a conditional import, and you should use the MSBuildProjectName property instead of AssemblyName.</p></blockquote>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+A+MSBuild+convention+proposal+%E2%80%93+Targets+per+assembly+http://bit.ly/cn7i34" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.brianhartsock.com/2010/07/14/a-msbuild-convention-proposal/&amp;title=A+MSBuild+convention+proposal+%E2%80%93+Targets+per+assembly" title="Post to Delicious"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2010/07/14/a-msbuild-convention-proposal/&amp;title=A+MSBuild+convention+proposal+%E2%80%93+Targets+per+assembly" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2010/07/14/a-msbuild-convention-proposal/&amp;t=A+MSBuild+convention+proposal+%E2%80%93+Targets+per+assembly" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2010/07/14/a-msbuild-convention-proposal/&amp;title=A+MSBuild+convention+proposal+%E2%80%93+Targets+per+assembly" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a></p><img src="http://feeds.feedburner.com/~r/BrianHartsocksBlog/~4/wormhaXGNpU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2010/07/14/a-msbuild-convention-proposal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.brianhartsock.com/2010/07/14/a-msbuild-convention-proposal/</feedburner:origLink></item>
		<item>
		<title>Zero to Synergy+ in 5 minutes</title>
		<link>http://feedproxy.google.com/~r/BrianHartsocksBlog/~3/lVhInxanln4/</link>
		<comments>http://blog.brianhartsock.com/2010/07/13/zero-to-synergy-in-5-minutes/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 16:10:22 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Synergy]]></category>
		<category><![CDATA[Tip]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/?p=1443</guid>
		<description><![CDATA[Synergy+ is most easily described as a software KVM. In reality, it is much more than that. It is more like having multiple monitors, except each monitor is actually attached to its own computer. Synergy+ is a fork of the original project, which hasn&#8217;t been updated since 2006. Enough with the chit-chat, lets get it [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/synergy-plus/">Synergy+</a> is most easily described as a software KVM.  In reality, it is much more than that.  It is more like having multiple monitors, except each monitor is actually attached to its own computer.  Synergy+ is a fork of the <a href="http://synergy2.sourceforge.net/">original project</a>, which hasn&#8217;t been updated since 2006.  </p>
<p>Enough with the chit-chat, lets get it up and running on Windows in no time.</p>
<h4>Install</h4>
<p><a href="http://code.google.com/p/synergy-plus/downloads/list">Install</a> &#8211; Done.</p>
<h4>Configure &#8211; Server side</h4>
<p>This is the confusing part.  I will take you through the GUI, which doesn&#8217;t exist for the Mac or Linux as far as I could tell.</p>
<p>Start Synergy and select the <em>Share this computer&#8217;s keyboard and mouse (server)</em> option.  Then click <em>Configure</em>.<br />
<a href="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-12-2010-8-39-45-PM.png"><img src="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-12-2010-8-39-45-PM-300x231.png" alt="" title="7-12-2010 8-39-45 PM" width="300" height="231" class="aligncenter size-medium wp-image-1444" /></a></p>
<p>From there, the next step is adding the screens, which represent the different computers you want connected.  Click the <em>+</em> to get going.<br />
<a href="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-12-2010-9-00-20-PM.png"><img src="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-12-2010-9-00-20-PM-300x207.png" alt="" title="7-12-2010 9-00-20 PM" width="300" height="207" class="aligncenter size-medium wp-image-1451" /></a></p>
<p>First, enter your local computer information.  Seems weird that it didn&#8217;t add it by default, but it doesn&#8217;t.  Basically, all you need to enter is your computers name (which can be found/changed on the Synergy <em>Info</em> button on the main configuration screen).<br />
<a href="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-12-2010-8-40-34-PM.png"><img src="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-12-2010-8-40-34-PM-203x300.png" alt="" title="7-12-2010 8-40-34 PM" width="203" height="300" class="aligncenter size-medium wp-image-1445" /></a></p>
<p>Next, enter in the client computer&#8217;s names that you will be connecting.<br />
<a href="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-12-2010-8-40-53-PM.png"><img src="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-12-2010-8-40-53-PM-203x300.png" alt="" title="7-12-2010 8-40-53 PM" width="203" height="300" class="aligncenter size-medium wp-image-1446" /></a></p>
<p>From there you need to create links.  Links tell Synergy how one screen should be linked to another (seems obvious huh).  In our example we have two screens, so we need two links.  One link will connect Screen 1 to Screen 2, while the other does the reverse.</p>
<p>Configuring the link is a mind trip, so much so that I can&#8217;t even describe how to do it.  I suggest ignoring the size percentages, and create a sentence like <em>left of Screen 1 of Screen 2</em>.  Then click <em>+</em>.  After this, it becomes more obvious what you did (just trust me please).<br />
<a href="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-12-2010-8-42-11-PM.png"><img src="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-12-2010-8-42-11-PM-300x209.png" alt="" title="7-12-2010 8-42-11 PM" width="300" height="209" class="aligncenter size-medium wp-image-1447" /></a></p>
<p>Then the reverse.<br />
<a href="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-12-2010-8-42-52-PM.png"><img src="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-12-2010-8-42-52-PM-300x209.png" alt="" title="7-12-2010 8-42-52 PM" width="300" height="209" class="aligncenter size-medium wp-image-1448" /></a></p>
<p>Now just <em>Start</em> the server and your server config is basically done.<br />
<a href="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-12-2010-8-43-51-PM.png"><img src="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-12-2010-8-43-51-PM-300x231.png" alt="" title="7-12-2010 8-43-51 PM" width="300" height="231" class="aligncenter size-medium wp-image-1449" /></a></p>
<h4>Configure &#8211; Client</h4>
<p>The client really doesn&#8217;t require any configuration.  Just select the <em>Use another computer&#8217;s keyboard and mouse (client)</em> option, then enter the server name and click <em>Start</em><br />
<a href="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-12-2010-8-45-18-PM.png"><img src="http://blog.brianhartsock.com/wp-content/uploads/2010/07/7-12-2010-8-45-18-PM-300x231.png" alt="" title="7-12-2010 8-45-18 PM" width="300" height="231" class="aligncenter size-medium wp-image-1450" /></a></p>
<p>And now for my super sweet home-made video.</p>
<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=13286527&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=13286527&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object></p>
<h4>Next Steps</h4>
<p>Read through the <a href="http://code.google.com/p/synergy-plus/w/list">Synergy wiki</a>, which will help you on more complicated setups on Mac and Linux.</p>
<p>I also noticed a couple things that didn&#8217;t work too well.</p>
<ul>
<li>Mouse is sometimes laggy &#8211; I think this may be because my server is actually my oldest computer.  The lagginess isn&#8217;t bad enough for me to not use it however.</li>
<li><em>Print Screen</em> didn&#8217;t work too well, which made the capturing of the above screen shots a little cumbersome</li>
<li>If your computer locks automatically after a certain time and it isn&#8217;t the server, synergy can&#8217;t be used to unlock it.</li>
</ul>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+Zero+to+Synergy%2B+in+5+minutes+http://bit.ly/bOONGz" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.brianhartsock.com/2010/07/13/zero-to-synergy-in-5-minutes/&amp;title=Zero+to+Synergy%2B+in+5+minutes" title="Post to Delicious"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2010/07/13/zero-to-synergy-in-5-minutes/&amp;title=Zero+to+Synergy%2B+in+5+minutes" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2010/07/13/zero-to-synergy-in-5-minutes/&amp;t=Zero+to+Synergy%2B+in+5+minutes" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2010/07/13/zero-to-synergy-in-5-minutes/&amp;title=Zero+to+Synergy%2B+in+5+minutes" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a></p><img src="http://feeds.feedburner.com/~r/BrianHartsocksBlog/~4/lVhInxanln4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2010/07/13/zero-to-synergy-in-5-minutes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.brianhartsock.com/2010/07/13/zero-to-synergy-in-5-minutes/</feedburner:origLink></item>
		<item>
		<title>My Home Mac Setup</title>
		<link>http://feedproxy.google.com/~r/BrianHartsocksBlog/~3/32tydpFC1zg/</link>
		<comments>http://blog.brianhartsock.com/2010/06/30/my-home-mac-setup/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 17:00:22 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/?p=1434</guid>
		<description><![CDATA[Ok, here is a list of software I have installed. It is a pretty good list for only a few days with the machine. Note this is for home, not for work. Otherwise the list would be way different. Eclipse &#8211; Android and Java tinkering Firefox &#8211; To test, not to use. Chrome &#8211; Best [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, here is a list of software I have installed.  It is a pretty good list for only a few days with the machine.  Note this is for home, not for work.  Otherwise the list would be way different.</p>
<ul>
<li><a href="http://www.eclipse.org/">Eclipse</a> &#8211; Android and Java tinkering</li>
<li><a href="http://www.mozilla.com/en-US/firefox/firefox.html">Firefox</a> &#8211; To test, not to use.</li>
<li><a href="http://www.google.com/chrome">Chrome</a> &#8211; Best browser out there, I promise!</li>
<li><a href="http://www.jungledisk.com/">JungleDisk Desktop</a> &#8211; Backups and synchronization are a must for any computer.</li>
<li><a href="http://www.skype.com/intl/en-us/home">Skype</a> &#8211; To see people far away in real time.</li>
<li><a href="http://adium.im/">Adium</a> &#8211; To chat to people far away or across the room, while also being able to ignore them.</li>
<li><a href="http://cord.sourceforge.net/">CoRD</a> &#8211; I still need to get on Windows boxes.</li>
<li><a href="http://www.macupdate.com/info.php/id/14831/quicksilver">Quicksilver</a> &#8211; App launchers are my hidden productivity tools.</li>
<li><a href="http://growl.info/">Growl</a> &#8211; Makes Adium have cool sounds I guess.</li>
<li><a href="http://macromates.com/">TextMate</a> &#8211; The most recommended Mac editor.  Not sold yet, vim is the bomb.</li>
<li><a href="http://www.openoffice.org/">Open Office</a> &#8211; Because it is free, and good enough (maybe?)</li>
<li><a href="http://www.atebits.com/tweetie-mac/">Tweetie</a> &#8211; My new favorite twitter client.  Warning, not for twitteraholics, but for casual users like myself.</li>
<li><a href="http://code.google.com/p/git-osx-installer/downloads/list?can=3">Git</a> &#8211; Git is a MUST if you develop software.  Even if your team uses SVN, you can <a href="http://www.lostechies.com/blogs/derickbailey/archive/2010/02/03/branch-per-feature-how-i-manage-subversion-with-git-branches.aspx">still use gi</a>t and should!</li>
<li><a href="http://www.mysql.com/">MySQL</a> &#8211; You always need a database on hand.</li>
<li><a href="http://rvm.beginrescueend.com/">RVM</a> &#8211; Nifty way to manage multiple Ruby versions.</li>
<li><a href="http://www.virtualbox.org/">Virtual Box</a> &#8211; Because you still might need to run a little Windows stuff here and there.</li>
<li><a href="http://cyberduck.ch/">CyberDuck</a> &#8211; Move files all over the place.</li>
<li>Windows 7 on Bootcamp &#8211; Just in case <img src='http://blog.brianhartsock.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<p>Whew!</p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+My+Home+Mac+Setup+http://bit.ly/dfZ0Lt" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.brianhartsock.com/2010/06/30/my-home-mac-setup/&amp;title=My+Home+Mac+Setup" title="Post to Delicious"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2010/06/30/my-home-mac-setup/&amp;title=My+Home+Mac+Setup" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2010/06/30/my-home-mac-setup/&amp;t=My+Home+Mac+Setup" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2010/06/30/my-home-mac-setup/&amp;title=My+Home+Mac+Setup" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a></p><img src="http://feeds.feedburner.com/~r/BrianHartsocksBlog/~4/32tydpFC1zg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2010/06/30/my-home-mac-setup/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://blog.brianhartsock.com/2010/06/30/my-home-mac-setup/</feedburner:origLink></item>
		<item>
		<title>I’m a Mac user</title>
		<link>http://feedproxy.google.com/~r/BrianHartsocksBlog/~3/UdEt8RvDjG0/</link>
		<comments>http://blog.brianhartsock.com/2010/06/28/i-am-a-mac-user/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 01:43:57 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/?p=1419</guid>
		<description><![CDATA[I have officially switched my personal computer to a Mac (MacBook Pro to be specific). I&#8217;m sure some of you might be wondering, why did I switch to a Mac? Most of my blog is on .NET and Powershell related topics, which aren&#8217;t so prevalent on a Mac. Well, here are a few of the [...]]]></description>
			<content:encoded><![CDATA[<p>I have officially switched my personal computer to a Mac (MacBook Pro to be specific).  I&#8217;m sure some of you might be wondering, why did I switch to a Mac?  Most of my blog is on .NET and Powershell related topics, which aren&#8217;t so prevalent on a Mac.  Well, here are a few of the main reasons.</p>
<ul>
<li>Promoters &#8211; Mac <a href="http://twitter.com/marcrhodes/status/15288214018">owners</a> <a href="http://twitter.com/carlajo/status/15288235473">are</a> <a href="http://twitter.com/mattz62/status/15301958443">promoters</a>.  When I <a href="http://twitter.com/brianhartsock/status/15285724266">asked the Twitterverse</a> what I should do, all but one response was &#8220;Get a Mac!&#8221;.  Maybe I am hopping on the bandwagon, but people love Macs for a reason.</li>
<li>I missed my Linux roots.  If you go back far enough in my blog, you will see I used to be a PHP developer whose work, home, and school computers were running Ubuntu.</li>
<li>Windows &#8211; I can still run Windows on a VM and on Bootcamp.</li>
</ul>
<p>So far, I am pretty darn happy with the Mac.  There are some oddities, but overall it is a crisp, clean machine.</p>
<p>Now, enjoy the beauty that is my mac! (Ignore the Logitech nano dongle.  I need my ergonomic mouse so give me a break)</p>
<p><a href="http://blog.brianhartsock.com/wp-content/uploads/2010/06/DSC00662-800x600.jpg"><img src="http://blog.brianhartsock.com/wp-content/uploads/2010/06/DSC00662-800x600-300x225.jpg" alt="" title="DSC00662 (800x600)" width="300" height="225" class="aligncenter size-medium wp-image-1424" /></a></p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+I%E2%80%99m+a+Mac+user+http://bit.ly/bj6TdE" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.brianhartsock.com/2010/06/28/i-am-a-mac-user/&amp;title=I%E2%80%99m+a+Mac+user" title="Post to Delicious"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2010/06/28/i-am-a-mac-user/&amp;title=I%E2%80%99m+a+Mac+user" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2010/06/28/i-am-a-mac-user/&amp;t=I%E2%80%99m+a+Mac+user" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2010/06/28/i-am-a-mac-user/&amp;title=I%E2%80%99m+a+Mac+user" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a></p><img src="http://feeds.feedburner.com/~r/BrianHartsocksBlog/~4/UdEt8RvDjG0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2010/06/28/i-am-a-mac-user/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.brianhartsock.com/2010/06/28/i-am-a-mac-user/</feedburner:origLink></item>
		<item>
		<title>Ruby video for non-ruby programmers</title>
		<link>http://feedproxy.google.com/~r/BrianHartsocksBlog/~3/C5yysv6GXd8/</link>
		<comments>http://blog.brianhartsock.com/2010/05/28/ruby-video-for-non-ruby-programmers/#comments</comments>
		<pubDate>Fri, 28 May 2010 17:43:29 +0000</pubDate>
		<dc:creator>bhartsock</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blog.brianhartsock.com/?p=1387</guid>
		<description><![CDATA[This video is a must watch for experienced developers trying to learn Ruby. It will explain the magic of metaprogramming.]]></description>
			<content:encoded><![CDATA[<p>This <a href="http://www.infoq.com/presentations/metaprogramming-ruby">video </a>is a <strong>must</strong> watch for experienced developers trying to learn Ruby.  It will explain the magic of metaprogramming.</p>
<p align="left"><a target="_blank" class="tt" href="http://twitter.com/home/?status=@brianhartsock+Ruby+video+for+non-ruby+programmers+http://bit.ly/ch69gk" title="Post to Twitter"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.brianhartsock.com/2010/05/28/ruby-video-for-non-ruby-programmers/&amp;title=Ruby+video+for+non-ruby+programmers" title="Post to Delicious"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.brianhartsock.com/2010/05/28/ruby-video-for-non-ruby-programmers/&amp;title=Ruby+video+for+non-ruby+programmers" title="Post to Digg"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.brianhartsock.com/2010/05/28/ruby-video-for-non-ruby-programmers/&amp;t=Ruby+video+for+non-ruby+programmers" title="Post to Facebook"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://reddit.com/submit?url=http://blog.brianhartsock.com/2010/05/28/ruby-video-for-non-ruby-programmers/&amp;title=Ruby+video+for+non-ruby+programmers" title="Post to Reddit"><img class="nothumb" src="http://blog.brianhartsock.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a></p><img src="http://feeds.feedburner.com/~r/BrianHartsocksBlog/~4/C5yysv6GXd8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.brianhartsock.com/2010/05/28/ruby-video-for-non-ruby-programmers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.brianhartsock.com/2010/05/28/ruby-video-for-non-ruby-programmers/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 1.891 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-09-09 14:14:11 -->
