<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>DEfusion.org.uk</title>
		<description>The personal website of David Spurr. I've been a full-time web developer since 2002 on many very fun projects covering everything from backend to design in a myriad of languages and technologies.</description>
		<link>/</link>
		<atom:link href="/feed.xml" rel="self" type="application/rss+xml" />
		
			<item>
				<title>Update : JavaScript Image Cropper UI using Prototype v 1.2.2</title>
				<description>&lt;p&gt;Once again it’s been a long time since I released an update to the &lt;a href=&quot;/code/javascript-image-cropper-ui-using-prototype-scriptaculous/&quot;&gt;JavaScript Image Cropper UI&lt;/a&gt;, for reference v1.2.1 was released in 2009 and the previous version in 2006!&lt;/p&gt;

&lt;p&gt;There was a comment recently basically saying that it “used to be great but is not supported as the last update was 2009”, which is quite far from the truth; as anyone who contacts me with a problem/question that I can replicate or help with can attest to. The long times between updates with the cropper are purely because the script is stable (thanks in no small part to building on top of stable &amp;amp; well maintained libraries) and continues to work for people who download it and I haven’t had reports of any issues that would require a new general release.&lt;/p&gt;

&lt;p&gt;However I have received information from a few people noting that they were having some issues in IE9. Not having that at hand to test I could only go on the few 3rd party reports I had, but now I’ve managed to test in IE9 and have ensured all the examples work. This only required updating to the latest versions of prototype &amp;amp; script.aculo.us and no other changes.&lt;/p&gt;

&lt;p&gt;So the 1.2.2 release contains no new code, only updated examples &amp;amp; the IE9 support notice (that you’ll probably need the latest versions of the libs for it to work). This post is more for the “I/its not dead” message.&lt;/p&gt;
</description>
				<pubDate>Mon, 04 Jul 2011 19:28:08 +0000</pubDate>
				<link>/archives/2011/07/04/update-javascript-image-cropper-ui-using-prototype-v-1-2-2/</link>
				<guid isPermaLink="true">/archives/2011/07/04/update-javascript-image-cropper-ui-using-prototype-v-1-2-2/</guid>
			</item>
		
			<item>
				<title>Shrinking large background image bug in iPhone Safari</title>
				<description>&lt;p&gt;&lt;a href=&quot;http://www.defusion.org.uk/wp-content/uploads/2010/02/compare.jpg&quot; rel=&quot;lightbox&quot;&gt;&lt;img class=&quot;featureImg&quot; src=&quot;http://www.defusion.org.uk/wp-content/uploads/2010/02/compare_thumb.jpg&quot; alt=&quot;Screenshots of an iPhone showing the broken background and the working background&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Updated: &lt;a href=&quot;#2010-02-22-update&quot;&gt;22nd Feb 2010&lt;/a&gt;&lt;br /&gt;
I experienced a slightly odd bug in the latest version of mobile Safari on iPhone where it was shrinking large background images applied via &lt;acronym title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/acronym&gt; to fit within the confines of the screen. Not finding anyone else who has written about this problem I thought I’d share my findings.&lt;/p&gt;

&lt;p&gt;Firstly a bit of background, the company I am working for at the moment recently released a real-time &lt;acronym title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/acronym&gt; editor (of sorts) which I built that allows customers to style their sites using nothing more than uploaded images and some UI controls - for more details on that you can see &lt;a href=&quot;http://www.bandzoogle.com/blog/blogposts/video-tour-of-the-custom-template-system-16711.cfm?showdate=11-01-2009&quot;&gt;a video of it in action on this blog post&lt;/a&gt; and some of &lt;a href=&quot;http://www.bandzoogle.com/blog/blogposts/bandzoogle-20-new-design-new-style-editor-new-features-new-pricing-17461.cfm&quot;&gt;the amazing results&lt;/a&gt; that customers have been able to achieve with it.&lt;/p&gt;

&lt;p&gt;Yesterday one customer reported an issue where a large background image (1800x2520) was being shrunk on the iPhone. I did quite a lot of investigation and to cut a long-ish story short I discovered that there is a tipping point where the total pixel-area of an image causes mobile Safari to resize the image. &lt;em&gt;This tipping point appears to be at &lt;strong&gt;2,000,001 pixels&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Read on for a bit more of a breakdown of my experiment results.&lt;br /&gt;
&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;To debug this issue I looked at the pixel size of some of our larger background images that were working fine on the iPhone and then tried various sizes to see what the results were. My experiments are shown in the table below (in the order I performed them).&lt;/p&gt;

