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

<channel>
	<title>Techy Tester's Weblog</title>
	<atom:link href="http://techytester.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://techytester.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Sun, 06 Apr 2008 15:59:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='techytester.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Techy Tester's Weblog</title>
		<link>http://techytester.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://techytester.wordpress.com/osd.xml" title="Techy Tester&#039;s Weblog" />
	<atom:link rel='hub' href='http://techytester.wordpress.com/?pushpress=hub'/>
		<item>
		<title>&quot;All work and no play makes Jack a dull boy&quot;&#8230;</title>
		<link>http://techytester.wordpress.com/2008/04/06/all-work-and-no-play-makes-jack-a-dull-boy/</link>
		<comments>http://techytester.wordpress.com/2008/04/06/all-work-and-no-play-makes-jack-a-dull-boy/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 15:46:38 +0000</pubDate>
		<dc:creator>fango256</dc:creator>
				<category><![CDATA[Ramblings]]></category>

		<guid isPermaLink="false">http://techytester.wordpress.com/2008/04/06/all-work-and-no-play-makes-jack-a-dull-boy/</guid>
		<description><![CDATA[As it turns out this Friday was a bank holiday in China, and normally that wouldn&#8217;t bother me too much.  However as I&#8217;m in China on business trip this meant I was confined to my hotel room for the day to work.  My travelling companion had flown on to Japan to do interesting things there, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techytester.wordpress.com&amp;blog=3107484&amp;post=18&amp;subd=techytester&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As it turns out this Friday was a bank holiday in China, and normally that wouldn&#8217;t bother me too much.  However as I&#8217;m in China on business trip this meant I was confined to my hotel room for the day to work.  My travelling companion had flown on to Japan to do interesting things there, so I was a little short on company for the extended weekend. </p>
<p>Still I managed to keep myself occupied well enough.  I spent most the time experimenting with TDD and writing some useful tools for the team.  It worries me sometimes how I can spend hours on end with my own company and not get bored.  I guess that&#8217;s what being an only child trains into you from a young age.</p>
<p>Still amongst all the work I somehow ended up buying a new camera from the local mall.  I decided to go for the <a href="http://www.canon.co.uk/For_Home/Product_Finder/Cameras/Digital_Camera/IXUS/Digital_IXUS_950_IS/index.asp">Canon IXUS 950 IS</a> which I bought to replace my older (but still excellent) Canon IXUS 500.  I was quite pleased with myself after some extensive haggling I managed to get an extra Canon battery, 2GB SD card, case, and a screen protector for 2300RMB (£165).  However I got the impression she was pretty chuffed too with it all.</p>
<p>On Sunday I decided to give my new camera a work out at Shanghai&#8217;s very pretty Yu Yuan Gardens:</p>
<p><a href="http://techytester.files.wordpress.com/2008/04/shanghai-2008-04-06-0551.jpg"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" src="http://techytester.files.wordpress.com/2008/04/shanghai-2008-04-06-055-thumb1.jpg?w=184&#038;h=244" border="0" alt="Shanghai 2008-04-06 055" width="184" height="244" /></a> <a href="http://techytester.files.wordpress.com/2008/04/shanghai-2008-04-06-079.jpg"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" src="http://techytester.files.wordpress.com/2008/04/shanghai-2008-04-06-079-thumb.jpg?w=244&#038;h=184" border="0" alt="Shanghai 2008-04-06 079" width="244" height="184" /></a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/techytester.wordpress.com/18/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/techytester.wordpress.com/18/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/techytester.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/techytester.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/techytester.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/techytester.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/techytester.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/techytester.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/techytester.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/techytester.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/techytester.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/techytester.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/techytester.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/techytester.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/techytester.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/techytester.wordpress.com/18/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techytester.wordpress.com&amp;blog=3107484&amp;post=18&amp;subd=techytester&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://techytester.wordpress.com/2008/04/06/all-work-and-no-play-makes-jack-a-dull-boy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7855634d679f5e80c3b00ff049eabc0b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">fango256</media:title>
		</media:content>

		<media:content url="http://techytester.files.wordpress.com/2008/04/shanghai-2008-04-06-055-thumb1.jpg" medium="image">
			<media:title type="html">Shanghai 2008-04-06 055</media:title>
		</media:content>

		<media:content url="http://techytester.files.wordpress.com/2008/04/shanghai-2008-04-06-079-thumb.jpg" medium="image">
			<media:title type="html">Shanghai 2008-04-06 079</media:title>
		</media:content>
	</item>
		<item>
		<title>Early Adventures in TDD</title>
		<link>http://techytester.wordpress.com/2008/04/06/early-adventures-in-tdd/</link>
		<comments>http://techytester.wordpress.com/2008/04/06/early-adventures-in-tdd/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 14:25:10 +0000</pubDate>
		<dc:creator>fango256</dc:creator>
				<category><![CDATA[Testing + Development + TDD]]></category>

		<guid isPermaLink="false">http://techytester.wordpress.com/?p=10</guid>
		<description><![CDATA[The more I experiment with TDD the more I learn its values and what it does for me. I am visiting our extended team in Shanghai and was tasked in cutting their release process by 50%.  After some investigation it appeared a lot of time was spent &#8216;provisioning&#8217; their builds to the dev/test/live environments.  Our [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techytester.wordpress.com&amp;blog=3107484&amp;post=10&amp;subd=techytester&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The more I experiment with TDD the more I learn its values and what it does for me.</p>
<p>I am visiting our extended team in Shanghai and was tasked in cutting their release process by 50%.  After some investigation it appeared a lot of time was spent &#8216;provisioning&#8217; their builds to the dev/test/live environments.  Our solution was to write a tool to automate the whole process.  They where tied up with their market deliverables so this gave me one week (well 1/2 a week once the jetlag settled) to write the tool.  Immediately I started thinking about enterprise solutions with ASP.NET front end for the whole extended team to use.  Thankfully Craig our software architect rightly told me to focus on solving the problem first and extend it later.</p>
<p>So off I went and broke the problem down into smaller modules.  Once I had a rough idea of what I wanted to do I jumped straight in and solo TDD&#8217;d my way through a component that takes our build output and shaves off all dead weight ready for provisioning.  When I was done I was hugely satisfied.. this was a really quality piece of development.  With my unit tests supporting this module I knew it was capable of the job.</p>
<p>However I had just spent over a day developing this component and I had another three or four of the these components to develop to be &#8220;done&#8221;.  Does this mean I needed more time to do the job? I don&#8217;t think so, I think I just lost sight of the agile principles.  Early delivery of working software that gets extended in iterations.</p>
<p>My learning&#8217;s from the whole experience:</p>
<ul>
<li>Don&#8217;t try to solve all the worlds problems on the first attempt.  Pick a <strong>simple </strong>scenario that might not be suitable in the end but will help &#8216;build up&#8217; the program.  I know what your thinking&#8230; &#8220;d&#8217;uh&#8221;.</li>
<li>Develop each component in parallel using the above principle so the whole system in developed in unison.  That way if development is cut short at least the problem is partly solved.. and who knows that might be all that was required after all.</li>
<li>Start with a prototype to prove the concepts before heading into the land of TDD.  Good TDD takes time with great results, but there&#8217;s no point if the fundamental principle behind your program is flawed*.</li>
</ul>
<p>What I cant understand is why I ended up making these mistakes.  I&#8217;ve read the books and knew these things before I started, yet I still ran head first into them.  I guess there is simply no substitute to making the mistakes personally and learning from them first hand.</p>
<p>* As is turned out my program wasn&#8217;t flawed but in retrospect there was a chance that 2 days worth of work nearly surmounted to nothing had I not been a little lucky.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/techytester.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/techytester.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/techytester.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/techytester.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/techytester.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/techytester.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/techytester.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/techytester.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/techytester.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/techytester.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/techytester.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/techytester.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/techytester.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/techytester.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/techytester.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/techytester.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techytester.wordpress.com&amp;blog=3107484&amp;post=10&amp;subd=techytester&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://techytester.wordpress.com/2008/04/06/early-adventures-in-tdd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7855634d679f5e80c3b00ff049eabc0b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">fango256</media:title>
		</media:content>
	</item>
		<item>
		<title>Testing Internal Classes and Methods</title>
		<link>http://techytester.wordpress.com/2008/04/06/testing-internal-classes-and-methods/</link>
		<comments>http://techytester.wordpress.com/2008/04/06/testing-internal-classes-and-methods/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 13:52:17 +0000</pubDate>
		<dc:creator>fango256</dc:creator>
				<category><![CDATA[Testing + Development + TDD]]></category>

		<guid isPermaLink="false">http://techytester.wordpress.com/2008/04/06/testing-internal-classes-and-methods/</guid>
		<description><![CDATA[I&#8217;m really starting to get the hang of this TDD approach now but I thought I came a cropper the other day when I couldn&#8217;t find a way of testing an internal class.  I&#8217;m using the VSTS in-built testing technology (similar to NUnit) and when using these frameworks your tests would sit in another assembly [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techytester.wordpress.com&amp;blog=3107484&amp;post=5&amp;subd=techytester&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m really starting to get the hang of this TDD approach now but I thought I came a cropper the other day when I couldn&#8217;t find a way of testing an internal class.  I&#8217;m using the VSTS in-built testing technology (similar to NUnit) and when using these frameworks your tests would sit in another assembly (you wouldn&#8217;t want to ship your tests in most cases).</p>
<p>Now I personally don&#8217;t see the advantage of testing private methods as their workings will always have an impact on the public methods, with not too many levels of indirection.  However an internal class is a different thing altogether, it could be a complex piece of functionality that gets used in multiple places inside an assembly. </p>
<p>Thankfully the .NET guys have realised this to so have given us a command like the &#8216;friend&#8217; command in C++ to allow a whole other assembly to get access to the internal workings.  Personally I actually think the C++ approach is more robust as it only grants an individual class access but at least it&#8217;s a solution.  Maybe the .NET guys wanted it to be clear this attribute was only used for testing assemblies and not for messy its internal to X but not Y scenario&#8217;s.</p>
<p>Simply add this line into your AssemblyInfo.cs:</p>
<p>[assembly: InternalsVisibleTo("YourTestAssembly")]</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/techytester.wordpress.com/5/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/techytester.wordpress.com/5/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/techytester.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/techytester.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/techytester.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/techytester.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/techytester.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/techytester.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/techytester.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/techytester.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/techytester.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/techytester.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/techytester.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/techytester.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/techytester.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/techytester.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techytester.wordpress.com&amp;blog=3107484&amp;post=5&amp;subd=techytester&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://techytester.wordpress.com/2008/04/06/testing-internal-classes-and-methods/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7855634d679f5e80c3b00ff049eabc0b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">fango256</media:title>
		</media:content>
	</item>
		<item>
		<title>C# Coding Standards</title>
		<link>http://techytester.wordpress.com/2008/04/06/c-coding-standards/</link>
		<comments>http://techytester.wordpress.com/2008/04/06/c-coding-standards/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 13:18:03 +0000</pubDate>
		<dc:creator>fango256</dc:creator>
				<category><![CDATA[Testing + Development + TDD]]></category>

		<guid isPermaLink="false">http://techytester.wordpress.com/2008/04/06/c-coding-standards/</guid>
		<description><![CDATA[I&#8217;m not quite sure why, but recently I have been really chomping at the bit about C# coding standards.   Maybe it&#8217;s because of the very good Framework Design Guidelines book by Brad Abrams et al which I have just finished reading.  This book does a great job in telling you what you should be doing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techytester.wordpress.com&amp;blog=3107484&amp;post=4&amp;subd=techytester&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not quite sure why, but recently I have been really chomping at the bit about C# coding standards.   Maybe it&#8217;s because of the very good <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://www.amazon.co.uk/Framework-Design-Guidelines-Conventions-Libraries/dp/0321246756">Framework Design Guidelines</a> book by Brad Abrams et al which I have just finished reading.  This book does a great job in telling you what you should be doing and why. Ordinarily this would soon get on my nerves, but the authors of this book have dotted around little anecdotes and technical commentary which explain the reasons in a really human (some emotions are involved) kind of way.  This makes the book far more readable than you might think.</p>
<p>If you don&#8217;t want to shell out for the book or you think emotions are overrated then the information is pretty much available on MSDN: <a href="http://msdn2.microsoft.com/en-us/library/ms229042.aspx">Design Guidelines for Developing Class Libraries</a>. </p>
<p>The major two points that stuck out for me:</p>
<h5>Scenario Driven Design</h5>
<p>The book hammers home the importance of first understanding <em>how</em> your code is going to be used.  It really makes sense, there&#8217;s little or no point in writing a beautiful framework if its usage has not been thought about in the context of the end user.</p>
<p>Scenario1: Accelerate a car then stop it.</p>
<p>Car myCar = new Car();</p>
<p>myCar.Accelerate(100);</p>
<p>myCar.Stop();</p>
<p>Scenario2: etc&#8230;</p>
<h5>Simple Yet Powerful</h5>
<p>One mistake I often fall into is making my code too powerful (read complex).  The book described the importance of your user being able to solve 80% of their problems with simple code.  For example the System.IO.File class accomplishes most of the users requirements in regards to file i/o but in the rare occasion where more power is needed then you have FileStream for all the stream operations to help you.  A very good point indeed.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/techytester.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/techytester.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/techytester.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/techytester.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/techytester.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/techytester.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/techytester.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/techytester.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/techytester.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/techytester.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/techytester.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/techytester.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/techytester.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/techytester.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/techytester.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/techytester.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techytester.wordpress.com&amp;blog=3107484&amp;post=4&amp;subd=techytester&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://techytester.wordpress.com/2008/04/06/c-coding-standards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7855634d679f5e80c3b00ff049eabc0b?s=96&#38;d=identicon" medium="image">
			<media:title type="html">fango256</media:title>
		</media:content>
	</item>
	</channel>
</rss>
