<?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>blog.eliotsykes.com</title>
	<atom:link href="http://blog.eliotsykes.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.eliotsykes.com</link>
	<description></description>
	<lastBuildDate>Sun, 22 Aug 2010 14:09:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Why Rails asset caching is broken in your app and how you can fix it</title>
		<link>http://blog.eliotsykes.com/2010/05/06/why-rails-asset-caching-is-broken/</link>
		<comments>http://blog.eliotsykes.com/2010/05/06/why-rails-asset-caching-is-broken/#comments</comments>
		<pubDate>Thu, 06 May 2010 15:13:38 +0000</pubDate>
		<dc:creator>Eliot</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blog.eliotsykes.com/?p=459</guid>
		<description><![CDATA[Ruby on Rails&#8217; helper methods (image_tag etc.) that generate URLs to assets (assets are static resources like stylesheet, image, and javascript files) use the broken caching strategy of timestamped query strings, which fails to provide desirable caching behaviour. The new Asset Fingerprint plugin fixes this problem by making it easy to use a file name [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-474" title="Rails Asset Fingerprint Plugin" src="http://blog.eliotsykes.com/wp-content/uploads/2010/05/rails-asset-fingerprint-caching.jpg" alt="Rails Asset Fingerprint Plugin" width="227" height="300" /></p>
<p>Ruby on Rails&#8217; helper methods (image_tag etc.) that generate URLs to assets (assets are static resources like stylesheet, image, and javascript files) use the broken caching strategy of timestamped query strings, which fails to provide desirable caching behaviour. The new <a href="http://github.com/eliotsykes/asset_fingerprint">Asset Fingerprint plugin</a> fixes this problem by making it easy to use a file name fingerprint solution (recommended by Google) to improve the cacheability of your app.</p>
<h3>Why using the query string is a bad idea</h3>
<p>From Google&#8217;s advice on <a href="http://code.google.com/speed/page-speed/docs/caching.html#LeverageProxyCaching">leveraging proxy caching</a>:</p>
<blockquote><p>Most proxies, most notably Squid up through version 3.0, do not cache resources with a &#8220;?&#8221; in their URL even if a Cache-control: public header is present in the response. To enable proxy caching for these resources, <strong>remove query strings from references to static resources, and instead encode the parameters into the file names themselves</strong>.</p></blockquote>
<p>Google uses the term &#8220;fingerprinting&#8221; to describe putting parameters in a file name to identify a unique version of that file.</p>
<h3>Why using file timestamps is a bad idea</h3>
<p>File timestamps are not recommended as resource fingerprints as these are often inconsistent between deployments when a file has not changed. This means your app may not take full advantage of asset caching. Reasons for timestamp inconsistency include:</p>
<ul>
<li>multiple app servers checking out files from code repo at different times</li>
<li>git does not preserve file timestamps (it really doesn&#8217;t)</li>
<li>subversion not configured to preserve file timestamps</li>
<li>generated asset files (e.g. compressed css/js bundles)</li>
</ul>
<p>A hash function checksum (e.g. <a href="http://en.wikipedia.org/wiki/MD5">MD5</a> checksum) of an asset file&#8217;s contents can be used to give a more reliable file fingerprint.</p>
<h3>What the Asset Fingerprint plugin does out-of-the-box</h3>
<p>Easiest to illustrate what the plugin does by example: say there&#8217;s an image in your app located at public/images/logo.png, the Asset Fingerprint plugin will modify Rails&#8217; helper methods to generate asset file paths like &#8216;/images/logo-fp-1749689fc4ba35c5bb1a4d1a8ef903e3.png&#8217;.</p>
<p>The &#8216;-fp-&#8217; part of the path is a fixed string used to help identify fingerprinted paths and the &#8217;1749689fc4ba35c5bb1a4d1a8ef903e3&#8242; part is the fingerprint of the logo.png file, which is the MD5 checksum of the logo.png file.  The fingerprints are calculated once and cached for performance (like Rails does already with the file timestamps).</p>
<p>By default, the plugin will create symlinks on-the-fly to ensure the fingerprinted asset paths are valid and serve the expected resource.  You can configure this behaviour to have symlinks generated by a rake task instead (normally run during deployment) or you can use server rewrite rules if you prefer &#8211; the plugin&#8217;s README explains this and provides examples.</p>
<h3>What else the Asset Fingerprint plugin can do</h3>
<p>You can configure the plugin in a single line to use timestamps as fingerprints if you prefer, or you could write a <a href="http://en.wikipedia.org/wiki/SHA-2">SHA-2</a> FingerPrinter if you have a problem with MD5.</p>
<p>If you have an urge to put the fingerprint in the query string (as Rails does by default) that is a single line of configuration.</p>
<h3>Who uses the plugin?</h3>
<p>At time of writing Asset Fingerprint is used in production for <a href="http://www.missedconnections.com/">MissedConnections.com</a>.</p>
<h3>How to get the plugin?</h3>
<p>You can find source and in-depth details of the Asset Fingerprint plugin, including installation and customization instructions <a href="http://github.com/eliotsykes/asset_fingerprint">on Github</a>.</p>
<p><strong>TLTR summary</strong> Rails&#8217; timestamped query string asset caching is broken.  Install the Asset Fingerprint plugin in your app to fix it and improve the cacheability of your app.</p>
<p><a href="http://www.flickr.com/photos/sidelong/2945717204/sizes/m/"><em>Photo source</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eliotsykes.com/2010/05/06/why-rails-asset-caching-is-broken/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Spring Custom Scopes: Site Scope HOWTO</title>
		<link>http://blog.eliotsykes.com/2010/03/05/spring-custom-scopes-site-scope-howto/</link>
		<comments>http://blog.eliotsykes.com/2010/03/05/spring-custom-scopes-site-scope-howto/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 13:33:50 +0000</pubDate>
		<dc:creator>Eliot</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.eliotsykes.com/?p=429</guid>
		<description><![CDATA[Ok, so I&#8217;ve finally got round to putting some sample code together on Site Scope with Spring Custom Scopes. I&#8217;ve been wanting to do this for some time&#8230; Sample code on Github What does Site Scope do? Say you are running a multi-tenant web app. E.g. you have one video rental webapp that runs 3 [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, so I&#8217;ve finally got round to putting some sample code together on Site Scope with Spring Custom Scopes. I&#8217;ve been wanting to do this for some time&#8230; <a href="http://github.com/eliotsykes/spring-site-scope">Sample code on Github</a></p>
<p><strong>What does Site Scope do?</strong></p>
<p>Say you are running a multi-tenant web app. E.g. you have one video rental webapp that runs 3 different web sites: netflix.com, blockbuster.com, and betamaxrules.com.  For each site you sometimes want to use different beans in your spring application context.</p>
<p>Say for Netflix you want the page titles to be formatted with a &#8220;- Netflix&#8221; suffix, and for Blockbuster you want the page titles to be formatted with a &#8220;Blockbuster presents: &#8221; prefix.</p>
<p>To solve this you can create a TitleFormatter class, and create two subclasses of it, NetflixTitleFormatter and BlockbusterTitleFormatter (I&#8217;d normally make a more flexible TitleFormatter with prefix and suffix attributes rather than subclassing, but subclassing simplifies the example).</p>
<p>Your app determines the current site by the domain name (or some other request/session attribute if you prefer) and our Site Scope uses the correct TitleFormatter bean for the site.</p>
<p>Site Scope prevents site.isXxx() code smells in your views. If you have a lot of tenants, you can end up with views looking like this:</p>
<pre>if (site.isNetflix())
  pageTitle + " - Netflix"
else if (site.isBlockbuster())
  "Blockbuster presents: " + pageTitle
else if (site.isBetamaxRules())
  pageTitle
else if (site.isVhsOldSchoolRentals())
 "VHS Old School Rentals have static titles"</pre>
<p>With SiteScope this could be replaced with:</p>
<pre>  titleFormatter.format(pageTitle)</pre>
<p>For the sample code source/HOWTO see <a href="http://github.com/eliotsykes/spring-site-scope">spring-site-scope on github</a>.</p>
<p><strong>Are you going to use Site Scope? What are you going to use it for? Please share in the comments.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eliotsykes.com/2010/03/05/spring-custom-scopes-site-scope-howto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What tech is Chatroulette running on?</title>
		<link>http://blog.eliotsykes.com/2010/02/24/what-tech-is-chatroulette-running-on/</link>
		<comments>http://blog.eliotsykes.com/2010/02/24/what-tech-is-chatroulette-running-on/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 05:50:11 +0000</pubDate>
		<dc:creator>Eliot</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.eliotsykes.com/?p=409</guid>
		<description><![CDATA[The programmer in me has been wondering what technology Chatroulette is running on and this is what I&#8217;ve found out &#8211; those who know better please forgive mistakes and correct me in the comments: Connections between users are P2P (i.e. my computer connects directly to yours) These P2P connections are established using Adobe&#8217;s free experimental [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_410" class="wp-caption aligncenter" style="width: 410px"><a href="http://en.wikipedia.org/wiki/File:Video_telephony_as_imagined_in_1910.jpg"><img class="size-medium wp-image-410   " title="Chatroulette circa 1910" src="http://blog.eliotsykes.com/wp-content/uploads/2010/02/Video_telephony_as_imagined_in_1910-500x293.jpg" alt="Chatroulette circa 1910" width="400" /></a><p class="wp-caption-text">Chatroulette circa 1910</p></div>
<p>The programmer in me has been wondering what technology <a href="http://chatroulette.com">Chatroulette </a>is running on and this is what I&#8217;ve found out &#8211; those who know better please forgive mistakes and correct me in the comments:</p>
<ul>
<li>Connections between users are P2P (i.e. my computer connects directly to yours)</li>
<li>These P2P connections are established using <a href="http://labs.adobe.com/technologies/stratus/">Adobe&#8217;s free experimental Stratus service</a></li>
<li>Using P2P connections massively reduces the bandwidth costs to Chatroulette as the majority of the traffic is between the chatter&#8217;s computers</li>
<li>The application is written in Flex/Flash (I&#8217;m not sure of the distinction)</li>
</ul>
<p>The Adobe forum has <a href="http://forums.adobe.com/thread/583652?tstart=0">this post about recent performance problems with their hosted Stratus service</a>, it hints that they may be hosting Chatroulette.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eliotsykes.com/2010/02/24/what-tech-is-chatroulette-running-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chatroulette clones</title>
		<link>http://blog.eliotsykes.com/2010/02/23/chatroulette-clones/</link>
		<comments>http://blog.eliotsykes.com/2010/02/23/chatroulette-clones/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 12:39:52 +0000</pubDate>
		<dc:creator>Eliot</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.eliotsykes.com/?p=401</guid>
		<description><![CDATA[Update 20th April 2010 Well this post has been getting swamped with comments listing more clones than I ever expected so I&#8217;ve turned commenting off, the list below is not comprehensive but well, all you need to know is that there is a lot of Chatroulette-like sites out there. Partly as a result of the [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update 20th April 2010</strong> <em>Well this post has been getting swamped with comments listing more clones than I ever expected so I&#8217;ve turned commenting off, the list below is not comprehensive but well, all you need to know is that there is a lot of Chatroulette-like sites out there.</em></p>
<p>Partly as a result of the <a href="http://chatroulette.missedconnections.com">Chatroulette Missed Connections</a> site, and partly because it is fascinating to see an Internet phenomenon like <a href="http://www.chatroulette.com">Chatroulette</a> unfold, I&#8217;m taking an interest in all things related to it.  I love how Andrey, the man responsible for Chatroulette, has created this just by doing something he loves.</p>
<p>So a couple weeks ago I saw ads on freelancer sites looking for developers to clone Chatroulette.  Looks like these ads found some willing developers as these clones are starting to crop up every day.</p>
<p>Here&#8217;s the Chatroulette clone list so far, in no particular order:</p>
<ul>
<li><a href="http://omegle.com">Omegle</a> (hard to say it is a clone, it was first just text before Chatroulette arrived then added video after Chatroulette)</li>
<li><a href="http://camstumble.com/">CamStumble</a></li>
<li><a href="http://shufflepeople.com/">ShufflePeople</a> owned by WooMe</li>
<li><a href="http://zupyo.com/">Zupyo</a></li>
<li><a href="http://spinthecam.com">SpinTheCam</a></li>
<li><a href="http://www.facebuzz.com/">Facebuzz</a></li>
<li><a href="http://www.hey-people.com">HeyPeople</a></li>
<li><a href="http://faceroulette.net">FaceRoulette</a></li>
<li><a href="http://www.heyreddit.com/">HeyReddit</a> for Redditors</li>
<li><a href="http://next.tinychat.com/lobby/">TinyChat Next</a></li>
<li><a href="http://stickam.com/shuffle.do">Stickam Shuffle</a></li>
<li><a href="http://stirchat.com/">StirChat</a></li>
</ul>
<p>If you hear of more let me know and I&#8217;ll add them to the list. Remember though, if you&#8217;re thinking of visiting one of these sites, <a title="Chatroulette" href="http://www.chatroulette.com">Chatroulette will always be the original success story for this type of web site</a>, and if you think cloning it is a good idea, may I politely suggest that building an idea that is original and needed might be more rewarding &#8211; copy Andrey&#8217;s passion, not his idea.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eliotsykes.com/2010/02/23/chatroulette-clones/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>New Rails Page Cache plugin: for holeless/seamless page caching</title>
		<link>http://blog.eliotsykes.com/2010/02/17/new-rails-page-cache-plugin-for-holeless-seamless-page-caching/</link>
		<comments>http://blog.eliotsykes.com/2010/02/17/new-rails-page-cache-plugin-for-holeless-seamless-page-caching/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 12:42:31 +0000</pubDate>
		<dc:creator>Eliot</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blog.eliotsykes.com/?p=373</guid>
		<description><![CDATA[For Missed Connections the sitemap and home page are cached on the filesystem and only refreshed periodically, after an event is fired in the app to say that missed connection ads have been created or deleted. To make users lives a little easier, I never wanted them to make the request that generated one of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/foxypar4/2423464715/"><img class="aligncenter size-full wp-image-384" title="bird-reading-manhole-cover" src="http://blog.eliotsykes.com/wp-content/uploads/2010/02/bird-reading-manhole-cover.jpg" alt="" width="500" height="443" /></a></p>
<p>For <a href="http://www.missedconnections.com">Missed Connections</a> the sitemap and home page are cached on the filesystem and only refreshed periodically, after an event is fired in the app to say that missed connection ads have been created or deleted.</p>
<p>To make users lives a little easier, I never wanted them to make the request that generated one of these cached pages.  This isn&#8217;t quite how Rails page caching works out of the box.  Instead I wanted the page cache to be primed during deployment and periodically updated by a rake-task-calling cron job.</p>
<p>In Rails, out of the box, if a cached page is expired, it is deleted from the filesystem and is only generated when a new request comes in for that page.  This means the first person (could be more than one person if you get concurrent requests) to request the expired page will have to wait for it to be generated.</p>
<p>Instead, to save users&#8217; time, I wanted the cache to be &#8220;holeless&#8221; (inspired by the Pivotal Labs post <a href="http://pivotallabs.com/users/steve/blog/articles/262-rails-slashdotted-no-problem">Rails, Slashdotted: no problem</a>). To do this there is a cron job that generates <em>new</em> cached pages, and <strong>then</strong> replaces the <em>old</em> cached pages with these new cached pages.</p>
<p>In other words, the expired cached pages are only deleted after a refreshed version of the same page is available on the filesystem.</p>
<p>The first version of the plugin and README details are available at Github: <a title="Page Caching Rails" href="http://github.com/eliotsykes/page_cache">Page Cache Rails Plugin</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eliotsykes.com/2010/02/17/new-rails-page-cache-plugin-for-holeless-seamless-page-caching/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Turn off Google Buzz HOWTO</title>
		<link>http://blog.eliotsykes.com/2010/02/11/turn-off-google-buzz-howto/</link>
		<comments>http://blog.eliotsykes.com/2010/02/11/turn-off-google-buzz-howto/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 21:21:51 +0000</pubDate>
		<dc:creator>Eliot</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.eliotsykes.com/?p=386</guid>
		<description><![CDATA[Disabling Google Buzz is easy: Log in to Google Mail Scroll to the bottom of the page Click the &#8220;turn off buzz&#8221; link as highlighted in the picture above, its nested between the &#8220;turn on chat&#8221; and &#8220;older version&#8221; links Bonus! 10 geek points if you can tell from the screen grab above which Google [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-387" title="Turn off Google Buzz here" src="http://blog.eliotsykes.com/wp-content/uploads/2010/02/turn-off-google-buzz-howto.png" alt="Turn off Google Buzz" width="485" height="75" /></p>
<p>Disabling Google Buzz is easy:</p>
<ol>
<li>Log in to <a title="Google Mail" href="http://www.gmail.com/">Google Mail</a></li>
<li>Scroll to the bottom of the page</li>
<li>Click the &#8220;turn off buzz&#8221; link as highlighted in the picture above, its nested between the &#8220;turn on chat&#8221; and &#8220;older version&#8221; links</li>
</ol>
<p>Bonus! 10 geek points if you can tell from the screen grab above which Google Mail theme I&#8217;m using.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eliotsykes.com/2010/02/11/turn-off-google-buzz-howto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Prototype to load Facebook API on demand (or any other script)</title>
		<link>http://blog.eliotsykes.com/2010/01/23/using-prototype-to-load-facebook-api-on-demand-or-any-other-script/</link>
		<comments>http://blog.eliotsykes.com/2010/01/23/using-prototype-to-load-facebook-api-on-demand-or-any-other-script/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 13:26:32 +0000</pubDate>
		<dc:creator>Eliot</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.eliotsykes.com/?p=368</guid>
		<description><![CDATA[I was trying to figure out how to get PrototypeJS to load the Facebook JavaScript API on demand. For Missed Connections I&#8217;m writing a modal box that can optionally display a Facebook connect button, but I didn&#8217;t want to load the Facebook API unless the Fb connect button is shown. In the end I wrote [...]]]></description>
			<content:encoded><![CDATA[<p>I was trying to figure out how to get PrototypeJS to load the Facebook JavaScript API on demand.</p>
<p>For <a href="http://www.missedconnections.com">Missed Connections</a> I&#8217;m writing a modal box that can optionally display a Facebook connect button, but I didn&#8217;t want to load the Facebook API unless the Fb connect button is shown.</p>
<p>In the end I wrote FacebookApiLoader to do this, you can find the source and details here:</p>
<p><a href="http://stackoverflow.com/questions/2117691/using-prototype-to-load-a-javascript-file-from-another-domain/2123219">http://stackoverflow.com/questions/2117691/using-prototype-to-load-a-javascript-file-from-another-domain/2123219</a></p>
<p>Many thanks to Thomas&#8217;s answer which pointed me in the right direction.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eliotsykes.com/2010/01/23/using-prototype-to-load-facebook-api-on-demand-or-any-other-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Freecycle alternatives for UK</title>
		<link>http://blog.eliotsykes.com/2010/01/05/freecycle-alternatives-for-uk/</link>
		<comments>http://blog.eliotsykes.com/2010/01/05/freecycle-alternatives-for-uk/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 18:17:14 +0000</pubDate>
		<dc:creator>Eliot</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.eliotsykes.com/?p=364</guid>
		<description><![CDATA[Early last Summer I used SnaffleUp to freecycle some dvd cases and jiffy bags, but then I couldn&#8217;t remember its name when I wanted to get rid of an old artificial Xmas tree last month. Next I tried Gumtree&#8217;s London free section but that didn&#8217;t work out so well (I&#8217;m guessing its normally better), so [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.eliotsykes.com/wp-content/uploads/2010/01/please-recycle-ring-pull-man.jpg"><img class="aligncenter size-full wp-image-365" title="please-recycle-ring-pull-man" src="http://blog.eliotsykes.com/wp-content/uploads/2010/01/please-recycle-ring-pull-man.jpg" alt="" width="400" height="500" /></a></p>
<p>Early last Summer I used <a href="http://www.snaffleup.co.uk/">SnaffleUp</a> to freecycle some dvd cases and jiffy bags, but then I couldn&#8217;t remember its name when I wanted to get rid of an old artificial Xmas tree last month.</p>
<p>Next I tried Gumtree&#8217;s London free section but that didn&#8217;t work out so well (I&#8217;m guessing its normally better), so in the end the tree went to the Salvation Army.</p>
<p>Anyway, I guess in December I had a problem with my brain and couldn&#8217;t figure out the simple task of searching through my old e-mails to remind me of SnaffleUp&#8217;s name. So what I&#8217;m doing here as a memory aid and to help others is listing the alternatives to Freecycle for the UK that I&#8217;ve found, comment below if you&#8217;ve found any others or have some feedback on the services:</p>
<p><strong>Tried (rating)<br />
</strong></p>
<p><strong> </strong></p>
<p><strong></p>
<ul>
<li><span style="font-weight: normal;"><a href="http://www.snaffleup.co.uk">SnaffleUp</a> (5 out of 5)</span></li>
<li><span style="font-weight: normal;"><a href="http://www.gumtree.com/london/free-stuff_120_1.html">Gumtree</a> (3 out of 5)</span></li>
<li><span style="font-weight: normal;"><a href="http://www.uk.freecycle.org/">Freecycle Yahoo Groups</a> (2 out of 5 &#8211; low rating because if memory serves you&#8217;re forced to join a mailing list through Yahoo Groups &#8211; I&#8217;ve found a dedicated web site like SnaffleUp is easier for freecycling)</span></li>
</ul>
<p></strong></p>
<p><strong>Not tried</strong></p>
<ul>
<li><a href="http://www.ilovefreegle.org/">Freegle</a> &#8211; set up by massive breakaway group of UK Freecycle users who weren&#8217;t impressed with how Freecyle was being run. Nice looking web site but still uses Yahoo Groups and mailing lists by the looks of things.</li>
<li><a href="http://www.recycle.co.uk/">Recycle</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.eliotsykes.com/2010/01/05/freecycle-alternatives-for-uk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sprixi &#8211; New way to find free images for your blog</title>
		<link>http://blog.eliotsykes.com/2009/12/21/sprixinew-way-to-find-images-for-your-blog/</link>
		<comments>http://blog.eliotsykes.com/2009/12/21/sprixinew-way-to-find-images-for-your-blog/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 14:36:01 +0000</pubDate>
		<dc:creator>Eliot</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.eliotsykes.com/?p=360</guid>
		<description><![CDATA[Here&#8217;s an alternative and easier way to Flickr Advanced Search for finding free images for your blog: http://www.sprixi.com/ Thanks to The Next Web for the article that made me aware of Sprixi]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-361" title="sprixi" src="http://blog.eliotsykes.com/wp-content/uploads/2009/12/sprixi.PNG" alt="sprixi" width="300" height="234" /></p>
<p>Here&#8217;s an alternative and easier way to Flickr Advanced Search for finding free images for your blog:</p>
<p><a href="http://www.sprixi.com/">http://www.sprixi.com/</a></p>
<p>Thanks to The Next Web for <a href="http://thenextweb.com/au/2009/12/21/sprixi-easiest-find-free-images/">the article</a> that made me aware of <a href="http://www.sprixi.com/">Sprixi</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eliotsykes.com/2009/12/21/sprixinew-way-to-find-images-for-your-blog/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Alcohol Free Christmas Pudding Recipes</title>
		<link>http://blog.eliotsykes.com/2009/12/21/alcohol-free-christmas-pudding-recipes/</link>
		<comments>http://blog.eliotsykes.com/2009/12/21/alcohol-free-christmas-pudding-recipes/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 12:42:09 +0000</pubDate>
		<dc:creator>Eliot</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.eliotsykes.com/?p=357</guid>
		<description><![CDATA[Its a few days before Christmas and I feel like making an alcohol free Christmas pudding, here are links to 3 recipes, none of which I&#8217;ve tried: Cat Can Cook&#8217;s Traditional Christmas Pudding Recipe Bookworm&#8217;s Cook Book&#8217;s Christmas Pudding Recipe Pauline&#8217;s Traditional Christmas Pudding Recipe (recipe contains alcohol but there is advice to use milk [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-358" title="christmas-pudding-alcohol-free" src="http://blog.eliotsykes.com/wp-content/uploads/2009/12/christmas-pudding-alcohol-free.jpg" alt="christmas-pudding-alcohol-free" width="500" height="343" /></p>
<p>Its a few days before Christmas and I feel like making an alcohol free Christmas pudding, here are links to 3 recipes, none of which I&#8217;ve tried:</p>
<ul>
<li>Cat Can Cook&#8217;s <a href="http://www.catcancook.com/traditional-christmas-pudding-recipe/">Traditional Christmas Pudding Recipe</a></li>
<li style="text-align: left;">Bookworm&#8217;s Cook Book&#8217;s <a href="http://bookwormscookbook.blogspot.com/2006/11/christmas-pudding.html">Christmas Pudding Recipe</a></li>
<li>Pauline&#8217;s <a href="http://www.fashion-era.com/Christmas/christmas_food_pudding_recipe_tradition.htm">Traditional Christmas Pudding Recipe</a> (recipe contains alcohol but there is advice to use milk instead if you want it alcohol free)</li>
</ul>
<p>Hopefully collecting these recipes in one place will help someone else out.  If you find any other recipes add a comment and I&#8217;ll add the links above.</p>
<p>I&#8217;m planning on using the first recipe as the quantities seem to be small enough for making a single good-sized pudding &#8211; the second and third recipes are for making a few puddings.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eliotsykes.com/2009/12/21/alcohol-free-christmas-pudding-recipes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