&lt;table id=&quot;iphone-results&quot;&gt;
   &lt;tr&gt;
      &lt;th&gt;
         Width&amp;nbsp;
      &lt;/th&gt;
      &lt;th&gt;
         Height&amp;nbsp;
      &lt;/th&gt;
      &lt;th&gt;
         Pixel area&amp;nbsp;
      &lt;/th&gt;
      &lt;th&gt;
         iPhone shrinks background
      &lt;/th&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;
         1400
      &lt;/td&gt;
      &lt;td&gt;
         1200
      &lt;/td&gt;
      &lt;td&gt;
         1,680,000
      &lt;/td&gt;
      &lt;td&gt;
         &lt;span style=&quot;color: green;&quot;&gt;No&lt;/span&gt;
      &lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;
         1200
      &lt;/td&gt;
      &lt;td&gt;
         1600
      &lt;/td&gt;
      &lt;td&gt;
         1,920,000
      &lt;/td&gt;
      &lt;td&gt;
         &lt;span style=&quot;color: green;&quot;&gt;No&lt;/span&gt;
      &lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;
         1200
      &lt;/td&gt;
      &lt;td&gt;
         1800
      &lt;/td&gt;
      &lt;td&gt;
         2,160,000
      &lt;/td&gt;
      &lt;td&gt;
         &lt;span style=&quot;color: red;&quot;&gt;Yes&lt;/span&gt;
      &lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;
         1200
      &lt;/td&gt;
      &lt;td&gt;
         1700
      &lt;/td&gt;
      &lt;td&gt;
         2,004,000
      &lt;/td&gt;
      &lt;td&gt;
         &lt;span style=&quot;color: red;&quot;&gt;Yes&lt;/span&gt;
      &lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;
         1200
      &lt;/td&gt;
      &lt;td&gt;
         1650
      &lt;/td&gt;
      &lt;td&gt;
         1,980,000
      &lt;/td&gt;
      &lt;td&gt;
         &lt;span style=&quot;color: green;&quot;&gt;No&lt;/span&gt;
      &lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;
         1200
      &lt;/td&gt;
      &lt;td&gt;
         1675
      &lt;/td&gt;
      &lt;td&gt;
         2,201,000
      &lt;/td&gt;
      &lt;td&gt;
         &lt;span style=&quot;color: red;&quot;&gt;Yes&lt;/span&gt;
      &lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;
         1200
      &lt;/td&gt;
      &lt;td&gt;
         1666
      &lt;/td&gt;
      &lt;td&gt;
         1,999,200
      &lt;/td&gt;
      &lt;td&gt;
         &lt;span style=&quot;color: green;&quot;&gt;No&lt;/span&gt;
      &lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;
         1666
      &lt;/td&gt;
      &lt;td&gt;
         1200
      &lt;/td&gt;
      &lt;td&gt;
         1,999,200
      &lt;/td&gt;
      &lt;td&gt;
         &lt;span style=&quot;color: green;&quot;&gt;No&lt;/span&gt;
      &lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;
         1667
      &lt;/td&gt;
      &lt;td&gt;
         1200
      &lt;/td&gt;
      &lt;td&gt;
         2,000,400
      &lt;/td&gt;
      &lt;td&gt;
         &lt;span style=&quot;color: red;&quot;&gt;Yes&lt;/span&gt;
      &lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;
         500
      &lt;/td&gt;
      &lt;td&gt;
         4000
      &lt;/td&gt;
      &lt;td&gt;
         2,000,000
      &lt;/td&gt;
      &lt;td&gt;
         &lt;span style=&quot;color: green;&quot;&gt;No&lt;/span&gt;
      &lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;
         500
      &lt;/td&gt;
      &lt;td&gt;
         4001
      &lt;/td&gt;
      &lt;td&gt;
         2,000,500
      &lt;/td&gt;
      &lt;td&gt;
         &lt;span style=&quot;color: red;&quot;&gt;Yes&lt;/span&gt;
      &lt;/td&gt;
   &lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;There were further tests in between but I won’t list them all for your sanity but my tests seems to say that it didn’t matter on the width or the height of the image just the total pixel area. E.g. a very wide image &amp;lt; 2,000,001 works just as a very high image does. At 2,000,001 pixels or larger they get shrunk. Note I didn’t get it right down to 2,000,001 pixels and this is just an educated guess that it is the actual tipping point. I’m going to submit this as a bug to Apple I’m not sure what is causing this but another guess of mine is that 2,000,000 is the maximum area that the renderer will handle/cache (you can see this in effect when you scroll around on mobile Safari how it re-draws the page) and so is getting enforced on the background image some how.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update: 22nd Feb 2010&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It seems I should have RTFMed. Apple got back to me with regards to the bug and pointed me at the &lt;a href=&quot;http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariWebContent/CreatingContentforSafarioniPhone/CreatingContentforSafarioniPhone.html&quot;&gt;Known iPhone OS Resource Limits in the Safari Web Content Guide&lt;/a&gt; which says:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;ul&gt;
    &lt;li&gt;The maximum size for decoded GIF, &lt;acronym title=&quot;Portable Network Graphics&quot;&gt;PNG&lt;/acronym&gt;, and TIFF images is 3 megapixels.
That is, ensure that width * height &amp;lt;= 3 * 1024 * 1024. Note that the decoded size is far larger than the encoded size of an image.&lt;/li&gt;
    &lt;li&gt;The maximum decoded image size for JPEG is 32 megapixels using subsampling.
