<?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>frogcake.net</title>
	<atom:link href="http://www.frogcake.net/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.frogcake.net/blog</link>
	<description></description>
	<lastBuildDate>Sat, 14 Apr 2012 14:14:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>WPcommunicator &#8211; Garmin Communicator WordPress Plugin</title>
		<link>http://www.frogcake.net/blog/2012/04/14/wpcommunicator-garmin-communicator-wordpress-plugin</link>
		<comments>http://www.frogcake.net/blog/2012/04/14/wpcommunicator-garmin-communicator-wordpress-plugin#comments</comments>
		<pubDate>Sat, 14 Apr 2012 14:11:14 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Geek]]></category>

		<guid isPermaLink="false">http://www.frogcake.net/blog/?p=1180</guid>
		<description><![CDATA[I run the rideout.cc website which is a collection of motorbike routes and I wanted a way for people to download the routes to their GPS devices. Originally I was just going to provide a downloadable GPX file but then I found that Garmin have a browser plugin that allows data to be transferred between [...]]]></description>
			<content:encoded><![CDATA[<p>I run the <a href="http://rideout.cc/" >rideout.cc</a> website which is a collection of motorbike routes and I wanted a way for people to download the routes to their GPS devices. Originally I was just going to provide a downloadable GPX file but then I found that Garmin have a <a href="http://www8.garmin.com/products/communicator/" >browser plugin</a> that allows data to be transferred between your Garmin GPS device and your computer.</p>
<p>After getting it working on my website I decided to wrap it up in a WordPress plugin to make it easier to integrate in posts.</p>
<p>You can get the code from <a href="https://github.com/davidkeen/WPcommunicator" >GitHub</a>.</p>
<p>To use the plugin you will need to get a free Garmin site key from the <a href="http://developer.garmin.com/web-device/garmin-communicator-plugin/get-your-site-key/" >Garmin Developer website</a>. Then create a custom WordPress field called &#8216;gpx&#8217; with your GPX data and insert the [gpx] shortcode into your post. This will add a button to allow users to download the GPX data directly to their Garmin device.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frogcake.net/blog/2012/04/14/wpcommunicator-garmin-communicator-wordpress-plugin/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MotoGP &amp; BSB wallpaper</title>
		<link>http://www.frogcake.net/blog/2012/04/05/motogp-bsb-wallpaper</link>
		<comments>http://www.frogcake.net/blog/2012/04/05/motogp-bsb-wallpaper#comments</comments>
		<pubDate>Thu, 05 Apr 2012 12:39:38 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Motorbikes]]></category>

		<guid isPermaLink="false">http://www.frogcake.net/blog/?p=1173</guid>
		<description><![CDATA[Both MotoGP and British Superbikes kick off this weekend. So in celebration, here are a few wallpapers from pictures I took last year.]]></description>
			<content:encoded><![CDATA[<p>Both MotoGP and British Superbikes kick off this weekend. So in celebration, here are a few wallpapers from pictures I took last year.</p>

<div class="ngg-galleryoverview"  id="ngg-gallery-9-1173" >


	
	
		
	<div id="ngg-image-90"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/bautista_silverstone_2011.jpg"  title=" "  rel="lightbox[set_9]" >
								<img title="Alvaro Bautista, Silverstone, 2011"  alt="Alvaro Bautista, Silverstone, 2011"  src="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/thumbs/thumbs_bautista_silverstone_2011.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-91"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/byrne_brands_2011.jpg"  title=" "  rel="lightbox[set_9]" >
								<img title="Shakey Byrne, Brands Hatch, 2011"  alt="Shakey Byrne, Brands Hatch, 2011"  src="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/thumbs/thumbs_byrne_brands_2011.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-92"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/hill_brands_2011.jpg"  title=" "  rel="lightbox[set_9]" >
								<img title="Tommy Hil, Brands Hatch, 2011"  alt="Tommy Hil, Brands Hatch, 2011"  src="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/thumbs/thumbs_hill_brands_2011.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-93"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/hopkins_brands_2011.jpg"  title=" "  rel="lightbox[set_9]" >
								<img title="John Hopkins, Brands Hatch, 2011"  alt="John Hopkins, Brands Hatch, 2011"  src="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/thumbs/thumbs_hopkins_brands_2011.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-94"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/lorenzo_silverstone_2011.jpg"  title=" "  rel="lightbox[set_9]" >
								<img title="Jorge Lorenzo, Silverstone, 2011"  alt="Jorge Lorenzo, Silverstone, 2011"  src="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/thumbs/thumbs_lorenzo_silverstone_2011.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-95"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/rossi_silverstone_2011.jpg"  title=" "  rel="lightbox[set_9]" >
								<img title="Valentino Rossi, Silverstone, 2011"  alt="Valentino Rossi, Silverstone, 2011"  src="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/thumbs/thumbs_rossi_silverstone_2011.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-96"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/simoncelli_silverstone_2011.jpg"  title=" "  rel="lightbox[set_9]" >
								<img title="Marco Simoncelli, Silverstone, 2011"  alt="Marco Simoncelli, Silverstone, 2011"  src="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/thumbs/thumbs_simoncelli_silverstone_2011.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-97"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/stoner_silverstone_2011.jpg"  title=" "  rel="lightbox[set_9]" >
								<img title="Casey Stoner, Silverstone, 2011"  alt="Casey Stoner, Silverstone, 2011"  src="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/thumbs/thumbs_stoner_silverstone_2011.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-98"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/ellison_brands_2011.jpg"  title=" "  rel="lightbox[set_9]" >
								<img title="James Ellison, Brands Hatch, 2011"  alt="James Ellison, Brands Hatch, 2011"  src="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/thumbs/thumbs_ellison_brands_2011.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-99"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/hayden_silverstone_2011-1.jpg"  title=" "  rel="lightbox[set_9]" >
								<img title="Nicky Hayden, Silverstone, 2011"  alt="Nicky Hayden, Silverstone, 2011"  src="http://www.frogcake.net/blog/gallery/bikes_wallpaper_2011/thumbs/thumbs_hayden_silverstone_2011-1.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 	 	
	
 	<div class="ngg-clear" ></div> 	
</div>


]]></content:encoded>
			<wfw:commentRss>http://www.frogcake.net/blog/2012/04/05/motogp-bsb-wallpaper/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>California Superbike School Level 1</title>
		<link>http://www.frogcake.net/blog/2012/03/21/california-superbike-school-level-1</link>
		<comments>http://www.frogcake.net/blog/2012/03/21/california-superbike-school-level-1#comments</comments>
		<pubDate>Wed, 21 Mar 2012 12:07:03 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Motorbikes]]></category>

		<guid isPermaLink="false">http://www.frogcake.net/blog/?p=1166</guid>
		<description><![CDATA[Originally posted here. So I did Level 1 yesterday. It was on the Silverstone International Circuit which is the same southern loop that the Ron Haslam School uses; a really enjoyable circuit. It was a long hard day but I had a great time! After scraping the frost off my bike seat outside the Premier [...]]]></description>
			<content:encoded><![CDATA[<p>Originally posted <a href="http://www.675.cc/675/viewtopic.php?f=64&amp;t=9941#p136645" >here</a>.</p>
<p>So I did Level 1 yesterday. It was on the Silverstone International Circuit which is the same southern loop that the Ron Haslam School uses; a really enjoyable circuit. It was a long hard day but I had a great time!</p>
<p>After scraping the frost off my bike seat outside the Premier Inn I headed to the circuit for a 7am start. There was a familiar face at sign on:<br/>

<a href="http://www.frogcake.net/blog/gallery/css_1/11p7361-xl.jpg"  title=""  rel="lightbox[singlepic78]" >
	<img class="ngg-singlepic"  src="http://www.frogcake.net/blog/gallery/cache/78__320x240_11p7361-xl.jpg"  alt="11p7361-xl"  title="11p7361-xl" />
</a>
<br/>
After a general introductory briefing it was decided that as it was still a bit chilly we would start with the off-track drills first. Each level has a specific &#8216;off-track drill&#8217; such as the lean bike or slide bike. For Level 1 it is a steering drill where they make sure you are counter-steering properly. Even though this was something I was already familiar with my coach still gave me a couple of useful tips to make my turns smoother.</p>
<p>The rest of the day followed a format of alternating classroom and track sessions. The classroom session first introduces the skill that you will be practicing and then you hit the track to put it to use. While on track your assigned track coach will observe your riding and give you some set hand signals to help you practice the drills. When you come in he will give you a debriefing before your next classroom session.</p>
<p>The first session was all about throttle control. We were restricted to riding in one gear and not using the brakes AT ALL! This is quite a change from what most people are used to on track and it really focuses you on achieving the correct corner entry speed and using a controlled throttle application to steady the bike.</p>
<p>The second drill was turn points. During the classroom session they had applied big yellow crosses to mark the turn points for the corners. This is not so much about your riding style but more a chance to practice thinking about and hitting turn points and observing what happens if you turn a bike-length sooner or later. We could use 2 gears here but still no brakes.</p>
<p>Drill three was the quick turn. This is where we practiced getting the bike leant over as quickly as possible. This has a big effect on the amount of lean angle required to get round a turn. I found quick turns were easier in slower corners than faster corners. Makes sense I guess. The faster you are going the more force is required to tip the bike over.</p>
<p>The next session was all about rider input and the importance of relaxing on the bike. I found this made a huge improvement to my cornering. Making a conscious effort to relax on the bars really stabilised the bike and I had never even noticed a tendency to grip the outside bar when leant over. For example on a right-hander I would tend to grip tighter with my left hand. Three gears and some light brakes are allowed here.</p>
<p>The last session was a kind of introduction to Level 2. This was called two step turning. We all know bikes go where we look, however this can cause problems for us as there is a natural tendency for us to look to the inside of the corner and to turn in too early causing us to run wide on the exit. The two step fixes this by making us pick out our apex before we reach our turn point; separating the looking and the turning. This was another massive improvement for me. It takes a lot of concentration if you aren&#8217;t used to it but it makes the corners so much easier as you already have an idea of where you want to go before you start your turn in.</p>
<p>Like I said, the day is a lot of hard work. It takes an effort to remember to apply each of the drills to your riding but when you do you can see the improvements immediately. Because of the concentration required they tell you to only ride at 80%. There were still one or two who wanted to prove how fast they were and treated it more like a track day (which it isn&#8217;t) but the coaches are pretty good at reminding them to show everyone else some respect.</p>
<p>By the end of the day I was knackered but still wishing I&#8217;d booked in for Level 2 on the next day. <img src="http://www.frogcake.net/blog/wp-includes/images/smilies/icon_smile.gif"  alt=":-)"  class="wp-smiley" /> </p>
<p>I&#8217;ll definitely be going back ASAP and I recommend it to anyone who wants to improve their riding and not just to go faster on track. It&#8217;s all perfectly applicable to normal road riding too.</p>
<p>Here are some pictures from the day. There are more in <a href="http://gallery.frogcake.net/Motorcycles/CSS-Level-1/22023884_Lxvvrm" >the gallery</a>.</p>

<div class="ngg-galleryoverview"  id="ngg-gallery-8-1166" >


	
	
		
	<div id="ngg-image-77"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/css_1/11p7359-xl.jpg"  title=" "  rel="lightbox[set_8]" >
								<img title="11p7359-xl"  alt="11p7359-xl"  src="http://www.frogcake.net/blog/gallery/css_1/thumbs/thumbs_11p7359-xl.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-78"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/css_1/11p7361-xl.jpg"  title=" "  rel="lightbox[set_8]" >
								<img title="11p7361-xl"  alt="11p7361-xl"  src="http://www.frogcake.net/blog/gallery/css_1/thumbs/thumbs_11p7361-xl.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-79"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/css_1/11p7368-xl.jpg"  title=" "  rel="lightbox[set_8]" >
								<img title="11p7368-xl"  alt="11p7368-xl"  src="http://www.frogcake.net/blog/gallery/css_1/thumbs/thumbs_11p7368-xl.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-80"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/css_1/11p7375-xl.jpg"  title=" "  rel="lightbox[set_8]" >
								<img title="11p7375-xl"  alt="11p7375-xl"  src="http://www.frogcake.net/blog/gallery/css_1/thumbs/thumbs_11p7375-xl.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-81"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/css_1/11p7392-xl.jpg"  title=" "  rel="lightbox[set_8]" >
								<img title="11p7392-xl"  alt="11p7392-xl"  src="http://www.frogcake.net/blog/gallery/css_1/thumbs/thumbs_11p7392-xl.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-82"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/css_1/1gg7761-xl.jpg"  title=" "  rel="lightbox[set_8]" >
								<img title="1gg7761-xl"  alt="1gg7761-xl"  src="http://www.frogcake.net/blog/gallery/css_1/thumbs/thumbs_1gg7761-xl.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-83"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/css_1/1gg7775-xl.jpg"  title=" "  rel="lightbox[set_8]" >
								<img title="1gg7775-xl"  alt="1gg7775-xl"  src="http://www.frogcake.net/blog/gallery/css_1/thumbs/thumbs_1gg7775-xl.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-84"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/css_1/1gg8250-xl.jpg"  title=" "  rel="lightbox[set_8]" >
								<img title="1gg8250-xl"  alt="1gg8250-xl"  src="http://www.frogcake.net/blog/gallery/css_1/thumbs/thumbs_1gg8250-xl.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-85"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/css_1/1gg8340-xl.jpg"  title=" "  rel="lightbox[set_8]" >
								<img title="1gg8340-xl"  alt="1gg8340-xl"  src="http://www.frogcake.net/blog/gallery/css_1/thumbs/thumbs_1gg8340-xl.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-86"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/css_1/1pp5670-xl.jpg"  title=" "  rel="lightbox[set_8]" >
								<img title="1pp5670-xl"  alt="1pp5670-xl"  src="http://www.frogcake.net/blog/gallery/css_1/thumbs/thumbs_1pp5670-xl.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-87"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/css_1/1pp5671-xl.jpg"  title=" "  rel="lightbox[set_8]" >
								<img title="1pp5671-xl"  alt="1pp5671-xl"  src="http://www.frogcake.net/blog/gallery/css_1/thumbs/thumbs_1pp5671-xl.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-88"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/css_1/1pp5899-xl.jpg"  title=" "  rel="lightbox[set_8]" >
								<img title="1pp5899-xl"  alt="1pp5899-xl"  src="http://www.frogcake.net/blog/gallery/css_1/thumbs/thumbs_1pp5899-xl.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 	 	
	
 	<div class="ngg-clear" ></div> 	
</div>


]]></content:encoded>
			<wfw:commentRss>http://www.frogcake.net/blog/2012/03/21/california-superbike-school-level-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A history of hanging off</title>
		<link>http://www.frogcake.net/blog/2012/03/07/a-history-of-hanging-off</link>
		<comments>http://www.frogcake.net/blog/2012/03/07/a-history-of-hanging-off#comments</comments>
		<pubDate>Wed, 07 Mar 2012 14:21:16 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Motorbikes]]></category>

		<guid isPermaLink="false">http://www.frogcake.net/blog/?p=1140</guid>
		<description><![CDATA[I found an interesting forum post by Keith Code from the California Superbike School about how we&#8217;ve gone from knuckle dragging to knee dragging. In it he describes an evolution of how racers make bikes go round corners. It&#8217;s very interesting but in it he gives examples of riders that typify the five phases of [...]]]></description>
			<content:encoded><![CDATA[<p>I found an interesting forum post by Keith Code from the California Superbike School about how we&#8217;ve gone <a href="http://forums.superbikeschool.com/index.php?showtopic=1362" >from knuckle dragging to knee dragging</a>. In it he describes an evolution of how racers make bikes go round corners. It&#8217;s very interesting but in it he gives examples of riders that typify the five phases of cornering evolution.</p>
<p>I thought it would be interesting to collect pictures of these riders to visualise the change.</p>
<p>Phase 1 &#8211; John Surtees</p>
<p><a href="http://www.frogcake.net/blog/wp-content/uploads/2012/03/john-surtees-50s-tt.jpg"  rel="lightbox[1140]"  title="john-surtees-50s-tt" ><img class="size-medium wp-image-1144 alignnone"  title="john-surtees-50s-tt"  src="http://www.frogcake.net/blog/wp-content/uploads/2012/03/john-surtees-50s-tt-300x203.jpg"  alt=""  width="300"  height="203" /></a></p>
<p>Phase 2 &#8211; Mike Hailwood</p>
<p><a href="http://www.frogcake.net/blog/wp-content/uploads/2012/03/MikeHailwood.jpg"  rel="lightbox[1140]"  title="Mike Hailwood" ><img class="alignnone size-medium wp-image-1153"  title="Mike Hailwood"  src="http://www.frogcake.net/blog/wp-content/uploads/2012/03/MikeHailwood-300x204.jpg"  alt=""  width="300"  height="204" /></a></p>
<p>Phase 3 &#8211; Jarno Saarinen</p>
<p><a href="http://www.frogcake.net/blog/wp-content/uploads/2012/03/jarno_saarinen.jpg"  rel="lightbox[1140]"  title="Jarno Saarinen" ><img class="alignnone size-medium wp-image-1155"  title="Jarno Saarinen"  src="http://www.frogcake.net/blog/wp-content/uploads/2012/03/jarno_saarinen-300x214.jpg"  alt=""  width="300"  height="214" /></a></p>
<p>Phase 4 &#8211; Kenny Roberts</p>
<p><a href="http://www.frogcake.net/blog/wp-content/uploads/2012/03/KennyRoberts.jpg"  rel="lightbox[1140]"  title="Kenny Roberts" ><img class="alignnone size-medium wp-image-1156"  title="Kenny Roberts"  src="http://www.frogcake.net/blog/wp-content/uploads/2012/03/KennyRoberts-300x199.jpg"  alt=""  width="300"  height="199" /></a></p>
<p>Phase 4 &#8211; Cal Rayborn</p>
<p><a href="http://www.frogcake.net/blog/wp-content/uploads/2012/03/cal_rayborn.jpg"  rel="lightbox[1140]"  title="Cal Rayborn" ><img class="alignnone size-medium wp-image-1157"  title="Cal Rayborn"  src="http://www.frogcake.net/blog/wp-content/uploads/2012/03/cal_rayborn-300x225.jpg"  alt=""  width="300"  height="225" /></a></p>
<p>Phase 4 &#8211; Mick Doohan</p>
<p><a href="http://www.frogcake.net/blog/wp-content/uploads/2012/03/mick_doohan.jpg"  rel="lightbox[1140]"  title="Mick Doohan" ><img class="alignnone size-medium wp-image-1158"  title="Mick Doohan"  src="http://www.frogcake.net/blog/wp-content/uploads/2012/03/mick_doohan-300x239.jpg"  alt=""  width="300"  height="239" /></a></p>
<p>Phase 4 &#8211; Randy Mamola</p>
<p><a href="http://www.frogcake.net/blog/wp-content/uploads/2012/03/randy_mamola.jpg"  rel="lightbox[1140]"  title="Randy Mamola" ><img class="alignnone size-medium wp-image-1159"  title="Randy Mamola"  src="http://www.frogcake.net/blog/wp-content/uploads/2012/03/randy_mamola-300x185.jpg"  alt=""  width="300"  height="185" /></a></p>
<p>Phase 5 &#8211; Casey Stoner</p>
<p><a href="http://www.frogcake.net/blog/wp-content/uploads/2012/03/CaseyStonerSepangTest.jpg"  rel="lightbox[1140]"  title="Casey Stoner" ><img class="alignnone size-medium wp-image-1160"  title="Casey Stoner"  src="http://www.frogcake.net/blog/wp-content/uploads/2012/03/CaseyStonerSepangTest-300x225.jpg"  alt=""  width="300"  height="225" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frogcake.net/blog/2012/03/07/a-history-of-hanging-off/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TextMate for IntelliJ users</title>
		<link>http://www.frogcake.net/blog/2011/11/30/textmate-for-intellij-users</link>
		<comments>http://www.frogcake.net/blog/2011/11/30/textmate-for-intellij-users#comments</comments>
		<pubDate>Wed, 30 Nov 2011 13:55:47 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Geek]]></category>

		<guid isPermaLink="false">http://www.frogcake.net/blog/?p=1083</guid>
		<description><![CDATA[I use IntelliJ IDEA. I also use TextMate. The fact that I spend most of my day in IntelliJ means I&#8217;m used to IntelliJ&#8217;s keyboard mapping which happens to be slightly different from TextMate&#8217;s. The biggest difference I found was with the Home and End keys and the Delete Line mapping. So here&#8217;s how to [...]]]></description>
			<content:encoded><![CDATA[<p>I use <a href="http://www.jetbrains.com/idea/" >IntelliJ IDEA</a>. I also use <a href="http://macromates.com/" >TextMate</a>. The fact that I spend most of my day in IntelliJ means I&#8217;m used to IntelliJ&#8217;s keyboard mapping which happens to be slightly different from TextMate&#8217;s.</p>
<p>The biggest difference I found was with the Home and End keys and the Delete Line mapping. So here&#8217;s how to make TextMate work more like IntelliJ.</p>
<h4>Change Home and End keys</h4>
<p>From <a href="http://blog.macromates.com/2005/key-bindings-for-switchers/" >this old blog post</a>:<br/>
Create the custom KeyBindings folder (if it doesn&#8217;t already exist):</p>

<div class="wp_syntax" ><div class="code" ><pre class="bash"  style="font-family:monospace;" ><span style="color: #c20cb9; font-weight: bold;" >mkdir</span> ~<span style="color: #000000; font-weight: bold;" >/</span>Library<span style="color: #000000; font-weight: bold;" >/</span>KeyBindings</pre></div></div>

<p>Create a key bindings file called DefaultKeyBinding.dict in this directory with the following content:</p>

<div class="wp_syntax" ><div class="code" ><pre class="objc"  style="font-family:monospace;" ><span style="color: #002200;" >&#123;</span>
    <span style="color: #11740a; font-style: italic;" >/* home */</span>
    <span style="color: #bf1d1a;" >&quot;<span style="color: #2400d9;" >\U</span>F729&quot;</span>  <span style="color: #002200;" >=</span> <span style="color: #bf1d1a;" >&quot;moveToBeginningOfLine:&quot;</span>;
    <span style="color: #bf1d1a;" >&quot;$<span style="color: #2400d9;" >\U</span>F729&quot;</span> <span style="color: #002200;" >=</span> <span style="color: #bf1d1a;" >&quot;moveToBeginningOfLineAndModifySelection:&quot;</span>;
&nbsp;
    <span style="color: #11740a; font-style: italic;" >/* end */</span>
    <span style="color: #bf1d1a;" >&quot;<span style="color: #2400d9;" >\U</span>F72B&quot;</span>  <span style="color: #002200;" >=</span> <span style="color: #bf1d1a;" >&quot;moveToEndOfLine:&quot;</span>;
    <span style="color: #bf1d1a;" >&quot;$<span style="color: #2400d9;" >\U</span>F72B&quot;</span> <span style="color: #002200;" >=</span> <span style="color: #bf1d1a;" >&quot;moveToEndOfLineAndModifySelection:&quot;</span>;
&nbsp;
    <span style="color: #11740a; font-style: italic;" >/* page up/down */</span>
    <span style="color: #bf1d1a;" >&quot;<span style="color: #2400d9;" >\U</span>F72C&quot;</span>  <span style="color: #002200;" >=</span> <span style="color: #bf1d1a;" >&quot;pageUp:&quot;</span>;
    <span style="color: #bf1d1a;" >&quot;<span style="color: #2400d9;" >\U</span>F72D&quot;</span>  <span style="color: #002200;" >=</span> <span style="color: #bf1d1a;" >&quot;pageDown:&quot;</span>;
<span style="color: #002200;" >&#125;</span></pre></div></div>

<h4>Change Delete Line mapping</h4>
<p>Go to Bundles &gt; Bundle Editor &gt; Show Bundle Editor.<br/>
In text bundle, change Delete Line from CTRL+K to CMD+DELETE.<br/>
In the text bundle, Delete to Beginning of Line macro, click the X to remove the same binding.</p>
<h4>Change Duplicate Line mapping</h4>
<p>While you are there you might also want to change the Duplicate Line / Selection mapping to CMD+D</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frogcake.net/blog/2011/11/30/textmate-for-intellij-users/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Le Mans 24 Heures Moto</title>
		<link>http://www.frogcake.net/blog/2011/11/04/le-mans-24-heures-moto</link>
		<comments>http://www.frogcake.net/blog/2011/11/04/le-mans-24-heures-moto#comments</comments>
		<pubDate>Fri, 04 Nov 2011 13:43:07 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Motorbikes]]></category>

		<guid isPermaLink="false">http://www.frogcake.net/blog/?p=1043</guid>
		<description><![CDATA[Originally published here. I went to Le Mans on the weekend. It was a bloody incredible experience. After meeting up with a couple of BMW GS&#8217;s, a Suzuki Bandit and a Harley(!) at 4am on Friday morning we got the 6am ferry from Dover to Calais and then took some nice roads south to Le [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.frogcake.net/blog/wp-content/uploads/2011/11/IMG0050-M1.jpg"  rel="lightbox[1043]"  title="IMG0050-M" ><img hspace="1em"  vspace="1em"  align="right"  class="alignright size-medium wp-image-1055"  title="IMG0050-M"  src="http://www.frogcake.net/blog/wp-content/uploads/2011/11/IMG0050-M1-300x225.jpg"  alt=""  width="300"  height="225"   style="float:right; margin:0 0 1em 1em; border:black 1px solid;"/></a>Originally published <a href="http://www.675.cc/675/viewtopic.php?f=71&amp;t=8130&amp;p=102346#p100805" >here</a>.</p>
<p>I went to Le Mans on the weekend. It was a bloody incredible experience.</p>
<p>After meeting up with a couple of BMW GS&#8217;s, a Suzuki Bandit and a Harley(!) at 4am on Friday morning we got the 6am ferry from Dover to Calais and then took some nice roads south to Le Mans arriving at the circuit at about 2pm.</p>
<p>Staying in the campsite was unlike anything I have ever experienced before. Anyone who&#8217;s been will know what I mean. For those who haven&#8217;t, you need to imagine something like Mad Max. The campsite is between the airfield and the circuit but you can barely hear the noise of either the aircraft or the race track due to the constant insane revving of motorbike engines in the camp. This literally goes on without stop from Thursday until Sunday. All through the day and night bike engines are screaming in torture being held at the limiter and having their cut-off switches flicked to produce flaming backfires. The French call it the Rupture. The noise is deafening. Some take the cans off their bikes and some attach home made garbage can trumpet attachments for extra awesomeness.</p>
<p>Other features of the campsite are flares, fires and massive amounts of alcohol and drunkenness. Oh and dust. Lots of dust that mixes with the smoke of the campfire and the early morning mist to produce a kind of smog that coats your bike/tent and floats across the circuit.</p>
<p>Oh yeah, the circuit. That&#8217;s right. The race that everyone is supposed to be there for. The racing is incredible. I do not know how these guys do it. It&#8217;s pretty surreal. As a spectator you watch the start and several laps. Then maybe have a wander round the circuit, watch a bit more and catch up on the positions then head back to camp for dinner. After dinner you wander back over to the circuit, and those guys are still flinging their bikes around the track, lifting the front wheel through the Dunlop bridge and overtaking into corners. Then you might watch a bit of the rock concert and then head back to the track. They&#8217;re still racing. It&#8217;s getting late so you head back to camp for more drinking / general madness and try to get a couple of hours sleep over the noise of the rupture. You get up early to watch the sunrise over the circuit AND THEY ARE STILL RACING! They haven&#8217;t slowed down AT ALL! An hour or so later you head back to the camp for breakfast / beer and later on walk back to the circuit to watch the final few hours of racing. OMG THEY ARE STILL GOING FLAT OUT! I don&#8217;t know how they do it for 24h. I know the riding is split between 3 or 4 riders but it&#8217;s still insane.</p>
<p>The whole thing was unreal. I got back home at 2am on Monday morning and I still haven&#8217;t fully recovered from the weekend. <img title="Smile"  src="http://www.675.cc/675/images/smilies/icon_e_smile.gif"  alt=":-)" /> Oh and the French loooved the Daytona. I&#8217;m not exaggerating when I say everyone who walked passed my bike in the campsite either turned to gaze at it or more often stopped and discussed it with their mates. The Harley barely got a glance. <img title="Smile"  src="http://www.675.cc/675/images/smilies/icon_e_smile.gif"  alt=":-)" /> I only saw a couple of other Daytonas although there were a few more Streets.</p>
<p>I&#8217;ll add some photos I took when I have had a chance to look at them but here&#8217;s a great video of this years race.</p>
<p><object width="500"  height="281" ><param name="movie"  value="http://www.youtube.com/v/Kv-ux8rEskc?version=3&#038;feature=oembed" /></param><param name="allowFullScreen"  value="true" /></param><param name="allowscriptaccess"  value="always" /></param><embed src="http://www.youtube.com/v/Kv-ux8rEskc?version=3&#038;feature=oembed"  type="application/x-shockwave-flash"  width="500"  height="281"  allowscriptaccess="always"  allowfullscreen="true" ></embed></object></p>
<p>A few pics. Full gallery is <a href="http://gallery.frogcake.net/Motorsport/Le-Mans-24-Heures-Moto-2011/19268439_6Zss3h" >here</a>.</p>

<div class="ngg-galleryoverview"  id="ngg-gallery-6-1043" >


	
	
		
	<div id="ngg-image-53"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/lemans_2011/img0019-l.jpg"  title="Check out the size of the sprocket on this BMW stunt bike."  rel="lightbox[set_6]" >
								<img title="img0019-l"  alt="img0019-l"  src="http://www.frogcake.net/blog/gallery/lemans_2011/thumbs/thumbs_img0019-l.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-54"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/lemans_2011/img0023-l.jpg"  title="My bike has never been so dirty."  rel="lightbox[set_6]" >
								<img title="img0023-l"  alt="img0023-l"  src="http://www.frogcake.net/blog/gallery/lemans_2011/thumbs/thumbs_img0023-l.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-55"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/lemans_2011/img0024-l.jpg"  title="You can see the main grandstand from our campsite."  rel="lightbox[set_6]" >
								<img title="img0024-l"  alt="img0024-l"  src="http://www.frogcake.net/blog/gallery/lemans_2011/thumbs/thumbs_img0024-l.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-56"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/lemans_2011/img0027-l.jpg"  title="Flares at night."  rel="lightbox[set_6]" >
								<img title="img0027-l"  alt="img0027-l"  src="http://www.frogcake.net/blog/gallery/lemans_2011/thumbs/thumbs_img0027-l.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-57"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/lemans_2011/img0031-l.jpg"  title="Before the start."  rel="lightbox[set_6]" >
								<img title="img0031-l"  alt="img0031-l"  src="http://www.frogcake.net/blog/gallery/lemans_2011/thumbs/thumbs_img0031-l.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-58"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/lemans_2011/img0047-l.jpg"  title="If you can get your bike back to the pits you can fix it and carry on racing."  rel="lightbox[set_6]" >
								<img title="img0047-l"  alt="img0047-l"  src="http://www.frogcake.net/blog/gallery/lemans_2011/thumbs/thumbs_img0047-l.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-59"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/lemans_2011/img0053-l.jpg"  title="They have a museum at the circuit (meanwhile the bikes are still racing outside)."  rel="lightbox[set_6]" >
								<img title="img0053-l"  alt="img0053-l"  src="http://www.frogcake.net/blog/gallery/lemans_2011/thumbs/thumbs_img0053-l.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-60"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/lemans_2011/img0062-l.jpg"  title="Problems with the Harley :-)"  rel="lightbox[set_6]" >
								<img title="img0062-l"  alt="img0062-l"  src="http://www.frogcake.net/blog/gallery/lemans_2011/thumbs/thumbs_img0062-l.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-61"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/lemans_2011/img0072-l.jpg"  title="Status Quo playing on Saturday night (meanwhile bikes still racing)."  rel="lightbox[set_6]" >
								<img title="img0072-l"  alt="img0072-l"  src="http://www.frogcake.net/blog/gallery/lemans_2011/thumbs/thumbs_img0072-l.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-62"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/lemans_2011/img0085-l.jpg"  title="Those two streaks of light are motorbikes."  rel="lightbox[set_6]" >
								<img title="img0085-l"  alt="img0085-l"  src="http://www.frogcake.net/blog/gallery/lemans_2011/thumbs/thumbs_img0085-l.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-63"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/lemans_2011/img0093-l.jpg"  title="Pit stop - fuel, tyres and rider change."  rel="lightbox[set_6]" >
								<img title="img0093-l"  alt="img0093-l"  src="http://www.frogcake.net/blog/gallery/lemans_2011/thumbs/thumbs_img0093-l.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-64"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/lemans_2011/img0096-l.jpg"  title="This is not really mist. It's mostly smoke from the camp fires."  rel="lightbox[set_6]" >
								<img title="img0096-l"  alt="img0096-l"  src="http://www.frogcake.net/blog/gallery/lemans_2011/thumbs/thumbs_img0096-l.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-65"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/lemans_2011/img0113-l.jpg"  title="Sunrise over the Dunlop bridge."  rel="lightbox[set_6]" >
								<img title="img0113-l"  alt="img0113-l"  src="http://www.frogcake.net/blog/gallery/lemans_2011/thumbs/thumbs_img0113-l.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-66"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/lemans_2011/img0114-l.jpg"  title="These guys have been racing for about 15 hours now."  rel="lightbox[set_6]" >
								<img title="img0114-l"  alt="img0114-l"  src="http://www.frogcake.net/blog/gallery/lemans_2011/thumbs/thumbs_img0114-l.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-67"  class="ngg-gallery-thumbnail-box" >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.frogcake.net/blog/gallery/lemans_2011/img0133-l.jpg"  title="Winners' celebration."  rel="lightbox[set_6]" >
								<img title="img0133-l"  alt="img0133-l"  src="http://www.frogcake.net/blog/gallery/lemans_2011/thumbs/thumbs_img0133-l.jpg"  width="128"  height="128" />
							</a>
		</div>
	</div>
	
		
 	 	
	
 	<div class="ngg-clear" ></div> 	
</div>


<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frogcake.net/blog/2011/11/04/le-mans-24-heures-moto/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Devoxx &#8211; Project Coin, Defective Java and the Social Network</title>
		<link>http://www.frogcake.net/blog/2010/11/18/devoxx-project-coin-defective-java-and-the-social-network</link>
		<comments>http://www.frogcake.net/blog/2010/11/18/devoxx-project-coin-defective-java-and-the-social-network#comments</comments>
		<pubDate>Thu, 18 Nov 2010 23:17:39 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[devoxx]]></category>

		<guid isPermaLink="false">http://www.frogcake.net/blog/?p=1022</guid>
		<description><![CDATA[Joe Darcy and Maurizio Cimadamore gave a preview of the changes coming up in Project Coin. These are small changes to the Java language that will be added to Java 7. They all look pretty useful and include: Strings in switch Collection literals &#60;&#62; (generic type inference) Multicatch catch &#40;ClassNotFoundException &#124; NoSuchMethodException e&#41; &#123; // [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.frogcake.net/blog/wp-content/uploads/2010/11/LogoDevoxx150dpi.jpg"  rel="lightbox[1022]"  title="LogoDevoxx150dpi" ><img hspace="1em"  vspace="1em"  align="right"  class="alignright size-medium wp-image-994"  title="LogoDevoxx150dpi"  src="http://www.frogcake.net/blog/wp-content/uploads/2010/11/LogoDevoxx150dpi-300x112.jpg"  alt=""  width="300"  height="112"   style="float:right; margin:0 0 1em 1em; border:black 1px solid;"/></a>Joe Darcy and Maurizio Cimadamore gave a preview of the changes coming up in <a href="http://openjdk.java.net/projects/coin/" >Project Coin</a>. These are small changes to the Java language that will be added to Java 7. They all look pretty useful and include:</p>
<ul>
<li>Strings in switch</li>
<li>Collection literals</li>
<li>&lt;&gt; (generic type inference)</li>
<li>Multicatch</li>
</ul>

<div class="wp_syntax" ><div class="code" ><pre class="java"  style="font-family:monospace;" ><span style="color: #000000; font-weight: bold;" >catch</span> <span style="color: #009900;" >&#40;</span><span style="color: #003399;" >ClassNotFoundException</span> <span style="color: #339933;" >|</span> <span style="color: #003399;" >NoSuchMethodException</span> e<span style="color: #009900;" >&#41;</span> <span style="color: #009900;" >&#123;</span>
    <span style="color: #666666; font-style: italic;" >// Do something</span>
    <span style="color: #000000; font-weight: bold;" >throw</span><span style="color: #009900;" >&#40;</span>e<span style="color: #009900;" >&#41;</span><span style="color: #339933;" >;</span>
<span style="color: #009900;" >&#125;</span></pre></div></div>

<p>Bill Pugh&#8217;s session was as popular as expected for his talk about defective code and how static analysis with <a href="http://findbugs.sourceforge.net/" >FindBugs</a> can help. I&#8217;ve heard Bill talk about this stuff before but this time he was emphasising that not all bugs are equal. All code has bugs but some mistakes don&#8217;t really matter.</p>
<p>Google&#8217;s code has over 1000 null pointer bugs but few if any NullPointerExceptions in running code are caused by these. You need to determine which bugs are worth your time to fix.</p>
<p>The most important bugs are generally those which can cost you money on the first day they manifest themselves and those bugs that occur silently. This is why Bill is a fan of runtime exceptions; if something unexpected happens, you want to know about it.</p>
<p>Devoxx is held in a massive cinema complex and so after all the talks today the organisers put on a showing of <a href="http://www.imdb.com/title/tt1285016/" ><em>The Social Network</em></a>, a movie about the founders of Facebook. I really enjoyed the film. All the performances were great and I really liked the soundtrack by Trent Reznor. You don&#8217;t need to be a geek to enjoy this film. I don&#8217;t know how much of it is actually true but it paints an interesting picture of Mark Zuckerberg and draws nice connections between our concepts of &#8216;friendship&#8217;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frogcake.net/blog/2010/11/18/devoxx-project-coin-defective-java-and-the-social-network/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Devoxx &#8211; Improve the performance of your Spring app</title>
		<link>http://www.frogcake.net/blog/2010/11/17/devoxx-improve-the-performance-of-your-spring-app</link>
		<comments>http://www.frogcake.net/blog/2010/11/17/devoxx-improve-the-performance-of-your-spring-app#comments</comments>
		<pubDate>Wed, 17 Nov 2010 21:43:49 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[devoxx]]></category>

		<guid isPermaLink="false">http://www.frogcake.net/blog/?p=1011</guid>
		<description><![CDATA[This talk by Costin Leau was about the new caching features in Spring 3.1. After going over some problems you can face when caching (stale data, thrashing, distributed caches) and different caching patterns he introduced the declarative caching of Spring 3.1. It uses AOP and can be declared on methods by adding the @Cacheable annotation. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.frogcake.net/blog/wp-content/uploads/2010/11/LogoDevoxx150dpi.jpg"  rel="lightbox[1011]"  title="LogoDevoxx150dpi" ><img hspace="1em"  vspace="1em"  align="right"  class="alignright size-medium wp-image-994"  title="LogoDevoxx150dpi"  src="http://www.frogcake.net/blog/wp-content/uploads/2010/11/LogoDevoxx150dpi-300x112.jpg"  alt=""  width="300"  height="112"   style="float:right; margin:0 0 1em 1em; border:black 1px solid;"/></a>This talk by Costin Leau was about the new caching features in Spring 3.1.</p>
<p>After going over some problems you can face when caching (stale data, thrashing, distributed caches) and different caching patterns he introduced the declarative caching of Spring 3.1.</p>
<p>It uses AOP and can be declared on methods by adding the @Cacheable annotation. This annotation caches a method&#8217;s return value using it&#8217;s parameters as the key although this can be customised.</p>
<p>Eg:</p>

<div class="wp_syntax" ><div class="code" ><pre class="java"  style="font-family:monospace;" >@Cacheable
<span style="color: #000000; font-weight: bold;" >public</span> <span style="color: #003399;" >Owner</span> loadOwner<span style="color: #009900;" >&#40;</span><span style="color: #000066; font-weight: bold;" >int</span> id<span style="color: #009900;" >&#41;</span><span style="color: #339933;" >;</span>
&nbsp;
@Cacheable<span style="color: #009900;" >&#40;</span><span style="color: #0000ff;" >&quot;owners&quot;</span><span style="color: #009900;" >&#41;</span>
<span style="color: #000000; font-weight: bold;" >public</span> <span style="color: #003399;" >Owner</span> loadOwner<span style="color: #009900;" >&#40;</span><span style="color: #000066; font-weight: bold;" >int</span> id<span style="color: #009900;" >&#41;</span><span style="color: #339933;" >;</span>
&nbsp;
<span style="color: #666666; font-style: italic;" >// Using Spring expression language</span>
@Cacheable<span style="color: #009900;" >&#40;</span>key<span style="color: #339933;" >=</span><span style="color: #0000ff;" >&quot;tag.name&quot;</span><span style="color: #009900;" >&#41;</span>
<span style="color: #000000; font-weight: bold;" >public</span> <span style="color: #003399;" >Owner</span> loadOwner<span style="color: #009900;" >&#40;</span>Tag tag, <span style="color: #003399;" >Date</span> created<span style="color: #009900;" >&#41;</span><span style="color: #339933;" >;</span>
&nbsp;
@Cacheable<span style="color: #009900;" >&#40;</span>key<span style="color: #339933;" >=</span><span style="color: #0000ff;" >&quot;T(someType).hash(name)&quot;</span><span style="color: #009900;" >&#41;</span>
<span style="color: #000000; font-weight: bold;" >public</span> <span style="color: #003399;" >Owner</span> loadOwner<span style="color: #009900;" >&#40;</span><span style="color: #003399;" >String</span> name<span style="color: #009900;" >&#41;</span><span style="color: #339933;" >;</span>
&nbsp;
<span style="color: #666666; font-style: italic;" >// Only cache on condition</span>
@Cacheable<span style="color: #009900;" >&#40;</span>condition<span style="color: #339933;" >=</span><span style="color: #0000ff;" >&quot;name &lt; 10&quot;</span><span style="color: #009900;" >&#41;</span>
<span style="color: #000000; font-weight: bold;" >public</span> <span style="color: #003399;" >Owner</span> loadOwner<span style="color: #009900;" >&#40;</span><span style="color: #003399;" >String</span> name, <span style="color: #003399;" >Date</span> created<span style="color: #009900;" >&#41;</span><span style="color: #339933;" >;</span></pre></div></div>

<p>The @CacheEvict annotation invalidates the cache:</p>

<div class="wp_syntax" ><div class="code" ><pre class="java"  style="font-family:monospace;" >@CacheEvict
<span style="color: #000000; font-weight: bold;" >public</span> <span style="color: #000066; font-weight: bold;" >void</span> deleteOwner<span style="color: #009900;" >&#40;</span><span style="color: #000066; font-weight: bold;" >int</span> id<span style="color: #009900;" >&#41;</span><span style="color: #339933;" >;</span>
&nbsp;
@CacheEvict<span style="color: #009900;" >&#40;</span><span style="color: #0000ff;" >&quot;owners&quot;</span>, key<span style="color: #339933;" >=</span><span style="color: #0000ff;" >&quot;id&quot;</span><span style="color: #009900;" >&#41;</span>
<span style="color: #000000; font-weight: bold;" >public</span> <span style="color: #000066; font-weight: bold;" >void</span> deleteOwner<span style="color: #009900;" >&#40;</span><span style="color: #000066; font-weight: bold;" >int</span> id, <span style="color: #000066; font-weight: bold;" >boolean</span> saveCopy<span style="color: #009900;" >&#41;</span><span style="color: #339933;" >;</span>
&nbsp;
@CacheEvict<span style="color: #009900;" >&#40;</span>name<span style="color: #339933;" >=</span><span style="color: #0000ff;" >&quot;owners&quot;</span>, allEntries<span style="color: #339933;" >=</span><span style="color: #000066; font-weight: bold;" >true</span><span style="color: #009900;" >&#41;</span>
<span style="color: #000000; font-weight: bold;" >public</span> <span style="color: #000066; font-weight: bold;" >void</span> batchUpdate<span style="color: #009900;" >&#40;</span><span style="color: #009900;" >&#41;</span></pre></div></div>

<p>You can also use your own stereotype annotations. Instead of spreading @Cacheable everywhere:</p>

<div class="wp_syntax" ><div class="code" ><pre class="java"  style="font-family:monospace;" >@Retention<span style="color: #009900;" >&#40;</span>RetentionPolicy.<span style="color: #006633;" >RUNTIME</span><span style="color: #009900;" >&#41;</span>
@Target<span style="color: #009900;" >&#40;</span><span style="color: #009900;" >&#123;</span>ElementType.<span style="color: #006633;" >METHOD</span><span style="color: #009900;" >&#125;</span><span style="color: #009900;" >&#41;</span>
@Cacheable<span style="color: #009900;" >&#40;</span><span style="color: #0000ff;" >&quot;results&quot;</span><span style="color: #009900;" >&#41;</span>
<span style="color: #000000; font-weight: bold;" >public</span> @<span style="color: #000000; font-weight: bold;" >interface</span> SlowService <span style="color: #009900;" >&#123;</span>
&nbsp;
<span style="color: #009900;" >&#125;</span>
&nbsp;
@SlowService
<span style="color: #000000; font-weight: bold;" >public</span> Source search<span style="color: #009900;" >&#40;</span><span style="color: #003399;" >String</span> tag<span style="color: #009900;" >&#41;</span> <span style="color: #009900;" >&#123;</span>...<span style="color: #009900;" >&#125;</span></pre></div></div>

<p>Spring is not a cache provider itself. You plug in your own cache provider (ehcache, JBoss Cache, etc).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frogcake.net/blog/2010/11/17/devoxx-improve-the-performance-of-your-spring-app/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Devoxx &#8211; Performance Anxiety</title>
		<link>http://www.frogcake.net/blog/2010/11/17/devoxx-performance-anxiety</link>
		<comments>http://www.frogcake.net/blog/2010/11/17/devoxx-performance-anxiety#comments</comments>
		<pubDate>Wed, 17 Nov 2010 21:20:49 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[devoxx]]></category>

		<guid isPermaLink="false">http://www.frogcake.net/blog/?p=1008</guid>
		<description><![CDATA[I doubt Joshua Bloch suffers from performance anxiety but it was slightly ironic that there were some technical problems before he started his talk, titled Performance Anxiety, to an absolutely packed room at Devoxx today. I knew it would be a popular session so I got there early and so managed to find a seat, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.frogcake.net/blog/wp-content/uploads/2010/11/LogoDevoxx150dpi.jpg"  rel="lightbox[1008]"  title="LogoDevoxx150dpi" ><img hspace="1em"  vspace="1em"  align="right"  class="alignright size-medium wp-image-994"  title="LogoDevoxx150dpi"  src="http://www.frogcake.net/blog/wp-content/uploads/2010/11/LogoDevoxx150dpi-300x112.jpg"  alt=""  width="300"  height="112"   style="float:right; margin:0 0 1em 1em; border:black 1px solid;"/></a>I doubt Joshua Bloch suffers from performance anxiety but it was slightly ironic that there were some technical problems before he started his talk, titled <em>Performance Anxiety</em>, to an absolutely packed room at Devoxx today. I knew it would be a popular session so I got there early and so managed to find a seat, unlike the others who sat on the steps or crowded the doorway.</p>
<p>His talk was about <em>microbenchmarking</em> &#8211; measuring the performance of a small piece of code as opposed to <em>profiling</em> an application.</p>
<p>In the good old days performance could be estimated simply by counting program instructions. Now it is simply impossible to do this because of the &#8216;abstraction gap&#8217;.  As code has become more and more complex it has become harder and harder to estimate and measure the performance.  Complexity and predictability are inversely related.</p>
<p>Even benchmarking code doesn&#8217;t really work with consecutive runs often showing a variance of 20%. The code and systems are so complex nobody really knows where this variance comes from.</p>
<p>The solution is to run a bunch of JVMs in sequence and then statistically analyse the data (mean, median, standard dev, etc).</p>
<p>Basically, benchmarking is really, really hard and most benchmarks are seriously broken. Either the results are unrelated to the test or the error bars exceed the measured values.</p>
<p><a href="http://code.google.com/p/caliper/" >Caliper</a> is microbenchmarking framework from Google which can help.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frogcake.net/blog/2010/11/17/devoxx-performance-anxiety/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Devoxx &#8211; The Next Big JVM Language</title>
		<link>http://www.frogcake.net/blog/2010/11/17/devoxx-the-next-big-jvm-language</link>
		<comments>http://www.frogcake.net/blog/2010/11/17/devoxx-the-next-big-jvm-language#comments</comments>
		<pubDate>Wed, 17 Nov 2010 15:22:05 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[devoxx]]></category>

		<guid isPermaLink="false">http://www.frogcake.net/blog/?p=1006</guid>
		<description><![CDATA[Stephen Colebourne gave an entertaining talk to a packed room called The Next Big JVM Language. He went over the features of such new JVM languages as Groovy, Clojure, Scala and Fantom (which I&#8217;d never heard of). He seemed to be leaning toward Fantom as the language of choice before delivering the punchline that the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.frogcake.net/blog/wp-content/uploads/2010/11/LogoDevoxx150dpi.jpg"  rel="lightbox[1006]"  title="LogoDevoxx150dpi" ><img hspace="1em"  vspace="1em"  align="right"  class="alignright size-medium wp-image-994"  title="LogoDevoxx150dpi"  src="http://www.frogcake.net/blog/wp-content/uploads/2010/11/LogoDevoxx150dpi-300x112.jpg"  alt=""  width="300"  height="112"   style="float:right; margin:0 0 1em 1em; border:black 1px solid;"/></a>Stephen Colebourne gave an entertaining talk to a packed room called The Next Big JVM Language. He went over the features of such new JVM languages as Groovy, Clojure, Scala and <a href="http://fantom.org/" >Fantom</a> (which I&#8217;d never heard of).</p>
<p>He seemed to be leaning toward Fantom as the language of choice before delivering the punchline that the best candidate for the Next Big Language might be a backwards incompatible version of Java itself.</p>
<p>I think I agree. Oracle should get rid of all that legacy crap in JDK 9.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frogcake.net/blog/2010/11/17/devoxx-the-next-big-jvm-language/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

