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

<channel>
	<title>Development Blog</title>
	<atom:link href="http://blog.yeticode.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.yeticode.co.uk</link>
	<description>John Tindell's Blog For Development Related Things</description>
	<lastBuildDate>Wed, 23 Jun 2010 18:17:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>My First Triathlon</title>
		<link>http://blog.yeticode.co.uk/2010/06/my-first-triathlon/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=my-first-triathlon</link>
		<comments>http://blog.yeticode.co.uk/2010/06/my-first-triathlon/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 21:06:38 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Running]]></category>
		<category><![CDATA[triathlon]]></category>

		<guid isPermaLink="false">http://blog.yeticode.co.uk/?p=725</guid>
		<description><![CDATA[So last Sunday I did my first sprint triathlon, the Mid Sussex Triathlon. The day started at 5.00 when me and Tom woke up to a quick breakfast and a cup of tea. A short drive to the Triangle Leisure Centre in Burgess Hill and we were set to have our numbers draw on us [...]]]></description>
			<content:encoded><![CDATA[<p>So last Sunday I did my first sprint triathlon, the <a href="http://www.midsussextriclub.com/MidSussexTriathlon/">Mid Sussex Triathlon</a>. The day started at 5.00 when me and Tom woke up to a quick breakfast and a cup of tea. A short drive to the Triangle Leisure Centre in Burgess Hill and we were set to have our numbers draw on us in the strongest permanent marker in the world (Which took 3 days to wash off). After registration we took our carefully packed tri boxes and bikes to the transition area.</p>
<p>After laying out my foot towel in the perfect foot drying position and my helmet, shades and top in the most efficient way possible. All this in the vein hope that when it came to the actual transition  I would have some clue what the hell I was supposed to be doing.</p>
<p>Stuff sorted we waiting casually chatting with the other competitors about the course and general pre-race banter. Ranging from our kit to subtle ways to psych one another out. After the race briefing the first swimmer started at 7.00. Me and my brother took a walk to the observation deck in the pool to watch the starters. This was when the nerves started to kick in.</p>
<p>More and more of the swimmers started my start time neared and my position in the line grew shorter. With only four competitors I turned to my brother, now feeling really nervous, and said &#8220;Whose stupid idea was this?&#8221; </p>
<p><a href="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_1619.jpg" rel="lightbox[725]"><img src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_1619-300x200.jpg" alt="Swimming Section" title="Swimming Section" width="300" height="200" class="alignnone size-medium wp-image-735" /></a></p>
<p>There was no one in front of me and I was in the pool. Three. Two. One. I was off. Nothing quite prepared myself from going from full of nerves to race mode. Halfway down the first length my body woke up and all the training I had done kicked in. No longer nervous. A single thought in my mind. Swim straight, don&#8217;t drown don&#8217;t waste to much energy.</p>
<p>The final length of the swim drew to a close and it was time to get out of the pool. Using the steps, as not to make a tit of myself if i fell over, I pulled myself out and started the run to the transition area to get ready for the bike ride. I had no idea what the hell I was supposed to be doing. I got to the transition area remembering only one thing. Make sure you helmet is on before you touch your bike. I stand on the towel, move my top out of the way and put my helmet on it. Pick up top and realise that I need to take my helmet off, put my top on, put my helmet on and step into my shoes. Now its time to pick up my bike and run with it to the mounting area. Enter the mounting area mounting my bike and start to ride narrowly missing a woman trying to get her bike into gear. A luck escape as I don&#8217;t think she would have been too happy if I had ridden into her. Exiting the leisure centre the race portion begins.</p>
<p><a href="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/MA1D1157.jpg" rel="lightbox[725]"><img src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/MA1D1157-300x200.jpg" alt="Section Two - The Ride" title="Section Two - The Ride" width="300" height="200" class="alignnone size-medium wp-image-737" /></a></p>
<p>For the majority of the bike ride there was nothing to worry about. A side from needing to practice on gear changes on the hills it all went fairly well. I was taken back a few times as the more experienced competitors, on really expensive bikes, wizzed past me closer than I expected. But after the first couple of times that happened I started to check behind me more often so that I knew who was behind me, and so that I wasn&#8217;t causing an obstruction people who were clearly better than me. Like the people who overtook me on the steep up hill sections.</p>
<p>With the bike section drawing to a close I changed down gears to try and warm up my legs ready for the run. In my haste I changed down to many gears and was left coasting with my legs spinning around aimlessly. Coasting into the dismount area I jump off my bike and run it back to my place in the transition area to rack it up. Throwing my helmet into my box and picking up a bottle of water I head out for the final section, the run.</p>
<p><a href="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1954.jpg" rel="lightbox[725]"><img src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1954-200x300.jpg" alt="" title="The Final Section - The Run" width="200" height="300" class="size-medium wp-image-739" /></a></p>
<p>Leaving the transition area water bottle in hand I start the run. My legs feeling heavy from the cycle I knew it would only be a little longer before they would feel normal again. The run went fine with brownies lining the route with list of everyone&#8217;s names and numbers ready to cheer you on just when you need it. With the final stretch drawing to a close, the cheers from the brownies getting louder and the finished line getting closer it was time to muster the last of my energy. It was time for a sprint finish. My legs where not quite feeling up to the job. Then I spy my bother, who had already finished waiting on the finish straight. I hold my arms out for a high five. High five received I now have the energy, pulled from the ether, to sprint the last little bit to the finish. Crossing the line and stopping my watch. Covered in sweat and in dire need for a shower and a cup of tea I look down at the time. 1:19:55. Happy that my first triathlon went better than my <a href="http://blog.yeticode.co.uk/2009/09/epic-fail-but-with-a-good-note/">first marathon</a>. </p>
<p><a href="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_4478.jpg" rel="lightbox[725]"><img src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_4478-200x300.jpg" alt="The Finish Line" title="The Finish Line" width="200" height="300" class="alignnone size-medium wp-image-738" /></a></p>
<h3>Photos of Me and Tom</h3>

<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_1619/' title='Swimming Section'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_1619-150x150.jpg" class="attachment-thumbnail" alt="Swimming Section" title="Swimming Section" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ma1d1157/' title='Section Two - The Ride'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/MA1D1157-150x150.jpg" class="attachment-thumbnail" alt="Section Two - The Ride" title="Section Two - The Ride" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_4478/' title='The Finish Line'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_4478-150x150.jpg" class="attachment-thumbnail" alt="The Finish Line" title="The Finish Line" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1954/' title='The Final Section - The Run'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1954-150x150.jpg" class="attachment-thumbnail" alt="The Final Section - The Run" title="The Final Section - The Run" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1550/' title='IMG_1550'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1550-150x150.jpg" class="attachment-thumbnail" alt="IMG_1550" title="IMG_1550" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1551/' title='IMG_1551'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1551-150x150.jpg" class="attachment-thumbnail" alt="IMG_1551" title="IMG_1551" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1552/' title='IMG_1552'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1552-150x150.jpg" class="attachment-thumbnail" alt="IMG_1552" title="IMG_1552" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1553/' title='IMG_1553'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1553-150x150.jpg" class="attachment-thumbnail" alt="IMG_1553" title="IMG_1553" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1554/' title='IMG_1554'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1554-150x150.jpg" class="attachment-thumbnail" alt="IMG_1554" title="IMG_1554" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1555/' title='IMG_1555'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1555-150x150.jpg" class="attachment-thumbnail" alt="IMG_1555" title="IMG_1555" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1954-2/' title='IMG_1954'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_19541-150x150.jpg" class="attachment-thumbnail" alt="IMG_1954" title="IMG_1954" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1955/' title='IMG_1955'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1955-150x150.jpg" class="attachment-thumbnail" alt="IMG_1955" title="IMG_1955" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1956/' title='IMG_1956'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1956-150x150.jpg" class="attachment-thumbnail" alt="IMG_1956" title="IMG_1956" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1957/' title='IMG_1957'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1957-150x150.jpg" class="attachment-thumbnail" alt="IMG_1957" title="IMG_1957" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ma1d1157-2/' title='MA1D1157'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/MA1D11571-150x150.jpg" class="attachment-thumbnail" alt="MA1D1157" title="MA1D1157" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ma1d1158/' title='MA1D1158'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/MA1D1158-150x150.jpg" class="attachment-thumbnail" alt="MA1D1158" title="MA1D1158" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_1613/' title='SSP_AB_1613'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_1613-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_1613" title="SSP_AB_1613" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_1614/' title='SSP_AB_1614'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_1614-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_1614" title="SSP_AB_1614" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_1615/' title='SSP_AB_1615'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_1615-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_1615" title="SSP_AB_1615" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_1616/' title='SSP_AB_1616'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_1616-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_1616" title="SSP_AB_1616" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_1617/' title='SSP_AB_1617'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_1617-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_1617" title="SSP_AB_1617" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_1618/' title='SSP_AB_1618'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_1618-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_1618" title="SSP_AB_1618" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_1619-2/' title='SSP_AB_1619'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_16191-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_1619" title="SSP_AB_1619" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_1623/' title='SSP_AB_1623'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_1623-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_1623" title="SSP_AB_1623" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_4475/' title='SSP_AB_4475'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_4475-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_4475" title="SSP_AB_4475" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_4476/' title='SSP_AB_4476'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_4476-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_4476" title="SSP_AB_4476" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_4477/' title='SSP_AB_4477'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_4477-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_4477" title="SSP_AB_4477" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_4478-2/' title='SSP_AB_4478'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_44781-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_4478" title="SSP_AB_4478" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_4479/' title='SSP_AB_4479'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_4479-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_4479" title="SSP_AB_4479" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_4480/' title='SSP_AB_4480'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_4480-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_4480" title="SSP_AB_4480" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_4481/' title='SSP_AB_4481'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_4481-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_4481" title="SSP_AB_4481" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1518/' title='IMG_1518'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1518-150x150.jpg" class="attachment-thumbnail" alt="IMG_1518" title="IMG_1518" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1519/' title='IMG_1519'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1519-150x150.jpg" class="attachment-thumbnail" alt="IMG_1519" title="IMG_1519" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1521/' title='IMG_1521'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1521-150x150.jpg" class="attachment-thumbnail" alt="IMG_1521" title="IMG_1521" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1522/' title='IMG_1522'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1522-150x150.jpg" class="attachment-thumbnail" alt="IMG_1522" title="IMG_1522" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1873/' title='IMG_1873'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1873-150x150.jpg" class="attachment-thumbnail" alt="IMG_1873" title="IMG_1873" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1874/' title='IMG_1874'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1874-150x150.jpg" class="attachment-thumbnail" alt="IMG_1874" title="IMG_1874" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1875/' title='IMG_1875'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1875-150x150.jpg" class="attachment-thumbnail" alt="IMG_1875" title="IMG_1875" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/img_1876/' title='IMG_1876'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/IMG_1876-150x150.jpg" class="attachment-thumbnail" alt="IMG_1876" title="IMG_1876" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_1630/' title='SSP_AB_1630'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_1630-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_1630" title="SSP_AB_1630" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_1631/' title='SSP_AB_1631'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_1631-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_1631" title="SSP_AB_1631" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_1632/' title='SSP_AB_1632'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_1632-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_1632" title="SSP_AB_1632" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_1634/' title='SSP_AB_1634'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_1634-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_1634" title="SSP_AB_1634" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_1635/' title='SSP_AB_1635'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_1635-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_1635" title="SSP_AB_1635" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_1636/' title='SSP_AB_1636'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_1636-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_1636" title="SSP_AB_1636" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_1637/' title='SSP_AB_1637'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_1637-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_1637" title="SSP_AB_1637" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_4252/' title='SSP_AB_4252'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_4252-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_4252" title="SSP_AB_4252" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_4253/' title='SSP_AB_4253'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_4253-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_4253" title="SSP_AB_4253" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_4255/' title='SSP_AB_4255'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_4255-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_4255" title="SSP_AB_4255" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_4256/' title='SSP_AB_4256'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_4256-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_4256" title="SSP_AB_4256" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_4257/' title='SSP_AB_4257'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_4257-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_4257" title="SSP_AB_4257" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_4258/' title='SSP_AB_4258'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_4258-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_4258" title="SSP_AB_4258" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_4259/' title='SSP_AB_4259'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_4259-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_4259" title="SSP_AB_4259" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_4260/' title='SSP_AB_4260'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_4260-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_4260" title="SSP_AB_4260" /></a>
<a href='http://blog.yeticode.co.uk/2010/06/my-first-triathlon/ssp_ab_4261/' title='SSP_AB_4261'><img width="150" height="150" src="http://blog.yeticode.co.uk/wp-content/uploads/2010/06/SSP_AB_4261-150x150.jpg" class="attachment-thumbnail" alt="SSP_AB_4261" title="SSP_AB_4261" /></a>
]]></content:encoded>
			<wfw:commentRss>http://blog.yeticode.co.uk/2010/06/my-first-triathlon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bazaar Plugin for OnTime Integration</title>
		<link>http://blog.yeticode.co.uk/2010/04/bazaar-plugin-for-ontime-integration/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=bazaar-plugin-for-ontime-integration</link>
		<comments>http://blog.yeticode.co.uk/2010/04/bazaar-plugin-for-ontime-integration/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 22:26:01 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Development Log]]></category>
		<category><![CDATA[bzr]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ontime]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.yeticode.co.uk/?p=683</guid>
		<description><![CDATA[I was playing around with bazaar, whilst reviewing distributed version control systems (DVCS), and created a simple plugin for use with axosoft&#8217;s ontime. The plugin parses the commit message and links the files to the related task, defect or feature. Install Download the tar file from [download id="3"] Extract and run the installer using the [...]]]></description>
			<content:encoded><![CDATA[<p>I was playing around with <a href="http://bazaar.canonical.com/">bazaar</a>, whilst reviewing distributed version control systems (DVCS), and created a simple plugin for use with <a href="http://www.axosoft.com/ontime">axosoft&#8217;s ontime</a>. The plugin parses the commit message and links the files to the related task, defect or feature.<br />
<br/></p>
<h3>Install</h3>
<p>Download the tar file from [download id="3"]<br />
Extract and run the installer using the following:</p>
<pre>
tar -vxzf bzr-ontime-0.0.1.tar.gz
cd bzr-ontime-0.0.1
sudo python setup.py install
</pre>
<p><br/></p>
<h3>Configure</h3>
<p>Setup the database connection information.<br />
<strong>/etc/bzr-ontime.conf</strong></p>
<pre>[ontime]
server=your-mssql-server
username=sa
password=p4ssw0rd
database=ontime
</pre>
<p><br/></p>
<h3>Confirm Installation</h3>
<pre>bzr hooks
</pre>
<p>If the plugin is installed correct you should see the plugin listed under the post_commit section.</p>
<h3>Related Reading</h3>
<table>
<tr>
<td>
<a href="http://www.amazon.co.uk/gp/product/1590593561?ie=UTF8&#038;tag=worldoverride-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=1590593561"><img border="0" src="http://static.yeticode.co.uk/blog/images/dive_into_python.jpg"></a><img src="http://www.assoc-amazon.co.uk/e/ir?t=worldoverride-21&#038;l=as2&#038;o=2&#038;a=1590593561" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td>
</tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.yeticode.co.uk/2010/04/bazaar-plugin-for-ontime-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Running NHibernate in Medium Trust</title>
		<link>http://blog.yeticode.co.uk/2010/03/running-nhibernate-in-medium-trust/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=running-nhibernate-in-medium-trust</link>
		<comments>http://blog.yeticode.co.uk/2010/03/running-nhibernate-in-medium-trust/#comments</comments>
		<pubDate>Sat, 27 Mar 2010 23:34:50 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Development Log]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Castle]]></category>
		<category><![CDATA[Medium Trust]]></category>
		<category><![CDATA[NHibernate]]></category>

		<guid isPermaLink="false">http://blog.yeticode.co.uk/?p=636</guid>
		<description><![CDATA[After deploying a NHibernate to a shared host I started running into a number of issues. Whilst developing we were running in full trust not in medium trust whilst the majority of shared hosts use. After hours and hours of searching I finally come across a post on the Castle Project mailing list which detailed [...]]]></description>
			<content:encoded><![CDATA[<p>After deploying a NHibernate to a shared host I started running into a number of issues. Whilst developing we were running in full trust not in medium trust whilst the majority of shared hosts use. After hours and hours of searching I finally come across a <a href="http://groups.google.com/group/castle-project-users/browse_thread/thread/2451ef352523865f?hl=en&#038;pli=1">post</a> on the <a href="http://groups.google.com/group/castle-project-users?hl=en">Castle Project mailing list</a> which detailed how to get a nhibernate working under medium trust. Here is the steps I followed to get it working.</p>
<p>I am using NHibernate 2.1.2 and C# .NET 3.5 in Visual Studio 2008.</p>
<h3>Step 1</h3>
<p>Download Castle.Core from gitbhub<br />
git://github.com/castleproject/Castle.Core.git</p>
<p><a href="http://blog.yeticode.co.uk/wp-content/uploads/2010/03/Screenshot-1.png" rel="lightbox[636]"><img src="http://blog.yeticode.co.uk/wp-content/uploads/2010/03/Screenshot-1.png" alt="" title="Screenshot-1" width="489" height="337" class="alignnone size-full wp-image-647" /></a></p>
<h3>Step 2</h3>
<p>Enable Castle to allow partially trusted callers.<br />
Open buildscripts/CommonAssemblyInfo.cs and enable the library to enable partially trusted callers</p>
<p><a href="http://blog.yeticode.co.uk/wp-content/uploads/2010/03/Screenshot-2.png" rel="lightbox[636]"><img src="http://blog.yeticode.co.uk/wp-content/uploads/2010/03/Screenshot-2.png" alt="" title="Screenshot-2" width="589" height="286" class="alignnone size-full wp-image-654" /></a></p>
<h3>Step 3</h3>
<p>Disable generation of debug information for the projects Castle.Core and Castle.DynamicProxy.<br />
<a href="http://blog.yeticode.co.uk/wp-content/uploads/2010/03/Screenshot-4.png" rel="lightbox[636]"><img src="http://blog.yeticode.co.uk/wp-content/uploads/2010/03/Screenshot-4-300x175.png" alt="" title="Screenshot-4" width="300" height="175" class="alignnone size-medium wp-image-657" /></a></p>
<h3>Step 4</h3>
<p>Build the projects</p>
<h3>Step 5</h3>
<p>Download Nhibernate source code from source forge.</p>
<p><a href="http://sourceforge.net/projects/nhibernate/files/" rel="nofollow">http://sourceforge.net/projects/nhibernate/files/</a></p>
<h3>Step 6</h3>
<p>Open Nhibernate.Everything.sln and update the references for the NHibernate.ByteCode.Castle project so that the references for Castle.Core and Castle.DynamicProxy2 are the libraries build in step 4. Disable generation of debug information for the projects NHibernate, Iesi.Collections and NHibernate.ByteCode.Castle, similar to what was done in step 3.</p>
<p><a href="http://blog.yeticode.co.uk/wp-content/uploads/2010/03/Screenshot-5.png" rel="lightbox[636]"><img src="http://blog.yeticode.co.uk/wp-content/uploads/2010/03/Screenshot-5-300x187.png" alt="" title="Screenshot-5" width="300" height="187" class="alignnone size-medium wp-image-661" /></a></p>
<h3>Step 7</h3>
<p>Copy the outputted library files from NHibernate.ByteCode/bin/Release to your shared libs folder of your project.</p>
<p><a href="http://blog.yeticode.co.uk/wp-content/uploads/2010/03/Screenshot-6.png" rel="lightbox[636]"><img src="http://blog.yeticode.co.uk/wp-content/uploads/2010/03/Screenshot-6-300x225.png" alt="" title="Screenshot-6" width="300" height="225" class="alignnone size-medium wp-image-663" /></a></p>
<h3>Step 8</h3>
<p>Update the references in your project to point to the new libraries. Next turn off reflection optimization. This needs to be done in code before you create the configuration object. Configuring this in the hibernate.cfg.xml does not work. Update all your projects assemblies to set allow partially trusted callers, similar to step 2. Update your web.config to set requirePermission=&#8221;false&#8221; in the nhibernate section delceration</p>
<pre class="c-sharp" name="code">
NHibernate.Cfg.Environment.UseReflectionOptimizer = false;
Configuration = new Configuration();
Configuration.Configure();
</pre>
<pre name="code" class="xml">
<configSections>
<section name="hibernate-configuration" requirePermission="false" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/>
</configSections>
</pre>
<p>You can now run your site in medium trust using lay loading.</p>
<h2>Links</h2>
<ul>
<li><b>msysgit</b> &#8211; <a href="http://code.google.com/p/msysgit/" rel="nofollow">http://code.google.com/p/msysgit/</a></li>
<li><b>TortoiseGit</b> &#8211; <a href="http://code.google.com/p/tortoisegit/" rel="nofollow">http://code.google.com/p/tortoisegit/</a></li>
<li><b>NHibernate</b> &#8211; <a href="http://nhforge.org/" rel="nofollow">http://nhforge.org/</a></li>
<li><b>Castle.Core Source</b> &#8211; <a href="http://github.com/castleproject/" rel="nofollow">http://github.com/castleproject/</a></li>
<li><b>NHibernate Source</b> &#8211; <a href="http://sourceforge.net/projects/nhibernate/files/" rel="nofollow">http://sourceforge.net/projects/nhibernate/files/</a></li>
</ul>
<h2>Related Reading</h2>
<table>
<tr>
<td>
<a style="display:inline-block;" href="http://www.amazon.co.uk/gp/product/1932394923?ie=UTF8&#038;tag=yetiblog-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=1932394923"><img border="0" src="http://static.yeticode.co.uk/blog/images/nhibernate.jpg"></a><img src="http://www.assoc-amazon.co.uk/e/ir?t=yetiblog-21&#038;l=as2&#038;o=2&#038;a=1932394923" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td>
<td>
<a style="display:inline-block;" href="http://www.amazon.co.uk/gp/product/0321228103?ie=UTF8&#038;tag=worldoverride-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=0321228103"><img border="0" src="http://static.yeticode.co.uk/blog/images/open_source_dot_net.jpg"></a><img src="http://www.assoc-amazon.co.uk/e/ir?t=worldoverride-21&#038;l=as2&#038;o=2&#038;a=0321228103" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;display:inline-block;" />
</td>
<td>
<a style="display:inline-block;" href="http://www.amazon.co.uk/gp/product/1847198902?ie=UTF8&#038;tag=worldoverride-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=1847198902"><img border="0" src="http://static.yeticode.co.uk/blog/images/nhibernate_2.jpg"></a><img src="http://www.assoc-amazon.co.uk/e/ir?t=worldoverride-21&#038;l=as2&#038;o=2&#038;a=1847198902" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td>
</tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.yeticode.co.uk/2010/03/running-nhibernate-in-medium-trust/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Upload Image to Imgur.com</title>
		<link>http://blog.yeticode.co.uk/2010/01/upload-image-to-imgur-com/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=upload-image-to-imgur-com</link>
		<comments>http://blog.yeticode.co.uk/2010/01/upload-image-to-imgur-com/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 22:59:38 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Development Log]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[nautilus]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.yeticode.co.uk/?p=626</guid>
		<description><![CDATA[I was looking for an easy way to upload images from my laptop to imgur.com without having to open my browser up. I found a post explaining how to upload an image from nautilus. The script worked well enough however I didn&#8217;t like the information it displayed to you at the end. So I rewrote [...]]]></description>
			<content:encoded><![CDATA[<p>I was looking for an easy way to upload images from my laptop to <a href="http://www.imgur.com">imgur.com</a> without having to open my browser up. I found a post explaining how to upload an <a href="http://www.webupd8.org/2009/12/upload-image-to-imgur-nautilus-actions.html">image from nautilus</a>. The script worked well enough however I didn&#8217;t like the information it displayed to you at the end. So I rewrote the script in python so that it displays a dialog with link buttons for the available options for the image.</p>
<p><img alt="upload to imgur screenshot" src="http://static.yeticode.co.uk/blog/images/posts/Screenshot-Imgur-Details.png" title="Post upload details"/></p>
<p>The code is <a href="https://code.google.com/p/imgur-upload/">hosted at google</a>.</p>
<p><b>Update</b></p>
<p>Thanks to the <a href="http://www.reddit.com/r/linux/comments/aldjc/upload_to_imgur_from_nautilus/">people over at reddit</a> the script now supports automatically copies the url to the clipboard, and also correctly loads the glade file.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.yeticode.co.uk/2010/01/upload-image-to-imgur-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NAnt.ToDo a NAnt Plugin</title>
		<link>http://blog.yeticode.co.uk/2010/01/nant-todo-a-nant-plugin/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=nant-todo-a-nant-plugin</link>
		<comments>http://blog.yeticode.co.uk/2010/01/nant-todo-a-nant-plugin/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 19:02:25 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Development Log]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CruiseControl.NET]]></category>
		<category><![CDATA[NAnt]]></category>

		<guid isPermaLink="false">http://blog.yeticode.co.uk/?p=611</guid>
		<description><![CDATA[This simple plugin for NAnt parses your source code and creates a report of all the TODO and comment tags in your source code. The code is hosted over at google code. Comments The task automatically identify comments in the following style //TODO: First Test to do Item //FIXME: First Fix me Item //HACK: First [...]]]></description>
			<content:encoded><![CDATA[<p>This simple plugin for NAnt parses your source code and creates a report of all the TODO and comment tags in your source code. The code is hosted over at <a href="http://code.google.com/p/nant-todo/">google code</a>.</p>
<h2>Comments</h2>
<p>The task automatically identify comments in the following style</p>
<pre name="code" class="c-sharp">
//TODO: First Test to do Item
//FIXME: First Fix me Item
//HACK: First Hack Item
</pre>
<p>Additional matches can be made by adding in Token elements to the NAnt task. </p>
<h2>Sample</h2>
<pre name="code" class="xml">
&lt;ToDo source="path/to/source" output="report.xml" searchpattern="*.cs;*.txt"&gt;
 &lt;Tokens&gt;
 &lt;Tokens Value="BUGFIX" /&gt;
 &lt;/Tokens&gt;
&lt;/ToDo&gt;
</pre>
<h2>Output</h2>
<pre name="code" class="xml">
&lt;ToDo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
 &lt;Items&gt;
 &lt;Item&gt;
 &lt;Message&gt;First Test to do Item&lt;/Message&gt;
 &lt;File&gt;NAnt.ToDo\ToDoTask.cs&lt;/File&gt;
 &lt;Line&gt;0&lt;/Line&gt;
 &lt;Type&gt;TODO&lt;/Type&gt;
 &lt;/Item&gt;
 &lt;Item&gt;
 &lt;Message&gt;First Hack Item&lt;/Message&gt;
 &lt;File&gt;NAnt.ToDo\ToDoTask.cs&lt;/File&gt;
 &lt;Line&gt;0&lt;/Line&gt;
 &lt;Type&gt;HACK&lt;/Type&gt;
 &lt;/Item&gt;
 &lt;Item&gt;
 &lt;Message&gt;First Fix me Item&lt;/Message&gt;
 &lt;File&gt;NAnt.ToDo\ToDoTask.cs&lt;/File&gt;
 &lt;Line&gt;0&lt;/Line&gt;
 &lt;Type&gt;FIXME&lt;/Type&gt;
 &lt;/Item&gt;
 &lt;/Items&gt;
&lt;/ToDo&gt;
</pre>
<h2>Cruise Control Xsl</h2>
<p>Below is a basic xsl style sheet that can be used with CruiseControl.NET to display the output from NAnt.ToDo.</p>
<pre name="code" class="xml">
&lt;?xml version="1.0"?&gt;
&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;
 &lt;xsl:output method="html"/&gt;
 &lt;xsl:param name="applicationPath"/&gt;
 &lt;xsl:template match="/"&gt;
 &lt;div id="ToDo"&gt;
 &lt;h1&gt;ToDo List&lt;/h1&gt;
 &lt;div id="Summary"&gt;
 &lt;h3&gt;To Do&lt;/h3&gt;
 &lt;table&gt;
 &lt;tbody&gt;
 &lt;xsl:for-each select="//ToDo/Items/Item"&gt;
 &lt;tr&gt;
 &lt;td&gt;
 &lt;xsl:value-of select="Type/text()"/&gt;
 &lt;/td&gt;
 &lt;td&gt;
 &lt;xsl:value-of select="Message/text()"/&gt;
 &lt;/td&gt;
 &lt;td&gt;
 &lt;xsl:value-of select="File/text()"/&gt;
 &lt;/td&gt;
 &lt;/tr&gt;
 &lt;/xsl:for-each&gt;
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;/div&gt;    
 &lt;/div&gt;
 &lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;
</pre>]]></content:encoded>
			<wfw:commentRss>http://blog.yeticode.co.uk/2010/01/nant-todo-a-nant-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVN Notify by Email</title>
		<link>http://blog.yeticode.co.uk/2009/10/svn-notify-by-email/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=svn-notify-by-email</link>
		<comments>http://blog.yeticode.co.uk/2009/10/svn-notify-by-email/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 23:45:49 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Development Log]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[shell script]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://blog.yeticode.co.uk/?p=601</guid>
		<description><![CDATA[Svn hook to email you information in post commit hook. Install svnnotify which will be used to send the email yum install perl-CPAN perl -MCPAN -e 'install SVN::Notify' perl -MCPAN -e 'install SVN::Notify::HTML::ColorDiff' The post-commit script #!/bin/sh for i in 'email1@domain.co.uk' 'email2@domain.com' do svnnotify --repos-path "$1" \ --revision "$2" \ --to $i \ --from account@example.co.uk [...]]]></description>
			<content:encoded><![CDATA[<p>Svn hook to email you information in post commit hook.</p>
<p>Install svnnotify which will be used to send the email</p>
<pre name="code" class="sh">
yum install perl-CPAN
perl -MCPAN -e 'install SVN::Notify'
perl -MCPAN -e 'install SVN::Notify::HTML::ColorDiff'
</pre>
<p>The post-commit script</p>
<pre name="code" class="sh">
#!/bin/sh
for i in 'email1@domain.co.uk' 'email2@domain.com'
do
	svnnotify --repos-path "$1" \
		--revision "$2" \
		--to $i \
		--from <a href="mailto:account@example.co.uk">account@example.co.uk</a> \
		--handler HTML::ColorDiff -d \
done
</pre>]]></content:encoded>
			<wfw:commentRss>http://blog.yeticode.co.uk/2009/10/svn-notify-by-email/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jqRunner Snapshot &#8211; Running Javascript Unit test with NUnit</title>
		<link>http://blog.yeticode.co.uk/2009/09/jqrunner-snapshot-running-javascript-unit-test-with-nunit/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=jqrunner-snapshot-running-javascript-unit-test-with-nunit</link>
		<comments>http://blog.yeticode.co.uk/2009/09/jqrunner-snapshot-running-javascript-unit-test-with-nunit/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 21:06:47 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Development Log]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CruiseControl.NET]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jqunit]]></category>
		<category><![CDATA[unit testing]]></category>

		<guid isPermaLink="false">http://blog.yeticode.co.uk/?p=592</guid>
		<description><![CDATA[One of the nice things about unit tests is that you can use continuous integration so that you don&#8217;t have to run them yourself. At work we use CruiseControl.NET to automate our builds and run our unit tests. Now as a number of our projects are web based we use a fair amount of javascript, [...]]]></description>
			<content:encoded><![CDATA[<p>One of the nice things about unit tests is that you can use continuous integration so that you don&#8217;t have to run them yourself. At work we use <a href="http://ccnet.thoughtworks.com">CruiseControl.NET</a> to automate our builds and run our unit tests. Now as a number of our projects are web based we use a fair amount of javascript, mainly jQuery, though in-house plugins. In order to test these we use <a href="http://code.google.com/p/jqunit/">jqunit</a>, this works great and allows us to use TDD when writing javascript. However as development goes on the unit tests get forgotten about as they are not automatically ran.</p>
<p>In order so solve this I decided to experiment to find a method of getting cruise control to run our jqunit tests for me. To run the tests I looked at wrapping the jqunit tests with nunit tests.</p>
<p><a href="http://static.yeticode.co.uk/blog/images/posts/jqRunner_nunit.png" rel="lightbox"><img src="http://static.yeticode.co.uk/blog/images/posts/jqRunner_nunit_thumb.png" alt="jqRunner"/></a></p>
<p>jqRunner is designed so that you can us your existing jqunit tests in their existing location without changing them. jqRunner required that all the scripts that are needed to run are registered. The full path to the file is required. jqRunner then executes the tests and returns the results, which are then parsed by nunit as tests using the TestCaseSource attribute.</p>
<pre class="javascript" name="code">
var sampleTestCase = new jqUnit.TestCase('Sample Test Case', function() {
    /*setup*/
    // this.yep(1);
}, function() {
    /*teardown*/
    // this.ok(1)
});
sampleTestCase.test('Sample Test 1', function() {
    this.ok(1);
});
sampleTestCase.test('Sample Test 2', function() {
    this.ok(0);
});
</pre>
<pre class="c-sharp" name="code">
using System;
using System.Collections.Generic;
using NUnit.Framework;
using jqRunner;
using System.IO;
using System.Reflection;

namespace jqRunner.Tests
{
    [TestFixture,RequiresSTA]
    public class TestCaseSourceTests
    {
        [Test, TestCaseSource("GetTestResults"), RequiresSTA]
        public void CheckTest(ITestResult result)
        {
            Assert.IsTrue(result.Pass, result.Name);
        }

        private static ITestResult[] GetTestResults()
        {
            string jsFile = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase) + @"\jqUnitTests\SampleUnitTest.js";
            TestBed target = new TestBed();
            target.RegisterScript(jsFile);
            return target.Execute().ToArray();
        }
    }
}
</pre>
<p>This is an initial development snapshot and is bound to have plenty of problems.</p>
<p><b>Download</b><br />
<a href="http://static.yeticode.co.uk/blog/downloads/jqRunner-snapshot.zip">http://static.yeticode.co.uk/blog/downloads/jqRunner-snapshot.zip</a></p>
<h2>Related Reading</h2>
<table>
<tr>
<td>
<a href="http://www.amazon.co.uk/gp/product/0596007396?ie=UTF8&#038;tag=worldoverride-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=0596007396"><img border="0" src="http://static.yeticode.co.uk/blog/images/nunit.jpg"></a><img src="http://www.assoc-amazon.co.uk/e/ir?t=worldoverride-21&#038;l=as2&#038;o=2&#038;a=0596007396" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td>
<td>
<a style="display:inline-block;" href="http://www.amazon.co.uk/gp/product/0321228103?ie=UTF8&#038;tag=worldoverride-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=0321228103"><img border="0" src="http://static.yeticode.co.uk/blog/images/open_source_dot_net.jpg"></a><img src="http://www.assoc-amazon.co.uk/e/ir?t=worldoverride-21&#038;l=as2&#038;o=2&#038;a=0321228103" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;display:inline-block;" />
</td>
</tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.yeticode.co.uk/2009/09/jqrunner-snapshot-running-javascript-unit-test-with-nunit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pirate Day! Arr</title>
		<link>http://blog.yeticode.co.uk/2009/09/pirate-day-arr/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=pirate-day-arr</link>
		<comments>http://blog.yeticode.co.uk/2009/09/pirate-day-arr/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 23:18:04 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Development Log]]></category>
		<category><![CDATA[pirate]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.yeticode.co.uk/?p=575</guid>
		<description><![CDATA[So talk like a pirate day is coming around soon and saw a brilliant method of converting web pages from boring English to cool Pirate talk. So having nothing better to do at the moment I knocked up a small plugin that will convert your blog posts to pirate talk on the 19th, to give [...]]]></description>
			<content:encoded><![CDATA[<p>So talk like a pirate day is coming around soon and saw a <a href="http://developer.yahoo.net/blog/archives/2009/09/ahoy_mates_conv.html">brilliant method of converting web pages from boring English to cool Pirate talk</a>. So having nothing better to do at the moment I knocked up a small plugin that will convert your blog posts to pirate talk on the 19th, to give your readers something nice to look at.</p>
<p>Plugin can be found at <a href="http://wordpress.org/extend/plugins/pirate-talk/">http://wordpress.org/extend/plugins/pirate-talk/</a></p>
<p>Feel free to make it better.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.yeticode.co.uk/2009/09/pirate-day-arr/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Epic Fail, but with a good note.</title>
		<link>http://blog.yeticode.co.uk/2009/09/epic-fail-but-with-a-good-note/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=epic-fail-but-with-a-good-note</link>
		<comments>http://blog.yeticode.co.uk/2009/09/epic-fail-but-with-a-good-note/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 19:37:37 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Running]]></category>

		<guid isPermaLink="false">http://blog.yeticode.co.uk/?p=558</guid>
		<description><![CDATA[So last Sunday was the 2009 Yorkshireman Off Road Marathon. Everything was going great, even though the course was nothing like I had run on before, but it was not meant to be. I injured my knee running down a hill and had to drop out at 18 mile mark. Although I failed Tom managed [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://static.yeticode.co.uk/blog/images/posts/Yorkshireman_2009_115.jpg" rel="lightbox" ><img src="http://static.yeticode.co.uk/blog/images/posts/Yorkshireman_2009_115_thumb.jpg" style="float: left;"/></a></p>
<p>So last Sunday was the 2009 Yorkshireman Off Road Marathon. Everything was going great, even though the course was nothing like I had run on before, but it was not meant to be. I injured my knee running down a hill and had to drop out at 18 mile mark. Although I failed Tom managed to man it up and complete it with enough energy at the end to call me gay whilst running up the last hill towards the finish line. So the entire event was not a complete waste of time.</p>
<p>Although I didn&#8217;t complete it, I did however run further and for longer than previously. If I hadn&#8217;t injured myself I&#8217;m absolutely positive that I would have completed the race. The course did give me areas that I need to work on, such as running off road more. And finding some really big ass hills to run up and down.</p>
<p>The failure to complete this marathon has certainly given me more than enough drive to enter the Brighton marathon and fully prepare myself for it so that I will be able to complete it without issue.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.yeticode.co.uk/2009/09/epic-fail-but-with-a-good-note/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>More Django Plugin Stuff</title>
		<link>http://blog.yeticode.co.uk/2009/08/more-django/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=more-django</link>
		<comments>http://blog.yeticode.co.uk/2009/08/more-django/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 19:34:38 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Development Log]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[MonoDevelop]]></category>

		<guid isPermaLink="false">http://blog.yeticode.co.uk/?p=553</guid>
		<description><![CDATA[So I&#8217;ve been working more on the support for django within monodevelop. Heres some screenshots of it.]]></description>
			<content:encoded><![CDATA[<p><a href="http://static.yeticode.co.uk/blog/images/posts/monodevelop-django-2.png" rel="lightbox"><img alt="MonoDevelop Django" src="http://static.yeticode.co.uk/blog/images/posts/monodevelop-django-2-thumb.png"/></a></p>
<p>So I&#8217;ve been working more on the support for django within monodevelop. Heres some screenshots of it.</p>
<p><img alt="MonoDevelop Django" src="http://static.yeticode.co.uk/blog/images/posts/monodevelop-django-3.png"/></p>
<p><img alt="MonoDevelop Django" src="http://static.yeticode.co.uk/blog/images/posts/monodevelop-django-4.png"/></p>]]></content:encoded>
			<wfw:commentRss>http://blog.yeticode.co.uk/2009/08/more-django/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