&lt;em&gt;JPEG images can be up to 32 megapixels due to subsampling, which allows JPEG images to decode to a size that has one sixteenth the number of pixels JPEG images larger than 2 megapixels are subsampled ”that is, decoded to a reduced size.&lt;/em&gt; JPEG subsampling allows the user to view images from the latest digital cameras.&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Emphasis added.&lt;/p&gt;
</description>
				<pubDate>Fri, 19 Feb 2010 18:03:36 +0000</pubDate>
				<link>/archives/2010/02/19/shrinking-large-background-image-bug-in-iphone-safari/</link>
				<guid isPermaLink="true">/archives/2010/02/19/shrinking-large-background-image-bug-in-iphone-safari/</guid>
			</item>
		
			<item>
				<title>No IE For You!</title>
				<description>&lt;p&gt;&lt;img class=&quot;featureImg&quot; src=&quot;http://www.defusion.org.uk/wp-content/uploads/2009/11/no-ie-thumb.jpg&quot; alt=&quot;No IE for You!&quot; /&gt;&lt;br /&gt;
The title of this post was going to be:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If Microsoft Insist On Making It Nigh-on Impossible For Us To Test &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; Effectively Then Why Do They Think We Should Bother Supporting It?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But I decided that was a bit too long, so I took inspiration from the soup kitchen chef instead, it’s more to the point.&lt;/p&gt;

&lt;p&gt;Anyway the reason I’m back writing about adventures in &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; testing land is I have a week of some horrid &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; browser testing of my current, JavaScript heavy, project coming up if the first quick check through all versions of &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; is anything to go by. Yes I know I should have been testing as I went along, but having to refresh 9 browsers with every change really kills my buzz (especially when 3 of those are &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt;).&lt;/p&gt;

&lt;p&gt;So I did some initial browser testing last week and got &lt;strong&gt;zero issues in 6 browsers&lt;/strong&gt;, but &lt;em&gt;each version of &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; threw up massive amounts of JavaScript errors&lt;/em&gt; – absolutely all over the place – and we all know how annoying debugging JS is in &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt;. This combined with my aging (and decidedly creaky) Windows XP Virtual Machine (running in Parallels on a Mac Pro with more than enough grunt to run multiple &lt;acronym title=&quot;Virtual Machine&quot;&gt;VM&lt;/acronym&gt;’s all at once) meant that tonight I decided to look for new alternatives (as multiple versions of &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; on a single &lt;acronym title=&quot;Virtual Machine&quot;&gt;VM&lt;/acronym&gt; have never been great anyway).&lt;br /&gt;
&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;So single &lt;acronym title=&quot;Virtual Machine&quot;&gt;VM&lt;/acronym&gt; images (as light and quick as possible) was my plan and I started to do some research, and found the following:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Microsoft handily supply a bevvy of &lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyID=21eabb90-958f-4b64-b5f1-73d0a413c8ef&amp;amp;DisplayLang=en&quot;&gt;Internet Explorer Application Compatibility VPC Image’s&lt;/a&gt; exactly for this situation. &lt;strong&gt;Score 1 Microsoft!&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;These are Virtual PC images, which is only available for Windows… but I found &lt;a href=&quot;http://blog.mozmonkey.com/2008/vpc-ie6-ie7-ie8-on-mac-os-x/&quot;&gt;these instructions for converting them&lt;/a&gt; to run with either VMWare Fusion or VirtualBox. &lt;strong&gt;Score 1 Mac and the sweet, sweet people on the Internet&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I’m all set right? The steps aren’t that difficult and I choose to try VirtualBox as&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;I’ve tried VMWare Fusion before and wasn’t that keen.&lt;/li&gt;
  &lt;li&gt;I know that VMWare won’t run at the same time as parallels. A big minus there.&lt;/li&gt;
  &lt;li&gt;I’ve wanted to try VirtualBox for a while.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I do a few downloads, the conversion stuff and within the hour I have VirtualBox booting the image. &lt;em&gt;It boots quickly and it’s nippy&lt;/em&gt;, I assume they’ve stripped Windows down to the bare bones with just enough to run &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; properly - which is what I was going to try and do anyway. Windows says something about having to re-activate so I try, that fails but says I have 3 days so I figure that has to be due to the last step I haven’t completed, which I then do and reboot. Only to get the following:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;WGA prompt&lt;/li&gt;
  &lt;li&gt;Follow instructions&lt;/li&gt;
  &lt;li&gt;Fail&lt;/li&gt;
  &lt;li&gt;Repeat steps 1 to 3 a couple more times&lt;/li&gt;
  &lt;li&gt;Search Google and &lt;a href=&quot;http://socket7.net/article/ie-vpc-images-now-with-wga&quot;&gt;find&lt;/a&gt; out &lt;a href=&quot;http://forums.virtualbox.org/viewtopic.php?f=2&amp;amp;t=21712&amp;amp;start=45&quot;&gt;that&lt;/a&gt; they’ve gone and restricted it to running in Virtual PC only. &lt;strong&gt;&lt;em&gt;Microsoft FAIL&lt;/em&gt;&lt;/strong&gt;. It’s in the EULA so I should have noticed it… Like I’m going to read every EULA put in front of my face.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href=&quot;http://blogs.msdn.com/petel/&quot;&gt;Peter L&lt;/a&gt; who is the “Product Manager, Internet Explorer, Developer Division” has the following &lt;a href=&quot;http://blogs.msdn.com/petel/archive/2009/09/09/running-the-ie-vpc-s-on-other-vpc-hosts.aspx&quot;&gt;month and a half old update&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote cite=&quot;http://blogs.msdn.com/petel/archive/2009/09/09/running-the-ie-vpc-s-on-other-vpc-hosts.aspx&quot;&gt;
  &lt;p&gt;
    I've spent some time investigating this issue, and now understand that the VPC images used to work on other hosting environments, but with the latest release, don't any more. We have a better understanding of the issue now, and while we're looking for a solution, we don't have one right now. If you're using the VPC's, and they don't work any more, I encourage you to email me, with your name, how you're using them and the hosting environment that you're using.
  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’ll drop him an email but I don’t expect to get a resolution any time soon.&lt;/p&gt;

