<?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/" version="2.0">

<channel>
	<title>Sleep Overrated</title>
	
	<link>http://sleepoverrated.com</link>
	<description>I sleep so you don't have to</description>
	<lastBuildDate>Thu, 06 May 2010 12:43:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/SleepOverrated" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="sleepoverrated" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Workshop on Lucene.Net/NHibernate Search/Solr</title>
		<link>http://sleepoverrated.com/archive/2010/05/workshop-on-lucene-netnhibernate-searchsolr/</link>
		<comments>http://sleepoverrated.com/archive/2010/05/workshop-on-lucene-netnhibernate-searchsolr/#comments</comments>
		<pubDate>Thu, 06 May 2010 12:43:01 +0000</pubDate>
		<dc:creator>Scott Cowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sleepoverrated.com/archive/2010/05/workshop-on-lucene-netnhibernate-searchsolr/</guid>
		<description><![CDATA[I’m doing a workshop at the Progressive .Net May 14th. It’s based on a talk I gave last year. The talk is now a workshop so bring your laptop or you won’t get as much out of it.
Lucene.Net

Intro to Lucene.net 
Coding your first Lucene.Net project 
Lucene.net Contrib projects (ie: WordNet) 

NHibernate Search

Introduction to NHibernate Search [...]]]></description>
			<content:encoded><![CDATA[<p>I’m doing a workshop at the <a href="http://skillsmatter.com/event/open-source-dot-net/progressive-dotnet-tutorials-2010">Progressive .Net May 14th</a>. It’s based on a talk I gave last year. The talk is now a workshop so bring your laptop or you won’t get as much out of it.</p>
<p>Lucene.Net</p>
<ol>
<li>Intro to Lucene.net </li>
<li>Coding your first Lucene.Net project </li>
<li>Lucene.net Contrib projects (ie: WordNet) </li>
</ol>
<p>NHibernate Search</p>
<ol>
<li>Introduction to NHibernate Search using Lucene.net </li>
<li>Coding your first NHibernate Search project </li>
</ol>
<p>Solr</p>
<ol>
<li>Setting up Tomcat/Solr </li>
<li>Using HTTP/SolrNet API in a web site </li>
<li>NHibernate integration with Solr</li>
</ol>
<ol><a href="http://skillsmatter.com/podcast/open-source-dot-net/how-to-make-a-search-engine-with-lucenedot-net">here’s my talk from last year with skillsmatter</a>. </ol>
<p><object width="450px" height="340px"><param name="allowfullscreen" value="true"><param name="allowscriptaccess" value="always"><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4810333&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1"><embed src="http://vimeo.com/moogaloop.swf?clip_id=4810333&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="450px" height="340px"> 		</object></p>
<p>PS. I’ve gotten a haircut since then</p>
<img src="http://feeds.feedburner.com/~r/SleepOverrated/~4/O7lpFRdkfWQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sleepoverrated.com/archive/2010/05/workshop-on-lucene-netnhibernate-searchsolr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Functional Programming [OpenVolcano10]</title>
		<link>http://sleepoverrated.com/archive/2010/04/functional-programming-openvolcano10/</link>
		<comments>http://sleepoverrated.com/archive/2010/04/functional-programming-openvolcano10/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 01:08:20 +0000</pubDate>
		<dc:creator>Scott Cowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sleepoverrated.com/archive/2010/04/functional-programming-openvolcano10/</guid>
		<description><![CDATA[Here’s the last 20 min of the functional programming talk at OpenVolcano10 with Bob Martin.
the first video corrupted on me, there was another guy taping so hopefully posts it soon.



]]></description>
			<content:encoded><![CDATA[<p>Here’s the last 20 min of the functional programming talk at OpenVolcano10 with <a href="http://blog.objectmentor.com/">Bob Martin</a>.</p>
<p>the first video corrupted on me, there was another guy taping so hopefully posts it soon.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:f7c481cc-fd81-4a02-9720-3a26424acdfd" class="wlWriterEditableSmartContent">
<div><embed src="http://www.viddler.com/player/ceceb487//" width="437" height="370" wmode="transparent" type="application/x-shockwave-flash" allowScriptAccess="always" allowFullScreen="true" name="viddler_ceceb487/"></embed></div>
</div>
<img src="http://feeds.feedburner.com/~r/SleepOverrated/~4/W7VcFIBLaC4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sleepoverrated.com/archive/2010/04/functional-programming-openvolcano10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Future of Acceptance Testing [OpenVolcano10]</title>
		<link>http://sleepoverrated.com/archive/2010/04/future-of-acceptance-testing-openvolcano10/</link>
		<comments>http://sleepoverrated.com/archive/2010/04/future-of-acceptance-testing-openvolcano10/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 11:37:14 +0000</pubDate>
		<dc:creator>Scott Cowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sleepoverrated.com/archive/2010/04/future-of-acceptance-testing-openvolcano10/</guid>
		<description><![CDATA[Gojko Adzic talks about the future of acceptance testing. 
sorry about the shaky cam, It’s a new setup.
 
]]></description>
			<content:encoded><![CDATA[<p>Gojko Adzic talks about the future of acceptance testing. </p>
<p>sorry about the shaky cam, It’s a new setup.</p>
<p> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="437" height="333" id="viddler_6ba4b4ef"><param name="movie" value="http://www.viddler.com/player/6ba4b4ef/" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><embed src="http://www.viddler.com/player/6ba4b4ef/" width="437" height="333" type="application/x-shockwave-flash" allowScriptAccess="always" allowFullScreen="true" name="viddler_6ba4b4ef"></embed></object></p>
<img src="http://feeds.feedburner.com/~r/SleepOverrated/~4/0Rg62aQFc6w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sleepoverrated.com/archive/2010/04/future-of-acceptance-testing-openvolcano10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Helping Managers get Agile [OpenVolcano10]</title>
		<link>http://sleepoverrated.com/archive/2010/04/helping-managers-get-agile-openvolcano10/</link>
		<comments>http://sleepoverrated.com/archive/2010/04/helping-managers-get-agile-openvolcano10/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 15:14:37 +0000</pubDate>
		<dc:creator>Scott Cowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sleepoverrated.com/archive/2010/04/helping-managers-get-agile-openvolcano10/</guid>
		<description><![CDATA[Here’s Bejamin Mitchel’s discussion on agile adoption and actually selling it to the business.
This is part of the OpenVolcano 2010 conference that was planned in just a day

]]></description>
			<content:encoded><![CDATA[<p>Here’s <a href="http://twitter.com/benjaminm">Bejamin Mitchel</a>’s discussion on agile adoption and actually selling it to the business.</p>
<p>This is part of the OpenVolcano 2010 conference that was planned in just a day</p>
<p><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="437" height="333" id="viddler_80e2d36f"><param name="movie" value="http://www.viddler.com/player/80e2d36f/" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><embed src="http://www.viddler.com/player/80e2d36f/" width="437" height="333" type="application/x-shockwave-flash" allowScriptAccess="always" allowFullScreen="true" name="viddler_80e2d36f"></embed></object></p>
<img src="http://feeds.feedburner.com/~r/SleepOverrated/~4/NGKy1xdzMC4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sleepoverrated.com/archive/2010/04/helping-managers-get-agile-openvolcano10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resharper Updater for 5.0 EAP</title>
		<link>http://sleepoverrated.com/archive/2009/10/resharper-updater-for-5-0-eap/</link>
		<comments>http://sleepoverrated.com/archive/2009/10/resharper-updater-for-5-0-eap/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 12:34:02 +0000</pubDate>
		<dc:creator>Scott Cowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sleepoverrated.com/archive/2009/10/resharper-updater-for-5-0-eap/</guid>
		<description><![CDATA[I’ve updated the Resharper Updater to support the 5.0 EAP that has just started.
There are some new features such as seeing the last 10 builds on the EAP from the taskbar. This way if you’d like to install a highly rated build from a couple days earlier that can be done quickly.
&#160;
Enjoy,
Resharper Updater 1.3
]]></description>
			<content:encoded><![CDATA[<p>I’ve updated the <a href="http://code.google.com/p/resharper-updater/">Resharper Updater</a> to support the <a href="http://www.jetbrains.net/confluence/display/ReSharper/ReSharper+5.0+Nightly+Builds">5.0 EAP</a> that has just started.</p>
<p>There are some new features such as seeing the last 10 builds on the EAP from the taskbar. This way if you’d like to install a highly rated build from a couple days earlier that can be done quickly.</p>
<p><a href="http://sleepoverrated.com/wp-content/uploads/2009/10/RUpdater001.jpg"><img title="RUpdater001" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="104" alt="RUpdater001" src="http://sleepoverrated.com/wp-content/uploads/2009/10/RUpdater001_thumb.jpg" width="349" border="0" /></a>&#160;</p>
<p>Enjoy,</p>
<p><a href="http://resharper-updater.googlecode.com/files/resharper-updater-1.3.zip">Resharper Updater 1.3</a></p>
<img src="http://feeds.feedburner.com/~r/SleepOverrated/~4/Hh_maaXtBfA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sleepoverrated.com/archive/2009/10/resharper-updater-for-5-0-eap/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Company culture affects your code</title>
		<link>http://sleepoverrated.com/archive/2009/04/company-culture-affects-your-code/</link>
		<comments>http://sleepoverrated.com/archive/2009/04/company-culture-affects-your-code/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 10:51:00 +0000</pubDate>
		<dc:creator>Scott Cowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sleepoverrated.com/?p=177</guid>
		<description><![CDATA[If you produce bad code now you can blame your boss. Well at least there’s some research you can use to justify that reasoning. 
According to Conway’s Law
Any organization that designs a system will inevitably produce a design whose structure is a copy of the organization&#8217;s communication structure.

Have you ever thought about how much your [...]]]></description>
			<content:encoded><![CDATA[<p>If you produce bad code now you can blame your boss. Well at least there’s some research you can use to justify that reasoning. </p>
<p>According to <a href="http://en.wikipedia.org/wiki/Conway%27s_Law">Conway’s Law</a></p>
<blockquote><p>Any organization that designs a system will inevitably produce a design whose structure is a copy of the organization&#8217;s communication structure.</p>
</blockquote>
<p>Have you ever thought about how much your company culture affects how you code? I do make a bit of a leap between a communication structure and the company culture but I’d argue that they’re the same. </p>
<p>Not long ago I was under the reigns of an evil manager. It was a waterfall project so it was doomed from the start but I was naive. I would work long hours and the manager would ask me to work late everyday.</p>
<p><a href="http://despair.com/quality.html" target="_blank"><img class="aligncenter size-full wp-image-178" title="quality" height="430" alt="quality" src="http://sleepoverrated.com/wp-content/uploads/2009/04/quality.jpg" width="300" /></a></p>
<p>The software we produced was</p>
<ol>
<li>rushed </li>
<li>full of bugs </li>
<li>had poor solutions that weren’t thought out </li>
</ol>
<ol>That was my last poorly made piece of software but I bring it up so we can be realistic about the culture in which we build software. Can you think of examples where different cultures have been reflected in the software you make?</ol>
<p>At <a href="http://www.sportinginsider.com">sportinginsider.com</a> we’re a splintered group of developers spread from London to Seoul. We communicate over skype and IM and meet in person every few months. Without collocation its a lot of work to keep communication happening. The communication we have is generally high latency since we’re overlapping at different times during the day. What we produce reflects this broken nature of our communication by separating concerns with SOA and plug-in support.</p>
<p><em>the quest for quality is a good thing. the quest for perfection gets you no where</em></p>
<img src="http://feeds.feedburner.com/~r/SleepOverrated/~4/lLxU47vg4GE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sleepoverrated.com/archive/2009/04/company-culture-affects-your-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building plugins with NAnt</title>
		<link>http://sleepoverrated.com/archive/2009/04/building-plugins-with-nant/</link>
		<comments>http://sleepoverrated.com/archive/2009/04/building-plugins-with-nant/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 10:32:23 +0000</pubDate>
		<dc:creator>Scott Cowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sleepoverrated.com/archive/2009/04/building-plugins-with-nant/</guid>
		<description><![CDATA[I’m a big fan of using convention to simplify your build process and its really easy to do. I’ll show that with a snippet from our NAnt build file which is a target that builds each of our plugins.
the convention I’m using is that 

each plugin is in folder named Something.Addin 

In order to compile [...]]]></description>
			<content:encoded><![CDATA[<p>I’m a big fan of using convention to simplify your build process and its really easy to do. I’ll show that with a snippet from our NAnt build file which is a target that builds each of our plugins.</p>
<p>the convention I’m using is that </p>
<ul>
<li>each plugin is in folder named Something.Addin </li>
</ul>
<ul>In order to compile each plugin into a seperate dll we use the <a href="http://nant.sourceforge.net/release/latest/help/tasks/foreach.html">foreach</a> Task.</ul>
<p>the property addin.name will contain just the folder name “Something.AddIn” instead of the absolute path that we get from the foreach Task.</p>
<p>I’m using Mono-Addins to provide plugin support to the application which I’ll cover soon.</p>
<pre class="prettyprint xml">&lt;target name=&quot;-addin-compile&quot;&gt;
  &lt;foreach item=&quot;Folder&quot; property=&quot;folder&quot;&gt;
    &lt;in&gt;
      &lt;items&gt;
        &lt;include name=&quot;${sources.dir}/*.addin&quot;/&gt;
      &lt;/items&gt;
    &lt;/in&gt;
    &lt;do&gt;
      &lt;property name=&quot;index&quot; value=&quot;${string::last-index-of(folder, '\')}&quot;/&gt;
      &lt;property name=&quot;addin.name&quot; value=&quot;${string::substring(folder,int::parse(index)+1,string::get-length(folder)-int::parse(index)-1)}&quot;/&gt;
      &lt;echo message=&quot;Compiling ${addin.name}&quot;/&gt;
      &lt;csc target=&quot;library&quot; output=&quot;${deploy.dir}/${addin.name}.dll&quot; debug=&quot;false&quot;&gt;
        &lt;sources&gt;
          &lt;include name=&quot;${sources.dir}/${addin.name}/**/*.cs&quot;/&gt;
        &lt;/sources&gt;
        &lt;references&gt;
          &lt;include name=&quot;System.Configuration.dll&quot;/&gt;
          &lt;include name=&quot;${deploy.dir}/mlb.aggregator.common.dll&quot;/&gt;
          &lt;include name=&quot;${lib.dir}/mono-addins/*.dll&quot;/&gt;
          &lt;include name=&quot;${lib.dir}/log4net/mono-3.5/log4net.dll&quot;/&gt;
          &lt;include name=&quot;${lib.dir}/xstream/*.dll&quot;/&gt;
          &lt;include name=&quot;${lib.dir}/nhibernate/*.dll&quot;/&gt;
        &lt;/references&gt;
      &lt;/csc&gt;
    &lt;/do&gt;
  &lt;/foreach&gt;
&lt;/target&gt;</pre>
<p><em>every project has conventions, not every project uses them</em></p>
<img src="http://feeds.feedburner.com/~r/SleepOverrated/~4/buFm195-mlY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sleepoverrated.com/archive/2009/04/building-plugins-with-nant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter notifications with TeamCity</title>
		<link>http://sleepoverrated.com/archive/2009/03/twitter-notifications-with-teamcity/</link>
		<comments>http://sleepoverrated.com/archive/2009/03/twitter-notifications-with-teamcity/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 16:35:24 +0000</pubDate>
		<dc:creator>Scott Cowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sleepoverrated.com/?p=163</guid>
		<description><![CDATA[I was surfing Stackoverflow when I saw a request for a Twitter Notifier for TeamCity from Lance Fisher. I decided to implement it because I’ve always been a big fan of how last.fm use IRC to do notifications and queries. Last.fm puts everything up on IRC there from Jira issues, builds, hosting alerts and more.

If [...]]]></description>
			<content:encoded><![CDATA[<p>I was surfing Stackoverflow when I saw a <a href="http://stackoverflow.com/questions/522996/teamcity-twitter-notifier/682165#682165">request for a Twitter Notifier for TeamCity</a> from Lance Fisher. I decided to implement it because I’ve always been a big fan of <a href="http://www.metabrew.com/article/how-we-use-irc-at-lastfm/">how last.fm use IRC to do notifications</a> and queries. Last.fm puts everything up on IRC there from Jira issues, builds, hosting alerts and more.</p>
<p style="text-align: center;"><a href="http://twitter.com/threeboy/status/938270718"><img class="aligncenter size-full wp-image-172" title="twitter is the new IRC" src="http://sleepoverrated.com/wp-content/uploads/2009/03/ttn-06.jpg" alt="twitter is the new IRC" width="301" height="62" /></a></p>
<p>If you use to spend time on IRC you know it feels very similar using twitter. Using private accounts we can keep our companies notifications both restrictive and accessible. At our company I’m starting to get interested in more notifications so I can keep track of how what&#8217;s happening company wide.</p>
<h3>What you&#8217;ll need</h3>
<ol>
<li>Twitter TeamCity Notifier</li>
<li>TeamCity</li>
<li>Java 1.6</li>
</ol>
<p><a href="http://code.google.com/p/teamcity-twitter-notifier/">google code project</a></p>
<div id="downloadbox"><a href="http://teamcity-twitter-notifier.googlecode.com/files/twitter-teamcity-notifier-0.1.zip">Twitter Teamcity Notifier 0.1</a></div>
<p>The default install of TeamCity installs with Java 1.5 so you’ll want to update to 1.6 if you haven’t already. You can do this by installing the JRE and then copying it into the c:\TeamCity\jre dir.</p>
<p>to check what version of java TeamCity is using try this command</p>
<blockquote><p>c:\TeamCity\jre\bin\java.exe –version</p></blockquote>
<p>After you install Java 1.6 you’ll want erase the contents of c:\TeamCity\jre and replace them with the jre folder that you can find under C:\Program Files\Java\. In my case the folder was C:\Program Files\Java\jdk1.6.0_10\jre</p>
<h3>Installing Twitter Notifier</h3>
<ol>
<li>extract the zip into C:\TeamCity\webapps\ROOT\WEB-INF\lib</li>
<li>restart the teamcity service</li>
</ol>
<h3>Configuring your notifications</h3>
<p>login to teamcity and goto My Tools and Settings</p>
<p><a href="http://sleepoverrated.com/wp-content/uploads/2009/03/ttn-01.jpg"><img class="aligncenter size-full wp-image-164" title="ttn-01" src="http://sleepoverrated.com/wp-content/uploads/2009/03/ttn-01.jpg" alt="ttn-01" width="323" height="225" /></a></p>
<p>here you’ll see some boxes to enter your twitter account.</p>
<p><a href="http://sleepoverrated.com/wp-content/uploads/2009/03/ttn-021.jpg"></a><a href="http://sleepoverrated.com/wp-content/uploads/2009/03/ttn-02.jpg"><img class="aligncenter size-full wp-image-165" title="ttn-02" src="http://sleepoverrated.com/wp-content/uploads/2009/03/ttn-02.jpg" alt="ttn-02" width="512" height="164" /></a></p>
<p>If you click edit you can specify the rules for the notifications</p>
<p><a href="http://sleepoverrated.com/wp-content/uploads/2009/03/ttn-03.jpg"><img class="aligncenter size-full wp-image-166" title="ttn-03" src="http://sleepoverrated.com/wp-content/uploads/2009/03/ttn-03.jpg" alt="ttn-03" width="507" height="158" /></a></p>
<p>make sure you select all projects and tick off conditions you want to send tweets for</p>
<p><a href="http://sleepoverrated.com/wp-content/uploads/2009/03/ttn-04.jpg"></a></p>
<p><a href="http://sleepoverrated.com/wp-content/uploads/2009/03/ttn-04.jpg"><img class="aligncenter size-full wp-image-167" title="ttn-04" src="http://sleepoverrated.com/wp-content/uploads/2009/03/ttn-04.jpg" alt="ttn-04" width="442" height="87" /></a></p>
<h3>Notifications in action</h3>
<p>Now when I trigger a build it notifies twitter.</p>
<p><a href="http://sleepoverrated.com/wp-content/uploads/2009/03/ttn-05.jpg"><img class="aligncenter size-full wp-image-168" title="ttn-05" src="http://sleepoverrated.com/wp-content/uploads/2009/03/ttn-05.jpg" alt="ttn-05" width="333" height="102" /></a></p>
<p>Don’t worry I’m going to add fields that let you customize messages in the future.</p>
<p><em>Communication is harder when your distributed</em></p>
<img src="http://feeds.feedburner.com/~r/SleepOverrated/~4/9fJPzspZNNM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sleepoverrated.com/archive/2009/03/twitter-notifications-with-teamcity/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Downloader for Resharper Nightly Builds</title>
		<link>http://sleepoverrated.com/archive/2009/02/downloader-for-resharper-nightly-builds/</link>
		<comments>http://sleepoverrated.com/archive/2009/02/downloader-for-resharper-nightly-builds/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 14:55:54 +0000</pubDate>
		<dc:creator>Scott Cowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sleepoverrated.com/?p=144</guid>
		<description><![CDATA[If you use Resharper your probably a fan of getting the new features early with the Nightly builds. Now with 4.5 stable enough to develop with full time I thought I&#8217;d cut down on my daily ritual of downloading the latest nightly build with a little app to do most of the work for me.
Resharper [...]]]></description>
			<content:encoded><![CDATA[<p>If you use <a href="http://www.jetbrains.com/resharper/">Resharper</a> your probably a fan of getting the new features early with the Nightly builds. Now with 4.5 stable enough to develop with full time I thought I&#8217;d cut down on my daily ritual of downloading the latest nightly build with a little app to do most of the work for me.</p>
<p><a href="http://code.google.com/p/resharper-updater/">Resharper Updater</a> checks the website behind the scenes for you and changes the icon to one with a star when there&#8217;s a new version, so all you have to do when you come in in the morning is close studio and update to the latest version.</p>
<p><a href="http://resharper-updater.googlecode.com/files/resharper-updater-1.0.zip">You can download it here resharper-updater-1.0.zip</a></p>
<h3>Using Resharper Updater</h3>
<p>There’s two ways to access the install</p>
<p>right click for the menu</p>
<p><img class="aligncenter size-full wp-image-145" title="13-02-2009-14-28-27" src="http://sleepoverrated.com/wp-content/uploads/2009/02/13-02-2009-14-28-27.png" alt="13-02-2009-14-28-27" width="220" height="119" /></p>
<p>If you have resharper installed it will tell you there’s no new version</p>
<p><a href="http://sleepoverrated.com/wp-content/uploads/2009/02/13-02-2009-14-28-51.png"><img class="aligncenter size-full wp-image-146" title="13-02-2009-14-28-51" src="http://sleepoverrated.com/wp-content/uploads/2009/02/13-02-2009-14-28-51.png" alt="13-02-2009-14-28-51" width="266" height="101" /></a></p>
<p>If you <strong>Check for update</strong> it will tell you what build is available and the icon will change</p>
<p><a href="http://sleepoverrated.com/wp-content/uploads/2009/02/13-02-2009-14-33-48.png"><img class="aligncenter size-full wp-image-147" title="13-02-2009-14-33-48" src="http://sleepoverrated.com/wp-content/uploads/2009/02/13-02-2009-14-33-48.png" alt="13-02-2009-14-33-48" width="260" height="100" /></a></p>
<p>Otherwise if you choose <strong>Check and Install</strong> or you <strong>double click</strong> on the icon it will check,download and run the installer.</p>
<p><a href="http://sleepoverrated.com/wp-content/uploads/2009/02/13-02-2009-14-34-51.png"><img class="aligncenter size-full wp-image-148" title="13-02-2009-14-34-51" src="http://sleepoverrated.com/wp-content/uploads/2009/02/13-02-2009-14-34-51.png" alt="13-02-2009-14-34-51" width="528" height="513" /></a></p>
<p>There&#8217;s definitely room for improvement but this is the bare minimum before I could release it.</p>
<p><em>Automating your day</em></p>
<img src="http://feeds.feedburner.com/~r/SleepOverrated/~4/mLZszExXw7U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sleepoverrated.com/archive/2009/02/downloader-for-resharper-nightly-builds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reusable Build Scripts</title>
		<link>http://sleepoverrated.com/archive/2009/02/reusable-build-scripts/</link>
		<comments>http://sleepoverrated.com/archive/2009/02/reusable-build-scripts/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 14:32:19 +0000</pubDate>
		<dc:creator>Scott Cowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sleepoverrated.com/?p=126</guid>
		<description><![CDATA[
I started last week at Open Space Coding Day 1 and I had builds on my mind. I proposed a lot of different topics to code one but reusable build scripts picked up a bit of traction. I ran a quick tutorial on how to get an application compiling and tests running. We used NAnt [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-137" src="http://sleepoverrated.com/wp-content/uploads/2009/02/246357466_cba52d3fc5.jpg" alt="246357466_cba52d3fc5" width="500" height="375" /></p>
<p>I started last week at <a href="http://openspacecode.com/uk/london/2009-01-31.xhtml">Open Space Coding Day 1</a> and I had builds on my mind. I proposed a lot of different topics to code one but reusable build scripts picked up a bit of traction. I ran a quick tutorial on how to get an application compiling and tests running. We used NAnt because that’s what people wanted to learn but there’s plenty of alternatives including Powershell, Rake and MSBuild.</p>
<p>Here’s the repository from our session:</p>
<p><a href="http://openspacecode.googlecode.com/svn/trunk/src/2009-01-31%20London/reusable-build-scripts/">reusable build scripts subversion</a></p>
<p>When I first started off with build scripts it didn’t take long before they got ugly. Your build script goes from a simple compilation to a monstrous 1000 line file if your not careful. I remember adding all kinds of email notifications and deployment steps that I ended up cutting out during the hand over. I recommend if your new to build scripts and NAnt to read through with JP Boodhoo’s <a href="http://blog.jpboodhoo.com/NAntStarterSeries.aspx">NAnt Starter Series</a> which is a really good starting point.</p>
<p>The main tips for simplifying your build scripts are</p>
<ol>
<li>remove application specific information to a common properties file</li>
<li>separate out common targets into separate files which you can include (ie: tests, compile, deploy)</li>
<li>keep it simple</li>
</ol>
<p>I maintain a number of projects for a data mining job and it started to bug me how across different projects on a few scattered lines of the build changed. Even after the tips I mentioned you can still find that you have application specific configurations in your build.</p>
<p>The problem I had was I was repeating myself in the build script and that defeats <a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself">DRY</a>. The steps I was taking were:</p>
<ol>
<li>compile all the .cs files in my source dir</li>
<li>manually set the references for my project</li>
<li>copy the referenced DLLs into the output directory</li>
</ol>
<p>It doesn’t seem like much but anytime you add a reference you need to edit the build file. It ends up looking like this.</p>
<pre>    &lt;csc target="library" output="${dir.deploy}/sample.core.tests.dll" debug="true"&gt;
      &lt;sources&gt;
        &lt;include name="${dir.src}/*.tests/**/*.cs" /&gt;
      &lt;/sources&gt;
      &lt;references&gt;
        &lt;include name="${dir.deploy}/sample.core.dll" /&gt;
        &lt;include name="../thirdparty/tools/mbunit/MbUnit.Framework.dll" /&gt;
      &lt;/references&gt;
    &lt;/csc&gt;
    &lt;copy todir="${dir.deploy}"&gt;
      &lt;fileset&gt;
        &lt;include name="../thirdparty/tools/mbunit/MbUnit.Framework.dll" /&gt;
        &lt;include name="../thirdparty/tools/mbunit/QuickGraph.Algorithms.dll" /&gt;
        &lt;include name="../thirdparty/tools/mbunit/QuickGraph.dll" /&gt;
      &lt;/fileset&gt;
    &lt;/copy&gt;</pre>
<p>The benefit of using csc over msbuild is that it lets you use the Mono Framework just by setting the target framework at command line.</p>
<p>The other problem with this approach is that mono needs reference DLL’s compiled for Mono like MySql Connector and Log4Net.</p>
<h3>Cowan.Commons.Nant.ProjectsTask</h3>
<p>My solution was to take all the logic I was repeating and put it into a custom task called ProjectsTask. It allows you to use wildcards to specify your projects to compile, which is not supported by SolutionsTask. This task uses XPath on each project file to retrieve references,resources and the project name.</p>
<pre>&lt;projects outputdir="${target.dir}"&gt;
      &lt;fileset basedir="${sources.dir}"&gt;
        &lt;include name="**/*.csproj" /&gt;
        &lt;exclude name="*.tests/*.csproj" /&gt;
      &lt;/fileset&gt;
&lt;/projects&gt;</pre>
<p>To fix the mono reference problem I’ve included references for both mono and .net in my lib folder but only referenced the .net dll.</p>
<pre>\lib\log4net\net-3.5\log4net.dll
\lib\log4net\mono-3.5\log4net.dll</pre>
<p>when you compile with mono it notices the net-3.5 directory and tries and finds a mono directory beside it. A new addition to NAnt is that it’s no longer sensitive to OS specific path seperators like / or \.</p>
<p>I still need to specify the build configuration (ie:debug or release) but it’s really simplified things for me.</p>
<p><a href="http://code.google.com/p/cowan-commons/">you can see the code here</a></p>
<p><em>Work Smarter not Harder</em></p>
<img src="http://feeds.feedburner.com/~r/SleepOverrated/~4/bzq5gog-dq4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sleepoverrated.com/archive/2009/02/reusable-build-scripts/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
