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

<channel>
	<title>Run.To.The.Hills &#187; Uncategorized</title>
	<atom:link href="http://rob.runtothehills.org/archives/category/uncategorized/feed" rel="self" type="application/rss+xml" />
	<link>http://rob.runtothehills.org</link>
	<description>Talk is cheap. Show me the code.</description>
	<lastBuildDate>Tue, 07 Sep 2010 09:57:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>iPad iLike</title>
		<link>http://rob.runtothehills.org/archives/367</link>
		<comments>http://rob.runtothehills.org/archives/367#comments</comments>
		<pubDate>Tue, 03 Aug 2010 20:24:03 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://rob.runtothehills.org/archives/367</guid>
		<description><![CDATA[I think i’m seeing the benefit. I’ve looked at the other eBook readers and up to now stuck with the paper on shelves. However, handling the iPad, reading the sample pdf’s and seeing how much it looks , well, just ‘right’ Im beginning to like it more than i should for an overgrown iPhone. help. [...]]]></description>
			<content:encoded><![CDATA[<p>I think i’m seeing the benefit. I’ve looked at the other eBook readers and up to now stuck with the paper on shelves. However, handling the iPad, reading the sample pdf’s and seeing how much it looks , well, just ‘right’ Im beginning to like it more than i should for an overgrown iPhone.</p>
<p>help. I’m being assimilated!</p>
]]></content:encoded>
			<wfw:commentRss>http://rob.runtothehills.org/archives/367/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
	</item>
		<item>
		<title>Whoa. That was a *BIG* break</title>
		<link>http://rob.runtothehills.org/archives/359</link>
		<comments>http://rob.runtothehills.org/archives/359#comments</comments>
		<pubDate>Fri, 30 Jul 2010 11:46:36 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://rob.runtothehills.org/?p=359</guid>
		<description><![CDATA[I think we need a bit of a refresh &#38; a new start. New theme &#38; updates, coming very shortly.]]></description>
			<content:encoded><![CDATA[<p>I think we need a bit of a refresh &amp; a new start. New theme &amp; updates, coming very shortly.</p>
]]></content:encoded>
			<wfw:commentRss>http://rob.runtothehills.org/archives/359/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
	</item>
		<item>
		<title>Automation for business and pleasure.</title>
		<link>http://rob.runtothehills.org/archives/350</link>
		<comments>http://rob.runtothehills.org/archives/350#comments</comments>
		<pubDate>Tue, 10 Mar 2009 07:31:52 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://rob.runtothehills.org/archives/350</guid>
		<description><![CDATA[I’m a big fan of automating anything that can be automated. Those of you that may know me, might even call me a bit of a fanatic. That’s the reason I got married, automatic dishwasher on the cheap. There’s a reason for my fanaticism, I believe that the more of me you remove from the [...]]]></description>
			<content:encoded><![CDATA[<p>I’m a big fan of automating anything that can be automated. Those of you that may know me, might even call me a bit of a fanatic. That’s the reason I got married, automatic dishwasher on the cheap. There’s a reason for my fanaticism, I believe that the more of <strong>me</strong> you remove from the loop, the less problems will occur. Well, not me in particular, I don’t think I’m <em>that </em>crap. Well, ok, I’d prefer it if you didn’t ask anyone’s opinion on that <img src='http://rob.runtothehills.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Especially the wife.</p>
<p>The largest source of problems in a project is us bumbling humans, and we’re not just talking about the bugs that we introduce!. Damn those pesky humans.</p>
<h5>Automate Everything</h5>
<p>Ok, so how do we help obsolete ourselves? Build automation is a really good start. As Steve McConnell once said “The build is the heartbeat of the project. If the hearts not beating the project is dead.” If that metaphor’s good enough for Steve, its good enough for me. Automated building is one of the best tools to keep that heart beating.</p>
<p>So, one of the keys to having a project run as smoothly as possible is automating the builds. There are many reasons for wanting to automate the build :</p>
<p><span id="more-350"></span></p>
<ol>
<li>Repeatability      <br />You get the same output artefacts every time. No forgotten steps, miss-typed commands, forgotten copies. Trusting the process to give you the same outputs means you no longer have to worry about the end result working.       </li>
<li>Create different builds automatically      <br />even though its a good idea to run different configurations locally, you can perform pre-configured builds for a specific purpose without messing with your local setup. Debug,Release,Nightly etc, different build configurations can be run on demand, or on schedule.       </li>
<li>Reduced Interruptions.      <br />It’s subtle, but often overlooked, you get to reduce the number of people that interrupt you to get the latest version. Reducing the number of interruptions to your flow keeps up your development momentum, and its not very often you get to do that!       </li>
<li>Tests can be run automatically.      <br />One of the great things about modern development is that there are plenty of Unit test frameworks available. Unit tests , no matter how time consuming can be executed against the build. Really time consuming operations can be run overnight, on a scheduled build.       </li>
<li>Build Farms.      <br />Real men have build farms. More Pc’s projects a manly image. Ok, the wife might dispute that, she just seems to call it clutter. But having a good automated build system means that you can distribute the build amongst multiple PC’s, reducing time consuming builds and utilising those old 386’s you’ve got holding the doors open. Well, ok, it does actually have to <strong>qualify </strong>as a pc. </li>
<li>Time.      <br />Another important factor. All the time you used to spend running the various builds &amp; unit tests you can now spend on <em>developing</em> the product. Multiply that by the number of members in your team. </li>
</ol>
<p>So, it all sounds good in practice, but how do we achieve these benefits in reality?</p>
<h5>An Automated Build System is for the project, not just for Christmas</h5>
<p>Firstly this is really an up-front decision. The more complex the project gets the more time consuming it will be to switch systems. So I recommend making the automated build tool one of the first choices in the project.</p>
<p>Choosing which system you’ll implement depends largely on your budget. </p>
<h5>Microsoft Team Foundation Server (TFS)</h5>
<p>TFS provides all the automation you’d need and more, but is pretty costly, and requires a reasonable amount of infrastructure and admin to get up and running smoothly. Its not something you’d consider implementing in small teams and projects, unless it’s maintained outside your project. You can read more about <a href="http://msdn.microsoft.com/en-us/teamsystem/default.aspx" target="_blank">TFS on MSDN</a></p>
<p>Two others worth considering are <a href="http://cifactory.org/joomla/" target="_blank">CIFactory</a> and <a href="http://www.jetbrains.com/teamcity/" target="_blank">Team City</a>.</p>
<h5>CIFactory</h5>
<p><a href="http://rob.runtothehills.org/wp-content/uploads/2009/03/building.png"><img title="building" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="161" alt="building" src="http://rob.runtothehills.org/wp-content/uploads/2009/03/building-thumb.png" width="516" border="0" /></a> </p>
<p>It’s quite amazing , but CIFactory is the work of one man – <a href="http://jayflowers.com/joomla/" target="_blank">Jay Flowers</a>. Ok, fair enough he did have a little help where the CIFactory community had submitted various add on packages, but the all of the CIFactory framework was done by Jay. When you look at what it does, that’s a phenomenal piece of work by one guy, who wasn’t doing it as his day job either!</p>
<p>I implemented CIFactory on the last project, which started about a year ago, and was really happy with how it went. The install was straight forward, and the packages it provided for things like Unit testing , and code coverage were all up to date and matched what I was already using day to day, so at the time it was a perfect fit. The range of pre-configured packages is pretty good too, including <a href="http://www.ncover.com/" target="_blank">nCover</a>, <a href="http://www.mbunit.com/" target="_blank">mbUnit</a> Analytics, and even <a href="http://www.redhillconsulting.com.au/products/simian/overview.html" target="_blank">Simian</a>!</p>
<p>The really nice thing about CIFactory is that once it’s installed the whole system builds itself as well as your projects. All of the CIFactory tools and scripts are held in the same source hierarchy as your code, and the beauty of this is it’s completely self contained. To recreate your build system, all you have to do is re-extract the entire source tree to a HDD and point IIS back at the folder where the report pages are. It really is a nice clean and ultra flexible system. That may not seem like a major benefit, but for small teams spending any more time than necessary on tooling is obviously a big negative. </p>
<p>Now for the bad news. </p>
<p>When starting a project for the new client this time round I naturally went back to the slick tool I used over a year ago, and found little had changed. This is absolutely NOT a dig at Jay! Repeat, NOT disrespecting ANY of Jay’s work. His body of work is amazing, and I still had CIFactory installed and running with few modifications (as in the image), but it did take me more than a day to sort out. And to be perfectly honest staring at pages of nAnt scripts and XML files isn’t particularly pleasurable. Not only that, but many of the automatically installed packages now have broken links, and the pre-installed packages are now out of date. After trawling the CIFactory pages, Jays blog, and the forums, it was kind of obvious that CIFactory has probably reached the end of its natural lifespan, activity seemed to be very low on all fronts. I expect that there will still be the hardcore users that like it for its pure configurability (and it’s probably still the best for that) but it just seems like too much effort when there are easier alternatives.</p>
<h5>Team City</h5>
<p><a href="http://rob.runtothehills.org/wp-content/uploads/2009/03/tc2-projectpage.png"><img title="tc2_projectpage" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="346" alt="tc2_projectpage" src="http://rob.runtothehills.org/wp-content/uploads/2009/03/tc2-projectpage-thumb.png" width="516" border="0" /></a> </p>
<p>Yes, I’ve discovered <a href="http://www.jetbrains.com/teamcity" target="_blank">Team City</a>. If you’re a <a href="http://www.jetbrains.com/resharper" target="_blank">ReSharper</a> users (if not why not? you have to be start raving BONKERS) then you’ll understand why I’m in love with TC. It has all of JetBrains slickness packaged up in an easy to use, and easy to setup automated build system. JetBrains really are the Dogs Danglies, and I’d be more than happy to bear children to them.</p>
<p>Ok, enough with the sycophantic JetBrains stalking, trust me, Team City is about the best thing you’ll come across for automated building that doesn’t require you to sacrifice your first born to get installed and working. Not only that, but there are Plug-ins for the most popular IDE’s and task tray notifications that you can download from the interface. To be fair, CIFactory (Built on Cruise Control) also had task tray notifications with cctray.</p>
<p>What’s even more amazing is that the standard version is FREE! yes. Read that again FREE!</p>
<p>Ok, there’s FREE and there’s FREE, so this version of FREE has licensing restrictions, the most limiting of which is you can only install 3 build agents, but the other restrictions aren’t really that restrictive. So, given that there are only 2 developers that need to build our new project, I installed the latest version of TeamCity on our build server. I then set up our projects with the minimum of fuss. A minor problem occurred because the Solution builder that’s included can’t build Deployment projects. This isn’t a problem with Team City per se, only devstudio can build web deployment projects. This was easily fixed by using Team City’s command line build runner and building the offending setup project directly with devenv.exe! Even though I hadn’t really used TC before I had it building the projects (command line builder included) in about 3 hours. That more like it!</p>
<p>A feature of both CIFactory and TC is that they release the build artefacts from at the web page – so anyone with a browser can download the build output. </p>
<p>CIFactory does this by zipping up the project using a nAnt file set that looks at the project’s output folder. This is a bit of a problem if you want to include other files in the output. No <em>big </em>deal, but you have to go in and get your hands dirty with the XML properties files for the deployment stage. </p>
<p>With TC, the artefacts are held <em>inside</em> your project, exactly where you left them!. Generally these are generated in your projects bin/release folder by default. TC Allows you to expose <strong><em>any</em></strong> path or file relative to your projects root as an artefact, so you can include anything you like by simply providing TC&#160; with a nAnt style wildcard spec.</p>
<p>Once the project is built the resulting artefacts are available for download.</p>
<p><a href="http://rob.runtothehills.org/wp-content/uploads/2009/03/tc2-artifacts2.png"><img title="tc2_artifacts2" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="105" alt="tc2_artifacts2" src="http://rob.runtothehills.org/wp-content/uploads/2009/03/tc2-artifacts2-thumb.png" width="244" border="0" /></a>&#160; Here we have the build output from the deployment project.</p>
<p>Now anyone with a browser can retrieve the latest version of your project without interrupting you.</p>
<p>One thing that TC does do that CIFactory doesn’t is distribute the build. I used all 3 licences for the build agents for our mini build farm. The first machine is the dedicated build machine where the TC server is running. This machine also functions as a build agent.</p>
<p><a href="http://rob.runtothehills.org/wp-content/uploads/2009/03/tc2-buildagents.png"><img title="tc2_buildagents" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="157" alt="tc2_buildagents" src="http://rob.runtothehills.org/wp-content/uploads/2009/03/tc2-buildagents-thumb.png" width="244" border="0" /></a> </p>
</p>
</p>
<p>Notice that the Build machine CPU rating. It’s&#160; core2 duo E6600. Note my machine’s CPU rating. We just WONT go into that. Keep in mind the build machine is running inside a VM, with Oracle11, SQLServer 2008, and IIS running in it. &lt;sigh&gt;.</p>
<p>Once the build agents are set up, TC distributes a running build according to a set of rules you specify. Our TC server is set to distribute to the fastest build agent first. Another good choice would be the first Idle agent too. Since there are only 3 of us and the build doesn’t take that long at the moment, I don’t think the distribution strategy matters a great deal.</p>
<p>Here TC is distributing the build across the agents.</p>
<p><a href="http://rob.runtothehills.org/wp-content/uploads/2009/03/tc2-distributed2.png"><img title="tc2_distributed2" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="79" alt="tc2_distributed2" src="http://rob.runtothehills.org/wp-content/uploads/2009/03/tc2-distributed2-thumb.png" width="516" border="0" /></a> </p>
<p>One nice feature of all of TC’s Ajax enabled interface is that you still manipulate controls whilst the server/agents are building. For example, as soon as the artefacts start becoming available you can begin download.</p>
</p>
<p>Another feature of TC is that you can see the build statistics on a per agent basis, </p>
<p><a href="http://rob.runtothehills.org/wp-content/uploads/2009/03/tc2-buildstats.png"><img title="tc2_buildstats" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="418" alt="tc2_buildstats" src="http://rob.runtothehills.org/wp-content/uploads/2009/03/tc2-buildstats-thumb.png" width="516" border="0" /></a> </p>
<p>I guess this would be more useful in a large farm, but i guess its still useful to know which agents are successfully building the project. If they’re not it might point to environmental problems on that particular machine.</p>
<p>When TC is performing a GET to extract the sources, well, with subversion anyway, it actually does an export of the source tree, so you get an unpolluted source hierarchy from which you can extract your artefacts. You can also control who does the checking out, the agents or the server – checking out on the server reduces the load on the source control system, since only one machine is doing the full checkout – but then the sources are distributed to each agent as TC calls upon each agent to build. </p>
<p>All in all TC is pretty amazing, and the fact that you can install it for small dev teams for free makes it my current best friend !</p>
<p>Coming next, a step by step guide on how to set up a complete system from start to finish. Using Subversion as the source repository, and then installing TC on top of that, all with the canonical hello world project!</p>
]]></content:encoded>
			<wfw:commentRss>http://rob.runtothehills.org/archives/350/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://rob.runtothehills.org/wp-content/uploads/2009/03/building-thumb.png" />
		<media:content url="http://rob.runtothehills.org/wp-content/uploads/2009/03/building-thumb.png" medium="image">
			<media:title type="html">building</media:title>
		</media:content>
		<media:content url="http://rob.runtothehills.org/wp-content/uploads/2009/03/tc2-projectpage-thumb.png" medium="image">
			<media:title type="html">tc2_projectpage</media:title>
		</media:content>
		<media:content url="http://rob.runtothehills.org/wp-content/uploads/2009/03/tc2-artifacts2-thumb.png" medium="image">
			<media:title type="html">tc2_artifacts2</media:title>
		</media:content>
		<media:content url="http://rob.runtothehills.org/wp-content/uploads/2009/03/tc2-buildagents-thumb.png" medium="image">
			<media:title type="html">tc2_buildagents</media:title>
		</media:content>
		<media:content url="http://rob.runtothehills.org/wp-content/uploads/2009/03/tc2-distributed2-thumb.png" medium="image">
			<media:title type="html">tc2_distributed2</media:title>
		</media:content>
		<media:content url="http://rob.runtothehills.org/wp-content/uploads/2009/03/tc2-buildstats-thumb.png" medium="image">
			<media:title type="html">tc2_buildstats</media:title>
		</media:content>
	</item>
		<item>
		<title>Correction &lt;gulp&gt;</title>
		<link>http://rob.runtothehills.org/archives/337</link>
		<comments>http://rob.runtothehills.org/archives/337#comments</comments>
		<pubDate>Mon, 23 Feb 2009 20:02:12 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://rob.runtothehills.org/archives/337</guid>
		<description><![CDATA[Well, not a big one, but one of my blogless friends has pointed out that I probably mean the Real Time scanner – but I’m 99% sure its called the On Demand scanner. Here’s the courtesy link to his website Either way, its the one that checks files as they’re accessed. McAfee.. helping keep files [...]]]></description>
			<content:encoded><![CDATA[<p>Well, not a big one, but one of my blogless friends has pointed out that I probably mean the Real Time scanner – but I’m 99% sure its called the On Demand scanner. </p>
<p>Here’s the courtesy link to <a href="http://www.inkland.org.uk/" target="_blank">his website</a> <img src='http://rob.runtothehills.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Either way, its the one that checks files as they’re accessed. </p>
<p>McAfee.. helping keep files clean, and product deadlines away.</p>
<p> <img src='http://rob.runtothehills.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://rob.runtothehills.org/archives/337/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>The value of time.</title>
		<link>http://rob.runtothehills.org/archives/329</link>
		<comments>http://rob.runtothehills.org/archives/329#comments</comments>
		<pubDate>Wed, 21 Jan 2009 17:30:14 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://rob.runtothehills.org/archives/329</guid>
		<description><![CDATA[Image via Wikipedia I’ll never understand how some people in IT departments don’t grasp the value of a developers time. Its a false economy to provide anything but the absolute fastest PC for a developer. I’m not really sure where the real problem lies. Is it that non-techie people rise to management positions without realising [...]]]></description>
			<content:encoded><![CDATA[<div class="zemanta-img" style="display: block; float: right; margin: 1em; width: 212px"><a href="http://commons.wikipedia.org/wiki/Image:Samsung_SyncMaster_152X.JPG"><img style="border-right: medium none; border-top: medium none; display: block; border-left: medium none; border-bottom: medium none" height="152" alt="SyncMaster 152X is Samsung&#39;s 15" src="http://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Samsung_SyncMaster_152X.JPG/202px-Samsung_SyncMaster_152X.JPG" width="202" lcd="lcd" display.?="display.?" /></a>
<p class="zemanta-img-attribution" style="font-size: 0.8em">Image via <a href="http://commons.wikipedia.org/wiki/Image:Samsung_SyncMaster_152X.JPG">Wikipedia</a></p>
</p></div>
<p>I’ll never understand how some people in IT departments don’t grasp the value of a developers time. Its a false economy to provide anything but the absolute fastest PC for a developer. I’m not really sure where the real problem lies. Is it that non-techie people rise to management positions without realising what precisely their reports are doing?</p>
<p>Take the current client. We’re working on incredibly old PC’s – P4’s with 2gb of ram and 40gb.&#160; DevStudio is simply un-useable. I don’t care what the minimum supported spec says, it’s painful. We’ve managed to get some new PC’s ordered, but in most other places its simply not that easy. We still have to justify why we’d like large monitors for example.</p>
<p>Who creates those kinds of obstacles? How they *know* what size monitor I’ll need?</p>
<p><span id="more-329"></span></p>
<p>There’s plenty of supporting evidence for productivity gains for using multiple monitors, check out <a href="http://www.google.com/custom?domains=www.codinghorror.com&amp;q=multi+monitor&amp;sa=Search&amp;sitesearch=www.codinghorror.com&amp;client=pub-6424649804324178&amp;forid=1&amp;ie=ISO-8859-1&amp;oe=ISO-8859-1&amp;safe=active&amp;cof=GALT%3A%230066CC%3BGL%3A1%3BDIV%3A%23FFFFFF%3BVLC%3AA2427C%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3AFFFFFF%3BALC%3A666666%3BLC%3A666666%3BT%3A000000%3BGFNT%3A0066CC%3BGIMP%3A0066CC%3BLH%3A50%3BLW%3A344%3BL%3Ahttp%3A%2F%2Fwww.codinghorror.com%2Fblog%2Fimages%2Fcodinghorror-search-logo1.png%3BS%3Ahttp%3A%2F%2Fwww.codinghorror.com%2Fblog%2F%3BFORID%3A1&amp;hl=en" target="_blank">Jeff Attwoods blog</a> for well over 10 posts on this subject alone. In fact check out <a href="http://www.codinghorror.com/blog/archives/000012.html" target="_blank">Jeff’s own setup.</a></p>
<p>Personally I use dual 24”&#160; Samsung 245B’s. But try explaining this to some guy in procurement who’s sitting in front of his own single little 19” monitor and you’re in for a struggle. Maybe its because monitors are something tangible that they can actually compare the dimensions, so maybe the question “why would anyone need a larger monitor than mine?” creeps into their heads, whereas they can’t easily measure something like ram size or cpu speed. </p>
<p>With our current PC’s the edit-compile-debug feedback loop takes way too long, and when the build is finished the PC takes at least 20 seconds to become responsive again. The project isn’t very large, a web project with a separate DAL and a unit test project. Still it takes what seems like a decade to complete a single build. By comparison my home machine takes less than 5 seconds.</p>
<p>Consider building the code an average of 100 times a day. This is not unreasonable, it equates to roughly one compile every 5 minutes. Not a massive amount when a project is in full flow. Yet if I’m wasting 20 seconds for those 100 builds then that soon mounts up to a total of over 1/2 an hour. If the build is taking 1 minute instead of 20 seconds I’m wasting over an hour a day waiting for my PC to catch up. Sum that over a week and you’re losing almost a whole day. Over a month, that’s almost a week. in my case this is currently WAY worse. A typical build will take over 3 minutes.</p>
<p>Suddenly when you start totalling up all those wasted seconds it starts costing significant amounts. At an average contract rate of £40 an hour that’s over a thousand pounds a month you’d be burning, all over the cost of a 500 quid PC. If the contract lasts for year.. well, you do the math.</p>
<p>But there’s something more insidious here, and i fell into the trap this very morning. I block copied some code &lt;yes, gasp&gt;, a single line, setting up an OracleParameter for a query. Now this parameter did fit entirely on the width of my tiny monitor. The trouble is as I edited the start of the line the text pushed off the right hand side of my monitor. I could no longer see the end of the line. This in itself was not a real problem except that I’d forgotten to edit &amp; remove a bit of code assigning a value, from the end of each of those block copied lines. It took me two subsequent edit-compile-test loops which on this PC took almost 15 minutes to complete, before I discovered what I’d messed up.</p>
<p>Not having the correct equipment leads to a increase in defects.</p>
<p>I’d wasted 15 whole minutes looking for something that I wouldn’t even have done in the first place if I could see the line ends. This only gets worse as you use languages like XAML or ASP where the inserted code sometimes extends beyond even the end of my 24” widescreen. Admittedly solving it is only a code format away but wrapping lines of code sometimes makes it harder to comprehend, and even then its another step that takes time away from you solving the problem at hand.</p>
<p>It’s a false economy believing that using anything but the best possible PC’s for developers is a saving.. The real question is how do you justify all of this to the purse string holders if they don’t realise it themselves?? Sometimes even demonstrating the financial penalties isn’t enough!</p>
<p>&#160;</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px"><a class="zemanta-pixie-a" title="Zemified by Zemanta" href="http://reblog.zemanta.com/zemified/8b06431f-719c-4357-9efd-3543f8d0bbc6/"><img class="zemanta-pixie-img" style="border-right: medium none; border-top: medium none; float: right; border-left: medium none; border-bottom: medium none" alt="Reblog this post [with Zemanta]" src="http://img.zemanta.com/reblog_e.png?x-id=8b06431f-719c-4357-9efd-3543f8d0bbc6" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://rob.runtothehills.org/archives/329/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Samsung_SyncMaster_152X.JPG/202px-Samsung_SyncMaster_152X.JPG" />
		<media:content url="http://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Samsung_SyncMaster_152X.JPG/202px-Samsung_SyncMaster_152X.JPG" medium="image">
			<media:title type="html">SyncMaster 152X is Samsung&#39;s 15</media:title>
		</media:content>
		<media:content url="http://img.zemanta.com/reblog_e.png?x-id=8b06431f-719c-4357-9efd-3543f8d0bbc6" medium="image">
			<media:title type="html">Reblog this post [with Zemanta]</media:title>
		</media:content>
	</item>
		<item>
		<title>ODP.Net Part 3</title>
		<link>http://rob.runtothehills.org/archives/328</link>
		<comments>http://rob.runtothehills.org/archives/328#comments</comments>
		<pubDate>Wed, 21 Jan 2009 16:38:48 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://rob.runtothehills.org/archives/328</guid>
		<description><![CDATA[Ok, not really part three but a quick post about how the last two posts arrived at the blog in the wrong order. I can’t be bothered swapping them round so just read from the top down]]></description>
			<content:encoded><![CDATA[<p>Ok, not really part three but a quick post about how the last two posts arrived at the blog in the wrong order. I can’t be bothered swapping them round so just read from the top down <img src='http://rob.runtothehills.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://rob.runtothehills.org/archives/328/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>Damn you ODP.NET!</title>
		<link>http://rob.runtothehills.org/archives/327</link>
		<comments>http://rob.runtothehills.org/archives/327#comments</comments>
		<pubDate>Tue, 20 Jan 2009 17:32:15 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://rob.runtothehills.org/archives/327</guid>
		<description><![CDATA[This stuff really does tire me out. I’ve spent yet another day battling with Oracle’s data provider instead of doing anything meaningful. I’m calling a stored procedure with an out parameter of a varchar2. I assign an OracleParameter in exactly the same way as the stored procedures , same order and same sizes. everything matches, [...]]]></description>
			<content:encoded><![CDATA[<p>This stuff really does tire me out. I’ve spent yet another day battling with Oracle’s data provider instead of doing anything meaningful. I’m calling a stored procedure with an out parameter of a varchar2. I assign an OracleParameter in exactly the same way as the stored procedures , same order and same sizes. everything matches, and I keep getting a ORA-06502 saying that there’s a size mis-match. What gives. I’ve never had this much trouble with SQL server, everything just seems to *work*. Pick up oracle and you seem to spend days battling with crap SDKs, connection problems, and weird things like TNS names junk – after all it would just be TOO complicated to specify this as an IP address in the connection string. &lt;sigh&gt;</p>
<p>Oracle isn’t my Friend.</p>
]]></content:encoded>
			<wfw:commentRss>http://rob.runtothehills.org/archives/327/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>Damn you ODP.Net Part 2!</title>
		<link>http://rob.runtothehills.org/archives/326</link>
		<comments>http://rob.runtothehills.org/archives/326#comments</comments>
		<pubDate>Tue, 20 Jan 2009 17:26:15 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://rob.runtothehills.org/archives/326</guid>
		<description><![CDATA[Ok, after spending another 1/2 day battling with the oracle tools for devstudio, i took the plunge and reflected the whole Oracle Data access component. I’m not sure I should be publicly admitting to reverse engineering Larry’s baby but if its the only way I can find out what broken, so be it. They should [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, after spending another 1/2 day battling with the oracle tools for devstudio, i took the plunge and reflected the whole Oracle Data access component. I’m not sure I should be publicly admitting to reverse engineering Larry’s baby but if its the only way I can find out what broken, so be it. They should learn to write working code. </p>
<p>So I dig out reflector and run the ODP.Net assemblies through one of the reflector add-ins that brings it back to something more readable.</p>
<p>On inspection it seems that they’re mixing the domain values for db nulls. the OracleString performs a conversion when the column is null and actual returns the string “null”! Poor? Well I think so.</p>
<p>So, the next step is to look through the designer code that the ODT spits out when you drag a stored procedure onto a data set design surface. It appears to work ok, until you try using any procedure that involves varcar2 out parameters. Then it chokes. Nice.</p>
<p>The problem is it looks like their generated null checks aren’t working correctly. They’re testing the returned objects against NULL, and then if the object isn’t null they’re comparing the objects Value with System:DBNull. This obviously wont work since an they always return an Oracle type and the value throws an exception if the Oracle type is null. Not only that, but their implicit casting in the generated code is broken too, although that seems to be a symptom of their checks for null failing and going on the read the Value in order to cast it to a real .Net type.</p>
<p>The fixes are pretty simple, but it does involve editing the Table Adapters designer .CS file and fixing their ropey code.</p>
<p>I encountered these problems a couple of years ago, and swore never to trust them again, but heh, this is 3 years later, surely they’ve fixed the casting bugs?</p>
<p>Apparently not.</p>
<p>So, if you have the choice stick with SQLServer. For all MS’s flaws they seem to emit bug free code, and they do fix stuff.</p>
<p>&lt;rant over/&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://rob.runtothehills.org/archives/326/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>4 Days in and its all peachy.</title>
		<link>http://rob.runtothehills.org/archives/323</link>
		<comments>http://rob.runtothehills.org/archives/323#comments</comments>
		<pubDate>Mon, 19 Jan 2009 07:33:55 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://rob.runtothehills.org/archives/323</guid>
		<description><![CDATA[Apart from not understanding how to catch trains properly for the first 2days, everything’s going pretty well. The team is switched on, and the work is interesting so its all good What I do find a bit puzzling is that other than Sheffield station there’s no way to find out which trains stop at your [...]]]></description>
			<content:encoded><![CDATA[<p>Apart from not understanding how to catch trains properly for the first 2days, everything’s going pretty well. The team is switched on, and the work is interesting so its all good <img src='http://rob.runtothehills.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>What I do find a bit puzzling is that other than Sheffield station there’s no way to find out which trains stop at your station, or what time it will arrive. Where there’s more than one train stopping at your destination you have no way of knowing which one will be quicker other than to ask. Even Sheffield’s fancy display board doesn’t show you the arrival times, but it does, however, show you which stations the trains will stop at.</p>
<p>So for instance, although there are trains that go direct from Sheffield to Leeds these can take up to an hour and 40 minutes. However, the <a class="zem_slink" title="CrossCountry" href="http://en.wikipedia.org/wiki/CrossCountry" rel="wikipedia">cross country trains</a> that start at Plymouth and end in Edinburgh also stop at both Sheffield and Leeds and yet only take 50 minutes. The trouble is you have no way of finding that out other than asking, or being a regular and already knowing!</p>
<p>It all seems a bit odd to me. Anyway, its no longer taking me 3.5 hours to commute! Yay!</p>
<p>As for the work, it does seem there’s more <a class="zem_slink" title="ASP.NET" href="http://www.asp.net/" rel="homepage">ASP.NET</a> that I expected, but the data that’s driving the site is pretty interesting to work with, and because we’ve got a pretty switched on <a class="zem_slink" title="Oracle (comics)" href="http://en.wikipedia.org/wiki/Oracle_%28comics%29" rel="wikipedia">Oracle</a> developer it’s making my life really easy! He has complete control over the organisation of the data, and if we need something that he hasn’t thought of it’s a simple task to ask him to add it, no politics involved which is a great relief.</p>
<h5>T-Mobile Internet</h5>
<p>For the T-Mobile internet dongle, apart from the&#160; slightly patchy connections whilst on the train I’ve actually used less than 80mb, which is pretty good really. I was thinking that I’d be going over my tariff limit but on reflection i doubt I’ll even come close.</p>
<p>That 80mb consists of email, some web research and a bit of online development&#160; i.e. uploading files to a couple of my sites. I have noticed that as soon as the connection is made, the tmobile connection manager’s transfer count starts climbing and reaches 160K of transfers, without me actually doing anything. my daughter has borrowed it too, so I was expecting the whole allowance to be used <img src='http://rob.runtothehills.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  but she only ended up using 28mb for a whole night of the usual facebook/bebo/tagged rubbish !</p>
<p>So, Good news I dont think I’ll end up going over the limit at all!</p>
<p>&#160;</p>
</p>
</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px"><a class="zemanta-pixie-a" title="Zemified by Zemanta" href="http://reblog.zemanta.com/zemified/132aa0f9-3020-4b44-901c-6351de170a5f/"><img class="zemanta-pixie-img" style="border-right: medium none; border-top: medium none; float: right; border-left: medium none; border-bottom: medium none" alt="Reblog this post [with Zemanta]" src="http://img.zemanta.com/reblog_e.png?x-id=132aa0f9-3020-4b44-901c-6351de170a5f" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://rob.runtothehills.org/archives/323/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:thumbnail url="http://img.zemanta.com/reblog_e.png?x-id=132aa0f9-3020-4b44-901c-6351de170a5f" />
		<media:content url="http://img.zemanta.com/reblog_e.png?x-id=132aa0f9-3020-4b44-901c-6351de170a5f" medium="image">
			<media:title type="html">Reblog this post [with Zemanta]</media:title>
		</media:content>
	</item>
		<item>
		<title>It&#8217;s All GO!</title>
		<link>http://rob.runtothehills.org/archives/322</link>
		<comments>http://rob.runtothehills.org/archives/322#comments</comments>
		<pubDate>Tue, 13 Jan 2009 07:59:44 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://rob.runtothehills.org/archives/322</guid>
		<description><![CDATA[Image by Neil T via Flickr Ok, so after after a short break over Christmas, I though I’d better pull my socks up and start looking for a new contract. As everyone returned to work on the 5th of Jan, I wasn’t expecting anywhere near the response I got after posting my CV online! Either [...]]]></description>
			<content:encoded><![CDATA[<div class="zemanta-img" style="display: block; float: right; margin: 1em; width: 250px"><a href="http://www.flickr.com/photos/41894148532@N01/1736604"><img style="border-right: medium none; border-top: medium none; display: block; border-left: medium none; border-bottom: medium none" height="180" alt="Bradford&#39;s Christmas lights" src="http://farm1.static.flickr.com/2/1736604_c5bbb0572a_m.jpg" width="240" /></a>
<p class="zemanta-img-attribution" style="font-size: 0.8em">Image by <a href="http://www.flickr.com/photos/41894148532@N01/1736604">Neil T</a> via Flickr</p>
</p></div>
<p>Ok, so after after a short break over Christmas, I though I’d better pull my socks up and start looking for a new contract. As everyone returned to work on the 5th of Jan, I wasn’t expecting anywhere near the response I got after posting my CV online! Either my C.V. is absolutely amazing or the IT market is ridiculously understaffed! I’d like to think it was the former, but I suspect it’s the latter! Just over 3 days into the first week and I was getting over 25 calls a day. by Thursday I’m signed up for a 6 month contract in Bradford! </p>
<p>Since trying to get to Bradford by car would be a real PITA , I’ve opted for a more comfortable commute and gone by train. So not only can I get a good hour and half of work done I can actually blog more often too <img src='http://rob.runtothehills.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Finally might get a chance to write as many articles as I keep promising!</p>
<p>I did buy a nice little T-Mobile internet dongle too, so I can be connected whilst travelling – T-Mobile seemed like to best deal because of their usage policy. If you happen to go over their limits, there’s no real penalty. Unlike all the other operators which charge over £1 a megabyte! £1 a megabyte! That’s totally ridiculous! If I accidentally went over my limit and watched a day of youtube videos (well ok, you’d have to be pretty brain dead to watch *anything* on youtube) I could end up with a bill of over £1000! . Anyway. after a few days of email / blogging and googling, I’ll post an update on how long my usage cap is likely to last!</p>
</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px"><a class="zemanta-pixie-a" title="Zemified by Zemanta" href="http://reblog.zemanta.com/zemified/c9384e35-4901-4f2a-860a-28d149447f43/"><img class="zemanta-pixie-img" style="border-right: medium none; border-top: medium none; float: right; border-left: medium none; border-bottom: medium none" alt="Reblog this post [with Zemanta]" src="http://img.zemanta.com/reblog_e.png?x-id=c9384e35-4901-4f2a-860a-28d149447f43" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://rob.runtothehills.org/archives/322/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://farm1.static.flickr.com/2/1736604_c5bbb0572a_m.jpg" />
		<media:content url="http://farm1.static.flickr.com/2/1736604_c5bbb0572a_m.jpg" medium="image">
			<media:title type="html">Bradford&#39;s Christmas lights</media:title>
		</media:content>
		<media:content url="http://img.zemanta.com/reblog_e.png?x-id=c9384e35-4901-4f2a-860a-28d149447f43" medium="image">
			<media:title type="html">Reblog this post [with Zemanta]</media:title>
		</media:content>
	</item>
	</channel>
</rss>