&lt;p&gt;So a couple of hours of work and I’m back to square one, the only positive thing I can take from this is &lt;a href=&quot;http://www.virtualbox.org/&quot;&gt;VirtualBox&lt;/a&gt; seems quite fast and neither it nor Parallels have complained about the other. So I might try converting my Dev &lt;acronym title=&quot;Virtual Machine&quot;&gt;VM&lt;/acronym&gt;’s and setting up a new Multi-&lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; Windows &lt;acronym title=&quot;Virtual Machine&quot;&gt;VM&lt;/acronym&gt; on there.&lt;/p&gt;

&lt;p&gt;But the big thing I take from this is that Microsoft don’t want you to play with them if you don’t own a Microsoft football. I quite honestly would be quite happy to do that, &lt;em&gt;to never have to open &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; again would suit me fine&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Unfortunately that would also mean commercial suicide for a web developer who works on public facing sites.&lt;/p&gt;
</description>
				<pubDate>Sun, 01 Nov 2009 22:45:06 +0000</pubDate>
				<link>/archives/2009/11/01/no-ie-for-you/</link>
				<guid isPermaLink="true">/archives/2009/11/01/no-ie-for-you/</guid>
			</item>
		
			<item>
				<title>Update : JavaScript Image Cropper UI using Prototype v 1.2.1</title>
				<description>&lt;p&gt;It’s been a long time since I released an update to the &lt;a href=&quot;/code/javascript-image-cropper-ui-using-prototype-scriptaculous/&quot;&gt;JavaScript Image Cropper UI&lt;/a&gt; (for reference v1.2.0 was released on 30th Oct 2006!).&lt;/p&gt;

&lt;p&gt;However it is still going strong and a couple of things prompted me to release this update to bring it to v1.2.1.&lt;/p&gt;

&lt;p&gt;The first thing was &lt;a href=&quot;http://straightnochaser.org/&quot;&gt;Tom Hirashima&lt;/a&gt; &lt;del datetime=&quot;2009-10-06T22:52:08+00:00&quot;&gt;(sorry Tom, wasn’t sure if you have a site you want me to link to)&lt;/del&gt; sent me an email last week with an update to the code to allow it to work with the latest versions of Prototype &amp;amp; script.aculo.us out of the box (1.6.1.0 &amp;amp; 1.8.2 respectively). Although the last time I tried the cropper with the latest versions of them both it worked fine, you just had to change the bundles that script.aculo.us included, Tom has made some further changes. This is a good thing as for the past couple of years I’ve pretty much been out of the prototype &amp;amp; script.aculo.us loop having moved to MooTools and now jQuery (which I hated at first, but that’s another story).&lt;/p&gt;

&lt;p&gt;The second thing was that the cropper was mentioned (and my how old does this site design look to me now) in the latest (and as usual excellent) &lt;a href=&quot;http://railscasts.com/&quot;&gt;Railscast&lt;/a&gt;, &lt;a href=&quot;http://railscasts.com/episodes/182-cropping-images&quot;&gt;Cropping Images&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As a part of integrating Tom’s changes I decided to tackle a load of bugs from the bug list to try and reduce the list so I can keep on top of it better going forward (a long list of open bugs is never conducive to getting any of them fixed).&lt;br /&gt;
&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;Here’s a full list of the changes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Added support for latest versions of Prototype &amp;amp; script.aculo.us (1.6.1.0 &amp;amp; 1.8.2 respectively). Changes provided by Tom Hirashima.&lt;/li&gt;
  &lt;li&gt;No-longer package prototype &amp;amp; script.aculo.us with the release&lt;/li&gt;
  &lt;li&gt;Changed tests to use google ajax libraries &lt;acronym title=&quot;Application Programming Interface&quot;&gt;API&lt;/acronym&gt; to load prototype &amp;amp; script.aculo.us&lt;/li&gt;
  &lt;li&gt;Added option to not auto include the cropper &lt;acronym title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/acronym&gt; file&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#00008&lt;/code&gt; - Fixed bug: Dynamic include of cropper &lt;acronym title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/acronym&gt; expected cropper.js and failed when using cropper.uncompressed.js&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#00028&lt;/code&gt; - Fixed bug: Doesn’t work with latest script.aculo.us - Fix by Tom Hirashima&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#00030&lt;/code&gt; - Fixed bug: Doesn’t work in Firefox 3.5 (&lt;acronym title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/acronym&gt; include issue)&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#00007&lt;/code&gt; - Fixed bug: onEndCrop isn’t called when moving with keys&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#00011&lt;/code&gt; - Fixed bug: The image that is to be cropped does not show in IE6.0 – included &lt;acronym title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/acronym&gt; fix&lt;/li&gt;
  &lt;li&gt;Tidied up source code &amp;amp; fixed issues that jslint found so it will compress better&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally as usual, please use the bug reporting link or discussion list mentioned on &lt;a href=&quot;/code/javascript-image-cropper-ui-using-prototype-scriptaculous/&quot;&gt;JavaScript Image Cropper UI code page&lt;/a&gt; rather than leaving comments to report bugs.&lt;/p&gt;

