

<?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>rossboardman.com&#187; Links Archives  &#8211; Ross Boardman: rossboardman.com</title>
	<atom:link href="http://www.rossboardman.com/links/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rossboardman.com</link>
	<description>Survival Tips For A Ginger-Hating World</description>
	<lastBuildDate>Sat, 05 Jun 2010 16:55:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>iamhuman</title>
		<link>http://www.rossboardman.com/links/iamhuman</link>
		<comments>http://www.rossboardman.com/links/iamhuman#comments</comments>
		<pubDate>Sun, 11 Jan 2009 10:05:08 +0000</pubDate>
		<dc:creator>rossboardman</dc:creator>
				<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://delicious.com/url/870cd32946d632c9a9db9f894588b4d5#rossboardman</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://www.rossboardman.com/links/iamhuman/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brenthaven Expandable Trek Backpack &#8211; Apple Store (U.K.)</title>
		<link>http://www.rossboardman.com/links/brenthaven-expandable-trek-backpack-apple-store-uk</link>
		<comments>http://www.rossboardman.com/links/brenthaven-expandable-trek-backpack-apple-store-uk#comments</comments>
		<pubDate>Sat, 10 Jan 2009 15:48:18 +0000</pubDate>
		<dc:creator>rossboardman</dc:creator>
				<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://delicious.com/url/3765dd6924e62a59774c5c360bfb15a2#rossboardman</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://www.rossboardman.com/links/brenthaven-expandable-trek-backpack-apple-store-uk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter icons</title>
		<link>http://www.rossboardman.com/design/twitter-icons</link>
		<comments>http://www.rossboardman.com/design/twitter-icons#comments</comments>
		<pubDate>Sat, 10 Jan 2009 14:26:43 +0000</pubDate>
		<dc:creator>rossboardman</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://delicious.com/url/9551fcaada908a398421bb12f758b36d#rossboardman</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://www.rossboardman.com/design/twitter-icons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Impressed Dry Cleaning</title>
		<link>http://www.rossboardman.com/links/impressed-dry-cleaning</link>
		<comments>http://www.rossboardman.com/links/impressed-dry-cleaning#comments</comments>
		<pubDate>Sat, 10 Jan 2009 12:26:02 +0000</pubDate>
		<dc:creator>rossboardman</dc:creator>
				<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://delicious.com/url/2edcae31a61bfa48d5f8a133adcf7800#rossboardman</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://www.rossboardman.com/links/impressed-dry-cleaning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What my baby would look like if I had sex with myself</title>
		<link>http://www.rossboardman.com/random/what-my-baby-would-look-like-if-i-had-sex-with-myself</link>
		<comments>http://www.rossboardman.com/random/what-my-baby-would-look-like-if-i-had-sex-with-myself#comments</comments>
		<pubDate>Fri, 09 Jan 2009 22:08:46 +0000</pubDate>
		<dc:creator>rossboardman</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[Random]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[<p><a rel="nofollow" target="_blank" href="http://www.flickr.com/people/rossboardman/">rossboardman</a> posted a photo:</p>
<p><a rel="nofollow" target="_blank" href="http://www.flickr.com/photos/rossboardman/3182584423/" title="What my baby would look like if I had sex with myself"><img src="http://farm4.static.flickr.com/3484/3182584423_07e2614d50.jpg" alt="What my baby would look like if I had sex with myself"/></a></p> <p>Such a promising idea. Disappointing result. Not even ginger</p>]]></description>
			<content:encoded><![CDATA[<p><a rel="nofollow"  href="http://www.flickr.com/people/rossboardman/">rossboardman</a> posted a photo:</p>
<p><a rel="nofollow"  href="http://www.flickr.com/photos/rossboardman/3182584423/" title="What my baby would look like if I had sex with myself"><img src="http://farm4.static.flickr.com/3484/3182584423_07e2614d50.jpg" alt="What my baby would look like if I had sex with myself"/></a></p> <p>Such a promising idea. Disappointing result. Not even ginger</p>]]></content:encoded>
			<wfw:commentRss>http://www.rossboardman.com/random/what-my-baby-would-look-like-if-i-had-sex-with-myself/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML 5: The Markup Language</title>
		<link>http://www.rossboardman.com/links/html-5-the-markup-language</link>
		<comments>http://www.rossboardman.com/links/html-5-the-markup-language#comments</comments>
		<pubDate>Wed, 07 Jan 2009 23:57:31 +0000</pubDate>
		<dc:creator>rossboardman</dc:creator>
				<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://delicious.com/url/6933cca85de8a8916f7166168967e398#rossboardman</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://www.rossboardman.com/links/html-5-the-markup-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple Introduces Revolutionary New Laptop With No Keyboard &#124; The Onion &#8211; America&#8217;s Finest News Source</title>
		<link>http://www.rossboardman.com/random/apple-introduces-revolutionary-new-laptop-with-no-keyboard-the-onion-americas-finest-news-source</link>
		<comments>http://www.rossboardman.com/random/apple-introduces-revolutionary-new-laptop-with-no-keyboard-the-onion-americas-finest-news-source#comments</comments>
		<pubDate>Wed, 07 Jan 2009 23:51:27 +0000</pubDate>
		<dc:creator>rossboardman</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://delicious.com/url/6983a82e6f7528eebc9198d96bdec3b4#rossboardman</guid>
		<description><![CDATA[&#34;Everything is just a few clicks away&#34;]]></description>
			<content:encoded><![CDATA[<p>&quot;Everything is just a few clicks away&quot;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rossboardman.com/random/apple-introduces-revolutionary-new-laptop-with-no-keyboard-the-onion-americas-finest-news-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Front-end Performance: Doing More With Less</title>
		<link>http://www.rossboardman.com/ecommerce/front-end-performance-doing-more-with-less</link>
		<comments>http://www.rossboardman.com/ecommerce/front-end-performance-doing-more-with-less#comments</comments>
		<pubDate>Wed, 07 Jan 2009 22:05:23 +0000</pubDate>
		<dc:creator>rossboardman</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[eCommerce]]></category>

		<guid isPermaLink="false">http://code.flickr.com/blog/?p=437</guid>
		<description><![CDATA[In a recent talk on ajax performance, Douglas Crockford explained the practice of &#8220;streamlining&#8221; code as including algorithm replacement, work avoidance and code removal.
Applying this to page load time and performance, browser &#8220;work&#8221; can be avoided by reducing the number of HTTP requests made. In the most common case this can mean eliminating images entirely [...]]]></description>
			<content:encoded><![CDATA[<p>In a recent talk on <a href="http://yuiblog.com/blog/2008/12/23/video-crockford-performance/" rel="nofollow"  title="Douglas Crockford on Ajax Performance">ajax performance</a>, Douglas Crockford explained the practice of &#8220;streamlining&#8221; code as including algorithm replacement, work avoidance and code removal.</p>
<p>Applying this to page load time and performance, browser &#8220;work&#8221; can be avoided by reducing the number of HTTP requests made. In the most common case this can mean eliminating images entirely from a design, or reducing multiple image references to a single sprite image where possible. Shaving off image requests is a wonderful way to incrementally improve both perceived and measured performance.</p>
<p>The use of sprites alone is not a new technique, but the approach taken in this case involves a low-cost, low-risk update to a common component based on legacy code, reduces the number of HTTP requests and simultaneously improves the UI &#8211; all good things!</p>
<h2>Legacy code: The good and the bad</h2>
<p>Flickr has UI components and widgets which have worked well for years, but can also benefit from newer development techniques such as sprite-based images. Rounded-corner dialogs including alpha-transparent drop-shadows are two prime examples, obvious subjects for optimization. There is some risk in modifying code which may be used in hundreds of places, so minimizing changes to the HTML structure is important.</p>
<p>In this particular case, legacy table-based code was used to do layout for a rounded-corner dialog, and a separate table element was used to position a drop-shadow underneath it. Both elements used separate images for each edge of the box, resulting in eight HTTP requests for the dialog and another eight for the shadow.</p>
<div>
<a href="http://flickr.com/photos/schill/3161361998/" rel="nofollow"  title="Doing more with less by .schill on Flickr"><img src="http://farm4.static.flickr.com/3292/3161361998_7599714316.jpg?v=1230944096" alt="Screenshot: Saving HTTP requests with CSS and sprites" /></a></p>
<p>Dialog and drop shadow performance optimizations (border-radius + CSS sprites) save up to 15 HTTP requests, in this example (adding a note to a photo on Flickr.)</p>
</div>
<h2>Retrofitting legacy code in a low-risk way</h2>
<p>In modifying the drop-shadow code while maintaining backwards-compatibility, the src property of each corner image was set to a transparent 1&#215;1 GIF image; width and height were already specified on these elements, so the layout is retained as if the original image were being used. Additionally, a CSS class applied the sprite as a background image and a second class provided the background-position offset.</p>
<p>For the rounded corner dialogs, eight image requests were completely eliminated for browsers supporting CSS&#8217; <a href="http://www.the-art-of-web.com/css/border-radius/" rel="nofollow"  title="A few nifty border-radius CSS examples">border-radius</a> property. Additionally, the rounded corners are now anti-aliased in several browsers &#8211; a further improvement over the old GIF-based &#8220;jaggies.&#8221; </p>
<p>While not as &#8220;clean&#8221; as a complete code rewrite, this incremental approach improved performance and did so with minimal chance of introducing bugs in a global component.</p>
<h3 style="margin-top:2em">Related resources</h3>
<p>Some helpful, free tools were used in creating both the sprite and CSS for these performance tweaks.</p>
<ul>
<li><a href="http://smushit.com/" rel="nofollow"  title="Smushit.com image optimization tool">Smushit.com</a><br />Web-based image optimizer, shave (potentially many) bytes off GIF/PNG images</li>
<li><a href="http://spritegen.website-performance.org/" rel="nofollow"  title="CSS sprite generator">CSS sprite generator</a><br />Upload a .zip of images, set some parameters, and get a sprite with the CSS generated automagically! Quite handy.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.rossboardman.com/ecommerce/front-end-performance-doing-more-with-less/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