&lt;p&gt;Head over to the &lt;a href=&quot;/code/javascript-image-cropper-ui-using-prototype-scriptaculous/&quot;&gt;JavaScript Image Cropper UI code page&lt;/a&gt; for download and documentation.&lt;/p&gt;
</description>
				<pubDate>Tue, 06 Oct 2009 19:45:16 +0000</pubDate>
				<link>/archives/2009/10/06/update-javascript-image-cropper-ui-using-prototype-v-121/</link>
				<guid isPermaLink="true">/archives/2009/10/06/update-javascript-image-cropper-ui-using-prototype-v-121/</guid>
			</item>
		
			<item>
				<title>Where to Start With, open to all &#038; new feature</title>
				<description>&lt;p&gt;Just a very quick post to let you all know that my community-driven music recommendation site &lt;a href=&quot;http://wheretostartwith.com/&quot;&gt;Where to Start With&lt;/a&gt; has just left private beta. Not only that but we have launched what we think is a killer new feature, &lt;a href=&quot;http://blog.wheretostartwith.com/2009/07/13/goodbye-private-beta-hello-new-features/&quot;&gt;there is a lot more detail (and a screencast) in the blog post&lt;/a&gt; over at our Where to Start With blog.&lt;/p&gt;
</description>
				<pubDate>Mon, 13 Jul 2009 21:16:07 +0000</pubDate>
				<link>/archives/2009/07/13/where-to-start-with-open-to-all-new-feature/</link>
				<guid isPermaLink="true">/archives/2009/07/13/where-to-start-with-open-to-all-new-feature/</guid>
			</item>
		
			<item>
				<title>Introducing: My New F1-Focused Site F1Heat.com</title>
				<description>&lt;p&gt;&lt;a href=&quot;http://f1heat.com/&quot;&gt;&lt;br /&gt;
&lt;img class=&quot;featureImg&quot; src=&quot;http://www.defusion.org.uk/wp-content/uploads/2009/03/f1heat-screenshot.jpg&quot; alt=&quot;Screenshot of my new F1-focused site F1heat.com&quot; /&gt;&lt;br /&gt;
&lt;/a&gt; I have been thinking about writing articles on F1 on my here for quite a while, as I have found myself getting more and more interested by the sport (as of writing it is currently less 4 days, 1 hour and around 10 minutes before the start of the 2009 season and I can’t wait!) and getting more involved on F1 sites, with comments etc. I have also started to notice that in quite a lot of places that I would &lt;span&gt;like to write more than short comments (I don’t like to read essays in comments, so I try not to leave them too) but also I feel that I have more to add with original articles of my own. &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;So I’m going to give it a whirl, it might be rubbish - but lets hope not.&lt;/p&gt;

&lt;p&gt;However instead of posting on this site under an F1 category I decided to start a new site entirely dedicated to my F1 musings, to keep it separate from all the techy stuff I write here, so behold &lt;a href=&quot;http://f1heat.com/&quot;&gt;F1heat.com&lt;/a&gt;.&lt;/p&gt;
</description>
				<pubDate>Mon, 23 Mar 2009 01:07:08 +0000</pubDate>
				<link>/archives/2009/03/23/just-launched-my-new-f1-focused-site-f1heatcom/</link>
				<guid isPermaLink="true">/archives/2009/03/23/just-launched-my-new-f1-focused-site-f1heatcom/</guid>
			</item>
		
			<item>
				<title>Introducing: Wheretostartwith.com &#8211; Community Powered Music Recommendations</title>
				<description>&lt;p&gt;&lt;a href=&quot;http://wheretostartwith.com/&quot;&gt;&lt;br /&gt;
&lt;img class=&quot;featureImg&quot; src=&quot;http://www.defusion.org.uk/wp-content/uploads/2009/03/wtosw-thumb.gif&quot; alt=&quot;Screenshot of the Where To Start With homepage&quot; /&gt;&lt;br /&gt;
&lt;/a&gt; I’d like to introduce to you my brand new site &lt;a href=&quot;http://wheretostartwith.com/&quot;&gt;Where to Start With&lt;/a&gt;, which I have been working on in my spare time for a while (more on this in future posts).&lt;/p&gt;

&lt;p&gt;The elevator pitch for Where to Start With goes like this:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Where to Start With helps you when you’re trying out new bands and artists by providing community-powered recommendations written by die hard fans.&lt;/p&gt;

  &lt;p&gt;If that new band you want to try has 10 &lt;acronym title=&quot;Compact Disk&quot;&gt;CD&lt;/acronym&gt;’s out, then Where to Start With will give youâ€¦ well, where to start with them!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The whole idea behind this site came from a need me and my friend found ourselves having; many times we would hear a song or read about a band that sounded interesting but then when we did go to try that band we would find they had a handful of releases out already. Where is the best place to start with them? Traditionally unless you got a specific recommendation for an album you would just try the lucky dip approach and hope you found a winner. If you got lucky you might have just found your new favourite band, however if you picked a rotten egg you may dismiss your potential new favourite band based on your opinion of one of their poorer releases.&lt;br /&gt;
&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;A personal example was when I was recommended to listen to Porcupine Tree and given one song to try. That song was awesome, however Porcupine Tree have a massive back-catalogue (9 albums, 6 live/compilation albums and 4 EPs) and from trying a few releases out I found that they are very diverse and I still haven’t managed to get into them, although from that initial song I really wish I could. What I really needed was a guide to tell me where to actually start with Porcupine Tree, for example something that said “for starting out with Porcupine Tree what you really need to buy first is their album X”.&lt;/p&gt;

&lt;p&gt;This is how &lt;a href=&quot;http://wheretostartwith.com/&quot;&gt;Where to Start With&lt;/a&gt; was born and also basically how it works – each band or artist will have an article about them which gives a short history/description of the band and each of their main releases (e.g. Albums &amp;amp; E.P.’s) with a little description. Any user can add these articles and each article is in the wiki-style, e.g. anyone can edit the descriptions to add new information and fix mistakes etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The real core&lt;/strong&gt; of the site comes into play w_hen people start adding their opinions_ on artists, once again anyone can do this, but it is better for people who are currently fans of the artist to add their opinion. Each opinion includes a rating, a recommendation (more on those later) and a personal comment on each of the albums for the artist. We then take these opinions and produce an article that gives you recommendations on where to start with the artist, what to try after that and even sometimes what to avoid.&lt;/p&gt;

&lt;h2 id=&quot;what-makes-this-different-to-other-sites&quot;&gt;What makes this different to other sites?&lt;/h2&gt;

&lt;p&gt;Well, whereas other sites, software and services may give you reviews, the most popular or most listened to albums those may not necessarily be the best releases to start off with a new artist.&lt;/p&gt;

&lt;p&gt;For instance Reefs debut album “Replenish” is absolutely amazing and one of my all time favourite albums, however pretty much anyone interested in starting with Reef would be best advised to start with their second album “Glow”, which is much more accessible in general. Another clear example would be Nirvana, I personally hardly ever listen to Nirvana’s “Nevermind” album any more (as I know all of Nirvana’s albums inside and out, every cough and guitar string noise included) and I would rate “In Utero” as my favourite album however “Nevermind” obviously would be the album I would recommend anyone new to Nirvana should start out with.&lt;/p&gt;

&lt;p&gt;But going further than that after you have tried the “essential” release &lt;a href=&quot;http://wheretostartwith.com/&quot;&gt;Where to Start With&lt;/a&gt; helps you with which release to follow the essential release with, a wildcard album and even sometimes what to avoid - these can be really difficult to determine from the other methods.&lt;/p&gt;

&lt;h2 id=&quot;about-the-recommendations&quot;&gt;About the recommendations.&lt;/h2&gt;

&lt;p&gt;Each &lt;a href=&quot;http://wheretostartwith.com/&quot;&gt;Where to Start With&lt;/a&gt; article can have the following recommendations for each release to help guide you:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Essential&lt;/strong&gt;: The the first release to try, the best introduction to the artist.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Follow with&lt;/strong&gt;: The next release to try after the essential release.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Also recommended&lt;/strong&gt;: Another good release to try.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Wildcard&lt;/strong&gt;: A release that may not be “the norm” for the artist but still could be interesting. If you try the essential release and weren’t so keen this should be different enough to be worth a try.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Avoid&lt;/strong&gt;: Yes, some users will also tell you what to avoid.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The votes of each person on each release are added up to ensure that each article has one of each of the above recommendations (where applicable) and the more opinions that are added the better the recommendations become. You also have access to personal comments of each person who gave their opinion to give you a better insight into why they voted how they voted. And finally, just in case there is a close call between releases you can also see the breakdown of the votes for each release.&lt;/p&gt;

&lt;h2 id=&quot;sounds-great-how-do-i-get-started&quot;&gt;Sounds great, how do I get started?&lt;/h2&gt;

&lt;p&gt;Well we’re currently in private beta and have been running with a small handful of users for the past couple of weeks but are accepting &lt;a href=&quot;http://wheretostartwith.com/&quot;&gt;applications to the beta&lt;/a&gt; and &lt;strong&gt;adding new users on a daily basis&lt;/strong&gt;. The reason we’re currently in private beta is to ensure that the platform is solid and discover any issues, we’re not sure how long this will take but we obviously want to be out of beta as soon as possible. We also have setup a dedicated &lt;a href=&quot;http://blog.wheretostartwith.com/&quot;&gt;blog for Where to Start With&lt;/a&gt; which you can follow if you want to be kept up to date with progress of the beta and other new things (as we’re not finished adding features yet).&lt;/p&gt;

&lt;h2 id=&quot;its-working-for-me-already&quot;&gt;It’s working for me already!&lt;/h2&gt;

&lt;p&gt;Even with the small handful of users in the initial phase of the private beta I’ve already found one new band who I would have probably a) never heard of and b) not known where to start with without the site. There is more on this in the post &lt;a href=&quot;http://blog.wheretostartwith.com/2009/02/28/its-working-for-us/&quot;&gt;It’s working for us&lt;/a&gt; on &lt;a href=&quot;http://blog.wheretostartwith.com/&quot;&gt;our blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So &lt;a href=&quot;http://wheretostartwith.com/&quot;&gt;give it a whirl&lt;/a&gt;, and do get in touch to give us your thoughts etc.&lt;/p&gt;
</description>
				<pubDate>Fri, 06 Mar 2009 18:52:38 +0000</pubDate>
				<link>/archives/2009/03/06/introducing-wheretostartwithcom-community-powered-music-recommendations/</link>
				<guid isPermaLink="true">/archives/2009/03/06/introducing-wheretostartwithcom-community-powered-music-recommendations/</guid>
			</item>
		
			<item>
				<title>A Nice Rebuttal To The Hulu Situation</title>
				<description>&lt;p&gt;Just to get you up to speed if you don’t know what Hulu is and what situation is before I get to the rebuttal I found today:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.hulu.com/&quot;&gt;Hulu&lt;/a&gt; is a (US only) website which allows you to stream TV shows (in pretty good quality) to your computer via Flash, it has deals with some of the major US TV companies and has shows added very shortly after they are originally aired and seem to stay available online for a long time (e.g. much more than the 7 days you get with the iPlayer). You get very few advert interruptions, roughly 4 or 5 for a program that would run an hour on TV, and the adverts generally only last around 15 seconds or so, aiming to take the amount of time that you would normally spend fast forwarding through 3+ minutes worth of adverts if you recorded a program on your PVR.&lt;/p&gt;

&lt;p&gt;It really is a top-notch user experience and it is the kind of thing that could really take off big, and from what I’ve seen of other services is the closest thing in to my &lt;a href=&quot;/archives/2008/01/18/iplayer-my-first-thoughts-must-try-harder/&quot;&gt;In an ideal world thoughts&lt;/a&gt; when I wrote about the BBC iPlayer over a year ago.&lt;br /&gt;
&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.boxee.tv/&quot;&gt;boxee&lt;/a&gt; is a wonderful-looking piece of media centre software (which by the way is going to be running on my next media centre when I get round to doing that) that not only allows you to play media on your machine or from &lt;acronym title=&quot;Digital Video Disc&quot;&gt;DVD&lt;/acronym&gt;’s etc. but also connects to some popular TV streaming websites – such as the BBC iPlayer, Hulu and more.&lt;/p&gt;

&lt;p&gt;The “situation” is that &lt;a href=&quot;http://origin-blog.hulu.com/2009/2/18/doing-hard-things&quot;&gt;Hulu has been forced by the content providers to not support boxee any more&lt;/a&gt;, their &lt;a href=&quot;http://origin-blog.hulu.com/2009/2/18/doing-hard-things&quot;&gt;blog post&lt;/a&gt; on the situation and &lt;a href=&quot;http://blog.boxee.tv/2009/02/18/the-hulu-situation/&quot;&gt;boxee’s thoughts on the situation&lt;/a&gt; are both well worth reading (basic I think they both boil down to neither party, Hulu &amp;amp; boxee, wanted this to happen but the TV companies forced the issue).&lt;/p&gt;

&lt;p&gt;So that’s the situation, and it has not being received very well (see the 400+ comments &lt;a href=&quot;http://blog.boxee.tv/2009/02/18/the-hulu-situation/&quot;&gt;on the boxee blog&lt;/a&gt; for a start).&lt;/p&gt;

&lt;p&gt;I personally don’t understand it, I assume that the TV companies don’t pay Hulu to support their distribution costs - so it probably costs them next to nothing – but will probably be &lt;em&gt;currently&lt;/em&gt; providing them less revenue than traditional broadcasting. However why they see a difference between using a piece of software to make getting &lt;strong&gt;TV programs&lt;/strong&gt; onto your &lt;strong&gt;TV&lt;/strong&gt; a little bit easier than using a browser on the same machine really makes no sense.&lt;/p&gt;

&lt;p&gt;This is the kind of thing that leads people to fall back to other almost-as-frictionless means of getting the same content we currently have available, which of course currently means torrents. And that is what the &lt;a href=&quot;http://lifehacker.com/5156515/get-hulu-content-on-your-tv-without-hulus-help&quot;&gt;rebuttal on lifehacker basically says and shows you what to do if you were so inclined.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My guess is this whole situtation thing is because the media companies are currently doing deals with set-top box companies to make hardware to do the same thing as the boxee/hulu combination, but obviously with more control, more revenue for them and probably more adverts, more restrictions and a less polished user experience.&lt;/p&gt;
</description>
				<pubDate>Fri, 20 Feb 2009 00:46:02 +0000</pubDate>
				<link>/archives/2009/02/20/a-nice-rebuttal-to-the-hulu-situation/</link>
				<guid isPermaLink="true">/archives/2009/02/20/a-nice-rebuttal-to-the-hulu-situation/</guid>
			</item>
		
			<item>
				<title>Quick Link: Dead simple task scheduling in Rails</title>
				<description>&lt;p&gt;I’ve just come across this post on &lt;a href=&quot;http://www.intridea.com/posts/dead-simple-task-scheduling-in-rails&quot;&gt;dead simple task scheduling in Rails&lt;/a&gt; by the guys at &lt;a href=&quot;http://www.intridea.com/&quot;&gt;intridea&lt;/a&gt;. It looks like a really nifty way to setup scheduled tasks in your Rails app, previously I had my tasks in rake files which I would then hit with cron.&lt;/p&gt;

&lt;p&gt;While that is working perfectly adequately for my current setup it does have one downside, when I setup a new server I will have to setup the crontab file too. With &lt;a href=&quot;http://www.intridea.com/posts/dead-simple-task-scheduling-in-rails&quot;&gt;this method&lt;/a&gt; when I deploy my app my scheduled tasks would get deployed and be running out of the box. Nice.&lt;/p&gt;
</description>
				<pubDate>Sat, 14 Feb 2009 11:23:04 +0000</pubDate>
				<link>/archives/2009/02/14/quick-link-dead-simple-task-scheduling-in-rails/</link>
				<guid isPermaLink="true">/archives/2009/02/14/quick-link-dead-simple-task-scheduling-in-rails/</guid>
			</item>
		
			<item>
				<title>Customer Satisfaction Tip From The Dentist &#8211; Empathise with your customers situation</title>
				<description>&lt;p&gt;Yesterday I went for a root canal. I wasn’t entirely sure what the process involved and somewhere in the past I had gotten it into my head that a root canal could possibly be quite unpleasant. However I have never really had much of a problem with going to the dentist or having work done on my teeth so I wasn’t worried (much), but I can imagine that others might not be so lucky.&lt;/p&gt;

&lt;p&gt;I had been referred to a dentist that specialises in doing root canals, so this was my first visit to this dentist and he did a few things that showed he really empathised with his customer.&lt;br /&gt;
&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;When I arrived one of the first things that the receptionist asked me to do was to pick a music &lt;acronym title=&quot;Compact Disk&quot;&gt;CD&lt;/acronym&gt; from a list of 100, which seemed a little strange but I didn’t ask any questions.&lt;/p&gt;

&lt;p&gt;What the dentist did when I entered his room really showed me that he empathised with people who had to undergo this (hour long) treatment. It included the following:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;He spent about 5 minutes explaining the procedure in detail with me, explaining what each step would entail and what the goals of each step were and answered any questions clearly.&lt;/li&gt;
  &lt;li&gt;When he was giving me the injection to numb my mouth he gave me extra just to make sure - as my tooth had been causing me some pain before hand.&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;And here’s the big one.&lt;/em&gt; As I couldn’t do anything for the hour I was there, except sit still, the music “&lt;acronym title=&quot;Compact Disk&quot;&gt;CD&lt;/acronym&gt;” I’d chosen from the list turned out to actually be a music &lt;acronym title=&quot;Digital Video Disc&quot;&gt;DVD&lt;/acronym&gt; which he played on a plasma screen on the ceiling directly above me.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;How considerate is that? Now I couldn’t hear it all the time, but most of the time I could, and in any case it gave me something to help pass the time and to think about/concentrate on during the hour I couldn’t do or say anything. If I’d know that’s what the choice of music was for I’d have spent a little longer looking at the list.&lt;/p&gt;

&lt;p&gt;I don’t know if other dentists do this, as I have been with my dentist my entire life, or if this one came up with it all by himself, but either way it shows that he empathised with the customer and their situation by doing a few small things that made the process easier for me (and in turn probably easier on him too).&lt;/p&gt;
</description>
				<pubDate>Fri, 13 Feb 2009 18:38:29 +0000</pubDate>
				<link>/archives/2009/02/13/customer-satisfaction-tip-from-the-dentist-empathise-with-your-customers-situation/</link>
				<guid isPermaLink="true">/archives/2009/02/13/customer-satisfaction-tip-from-the-dentist-empathise-with-your-customers-situation/</guid>
			</item>
		
	</channel>
</rss>
