<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Robert's talk</title>
	
	<link>http://robertnyman.com</link>
	<description>Web development and Internet trends</description>
	<lastBuildDate>Thu, 11 Mar 2010 14:44:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/robertnyman" /><feedburner:info uri="robertnyman" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><image><link>http://www.robertnyman.com</link><url>http://www.robertnyman.com/favicon.png</url><title>Robert's talk</title></image><feedburner:emailServiceId>robertnyman</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Do hidden elements load background images?</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/8aUcVuF0eHQ/</link>
		<comments>http://robertnyman.com/2010/03/11/do-hidden-elements-load-background-images/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 14:43:41 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1711</guid>
		<description><![CDATA[One thing I have always pondered about is whether elements that are hidden will load any images associated with it, either inline or through CSS, directly at page load. And apparently, my colleague Jonatan Larsson has as well. 
Jonatan and I discussed this back and forth, how it actually works and how we&#8217;d want it [...]]]></description>
			<content:encoded><![CDATA[<p>One thing I have always pondered about is whether elements that are hidden will load any images associated with it, either inline or through CSS, directly at page load. And apparently, my colleague <a href="http://lillbra.se/">Jonatan Larsson</a> has as well. </p>
<p>Jonatan and I discussed this back and forth, how it actually works and how we&#8217;d <em>want</em> it to work. Both he and I felt fairly certain that if an element, for instance, had a background image associated with it but was hidden (i.e. has <code>display: none</code>), it wouldn&#8217;t load its background image until it was shown.</p>
<p>So, Jonatan set about on doing some tests and his findings were that images for hidden elements, set via CSS or inline in the element, would load every time &#8211; contrary to what we thought/expected.</p>
<p>Part of me thinks this is good that when the element is shown, everything is already loaded and will look good, but the performance fan in me is thinking that a web browser should only load what is actually displayed.</p>
<p>What would you want or expect? And do you have any other findings</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=8aUcVuF0eHQ:IlDgdHIF8H0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=8aUcVuF0eHQ:IlDgdHIF8H0:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=8aUcVuF0eHQ:IlDgdHIF8H0:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=8aUcVuF0eHQ:IlDgdHIF8H0:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/03/11/do-hidden-elements-load-background-images/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/03/11/do-hidden-elements-load-background-images/</feedburner:origLink></item>
		<item>
		<title>Is WebKit too fast for its own good?</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/w9nWfj3oZSA/</link>
		<comments>http://robertnyman.com/2010/03/09/is-webkit-too-fast-for-its-own-good/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 08:24:32 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1709</guid>
		<description><![CDATA[Let me start by saying I have the utmost respect for the WebKit team, and all the amazing things they have delivered with their rendering engine. Also, very important, for putting pressure on other rendering engine vendors and making them step up.
What I would like to talk about today is the rendering speed in WebKit. [...]]]></description>
			<content:encoded><![CDATA[<p>Let me start by saying I have the utmost respect for the <a href="http://webkit.org/">WebKit</a> team, and all the amazing things they have delivered with their rendering engine. Also, very important, for putting pressure on other rendering engine vendors and making them step up.</p>
<p>What I would like to talk about today is the rendering speed in WebKit. As we all know, it is very fast and has gotten very good standards support, combined with a number of new exciting features.</p>
<p>But, as of lately, when testing a couple of web sites I have worked on, I have experienced rendering glitches in both Google Chrome and Safari (both based on WebKit). Or rather, inconsistencies. It always loads very fast, but it&#8217;s just that things might look weird (as in things not positioned exactly where expected, miscalculated height values in script after the <code>DOMContentLoaded</code> event has fired (which naturally depends on each web browser&#8217;s JavaScript engine of choice) etc), and then after a reload, all those problems go away. It&#8217;s also hard to recreate these issues since they don&#8217;t happen every time, but just occasionally.</p>
<p>Let me be the first to say that it might just be my code that sucks, that I should try another approach in some scenarios and that there&#8217;s no more to it. However, these web sites/pages have never once shown any inconsistencies in Firefox or even Internet Explorer, which does makes me wonder.</p>
<p>Currently we have a performance war between web browsers, and we all know that rendering speed is a quite important part in creating a good end user experience. But, if this is at the cost of inconsistent rendering, I don&#8217;t want it, and it makes me wonder if the WebKit rendering is sometimes too fast for its own good?</p>
<p>Am I the only one who has experienced this, or have you seen this too?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=w9nWfj3oZSA:pxqjrKvqvHE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=w9nWfj3oZSA:pxqjrKvqvHE:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=w9nWfj3oZSA:pxqjrKvqvHE:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=w9nWfj3oZSA:pxqjrKvqvHE:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/03/09/is-webkit-too-fast-for-its-own-good/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/03/09/is-webkit-too-fast-for-its-own-good/</feedburner:origLink></item>
		<item>
		<title>No more version of Mac OS X?</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/9_SylGsQPZM/</link>
		<comments>http://robertnyman.com/2010/03/08/no-more-version-of-mac-os-x/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 10:05:24 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Apple/Mac]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1706</guid>
		<description><![CDATA[I recently read a, to say the least, interesting prediction about the future of Mac OS X.
In the latest issue of the Swedish Macworld magazine they interviewed a number of developers about iPad and what they believe about it&#8217;s future. Amongst them, Jayway iTeam CTO Fredrik claimed/envisioned that iPhone OS X will be the new [...]]]></description>
			<content:encoded><![CDATA[<p>I recently read a, to say the least, interesting prediction about the future of Mac OS X.</p>
<p>In the latest issue of the Swedish Macworld magazine they interviewed a number of developers about iPad and what they believe about it&#8217;s future. Amongst them, <a href="http://www.jayway.se" class="in-swedish">Jayway</a> iTeam CTO Fredrik claimed/envisioned that iPhone OS X will be the new Mac OS X, and that there will be no Mac OS X 11, and maybe not even a Mac OS X 10.8.</p>
<p>Me myself being interviewed fairly frequently for magazines, I know it can be a misquote or not totally accurate, so I&#8217;ll give him the benefit of a doubt. But anyway, what if it were true?</p>
<h2>The <span class="lowercase">i</span>Pad</h2>
<p>Without delving too much into the iPad, and the various opinions about it being either the savior of computers or just being an enormous iPhone, I think we can all agree on that a fair amount of people will use it. And personally, I think the iPhone/iPad OS definitely has its place for less tech-savy users and also for more simple usage like reading mail, surfing the web, playing customized games etc. Seeing people using an iPhone for the first time, it is impressive how fast they learn it and adapt.</p>
<p>Using the screen keyboard on the iPhone (and most likely iPad as well) is tedious and inefficient to a real keyboard. And with the iPad, if you connect a keyboard, it kind of kills the purpose of a tablet-device, and I could just have a laptop instead.</p>
<h2>Mac OS X</h2>
<p>The main strength of Mac OS X is the many ways you can adapt and customize it. If you just want pretty applications, nice text rendering and easy application installations, that&#8217;s fine. But if you want to unleash the raw Unix power, terminal hacking and some deep-level coding, that&#8217;s just as much an option. And what I really like about it is the balance between these two, that I can have the best GUI and at the same time the full power behind the scenes.</p>
<p>And, most importantly, I can install and configure any application I want to.</p>
<h2>Don&#8217;t mix &#8216;em up</h2>
<p>I think the iPhone OS will be pretty good for iPad and similar devices, but I would never <em>ever</em> want it to, in any way, replace Mac OS X. Just imagine being forced to use iTunes on your computer, having the almighty App Store decide what you can install, being limited in choice, not to say the least, in choice of web browser, mail application etc. I strongly believe a full operating system will always have its place, especially when it comes to choice and personal control.</p>
<p>If the full Mac OS X would be replaced by something iPhone OS-like, my switch to something Linux-based (probably Ubuntu) would happen very soon.</p>
<p>What are your thoughts?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=9_SylGsQPZM:i_ZDy3xs9OU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=9_SylGsQPZM:i_ZDy3xs9OU:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=9_SylGsQPZM:i_ZDy3xs9OU:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=9_SylGsQPZM:i_ZDy3xs9OU:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/03/08/no-more-version-of-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/03/08/no-more-version-of-mac-os-x/</feedburner:origLink></item>
		<item>
		<title>The price of our hunt for better technology</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/MaFQWdT80r0/</link>
		<comments>http://robertnyman.com/2010/03/01/the-price-of-our-hunt-for-better-technology/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 20:45:30 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Personal/life]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1704</guid>
		<description><![CDATA[We rush away in our lives, whining about slow computers and constantly have more and more demands. Maybe it&#8217;s time to take one step back and look at the consequences of our desires.
My friend Steven Clark has written in 6 Million Reasons to Reconsider your Next Upgrade about the war in Congo, and how the [...]]]></description>
			<content:encoded><![CDATA[<p>We rush away in our lives, whining about slow computers and constantly have more and more demands. Maybe it&#8217;s time to take one step back and look at the consequences of our desires.</p>
<p>My friend Steven Clark has written in <a href="http://stevenclark.com.au/2009/10/31/6-million-reasons-to-reconsider-your-next-upgrade/">6 Million Reasons to Reconsider your Next Upgrade</a> about the war in Congo, and how the world&#8217;s constant urge for minerals leads to terrible and inhuman actions &#8211; approximately 45 000 people die every month.</p>
<p>Please read Steven&#8217;s article, consider the impact of your choices and think about what you can possibly do to make a change.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=MaFQWdT80r0:cbhmJDMLsmg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=MaFQWdT80r0:cbhmJDMLsmg:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=MaFQWdT80r0:cbhmJDMLsmg:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=MaFQWdT80r0:cbhmJDMLsmg:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/03/01/the-price-of-our-hunt-for-better-technology/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/03/01/the-price-of-our-hunt-for-better-technology/</feedburner:origLink></item>
		<item>
		<title>Geek Meet March 29th 2010 – Internet Explorer Evangelist Giorgio Sardo speaking</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/KLsK56tYQwc/</link>
		<comments>http://robertnyman.com/2010/02/26/geek-meet-march-2010-internet-explorer-evangelist-giorgio-sardo-speaking/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 08:41:47 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[Geek Meet]]></category>
		<category><![CDATA[HTML5/HTML/XHTML]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1697</guid>
		<description><![CDATA[Time for another Geek Meet, and this time, we&#8217;l be trying something new.  
Our speaker
Joining us this time around is Giorgio Sardo who is a Microsoft Technical Evangelist/Internet Explorer Evangelist who will talk about Internet Explorer. The idea is to first have Giorgio talk about what has been implemented in IE 8, HTML5 features [...]]]></description>
			<content:encoded><![CDATA[<p>Time for another Geek Meet, and this time, we&#8217;l be trying something new. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h2>Our speaker</h2>
<p>Joining us this time around is <a href="http://blogs.msdn.com/giorgio/">Giorgio Sardo</a> who is a Microsoft Technical Evangelist/Internet Explorer Evangelist who will talk about Internet Explorer. The idea is to first have Giorgio talk about what has been implemented in IE 8, HTML5 features and also share what&#8217;s coming in IE 9. Then, after the break, I hope we can have an open and constructive Q&amp;A where we can discuss various things we would love to talk about.</p>
<h2>The schedule</h2>
<p>The preliminary schedule of the evening looks like this:</p>
<ul>
<li>18:00 Mingle and getting your seats. <em>Please</em> show up at six sharp.</li>
<li>18:30 First talk about IE 8, HTML5 and IE 9</li>
<li>19:30 Pizza and drinks (beer &amp; wine)</li>
<li>20:30 Q&amp;A about Internet Explorer</li>
<li>21:15 Mingle, and assorted fun <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
</ul>
<h2>Date &amp; Location</h2>
<p>The event will be March 29th and hosted by my employer <a href="http://valtech.se/">Valtech</a>, and the location is at <a href="http://www.hitta.se/ViewDetailsPink.aspx?Vkiid=qw7ORuq45m2s76ou4fRdhg%253d%253d&amp;vad=valtech">Hantverkargatan 5 in Stockholm</a>.</p>
<h2>Sign up now!</h2>
<p>There are <strong>130</strong> seats available, so write a comment below now to get a seat! Please do not write a comment if you aren&#8217;t certain that you can attend.</p>
<div class="important-notice">
	Geek Meet is now full! Please write a comment to be put on a waiting list.
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=KLsK56tYQwc:s_1Lq2ImDZ8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=KLsK56tYQwc:s_1Lq2ImDZ8:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=KLsK56tYQwc:s_1Lq2ImDZ8:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=KLsK56tYQwc:s_1Lq2ImDZ8:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/02/26/geek-meet-march-2010-internet-explorer-evangelist-giorgio-sardo-speaking/feed/</wfw:commentRss>
		<slash:comments>210</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/02/26/geek-meet-march-2010-internet-explorer-evangelist-giorgio-sardo-speaking/</feedburner:origLink></item>
		<item>
		<title>CSS display: inline-block: why it rocks, and why it sucks</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/R3hU3zCvKJo/</link>
		<comments>http://robertnyman.com/2010/02/24/css-display-inline-block-why-it-rocks-and-why-it-sucks/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 10:32:12 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1687</guid>
		<description><![CDATA[Usually when you want a horizontal list, you need to use float in the CSS code to make it work, with all its drawbacks. However, there is an alternative with display: inline-block.
Problems with float
The problem when you have float in your CSS code is that you need to take some precaution to make the surrounding [...]]]></description>
			<content:encoded><![CDATA[<p>Usually when you want a horizontal list, you need to use <code>float</code> in the CSS code to make it work, with all its drawbacks. However, there is an alternative with <code>display: inline-block</code>.</p>
<h2>Problems with <span class="lowercase">f</span>loat</h2>
<p>The problem when you have <code>float</code> in your CSS code is that you need to take some precaution to make the surrounding element to encompass the floated elements, and also to avoid following elements in the code to sneak up next to it. Another problem is that if you have a floated list that will take up several rows (visually speaking) and the content is of varying height, you are in for a world of hurt.</p>
<h2>Enter <span class="lowercase">d</span>isplay: <span class="lowercase">i</span>nline-block</h2>
<p>This is where the magic value <code>inline-block</code> for the <code>display</code> property comes into play. Basically, it&#8217;s a way to make elements inline, but preserving their block capabilities such as setting width and height, top and bottom margins and paddings etc. A simple example will look like this:</p>
<pre class="brush: html">&lt;style&gt;
	ul#display-inline-block-example,
	ul#display-inline-block-example li {
		/* Setting a common base */
		margin: 0;
		padding: 0;
	}

	ul#display-inline-block-example li {
		display: inline-block;
		width: 100px;
		min-height: 100px;
		background: #ccc;
	}
&lt;/style&gt;

&lt;ul id="display-inline-block-example"&gt;
	&lt;li&gt;Item one&lt;/li&gt;
	&lt;li&gt;Item two&lt;/li&gt;
	&lt;li&gt;Item three&lt;/li&gt;
&lt;/ul&gt;
</pre>
<h3>Rendered results</h3>
<style>	ul#display-inline-block-example,	ul#display-inline-block-example li {		/* Setting a common base */		margin: 0 0 1em;		padding: 0;	}		ul#display-inline-block-example li {		display: inline-block;		width: 100px;		min-height: 100px;		background: #ccc;	}</style>
<ul id="display-inline-block-example">
<li>Item one</li>
<li>Item two</li>
<li>Item three</li>
</ul>
<p>As you can see, <code>display: inline-block;</code> helps us here to render three square gray boxes next to each other. Awesome, right? However, with varying content, we need to add the property <code>vertical-align: top</code> to mkae sure everything is aligned to the top.</p>
<pre class="brush: html">&lt;style&gt;
	ul#display-inline-block-example,
	ul#display-inline-block-example li {
		/* Setting a common base */
		margin: 0;
		padding: 0;
	}

	ul#display-inline-block-example li {
		display: inline-block;
		width: 100px;
		min-height: 100px;
		background: #ccc;
		<strong>vertical-align: top;</strong>
	}
&lt;/style&gt;

&lt;ul id="display-inline-block-example"&gt;
	&lt;li&gt;Item one&lt;/li&gt;
	&lt;li&gt;Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two&lt;/li&gt;
	&lt;li&gt;Item three&lt;/li&gt;
&lt;/ul&gt;
</pre>
<h3>Rendered results</h3>
<style>	ul#display-inline-block-example,	ul#display-inline-block-example li {		/* Setting a common base */		margin: 0 0 1em;		padding: 0;	}		ul#display-inline-block-example li {		display: inline-block;		width: 100px;		min-height: 100px;		background: #ccc;		vertical-align: top;	}</style>
<ul id="display-inline-block-example">
<li>Item one</li>
<li>Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two</li>
<li>Item three</li>
</ul>
<p>This will render just fine in Firefox, Safari, Google Chrome and IE 8. However, for older versions of Internet Explorer, we need to trigger <a href="http://www.satzansatz.de/cssd/onhavinglayout.html">hasLayout</a> and also use a little hack to set the <code>display</code> to <code>inline</code> (note that this code could be in a separate stylesheet for IE, included via <a href="http://msdn.microsoft.com/en-us/library/ms537512%28VS.85%29.aspx">conditional comments</a> &#8211; it&#8217;s inline here out of simplicity for this example):</p>
<pre class="brush: html">&lt;style&gt;
	ul#display-inline-block-example,
	ul#display-inline-block-example li {
		/* Setting a common base */
		margin: 0;
		padding: 0;
	}

	ul#display-inline-block-example li {
		display: inline-block;
		width: 100px;
		min-height: 100px;
		background: #ccc;
		vertical-align: top;

		<strong>/* For IE 7 */
		zoom: 1;
		*display: inline;</strong>
	}
&lt;/style&gt;

&lt;ul id="display-inline-block-example"&gt;
	&lt;li&gt;Item one&lt;/li&gt;
	&lt;li&gt;Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two&lt;/li&gt;
	&lt;li&gt;Item three&lt;/li&gt;
&lt;/ul&gt;
</pre>
<h3>Rendered results that will work in IE 7 too</h3>
<style>	ul#display-inline-block-example,	ul#display-inline-block-example li {		/* Setting a common base */		margin: 0 0 1em;		padding: 0;	}		ul#display-inline-block-example li {		display: inline-block;		width: 100px;		min-height: 100px;		background: #ccc;		vertical-align: top;				/* For IE 7 */		zoom: 1;		*display: inline;	}</style>
<ul id="display-inline-block-example">
<li>Item one</li>
<li>Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two Item two</li>
<li>Item three</li>
</ul>
<h2>The enormous drawback</h2>
<p>I hope so far that I have managed to get you to realize the potential and simplicity of this approach. However, there&#8217;s one giant drawback, that might or might not apply to your use case. That is, since the elements become rendered inline, white-space in your HTML code will affect the rendering. That means, if we want perfect size and alignment, but we have space between the <code>LI</code> elements in our code example, it will render a 4 pixel margin to the right of each element.</p>
<p>Case in point, let&#8217;s make it more clear by giving the surrounding <code>UL</code> element a fixed width, wherein the <code>LI</code> elements <em>should</em> fit:</p>
<pre class="brush: html">&lt;style&gt;
	ul#display-inline-block-example,
	ul#display-inline-block-example li {
		/* Setting a common base */
		margin: 0;
		padding: 0;
	}

	ul#display-inline-block-example {
		width: 300px;
		border: 1px solid #000;
	}

	ul#display-inline-block-example li {
		display: inline-block;
		width: 100px;
		min-height: 100px;
		background: #ccc;
		vertical-align: top;

		<strong>/* For IE 7 */
		zoom: 1;
		*display: inline;</strong>
	}
&lt;/style&gt;

&lt;ul id="display-inline-block-example"&gt;
	&lt;li&gt;Item one&lt;/li&gt;
	&lt;li&gt;Item two&lt;/li&gt;
	&lt;li&gt;Item three&lt;/li&gt;
&lt;/ul&gt;
</pre>
<h3>Rendered results</h3>
<style>	ul#display-inline-block-example-with-width,	ul#display-inline-block-example-with-width li {		/* Setting a common base */		margin: 0 0 1em;		padding: 0;	}		ul#display-inline-block-example-with-width {		width: 300px;		border: 1px solid #000;	}		ul#display-inline-block-example-with-width li {		display: inline-block;		width: 100px;		min-height: 100px;		background: #ccc;		vertical-align: top;				/* For IE 7 */		zoom: 1;		*display: inline;	}</style>
<ul id="display-inline-block-example-with-width">
<li>Item one</li>
<li>Item two</li>
<li>Item three</li>
</ul>
<p>As you can see, the third item will now fall down to the next row. Which sucks! Hard! However, if we were to place the <code>LI</code> elements directly after each other, they would all be rendered in the same line:</p>
<pre class="brush: html">&lt;ul id="display-inline-block-example"&gt;
	&lt;li&gt;Item one&lt;/li&gt;&lt;li&gt;Item two&lt;/li&gt;&lt;li&gt;Item three&lt;/li&gt;
&lt;/ul&gt;</pre>
<h2>Conclusion</h2>
<p>So, the conclusion is that white-space dependent rendering blows! But, there are also great possibilities with <code>display: inline-block</code>, so I advise you to try it out, play around with it and see if it works fine in your specific context.</p>
<h3>Related reading</h3>
<p><a href="http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/">Cross-Browser Inline-Block</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=R3hU3zCvKJo:zuPlG-bKZ-Y:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=R3hU3zCvKJo:zuPlG-bKZ-Y:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=R3hU3zCvKJo:zuPlG-bKZ-Y:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=R3hU3zCvKJo:zuPlG-bKZ-Y:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/02/24/css-display-inline-block-why-it-rocks-and-why-it-sucks/feed/</wfw:commentRss>
		<slash:comments>135</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/02/24/css-display-inline-block-why-it-rocks-and-why-it-sucks/</feedburner:origLink></item>
		<item>
		<title>CSS files downloaded twice in Internet Explorer with protocol relative URLs</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/AnthqrhHnZI/</link>
		<comments>http://robertnyman.com/2010/02/18/css-files-downloaded-twice-in-internet-explorer-with-protocol-relative-urls/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 13:14:32 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[HTML5/HTML/XHTML]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1675</guid>
		<description><![CDATA[I think we can all agree that performance of web sites matters a lot, and slow web sites are very annoying both for developers and, more importantly, end users. Therefore, we need to talk about a newly discovered problem: Internet Explorer, protocols and inclusion of stylesheets.
Steve Souders, web performance guru and all-around top bloke, writes [...]]]></description>
			<content:encoded><![CDATA[<p>I think we can all agree that performance of web sites matters a lot, and slow web sites are very annoying both for developers and, more importantly, end users. Therefore, we need to talk about a newly discovered problem: Internet Explorer, protocols and inclusion of stylesheets.</p>
<p><a href="http://stevesouders.com/">Steve Souders</a>, web performance guru and all-around top bloke, writes in <a href="http://www.stevesouders.com/blog/2010/02/10/5a-missing-schema-double-download/">Missing schema double download</a> about a performance issue. Apparently, as it turns out, when you include CSS file with the <code>link</code> element or <code>@import</code> statements, there&#8217;s a risk that the same file will be downloaded twice in Internet Explorer. Yes you read that right: twice!</p>
<p>The downside of this is of course multiple HTTP requests for just one file (and the latency, superfluous header info etc to go with that) and downloading double the size in kilobytes for CSS code; same file, not read from cache at all. The problem lies in using protocol relative paths to your CSS file(s), like this:</p>
<pre class="brush: html">
&lt;link href="//example.com/css/base.css" type="text/css" rel="stylesheet"&gt;
</pre>
<p>That code will start at the root of the web site and from there look for a catalog named css and then a file named base.css in it. Where it fails in Internet Explorer, though, is that this asset will be downloaded twice.</p>
<p>Recommended ways to get around this problem is to use an <strong>absolute</strong>, <strong>root relative</strong> or <strong>location relative</strong> path to your CSS files, like this:</p>
<pre class="brush: html">
&lt;link href="/css/base.css" type="text/css" rel="stylesheet"&gt;
</pre>
<p>or</p>
<pre class="brush: html">
&lt;link href="http://example.com/css/base.css" type="text/css" rel="stylesheet"&gt;
</pre>
<p>or</p>
<pre class="brush: html">
&lt;link href="../css/base.css" type="text/css" rel="stylesheet"&gt;
</pre>
<p>This could suck in the perspective of flexibility (e.g. different environments, mixed http and https protocols etc), but at the same time, if there&#8217;s anything you can do to make things faster in the web browser that is already <em>far</em> slower than the others, you should do it.</p>
<div class="important-notice">
	Post updated with corrections, where I had misunderstood parts in the original version
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=AnthqrhHnZI:nigm3h-R6as:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=AnthqrhHnZI:nigm3h-R6as:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=AnthqrhHnZI:nigm3h-R6as:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=AnthqrhHnZI:nigm3h-R6as:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/02/18/css-files-downloaded-twice-in-internet-explorer-with-protocol-relative-urls/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/02/18/css-files-downloaded-twice-in-internet-explorer-with-protocol-relative-urls/</feedburner:origLink></item>
		<item>
		<title>CSS gradients for all web browsers, without using images</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/cjF1WiIaPp0/</link>
		<comments>http://robertnyman.com/2010/02/15/css-gradients-for-all-web-browsers-without-using-images/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 11:03:57 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1670</guid>
		<description><![CDATA[One thing that is quite nice is that we now have the ability to create gradients in our pages just from CSS code, and without the use of any images.
#gradient {	color: #fff;	height: 100px;	padding: 10px;	/* For WebKit (Safari, Google Chrome etc) */	background: -webkit-gradient(linear, left top, left bottom, from(#00f), to(#fff));	/* For Mozilla/Gecko (Firefox etc) */	background: -moz-linear-gradient(top, #00f, [...]]]></description>
			<content:encoded><![CDATA[<p>One thing that is quite nice is that we now have the ability to create gradients in our pages just from CSS code, and without the use of any images.</p>
<style>#gradient {	color: #fff;	height: 100px;	padding: 10px;	/* For WebKit (Safari, Google Chrome etc) */	background: -webkit-gradient(linear, left top, left bottom, from(#00f), to(#fff));	/* For Mozilla/Gecko (Firefox etc) */	background: -moz-linear-gradient(top, #00f, #fff);	/* For Internet Explorer */	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#FF0000FF, endColorstr=#FFFFFFFF);}#gradient-with-stop {	color: #fff;	height: 100px;	padding: 10px;	/* For WebKit (Safari, Google Chrome etc) */	background: -webkit-gradient(linear, left top, right top, from(#00f), to(#fff), color-stop(0.7, #fff));	/* For Mozilla/Gecko (Firefox etc) */	background: -moz-linear-gradient(left top, #00f, #fff 70%);	/* For Internet Explorer */	filter: progid:DXImageTransform.Microsoft.gradient(startColorStr=#FF0000FF, endColorStr=#FFFFFFFF, GradientType=1);}#gradient-radial {	color: #fff;	width: 100px;	height: 100px;	padding: 10px;	/* For WebKit (Safari, Google Chrome etc) */	background: -webkit-gradient(radial, 40% 40%, 0, 40% 40%, 60, from(#ffffa2), to(#00f));	/* For Mozilla/Gecko (Firefox etc) */	background: -moz-radial-gradient(40% 40%, farthest-side, #ffffa2, #00f);	/* For Internet Explorer */	/* As if... */}</style>
<h2>Syntax options and web browser support</h2>
<p>The good news is that there is web browser support for CSS gradients in Firefox, Safari, Google Chrome <em>and</em> Internet Explorer (Opera will most likely add it soon too). The bad news is that, for a couple of reasons, the implementation in each web browser is different from the other. In IE&#8217;s case, it&#8217;s because it&#8217;s based on their ancient approach that stems form IE 5.5. For WebKit-based web browsers (like Safari and Google Chrome), they were the first ones to suggest it, based on the approach for <code>canvas</code>, but this was later changed by the CSS WG, and the new syntax is now the one implemented in Firefox (and I guess this syntax will later make into WebKit-based web browsers as well).</p>
<p>There are two great articles on this topic, delver deeper into the syntax differences: <a href="http://www.broken-links.com/2009/11/26/css-gradient-syntax-comparison-of-mozilla-and-webkit/">CSS gradient syntax: comparison of Mozilla and WebKit</a> and <a href="http://www.broken-links.com/2009/11/30/css-gradient-syntax-comparison-of-mozilla-and-webkit-part-2/">CSS gradient syntax: comparison of Mozilla and WebKit (Part 2)</a>.</p>
<p>So, as of now, we have have CSS gradients support for:</p>
<ul>
<li>Firefox 3.6</li>
<li>Safari 4</li>
<li>Google Chrome</li>
<li>Intenet Explorer 5.5</li>
</ul>
<h2>Examples</h2>
<p>Let&#8217;s look at some samples code:</p>
<h3>Linear gradient, from top</h3>
<p>This will show a simple linear gradient, going from top to bottom in a element.</p>
<pre class="brush: html">
&lt;style&gt;
	#gradient {
		color: #fff;
		height: 100px;
		padding: 10px;
		/* For WebKit (Safari, Google Chrome etc) */
		background: -webkit-gradient(linear, left top, left bottom, from(#00f), to(#fff));
		/* For Mozilla/Gecko (Firefox etc) */
		background: -moz-linear-gradient(top, #00f, #fff);
		/* For Internet Explorer 5.5 - 7 */
		filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#FF0000FF, endColorstr=#FFFFFFFF);
		/* For Internet Explorer 8 */
		-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#FF0000FF, endColorstr=#FFFFFFFF)";
	}
&lt;/style&gt;

&lt;div id="gradient"&gt;
	I haz gradient
&lt;/div&gt;
</pre>
<h4>Rendered version</h4>
<div id="gradient">
	I haz gradient
</div>
<h3>Linear gradient, from left</h3>
<p>This gradient is rendered from left to right, for 70% of the width of the element. The color stop after 70% will not work in Internet Explorer; &#8220;interestingly&#8221; enough its <a href="http://msdn.microsoft.com/en-us/library/ms532882%28VS.85%29.aspx">FinishX</a> and <a href="http://msdn.microsoft.com/en-us/library/ms532886%28VS.85%29.aspx">GradientSize</a> properties doesn&#8217;t apply to the <a href="http://msdn.microsoft.com/en-us/library/ms532997%28VS.85%29.aspx">Gradient filter</a>&#8230;</p>
<pre class="brush: html">
&lt;style&gt;
	#gradient-with-stop {
		color: #fff;
		height: 100px;
		padding: 10px;
		/* For WebKit (Safari, Google Chrome etc) */
		background: -webkit-gradient(linear, left top, right top, from(#00f), to(#fff), color-stop(0.7, #fff));
		/* For Mozilla/Gecko (Firefox etc) */
		background: -moz-linear-gradient(left top, #00f, #fff 70%);
		/* For Internet Explorer 5.5 - 7 */
		filter: progid:DXImageTransform.Microsoft.gradient(startColorStr=#FF0000FF, endColorStr=#FFFFFFFF, GradientType=1);
		/* For Internet Explorer 8 */
		-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#FF0000FF, endColorstr=#FFFFFFFF, GradientType=1)";
	}
&lt;/style&gt;

&lt;div id="gradient-with-stop"&gt;
	I haz gradient
&lt;/div&gt;
</pre>
<h4>Rendered version</h4>
<div id="gradient-with-stop">
	I haz gradient 2
</div>
<h3>Radial gradient</h3>
<p>Time to get a little bit funky with radial gradients! From what I have seen, there is no support for radial gradients in Internet Explorer.</p>
<pre class="brush: html">
&lt;style&gt;
	#gradient-radial {
		color: #fff;
		width: 100px;
		height: 100px;
		padding: 10px;
		/* For WebKit (Safari, Google Chrome etc) */
		background: -webkit-gradient(radial, 40% 40%, 0, 40% 40%, 60, from(#ffffa2), to(#00f));
		/* For Mozilla/Gecko (Firefox etc) */
		background: -moz-radial-gradient(40% 40%, farthest-side, #ffffa2, #00f);
		/* For Internet Explorer */
		/* As if... */
	}
&lt;/style&gt;

&lt;div id="gradient-radial"&gt;
	I haz gradient
&lt;/div&gt;
</pre>
<h4>Rendered version</h4>
<div id="gradient-radial">
	I haz radial gradient
</div>
<h2>Thoughts</h2>
<p>For simple linear gradients, this offers quite a nice and simple way to offer and control it directly through CSS. Unfortunately, lack of support in Internet Explorer doesn&#8217;t make it as useful as it could be.</p>
<h2>More reading</h2>
<ul>
<li><a href="http://hacks.mozilla.org/2009/11/css-gradients-firefox-36/">CSS gradients in Firefox 3.6</a></li>
<li><a href="https://developer.mozilla.org/en/CSS/-moz-linear-gradient">-moz-linear-gradient</a></li>
<li><a href="https://developer.mozilla.org/en/CSS/-moz-radial-gradient">-moz-radial-gradient</a></li>
<li><a href="http://webkit.org/blog/175/introducing-css-gradients/">Introducing CSS Gradients (WebKit)</a></li>
<li><a href="http://developer.apple.com/safari/library/documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Gradients/Gradients.html">Safari Dev Center: Gradients</a></li>
<li><a href="http://www.westciv.com/tools/gradients/index.html">Tool to test gradients, and generate CSS code</a></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=cjF1WiIaPp0:rhVzWDzolOo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=cjF1WiIaPp0:rhVzWDzolOo:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=cjF1WiIaPp0:rhVzWDzolOo:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=cjF1WiIaPp0:rhVzWDzolOo:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/02/15/css-gradients-for-all-web-browsers-without-using-images/feed/</wfw:commentRss>
		<slash:comments>90</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/02/15/css-gradients-for-all-web-browsers-without-using-images/</feedburner:origLink></item>
		<item>
		<title>My trip to, and HTML5 presentation at, FOSDEM, Brussels, february 6th-7th 2010</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/KpGmKRVTKRU/</link>
		<comments>http://robertnyman.com/2010/02/11/my-trip-to-and-html5-presentation-at-fosdem-brussels-february-6th-7th-2010/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 23:31:18 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[HTML5/HTML/XHTML]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Speaking]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1667</guid>
		<description><![CDATA[Last weekend I had the pleasure of going to FOSDEM to give a presentation about HTML5 and to experience a very big open-source conference.
First evening
After sharing a flight with my fellow Swede Stefan Hermes, we eventually got to our respective hotel. I was sharing a room with Fabrice Desré, and as it turned out, there [...]]]></description>
			<content:encoded><![CDATA[<p>Last weekend I had the pleasure of going to <a href="http://fosdem.org/">FOSDEM</a> to give a presentation about HTML5 and to experience a very big open-source conference.</p>
<h2>First evening</h2>
<p>After sharing a flight with my fellow Swede Stefan Hermes, we eventually got to our respective hotel. I was sharing a room with <a href="http://twitter.com/fabricedesre">Fabrice Desré</a>, and as it turned out, there was one big bed, and one pull-out sofa. Being true men, we decided to decide in a macho way who got the bed and who got the sofa &#8211; the decision was made playing Rock, paper, Scissors. After four (!) ties, I eventually won in the 5th round. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://www.flickr.com/photos/robertnyman/4347458650/" title="FOSDEM 2010, Brussels by Robert Nyman, on Flickr"><img src="http://farm5.static.flickr.com/4043/4347458650_b8f60f06f3.jpg" width="500" height="333" alt="FOSDEM 2010, Brussels" class="align-center"></a></p>
<p>We then went to the welcome beer at the Delirium café where we met lots of Mozilla friends, and had quite a nice evening!</p>
<p><a href="http://www.flickr.com/photos/robertnyman/4347432564/" title="FOSDEM 2010, Brussels by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2747/4347432564_f4bc07a9cb.jpg" width="500" height="333" alt="FOSDEM 2010, Brussels" class="align-center"></a></p>
<h2>My HTML5 talk</h2>
<p>I had put a lot of preparations into my talk, trying give as good an overview as I could, while delving a little deeper into certain parts. There were quite a number of different areas I wanted to cover, and another thing I went for was presenting in a new way: no bullets points whatsoever; bullet points makes me just read the text, and the crowd will have read it before me. Instead I was trying to use fitting images depending on the current subject and then talk about that to instead <em>complement</em> my slides, making it a more loose and dynamic presentation.</p>
<p>Having people like <a href="http://en.wikipedia.org/wiki/Mitchell_Baker">Mitchell Baker (Chairperson of the Mozilla Foundation)</a> and <a href="http://en.wikipedia.org/wiki/Christopher_Blizzard">Christopher Blizzard (Evangelism Director for Mozilla)</a> in the audience while giving this presentation for the first time, I must have been cray to attempt something like that! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>On top of that, the room was PACKED! In the Mozilla dev room there were 200 seats. They were filled, both aisles to the brim as well, people sitting on stage so I actually had to watch out not to trample them while walking back and forth during my presentation. And as if that wasn&#8217;t enough, both big doors were practically blocked by people wanting to get in, and they had to apply the one-in, one-out rule, and outside, within two meters of the doors, you couldn&#8217;t get closer.</p>
<p>I met a number of people who just couldn&#8217;t get in, and I also saw a photo of the packed corridor outside. And, not trying to fool myself, I know the big interest was for the topic and not me as a speaker, but still, it&#8217;s pretty awesome to get on stage when there&#8217;s such a big draw.</p>
<p>Luckily, though, I&#8217;m very happy, and relieved, to say that it seems to have gone down well. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>My talk was meant as an introduction to HTML5 and also as the first steps into using it, and then have <a href="http://blog.mozbox.org/">Paul Rouget</a> of Mozilla follow-up with some outstanding demos of things you can achieve with various parts of HTML5 and its APIs (and man, his demos are amongst the coolest I have ever seen!).</p>
<p>Proud and happy, it really made my day to read feedback like this on Twitter:</p>
<blockquote cite="">
<p>Just seen the most amazing HTML5 presentation ever! (by <a href="http://twitter.com/Falkowata/statuses/8725115144">falkowata</a>)</p>
</blockquote>
<blockquote cite="">
<p>@robertnyman &#8230; amazing fun filled presentation&#8230;(by <a href="http://twitter.com/eSuNnY/statuses/8731372078">eSuNnY</a>)</p>
</blockquote>
<blockquote cite="">
<p>The HTML5 talk is really quite awesome &#8211; especially the feature demos! (by <a href="http://twitter.com/welp/statuses/8724814100">welp</a>)</p>
</blockquote>
<blockquote cite="">
<p>Just saw an html5 presentation @fosdem, VERY nice! (by <a href="http://twitter.com/mvdkleijn/statuses/8724628830">mvdkleijn</a>)</p>
</blockquote>
<blockquote cite="">
<p>the introduction to #html5 in the #mozilla dev room at #fosdem is really interesting and the demos are amazing (by <a href="http://twitter.com/naderman/statuses/8724611991">naderman</a>)</p>
</blockquote>
<p>My <a href="http://www.slideshare.net/robnyman/an-introduction-to-html5-3089690">presentation slides are available at SlideShare<br />
</a>, but without the actual presentation to go with it, the experience is not as good as if it were complemented with my words to go with them.</p>
<h2>Meeting Mitchell Baker</h2>
<p>Another thing I have to bring up is naturally the chance to meet Mitchell Baker, who is truly an amazing woman. In 2005, Time magazine listed her as one of the 100 most influential people in the world, and she is behind a lot of good things in the open-source world. I spoke to her a few times at the conference about various things, but you can just imagine my joy at the Saturday night dinner, after my presentation, when she wanted me to tell her more than myself. Thinking I had about 30 seconds before she&#8217;d lose interest in little boring me, I rambled as much as I could&#8230; <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>I have to say, though, that it is quite comforting to meet someone like her, and to see that she was completely down-to-earth, and just a very good person with great opinions.</p>
<h2>Saturday night events</h2>
<p><a href="http://www.flickr.com/photos/robertnyman/4346702317/" title="Tristan, Gandalf, Mike and more - FOSDEM 2010, Brussels by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2746/4346702317_ce94054c48.jpg" width="500" height="333" alt="Tristan, Gandalf, Mike and more - FOSDEM 2010, Brussels" class="align-center"></a></p>
<p>In Saturday evening, there was a huge Mozilla dinner followed by games of bowling and laser tag. I bowled with <a href="http://crashopensource.blogspot.com/">Lukas Blakk</a>, Alex and Edu, and apparently being on a high after my talk, my first roll was a strike. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Thing is, I&#8217;m not very good at bowling, although I ended up with a good (at least in my eyes) series of a 106.</p>
<p><a href="http://www.flickr.com/photos/robertnyman/4346709117/" title="Lukas and Edu - FOSDEM 2010, Brussels by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2799/4346709117_8629145bce.jpg" width="500" height="333" alt="Lukas and Edu - FOSDEM 2010, Brussels" class="align-center"></a></p>
<p>The sad thing about the evening is that Edu accidentally fell during the laser game, broke his foot and was pretty badly damaged. Really too bad &#8211; he&#8217;s a very nice guy, and this just happened before his upcoming week of vacation.. Get better soon, Edu!</p>
<h2>Meeting people</h2>
<p>Like at all conferences, there are a lot of great people to meet and always to little time to properly talk to them. Here&#8217;s a rough list of people I met (I&#8217;m certain I&#8217;m missing a lot of you here) that aren&#8217;t mentioned above, and I was very glad to see them in Brussels (listed in no specific order &#8211; using an unordered list, ok?):</p>
<ul>
<li><a href="http://brian.kingsonline.net/talk/">Brian King</a></li>
<li><a href="http://patrickfinch.net/">Patrick Finch</a></li>
<li><a href="http://djst.org/blog/">David Tenser</a></li>
<li><a href="http://starkravingfinkle.org/blog/">Mark Finkle</a></li>
<li><a href="http://blog.pavlov.net/">Stuart Parmenter</a></li>
<li><a href="http://twitter.com/Irinasandu">Irina Sandu</a></li>
<li><a href="http://somethin-else.org/">William Quiviger</a></li>
<li><a href="http://en.wikipedia.org/wiki/Tristan_Nitot">Tristan Nitot</a></li>
<li><a href="http://blog.mozilla.com/tomcat/">Carsten Book (Tomcat)</a></li>
<li><a href="http://bblop.wordpress.com/">Barbara Hueppe</a></li>
<li><a href="http://www.softwareishard.com/blog/index.php">Jan Odvarko</a> (great Firebug developer!)</li>
<li><a href="http://twitter.com/mathjazz">Matjaž Horvat</a></li>
<li><a href="http://mackers.com/">Dave McNamara</a></li>
<li><a href="http://blog.mozilla.com/axel/">Axel Hecht</a></li>
<li><a href="http://mozgull.bogomil.info/">Bogomil Shopov</a></li>
<li><a href="http://www.brinkhurstdesign.co.uk/">FuzzyFox (William D)</a></li>
<li><a href="http://diary.braniecki.net/">Gandalf (Zbigniew Braniecki)</a></li>
<li><a href="http://csarven.ca/">Sarven Capadisli</a></li>
<li><a href="http://twitter.com/EHN">Andreas Ehn</a></li>
<li>Cedric</li>
<li>Ian</li>
<li>Mike (from Denmark)</li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=KpGmKRVTKRU:GLX9q2i8IKw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=KpGmKRVTKRU:GLX9q2i8IKw:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=KpGmKRVTKRU:GLX9q2i8IKw:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=KpGmKRVTKRU:GLX9q2i8IKw:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/02/11/my-trip-to-and-html5-presentation-at-fosdem-brussels-february-6th-7th-2010/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/02/11/my-trip-to-and-html5-presentation-at-fosdem-brussels-february-6th-7th-2010/</feedburner:origLink></item>
		<item>
		<title>Speaking at FOSDEM 2010 – An Introduction to HTML</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/q0nD2m2X13k/</link>
		<comments>http://robertnyman.com/2010/01/29/speaking-at-fosdem-2010-an-introduction-to-html/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 12:32:37 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[HTML5/HTML/XHTML]]></category>
		<category><![CDATA[Speaking]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1662</guid>
		<description><![CDATA[Just to let you know, I will be speaking at FOSDEM 2010 in Brussels, Belgium, next Saturday February 6th. I will talk in the Mozilla Developer Room and give an introduction to HTML5, which will be followed by HTML5 demos by Paul Rouget.
If you are attending, please come along and say hi!  
]]></description>
			<content:encoded><![CDATA[<p>Just to let you know, I will be speaking at <a href="http://www.fosdem.org/2010/">FOSDEM 2010</a> in Brussels, Belgium, next Saturday February 6th. I will talk in the Mozilla Developer Room and give an introduction to HTML5, which will be followed by HTML5 demos by <a href="http://blog.mozbox.org/">Paul Rouget</a>.</p>
<p>If you are attending, please come along and say hi! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=q0nD2m2X13k:5nzJdO1nmDY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=q0nD2m2X13k:5nzJdO1nmDY:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=q0nD2m2X13k:5nzJdO1nmDY:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=q0nD2m2X13k:5nzJdO1nmDY:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/01/29/speaking-at-fosdem-2010-an-introduction-to-html/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/01/29/speaking-at-fosdem-2010-an-introduction-to-html/</feedburner:origLink></item>
		<item>
		<title>Geek Meet February 8th 2010 – Christopher Blizzard of Mozilla!</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/SOnruLMpizk/</link>
		<comments>http://robertnyman.com/2010/01/28/geek-meet-february-8th-2010-christoper-blizzard-of-mozilla/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 22:09:14 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[Geek Meet]]></category>
		<category><![CDATA[HTML5/HTML/XHTML]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1655</guid>
		<description><![CDATA[I know, I know, there has definitely been some time since the last Geek Meet. But believe me, this one will make up for the wait!  
Introducing Christopher Blizzard
I am extremely excited to tell you that the speaker this time is no one else than Christopher Blizzard! Chris is the Evangelism Director for Mozilla [...]]]></description>
			<content:encoded><![CDATA[<p>I know, I know, there has definitely been some time since the last Geek Meet. But believe me, this one will make up for the wait! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h2>Introducing Christopher Blizzard</h2>
<p>I am extremely excited to tell you that the speaker this time is no one else than <a href="http://www.0xdeadbeef.com/weblog/">Christopher Blizzard</a>! Chris is the Evangelism Director for Mozilla and has been involved for almost a decade with the Mozilla project, where he has been working with both developing, evangelizing and building developer relations.</p>
<p>He was also the Software Team Lead for the &#8220;One Laptop Per Child&#8221; program and helped develop that version of Linux, and was also part in creating the <a href="http://en.wikipedia.org/wiki/Sugar_%28GUI%29">Sugar interface</a>.</p>
<h2>The talks</h2>
<p>As usual, the Geek Meet will be broken up into two sections. The idea is for Christoper to first talk about HTML5, video on the web, codecs and similar highly interesting topics. Then we will have a break for pizza and beer, thanks to my gracious sponsor <a href="http://www.creuna.se/" class="in-swedish">Creuna</a>. After that, Chris will lead a Q&amp;A session where you can ask away about anything you want to know about technologies, Firefox, Mozilla or whatever related you can come up with; a fantastic opportunity!</p>
<h2>When &amp; where</h2>
<p>Next Geek Meet will be held February 8th (less than two weeks away) at Creuna&#8217;s office at <a href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=Kungsholmsgatan+23+stockholm&amp;sll=37.0625,-95.677068&amp;sspn=41.275297,81.210938&amp;ie=UTF8&amp;hq=&amp;hnear=Kungsholmsgatan+23,+Stockholm,+Stockholms+L%C3%A4n,+Sweden&amp;z=16">Kungsholmsgatan 23 in Stockholm</a>, at 18.00.</p>
<h2>Sign up now!</h2>
<p>Sign up now! We have <strong>150 seats</strong> available, which I am sure will be filled in no time. Register by writing a comment below. Go! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div class="important-notice">
<h3>All sold out!</h3>
<p>Please write a comment to be on the waiting list!</p>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=SOnruLMpizk:GQXE0qwJ5eU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=SOnruLMpizk:GQXE0qwJ5eU:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=SOnruLMpizk:GQXE0qwJ5eU:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=SOnruLMpizk:GQXE0qwJ5eU:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/01/28/geek-meet-february-8th-2010-christoper-blizzard-of-mozilla/feed/</wfw:commentRss>
		<slash:comments>243</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/01/28/geek-meet-february-8th-2010-christoper-blizzard-of-mozilla/</feedburner:origLink></item>
		<item>
		<title>The video element in HTML5 – great possibilites, but also codec and licensing problems</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/fNzYzq09uKM/</link>
		<comments>http://robertnyman.com/2010/01/25/the-video-element-in-html5-great-possibilites-but-also-codec-and-licensing-problems/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 17:24:27 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Apple/Mac]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[HTML5/HTML/XHTML]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1609</guid>
		<description><![CDATA[Man has always been inspired by things moving around and giving away noises, so it was just a matter of time before video content showed up on the web. For a number of years, Flash was the de-facto standard of showing video, but now, with HTML5, the video element has made its way into our [...]]]></description>
			<content:encoded><![CDATA[<p>Man has always been inspired by things moving around and giving away noises, so it was just a matter of time before video content showed up on the web. For a number of years, Flash was the de-facto standard of showing video, but now, with HTML5, the <code>video</code> element has made its way into our lives.</p>
<h2>The <code><span class="lowercase">v</span>ideo</code> element</h2>
<p>The <code>video</code> element is as simple as can be:</p>
<pre class="brush: html">&lt;video src="swedish-flag.ogv"&gt;&lt;/video&gt;</pre>
<p>Then you can add a number of attributes for if controls should be visible, if it should autoplay when the visitor loads the containing web page etc. The applicable attributes are:</p>
<dl>
<dt>autobuffer</dt>
<dd>Loads the entire file if this attribute is enabled, but is ignored if <code>autoplay</code> is set.</dd>
<dt>autoplay</dt>
<dd>Video starts playing as soon as it is ready.</dd>
<dt>controls</dt>
<dd>If video controls should be displayed &#8211; looks dependent on web browser.</dd>
<dt>height</dt>
<dd>Height of the element</dd>
<dt>loop</dt>
<dd>If the video playback should loop.</dd>
<dt>src</dt>
<dd>The video file to play</dd>
<dt>width</dt>
<dd>Width of the element</dd>
</dl>
<p>So, another example could look like this:</p>
<pre class="brush: html">&lt;video src="swedish-flag.ogv" controls width="320" height="240"&gt;&lt;/video&gt;</pre>
<p>What is also nice is that web browsers won&#8217;t automatically download the entire video file, but just a part of it to be able to display the first frame. Also, you could write your custom controls and control the video via script &#8211; this is more described in <a href="https://developer.mozilla.org/En/Using_audio_and_video_in_FireFox">Using audio and video in Firefox</a>.</p>
<h2>Different treats for different web browsers</h2>
<p>This all sounds good and well; just specify the source of your video file and you are good to go! Well, it could have been like that, but unfortunately isn&#8217;t. Just as before in history, it comes down to video codecs &#8211; yes, exactly that hassle we got around with having video in Flash.</p>
<ul>
<li>Firefox supports the Ogg/Theora encoding.</li>
<li>Google Chrome supports the H.264 <em>and</em> theOgg/Theora encoding.</li>
<li>Safari supports the H.264 encoding.</li>
<li>Opera will support the Ogg/Theora encoding (no final release with <code>video</code> element support yet).</li>
</ul>
<p>So, what the <code>video</code> element offers us is to specify various video sources for different web browsers, like this:</p>
<pre class="brush: js">&lt;video controls="controls"&gt;
	&lt;source src="swedish-flag.mp4"&gt;
	&lt;source src="swedish-flag.ogv"&gt;
	Sorry, your web browser doesn't support the video element
&lt;/video&gt;</pre>
<p class="text-align-center"><video controls width="500"><source src="http://robertnyman.com/video/swedish-flag.mp4"><source src="http://robertnyman.com/video/swedish-flag.ogv">Sorry, your web browser doesn&#8217;t support the video element</video></p>
<p class="text-align-center"><i>This video above should play in Firefox, Google Chrome and Safari on Mac. You can also check out <a href="http://robertnyman.com/video/demo.html">a demo targeting both Ogg/Theora and H.264 in a stand-alone page</a>.</i></p>
<p>And, instead of the &#8220;sorry&#8221;-phrase above, we could also go to the length of offering QuickTime and Flash fallbacks instead for web browsers not supporting the <code>video</code> element at all.</p>
<h2>Codecs and licenses</h2>
<p>I think it&#8217;s fair enough that we can offer content to please every web browser, but at this point it becomes cumbersome. Maintenance, it&#8217;s a nightmare, since we need to maintain and store at least three formats for each video to be able to offer it to a vast majority of our visitors. The reasoning behind codec support is that Apple has invested a lot of time and money into H.264 so they want to push that, Google Chrome has bought licenses for H.264 (which means the only version of Google Chrome that supports it is the one downloaded from the Google web site &#8211; Chromium and others don&#8217;t support that license) and support Ogg/Theora as well, while others like Mozilla (with Firefox) and Opera believe that the open standard element <code>video</code> should naturally support open codecs and therefore only support Ogg/Theora.</p>
<p>What we don&#8217;t want with a new standard/element and de-facto way of doing is to go into the situation of GIF again, but instead avoid closed formats that requires a number of expensive and limited licenses. I believe Robert O&#8217;Callahan explains it beautifully in <a href="http://weblogs.mozillazine.org/roc/archives/2010/01/video_freedom_a.html">Video, Freedom And Mozilla</a> just why H.264 is not a viable option, and why it is not on par with the open web and web standards.</p>
<p>And, to make matters worse, in my eyes, Google just started offering <a href="http://www.youtube.com/html5">the HTML5 <code>video</code> element on YouTube</a> and <a href="http://www.vimeo.com/blog:268">Vimeo announced HTML5 video element support as well</a>. Great news, but the big <em>big</em> problem with this, though, especially being two of the most visited video web sites on the web, is that they <em>only</em> support the H.264 encoding. This means that only Google Chrome and Safari users (and, oh, those three IE users in the world with Google Chrome Frame) can see it, excluding a vast portion of the web browser market with Firefox and Opera (the initial complaints were also that fullscreen video wasn&#8217;t there &#8211; well, Firefox 3.6 supports fullscreen video, so if they would have chosen another format that would have been there too).</p>
<p>What is bothering me with the H.264 approach, and is quite saddening, is that Google Chrome supports the Ogg/Theora codec as well, so they could have chosen the open route instead. Their move of introducing the <code>video</code> element on YouTube is a very important decision, and I believe it&#8217;s great to move away from Flash and into HTML5 elements. But as long as they do it with closed-in licensed codecs, it has been all in vain, if you ask me.</p>
<p>Mozilla VP Engineering Mike Shaver expresses his opinions in <a href="http://shaver.off.net/diary/2010/01/23/html5-video-and-codecs/">HTML5 video and codecs</a> and Mozilla&#8217;s Christopher Blizzard talks more about in <a href="http://www.0xdeadbeef.com/weblog/2010/01/html5-video-and-h-264-what-history-tells-us-and-why-were-standing-with-the-web/">HTML5 video and H.264 – what history tells us and why we’re standing with the web</a>.</p>
<h2>Conclusively&#8230;</h2>
<p>The whole reason video on the web took off in the first place with YouTube and others is because <em>it just worked</em> as long as you had Flash installed, no matter the web browser and no matter the platform. If just end up in another codec war again, the <code>video</code> element will never take off &#8211; don&#8217;t waste our time with web browser-specific solutions and proprietary attitudes. If we ever truly want to use the <code>video</code> element on the web, it has to be open. Period.</p>
<p>&nbsp;</p>
<h3>Related reading</h3>
<ul>
<li><a href="http://html5doctor.com/youtube-and-vimeo-support-html5-video/">YouTube and Vimeo support HTML5 Video</a></li>
<li><a href="http://www.sitepoint.com/blogs/2010/01/25/the-dark-side-of-html-5-video/">The Dark Side of HTML 5 Video</a></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=fNzYzq09uKM:uUtVpoT7DYE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=fNzYzq09uKM:uUtVpoT7DYE:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=fNzYzq09uKM:uUtVpoT7DYE:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=fNzYzq09uKM:uUtVpoT7DYE:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/01/25/the-video-element-in-html5-great-possibilites-but-also-codec-and-licensing-problems/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
<enclosure url="http://robertnyman.com/video/swedish-flag.mp4" length="2174068" type="video/mp4" />
		<feedburner:origLink>http://robertnyman.com/2010/01/25/the-video-element-in-html5-great-possibilites-but-also-codec-and-licensing-problems/</feedburner:origLink></item>
		<item>
		<title>IE and Life</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/YI5BiyPDXn8/</link>
		<comments>http://robertnyman.com/2010/01/21/ie-and-life/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 13:31:46 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1605</guid>
		<description><![CDATA[The other day I sort of had an epiphany, a revelation if you will, which made me realize something hard to accept: Internet Explorer will always be there throughout my entire career working with Internet.
After that had dawned on me, seeing know that IE will never die and be completely be replaced by only competent [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I sort of had an epiphany, a revelation if you will, which made me realize something hard to accept: Internet Explorer will always be there throughout my entire career working with Internet.</p>
<p>After that had dawned on me, seeing know that IE will never die and be completely be replaced by only competent web browsers in the market, and, IE will always be at least two years behind its competitors, it kind of felt like a legal punishment. &#8220;Sorry, mister, but it&#8217;s IE and life for you.</p>
<p>Therefore, I decided to make my own rendition of the Skidrow song <strong>18 and Life</strong>. Let me present <strong>IE and Life</strong>:</p>
<blockquote>
<p>
		IE was a young browser, he had a heart of DOS<br />
		Lived 9 to 5 and he worked hard to prevent FOSS<br />
		Just barely got out of MS labs, came from the edge of town<br />
		Rendered like MS Word so no one could take him down, oh no
	</p>
<p>
		He had no talent, no, no standards at home<br />
		He walked the streets as renderer and he fought the world alone
	</p>
<p>
		And now it&#8217;s IE and life, you got it, IE and life, you know<br />
		Your crime is proprietary and it&#8217;s IE and life to go<br />
		IE and life, you got it, IE and life, you know<br />
		Your crime is proprietary and it&#8217;s IE and life to go
	</p>
<p>
		VML in his heartbeat, worst CSS bugs you&#8217;ve ever seen<br />
		He kept his engine running, but it never kept pages clean<br />
		They say he loved closed-in, &#8220;IE&#8217;s the wild one&#8221;<br />
		Someone should put it out with a strong-enough gun
	</p>
<p>
		Bang bang shoot &#8216;em up, the party never ends<br />
		You can&#8217;t think of dying when web browser legacy is your best friend
	</p>
<p>
		And now it&#8217;s IE and life, you got it, IE and life, you know<br />
		Your crime is proprietary and it&#8217;s IE and life to go<br />
		IE and life, you got it, IE and life, you know<br />
		Your crime is proprietary and it&#8217;s IE and life to go, yeah
	</p>
<p>
		&#8220;Accidents will happen&#8221;, they all heard IE say<br />
		He renders pages incorrectly even to to this very day
	</p>
<p>
		Yeah, yeah, yeah, yeah, yeah<br />
		IE and life, you got it, IE and life, you know<br />
		Your crime is proprietary and it&#8217;s IE and life to go<br />
		IE and life, you got it, IE and life, you know<br />
		Your crime is proprietary and it&#8217;s IE and life to go
	</p>
</blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=YI5BiyPDXn8:1deiJ0RsoGM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=YI5BiyPDXn8:1deiJ0RsoGM:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=YI5BiyPDXn8:1deiJ0RsoGM:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=YI5BiyPDXn8:1deiJ0RsoGM:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/01/21/ie-and-life/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/01/21/ie-and-life/</feedburner:origLink></item>
		<item>
		<title>Tools for concatenating and minifying CSS and JavaScript files in different development environments</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/MjQ4t-CxjFk/</link>
		<comments>http://robertnyman.com/2010/01/19/tools-for-concatenating-and-minifying-css-and-javascript-files-in-different-development-environments/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 17:42:23 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1589</guid>
		<description><![CDATA[To follow up on the topic of cutting down the number of HTTP requests that I mentioned in my posts How to improve your web site performance – tips &#38; tricks to get a good YSlow rating and How to reduce the number of HTTP requests, I wanted to put together a good list of [...]]]></description>
			<content:encoded><![CDATA[<p>To follow up on the topic of cutting down the number of HTTP requests that I mentioned in my posts <a href="http://robertnyman.com/2008/05/09/improve-your-web-site-performance-tips-tricks-to-get-a-good-yslow-rating/">How to improve your web site performance – tips &amp; tricks to get a good YSlow rating</a> and <a href="http://robertnyman.com/2010/01/15/how-to-reduce-the-number-of-http-requests/">How to reduce the number of HTTP requests</a>, I wanted to put together a good list of tools and approaches to concatenate and minify CSS and JavaScript files in different developing environments.</p>
<p>Based on my own experience and research, and the replies when I asked around what others use, I have listed suggested solutions below:</p>
<h2>PHP</h2>
<dl>
<dt><a href="http://code.google.com/p/minify/">Minify</a></dt>
<dd>Minify combines multiple CSS or JavaScript files, removes unnecessary whitespace and comments, and serves them with gzip encoding and optimal client-side cache headers.</dd>
<dt><a href="http://rakaz.nl/code/combine">Combine</a></dt>
<dd>PHP script combined with URL rewriting to concatenate and compress CSS and JavaScript files.</dd>
<dt><a href="http://farhadi.ir/works/smartoptimizer">SmartOptimizer</a></dt>
<dd>A PHP library that enhances your website performance by optimizing the front end using techniques such as minifying, compression, caching, concatenation and embedding. All the work is done on the fly on demand.</dd>
<dt><a href="http://csstidy.sourceforge.net/">CSSTidy</a></dt>
<dd>Compression of CSS files. <em>Note: no support for JavaScript files.</em></dd>
<dt><a href="http://crisp.tweakblogs.net/blog/1665/a-new-javascript-minifier-jsmin+.html">JSMin+</a></dt>
<dd>PHP-based and it parses the JavaScript. <em>Note: no support for CSS files.</em></dd>
<dt><a href="http://github.com/anthonyshort/csscaffold">CSScaffold</a>
<dt>
<dd>Compresses, caches and gzips CSS on-the-fly. <em>Note: no support for JavaScript files.</em></dd>
<dt><a href="http://github.com/Schepp/CSS-JS-Booster">CSS-JS-Booster</a></dt>
<dd>Concats, minifies and gzips CSS and JavaScript files.</dd>
</dl>
<h2>Django</h2>
<dl>
<dt><a href="http://github.com/bradleywright/django-static-management">Django Static Management</a></dt>
<dd>Intended as an easy way to manage multiple static text assets (CSS and Javascript) in a Django projects.</dd>
<dt><a href="http://github.com/mintchaos/django_compressor">Django compressor</a></dt>
<dd>Compresses linked and inline javascript or CSS into a single cached file.</dd>
<dt><a href="http://github.com/pelme/django-compress">django-compress</a></dt>
<dd>django-compress provides an automated system for compressing CSS and JavaScript files. <em>Note: Doesn&#8217;t support concatenation of files.</em>.</dd>
<dt><a href="http://pedro.valelima.com/blog/2008/jan/17/deploying-compacted-javascript-django/">Deploying compacted javascript with django</a></dt>
<dd>Management command to compatct JavaScript. <em>Note: No support for CSS files.</em>.</dd>
<dt><a href="http://www.djangosnippets.org/snippets/405/">Templatetag for JavaScript merging and compression</a></dt>
<dd>A templatetag that merges several JavaScript files (compressing its code) into only one JavaScript file. <em>Note: No support for CSS files.</em>.</dd>
</dl>
<h2>Ruby</h2>
<dl>
<dt><a href="http://getsprockets.com/">Sprockets</a></dt>
<dd>Sprockets is a Ruby library that preprocesses and concatenates JavaScript source files.</dd>
<dt><a href="http://github.com/cjohansen/juicer">Juicer</a></dt>
<dd>Compresses CSS and JavaScript code, JSLints it and also supports Data URI-embedding of images in CSS files.</dd>
<dt><a href="http://documentcloud.github.com/jammit/">Jammit</a></dt>
<dd>Jammit is providing both CSS and JavaScript concatenation and compression, as well as YUI Compressor and Closure Compiler compatibility, ahead-of-time gzipping, built-in JavaScript template support, and optional Data-URI / MHTML image embedding.</dd>
<dt><a href="http://synthesis.sbecker.net/pages/asset_packager">AssetPackager</a></dt>
<dd>Merges and compresses JavaScript and CSS when running in production.</dd>
</dl>
<h2>Java</h2>
<dl>
<dt><a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a></dt>
<dd>The leading tool in the for compressing CSS and JavaScript files, and could easily be ported/encapsulated into other environments. <em>Note: Doesn&#8217;t support concatenation of files.</em>. Could be used in conjunction with an Ant task, as described in <a href="http://www.julienlecomte.net/blog/2007/09/16/">Building Web Applications With Apache Ant</a></dd>
<dt><a href="http://code.google.com/closure/compiler/">Google Closure Compiler</a></dt>
<dd>Google Compiler for JavaScript that supports various compressing options for JavaScript. <em>Note: no support for CSS files.</em></dd>
<dt><a href="https://jawr.dev.java.net/">Jawr</a></dt>
<dd>Supports concatenation and minification of CSS and JavaScript files.</dd>
</dl>
<h2>.Net</h2>
<dl>
<dt><a href="http://yuicompressor.codeplex.com/">YUI Compressor for .Net</a></dt>
<dd>A .NET port of the Yahoo! UI Library&#8217;s YUI Compressor Java project.</dd>
<dt><a href="http://svn.offwhite.net/trac/SmallSharpTools.Packer/">Packer for .NET</a></dt>
<dd>A tool to pack/minify CSS and JavaScript files.</dd>
<dt><a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34488">Microsoft Ajax Minifier</a></dt>
<dd>A tool to concatenate and minify JavaScript files. <em>Note: no support for CSS files.</em></dd>
</dl>
<h2>Other tools or approaches?</h2>
<p>Please let me know, by writing a comment, if you want to suggest other tools, so I can update this list and keep it as accurate and useful as possible!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=MjQ4t-CxjFk:bylHSjcg5CE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=MjQ4t-CxjFk:bylHSjcg5CE:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=MjQ4t-CxjFk:bylHSjcg5CE:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=MjQ4t-CxjFk:bylHSjcg5CE:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/01/19/tools-for-concatenating-and-minifying-css-and-javascript-files-in-different-development-environments/feed/</wfw:commentRss>
		<slash:comments>107</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/01/19/tools-for-concatenating-and-minifying-css-and-javascript-files-in-different-development-environments/</feedburner:origLink></item>
		<item>
		<title>How to reduce the number of HTTP requests</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/pIPY99e4bA0/</link>
		<comments>http://robertnyman.com/2010/01/15/how-to-reduce-the-number-of-http-requests/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 23:46:01 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1584</guid>
		<description><![CDATA[As you might be aware of, I believe web site performance is truly a critical success factor, and I have written about it before in How to improve your web site performance – tips &#38; tricks to get a good YSlow rating
What we have
With the advent of such great tools such as YSlow and Page [...]]]></description>
			<content:encoded><![CDATA[<p>As you might be aware of, I believe web site performance is truly a critical success factor, and I have written about it before in <a href="http://robertnyman.com/2008/05/09/improve-your-web-site-performance-tips-tricks-to-get-a-good-yslow-rating/">How to improve your web site performance – tips &amp; tricks to get a good YSlow rating</a></p>
<h2>What we have</h2>
<p>With the advent of such great tools such as <a href="http://developer.yahoo.com/yslow/">YSlow</a> and <a href="http://code.google.com/speed/page-speed/">Page Speed</a>, looking at the practices of web sites like Google and Yahoo! and reading the excellent performance work done by <a href="http://stevesouders.com/">Steve Souders</a>, we have really learnt a lot, and have great resources.</p>
<h2>Reducing the number of HTTP requests</h2>
<p>One of the crucial things when it comes to improving performance is reducing the number of HTTP requests. <a href="http://www.stevesouders.com/blog/2009/11/16/cssembed-automatically-data-uri-ize/#comment-1097">According to Steve Souders</a>: &#8220;An extra HTTP request adds 200+ milliseconds to a page (worldwide average)&#8221;. The latency between HTTP requests, and also the limitation in web browsers in regards to how many parallel HTTP requests a web browser can make, vastly affects the loading time of a web page.</p>
<p>When it comes to CSS and JavaScript, the general consensus is to concatenate all files of the same type into one file, and then minify them. To complement that, <a href="http://blog.getify.com/">Kyle Simpson</a> have done some interesting experimenting with his <a href="http://labjs.com/">LABjs</a>, and he writes more about his thoughts in <a href="http://blog.getify.com/2009/11/labjs-why-not-just-concat/">LABjs: why not just concat?</a> how controlled parallel loading could also prove to be efficient.</p>
<p>That leaves us with images. Without a doubt, both the size and number of images used in a web page, although pretty to look at, definitely poses a threat to having a fast web site, and I thought we&#8217;d look at the alternatives for dealing with that.</p>
<h2>CSS Sprites</h2>
<p>CSS Sprites are when you combine a number of images into the same image file. You then use <code>background-position</code> in the CSS file to control what part of that image will be visible for a certain element. This way, instead of having a number of HTTP requests, there will be just one for a larger image file.</p>
<p>For instance, you can see this in action at <a href="http://m.www.yahoo.com/">Yahoo.com</a> at the left hand side, with the icons in the list. Steve Souders has also created the excellent tool <a href="http://spriteme.org/">SpriteMe</a>, in the form of a bookmarklet, that will analyze the current page to see which images you can combine, and also generate the images for the CSS Sprite. Another great alternative is the web site <a href="http://spritegen.website-performance.org/">CSS Sprite generator</a>.</p>
<p>There are a couple of downsides with CSS Sprites, though. One is that, depending on the design, it can become virtually impossible to combine some images, because their repeating pattern, reusage etc will prevent that. While the above mentioned tools are great, at the end of day, you always seem to end up manually tweaking your CSS Sprites images file(s) and CSS code.</p>
<p>Firefox engineer Vladimir Vuki?evi? has also written the interesting piece <a href="http://blog.vlad1.com/2009/06/22/to-sprite-or-not-to-sprite/">To Sprite Or Not To Sprite</a> where he sheds some light on memory usage in web browsers and how large images aren&#8217;t always optimal.</p>
<p>So, at times CSS Sprites can be great, but they aren&#8217;t always the best choice.</p>
<h2>Introducing base64-encoded Data URIs</h2>
<p>Which leads us on to the highly interesting topic of base64-encoded Data URIs. For a more thorough explanation of what those are, I recommend reading <a href="http://www.nczonline.net/blog/2009/10/27/data-uris-explained/">Data URIs explained</a> by Nicolas Zakas of Yahoo!. Generally, though, it&#8217;s about writing out binary files converted into data which describes the content.</p>
<p>What this means in practice is that in the HTML code or CSS file we can have the code for the contents, instead of just a reference to the file, which means that we completely eliminate that HTTP request. Just imagine having a web site full of images referenced, but none of them will cost one single HTTP request! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Let&#8217;s look at a real example of showing Smurfette via CSS.</p>
<p><a href="http://www.flickr.com/photos/bbaltimore/254176156/" title="Smurfette by bbaltimore, on Flickr"><img src="http://farm1.static.flickr.com/115/254176156_5bfd84ea4f_m.jpg" width="180" height="240" alt="Smurfette" class="align-center"></a></p>
<h3>Regular CSS background image</h3>
<pre class="brush: html">.smurfette {
	background: url(smurfette.png);
}</pre>
<h3>Base64 Data URI as background image</h3>
<pre class="brush: html">.smurfette {
	background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAADwCAMAAACe2r56AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAwBQTFRFAAMAAAQA8fbw6O3nAQYAHCEbCA0HlpuV3uPdyM3HR0Dwv8S+BAYRSjvmYmdhDw0yPzTG1NnTCAkdoKWfO0A6LzQuLSiXRjnbeH13goeBtbq0ERYQbnNtqq+pGxxhjJGL7tgZEBVARUpEExA9FBhLTlNNJSokWV5YGBtXOzK6ODCwIiF2JiOBQzfRNCysMCmhKSWMCwonHx9sJisl3cQWMTYwys/J5s4YU0kH1bsWZGljl5yWFBMANC8EAgcBwKsUg4iCt6ESExgSREEFgncNWlEHHR4BEhcRn48PqZoRjZKMoaagZFwKwMW/mYcQZWpkT1ROl4UOY1sJx7MUq7CqyLQVv6oToZERWl9ZmIYPGxwARktFeX54CQ4ICA4AZV0LNTAFkH0OUFVPVUsJioAOHh8Cb3RuMjcxmJ2XeGsKPjoHPEE7fXAPNjEGMy4D1rwXPTkGcWMLXFMJkX4Pem0McmQMFhUBDgwBBw0AMDUvoqehBgwA8/jyqJkQJCYBW2BaJigD3sUXeWwLYloIDgsIcGIKDAsoUUcFOzcEY2hiHiMdJykErLGry9DKiX8Ne24Ntru13+TePDgFMzgyPDO7qpsSuKITFhsVwcbANDkzybUWuaMUQ0AEDw0CXlULbmgN1drUKC0nEhA1gHULExIAHyADR0xGLC8CcHVvHyQea2UKUVZQVVJPICUfDhMNTUEIdHFusZkT6/DqCg8JQj8D6e7oalsLQUZAICBtLicFrbKs38YY2b8aGyBLPUI8CxAKppYWTEAHz7scsJgSICEEyc7ISUYKFxYCopISHB1idXp0uqQVFRgbkn8QbGYLEA4DNzIH+/OhHh5rTkIJzNHLISIFBgsFRTja6dEbCQoeV1RRCQYDKigdSEUJ2t/ZMzQXQT4CFRI/588ZSkUaCgsfRkMHGRc8Jx8F4+jihouFGBcDhHkPBQsAFhQJERAAdmgQMyyksq+sDwwJHyIlOT44i4EPen95+OIjNzQxbF0N8vfxamQJAAIA/N4aS0L8+//6HBVTywAAH9BJREFUeNrsnQV0G0magKtRzMwWk9mx49ix49hhTibME55kMszMs8O4Q8tMt3DLu7fMcLvHzMzMdyXrqqq7pe5WS2pbijP7XnreeDwG+dPff/1c1aD6M3iBK9BXoK9AX4G+An0F+gr0Fegr0EsEbbSEdxsMiYTpZwKaCYei+RwPIQToHwg5u+XNDW3alOIQJ5w9NDH5DI2/Ygl618OU600KzcSiXizeyKFNYy6V6L0ga3nTQTOG/TmkDWAkdJe2CltGQP6v30zQliAChtRINMa0+Kmnc78ZpN8k0K4g0eHo5vZAf8PnTG8CaHoSy5i/f6s+Ebp80M5cZmg6EUF6/LHJe/S/+G6OC19OaNqD9AJ4371A/V8P7ZcPGiPDC5MLfnk6C/KXCZrJYl0OLeoP5KGXuRzQYawZi/ZyBpgzLj10FEUUfAcLKgw54xJDG71YNTryyhbAWZYU2sih0M3XoZcw8Xx4CaHvwVYj17E/tvDAsHTQ2GxEuqCRrkg3qVtDx3BoH+vG37FQ0LJE0D4E7evOHzJ0uJp1QxtxRJfo0l+KdmFt6IEOY+huxZf0SNc8ekvoSQBA16CR4QPhpVAPnF3HurZ+LDxvWoKFOIKoI92LdzzAuwTQd2Gl1p81MdFsawXIQc8SOJcopob5mA5p0zE7D9vE/OGueKq2scfYCMGG3mBLGRpDKR6iVcu3keRh6F0C6CozMyKUuyDvyxssJrWkXGFD1IcrYpw3aLC0uyP0CIwuTRLgOjPKC9zCR87n890pVO+Er0b2G/TedQvsgjvXm9i6tkZ3cLMIEgiXSBzJRhMLs4mjwLdk0OLdHXvGZRyzPPPrz4xVz2CNWXgOFoOdx3uLr5qGsF5YTCaD8vKYyNVcuVOdW/7FQwcBnA1uQio6huMgl8mEliS57Pb9oxGkRyO+lN1uoDXC3cRlg64yW6t0HvLNvvvaZBanao2FBw7y9GWDFnxPtKW/8Ya1blGnWr0YaC8yedl8frs9hXOEoKeVBmvdAwDXLzl0EMLRUOjwjtdfemk0wgkOE/IpO1JntAJ1vIC909Bx4dCbsXvxmORq6bIYDAn7RNB+aD3S4lG0ABPhFsJnIEgtMfSdAHCTJkMwag+FDJYGT2gKz0yMctjzc1671g8QqweZpYX+F5iqSdllSKSyeaTVjWvQZNg+Qjwnlw3GVD7IA0FiSaDprZ5zhpBhMpQAo2jpyTAYS3aU8yGNaDRkdNhgzxGV98rDPzoCOfqSQjOmRHaUR0I7cgTddOro1PHxtVMH71vJHQp5ZPc+fNjr4/IJjcjbGPMiiXPyLyU68+WtoY2T0Tsp6l8PfWr3a08zv/JflUrP8op49bzx41uOU1mTKqpGMsxrtJpNYwrdpiHMXhpoVyh1hHoyOvluJO1Nv/vqyT2Vhmv5KTAaUi41JjGKtCHrodvEevwlgGYSWQCePDOGP938wdu/uXN5I3KlZ9/41Jq16w6p0hVTEMXarWscSD9M3YZmkAMBZ+/Cn279IPXNfT0axMuuWTd+y1X4s1VzO4xq89DGfTAQGroMbUE+4mvPEOSPrNulKeNn133oQP0by57ar1yAn2sXaEc6Sbs0oOkoAPxmEkVeWHlKg7hy1aPrxvcq38Q4NbEgI5ZVmpNOoRlkoGbx7XZ9bOXVKr1Yfc3cs5Xl4+s2NOrLgdvfs5DkzwOgsXvQ9CgAF/C99hzZokJbMffihuU9jx68RkvFK8vOswsQtgkAT/egv4a8CJIBvX/dahXVhqPPIrSDD2npOFGRWylOt0kwQRjqGnQMQGorchNn55arkQ4iU7Hhur2V5tfG739dr/hcnUR6augwBf6zWv3yR3apVGDZA4+irzy0q9L6upkN6i0ldJB0NajHXR+mq5OUGq7n4E70cec1lXbXzZRXH0sILL6Zo2WnN7MNAh1/CDuRt1TaX2tYff1ZFJ5Guwg99vUpNcnah7GGrO3RAV25UR81DcFoF+30S9QKtd14OyFfXtF13TLN6Sk8+SDsHvQh6lSDQuN38eyGis7rbbpknV18D6oB+jB4sUE53ofJ379ML3Tl5mkdqzEPYLhL0LsBUDuV5QDrxVWgov+6kbrQltpHLTp7AQ3R+Uo1wanr8MdnDy4AurKW9bYb0EpRVJegjQCsVQN8iFjnuXULge65jvpRe0Nt7w70GQo0rDeA/UrluoWoB9Km26k2Qd8Zlsp3BZpeD4DaGK+gCPQUtXdB1KupNibETlG+rkCbYKNK7xUkvfOO5QuCrkyB1g38SQi6A70ZgAYt2EOdqiz0Qhnv0X8Erf10olvQhwG8rwEAzAlx3r2vrN5z1VUr2hJff2r8KPXn09ceaB3n20GXoNGKvq4BYvyO1Q8fvY0iF0D/Tm1Zc2BVEwmv2jZ+mgIgU5p/7NrKnjtazaXsh3C0K9DnYKN6VLZR1AO7dh64994DgM0krbghR1Hrxh/deJVivb7y0PjUHQj4dwp+5/x8H7i2UtkCuObV0ZHFV5nUOg2Bykj0nJpaK9D1rLUG5ueLELLx5GNWFsMfnNv18K6Ht2yZOojeB4DWcrlknidXACLonqkWNRvYLTs9hl5pXGm5HpeqYctveKwPSXAIugMClrPk9/u/+MMfxh2OTDrZm4bQapuvXfCf8DpY2bxoAyGY6Ao08wgAcs/X89FaILLsYBoj2TLpvnnNq4+FMF7/X3AT/q19oGlNF92o7kBXtyN9fUimqMtkzOb51lcvUpy6qOFJ8nsXQZOkOwzAolMXFbQLrSSwT+0Tr1u9bJ2jxjPQ6x/QegNmCGF/HVpQs1WA13aMIQi7FuUdRtArVZHzRuq6+x4LCKCDrDuTcUO2X4M6CVln/R38n7ASjjYpFexAy8fSJejqBUR9n5K6ZyWwBgZhL1p8jjhB72ehU0PU/mLtcydcI2RqW05qCpSOQLDoblED9AtPIurTSuq3gyTSWLbPaR2QmFi85gK9gxlHoail4IPgG+RXd63Yc1RrVsEAF+/FNXJEPHxMratR76XWXgMcbBkZhyFrnW+YtTkzrLs8WHbAjKThzrr441BwmsjBHqM0Iicf0o5896Cr9LkjiFqydT0vAgiHB9zWDDIO9QXYC5Fi+0VdSQpfLrJsDXoIfIX89g1IranGBpwLz+h0tVhTdSHFPvpWydgB1i20kiMR5PMEzzLvl5DRVYJlwmwV/is4RCHE3YcjxHEqohZ1Ao/sG7sKXaUP84AaF9KBt7N9yPv1DsMEU7VEfdBRLiGqtEPmY8qwD9sVq3/eFh+2Ce/pcfLLP8VB4fUUDDYWPeBiXUvzRpHxzCPU6W1Is68BwuLrz9b6mdHXv5qGA5L+mp2lXpiMW2HaZu5FXtFPtAMKWZtQqzpGqaRqwdNwdNehkUufvH+Wmnr4/WkBzSGvrBh4PCtmtbqtVnEKoRAfGB7CnxDHOQDnKjLoB1mVseY6WYZtmp/0uUNAdHID8oiMzlkYaWYpZnIZgyI5tGZK83JBV8Tk7RZKUU3yoGXIuy4RNMLjHYISOOT3N692FzBZLDr7+uqeRco0PySaoNso2eQjg24TWHwfoC10CAiqG8jJjUtE/WNe6I7H44X00LBgxMFHRWipOPwQRdUNXAox5y5dQ/8eSdAK7fCpDSzjNiPXiNW7QPTfereUSR6TnNTp+hQyMncU6GiQujX0JuAXHSBWiJg9geUTa4iAogWFC/fDWpVql5SSXU1J4ZEFT9Jeyskazi06kEEDGROFORTj2NUaTf9iQAHtgPfWoPfUoYVfM0aA2KdUvcju0InRUQ4ncVwqGPKMGRcJPVZLRcoJooqko+0jwRldn2JKKAUdgPXk+JqNNehZj2B4UBoa2arWr9iZ9Stv2HLztn1vvPHG27Zt2zKHss6RoGkx0EFYkjx1jnYRo5arMmQZhiMomRawGZWgB2C9SrXxFimlFwrtDNm+phJiLEWtW/ttdTnuwTXrQC5ELxias4qyG7aKU8gQumJ2IRxGXxA0015WRqVpWG8oXfWWWmlvliZ7uIBqy9zW4OzpW67XrKIsv/Wo9v66ltBAsB1m5OrcyUKBJdteDBHiHsiF73jMoQqlWVhvjvVQEsBtwFP18HguSCZnV3B25edfaV6sWnEDpTWYClo2oNyCBxezK3MRhafVGHZuBgEaxSOevwyosnIIZcW/t0u1qA1UxDSC7MbZF+pL78Rtf7eqTY3tGKtRHQEt+9ck7iiIQRDRV2uI4X20JGmeDiXVOe6Aot7zaE3qx6gjFNj+dC0b3/EP42/T1b9pdJ6toMPEeAQgHKoj2Ry5CEyJqxJd8Ya8fBhCWWN3Tz1Lft800udsNGRIGGZO/Nnnv/2n+iqw29iGJLMV9CaYJJKT12BQ9lpOQy4kICc1knI/FAraUgf3RZk9eICiqNMPzN36g19YQN34VkqdtreANv0+0Wk/hBk1FwtZx1ByWDOlRT9/tTyVv31jpcPrJMjqhTa8630A2nDIVlMPm7TmbLbmhaZ+CNcq+xirO4S+flrVcWwKPbmlsg/gWocNqYHIWIAF23zbyw3vVnQ6Tt2xt1NRUyld0JM39FT2AKIYjpr1cIiJSesL6ccaxd989OjGno6gf54CRh3QieM92DMQGaP7zQra64yXy6W20DYWqgpr+x74QGfCnlYaEG1oz0qyvO+AcFAw1GxvYF731avSavT2b1z5wC5l50Dfda/gfL5E2dtC07OC2b8JQBbBmgskY40P+v2FYR1Kjd4leFzdjVm96y3voKbWbjtwYOdV+kcDlv8VWR7nlRsZNaF/tEXqxkH4XkzxcvxPpvFBNdRjDhm0s9REwc1fhOB7X2lE+O1v/XjDtddee+PJk5+d+uwfnPzj75289tpvrPpWK+obbsUfj1P/3g56923S6t8GlJ5FHc5Z402w+1nw9/+hpxu9d+eNN50//cmbm5nF596BWd6pnMLRgh6tL/4ba9TmfjWfLYmEP9xsNaYBuG+D3ibv8gM3rpu7WktrNk7/BBfWAGg3w0TJQq+rMfUQa81kYFqxFm1+K8z0Wgeb2hCkWvDutfrVt2fDUzc+2PjVd1xEH59qC31CMSSx8f2QlUoxvVIpzFZCaYHD2cpYu2EmXshA6vi+ljZa3gDu2Xb8nQ2m8fw0donKGXEN6EduUgxdgbjNPCwFde5CIRNPOsjn5abE5gEUgv+zEF2/F4C55r5lxYGPzm2RadGq8eOqgfgtv1ep/A+lbIQ1QpvAFtmbf9zaX9NfWOx18LB+NenNzQ+i5Kx2G17Gux/uGG8R7C+/9+Hx+u1YM32z4rvvRLnPd1TtmUboD8vGVJbd995ArZwLYT8pi8IhKZbWtBs4n2T9ivga5ZPUdVe30ufVj9emntfcvkX+rYunsRfn2sQeKXCgZpDWJW0yAwfj6N90P3obfb1Y8u4Gpbb1kjdkdSoqCmRrK6Duk5u1Vc89MD11tUyjN85JncAVH7hBZnVOv6tyk7qV0Ah9tqYee++Wqy3KDx2yxMsWz7jR0jTL7QkhzuVUepMWNhQjbGkccdlPb5umWJQQsOP1PLxnzU2iqVnx/Rtq2rJ6etX1LFB1EhqhX5fKFnvvFoowAUHaQiWajcukWExDNkNiKWc/7o3jVNdS9SVVKi5qE1LulTgh2Dj18Rmji3FtJ8MYsoBwz1PbxIhjek762q/N9TxFqY9QaITeAQBZNXvuwGGoE+sBmxwwl8h/y6WBtMNf1xknQnWkpcq61Y1ChARra8gKZsQN3ACs2Xi+NoZvxNjsxbqOrLj9pGgypsWFu+qXVpwHDWcRAI2iI5hCd2fVSjxtMFArl2OLIASogbJbFjY5JXPoHi7NF9DLR9TrE6U+Utkd7+DeLrvVY68j7Nvr1MuOCxWpVawo6osbj1FUUMeA7CPIslbeejcszTsdZVvfQEFsbjnM9eTWmqzH1QPYogySN2RlqgnYEMTiok6MFytUqjbtuc9Q4HjdjPd8QNCQ24Uiz5pja7RmFTScywxaMjvvhnFn0hGQjALmHlB4vKG03++wknUZQKEr+VFnqkrnkvON0CbSMBNrJcqb/cLHKUrmzR68jbQC15DEcsWXEHNQX/PzLN5HODTIlhS3WO1LkKOGBXMt7HejbxdcVQP0a0PjbcLBFG7FiUmqyyMcV+biKeqtdeqdf9tDygbH0Bu4+C5KcyZEK8pjtuNbOaS4zVYhiVEY5YxQgRLzQretP49P8EC/NpjpV0LLVYKpMlirGa5qFHpFkwDcJlOQaWyvfxlJv+ePngTgsO6qKROB9Ya3lGJrjEuUWdnYBHR76SqDSyWq8s58bbrbKBS4sviOm7iUsT4L+Vxd1N85gGM7amfPxouAu0t3fZr2NYhVsLXJUqtqB/YAMQydlA+rEJco0QnzYVFaPUZBnZclsTvxdghq2fWf/Ez0Hv1FdSPE9Q4lEhtPYiORLDajHiJKYEBRVYCFjnlNaC/Mh7TmC4MUVYvtlrErKstOU9Qxar9rIe2LBIir5TxUxDaEBBxx7TA6DsUScBz5+5LSTkvhjtFg0DwIhIZ1/fjJi5WeixT1wZmxBfVcmIgyUg4ka4Ulmx8767Tf3AxaKAFnVMWbttMoI+CiJOjfeLByngIfXmh3K6j0w0XWjQXX7y850dfN5jIyJO5G7LhwRAo+RxQWVQWFRmjLDl/e6/OBiHBYghceF6H/Yk3lGAAvLbQlx/AKhS6x2BMWkfUYsrKO+GApQGJNa7yknroSDJtRUc4WDE9DLT/hFQvlL0TJDr8JILY5nru1cowCZ+9ZKHQCygTdF2dZpKF9kNiTPmepN+OWwhG/aiEKaVxMLWgzVAc8Lp/sUAJyylOQEiLLbcd/MAWo7e1a0I3QWZnrK7JWZwCFR24FotnZ5+yPDynYStK4a06dOxahartkjJMfPewT/AsljuICMHvXIjq26+uS6mchch8krx1qWwkTRpI8DT/phzmFpQgqspAoCS0M4CgZsEDxwxkdc29AY0Q4XpNe3E10xaH0FhqXEwpoDNcwsJdUzALRXkWKGhU0Jwbmlr1yngVHDuuaAmmEnqkppc2JbEJRWGR9raGTYhwUaiwsuBUqHa0vStoSsnukKT08yTzy5UU39JGw6vN3gwR6uFVFTxR0SjDxbo1vyQ97gF4S8RnD0ai9fpSCF3L5rfpHbTTstBEFvnEpxCMStlnb6AfSn1A4bDB4odXhHlDZb4WVjpKo2pdNuBRzWAsbhtTcRDmL7HDZqTDWKHYu2Vo0LOoXqwhpzaza4GnYM+8Cj+7SDE2/S45uc5cDypQKE7Gs2+1IqzSArWWSDkdvSdW/hW0Hf0JwgZNjTXoumwg2m+yVFqCtOJxxpB1xMr6pVNwSsuLxfv9gUSMiMbthlIlFxWPKXSaPofEwGxPPMV2Bxr1r4aS8pCLMKENc1RtQNfCb97xQHuY1MFUybuLhoh5TLKQehmC4hTK36tjSMwJ2PRQpOtxFv1rQSAHSfc17imQsLISwjHmh5JJQbZ30LvyQ1tanbUas9ZF5c78Dls24yKXUWrOzv1VLkYy0oPDIlBcnPJQbAeg8t/DBsVbQRs5tE2zevG04aWXjfSTDdevuzZnRe44gi+Y14g/2UDSRMCjlbMkt5hjwVuoxmq4ZOWe84A+IJlk/dBzyLl/UEm1mP1xZOLqYeeQW0DusAW0/opfZj/MCS7DJHgv8cAdgX9QgZHPo3aCs3YdrF4fIzHezgVJjLIoPl4eRbg8TclAzgy0rU0Bb0wb/b1lhTuuIQmPM7iNWaQgu9mjWptAuALWcBanq1YsiTre1CXPgMXIqJw/5hFwlUhHRdxYCw4s+47QptAWoix+4yMvmDJtRyDM06MTvKDBohVa/VhOxv2B9VTC/Fq52ekDYJ3n75GBgPsB2b4d+zXagCFWhvOb+DMtFGeHsOeTi01IJOD3oHyg6nQFbwBywOUuDBQeORVKflt69CE2TI3SH0nG/U8x1urllRLy2I7CyhO30JyGfEu2A8fCh0f8eAfzojgkOal58tC5Ek5A7urxoMcgTTZZnug9tJEDuZDyeJKPReWOzn6ldWInzUYNHXvsyZY3idHomoKxaLf4gphZ22vhzUvEezO7QPmmQKKnXMmZS1LCMtftuCtmjRjGhKqvHb5hLAV2tvnvT/amsdyK0tcn38XByrtFsRYm9+ENPMFo/Fs2gskXxTh700skRoXgKfEbDpRk4e97Hf0ExhB9V+VErdF0eaJ/08BHGZAgGY3Wdd3nUByhWQ0p7Xuro8QMdQAepPFZLkz0ircNsc+nZ3aqSQ+KyQL/Gj+Eh8wgYzc5MhkKHhIPMmwVAdlZZV+DpywK9PlQN38nnd/+vVLcUxu+bCNvuaF51WjpoE7hzPZeoyYteLxlr7SDIK4e2Qei6LNDVTwUZlSURL60YmVGEhvEOj4Pv1kMdg3LH2Hjqj0leoQos/Vm9TbompHsuYTec4BySd8x7ITS+GaBdQBUy+UKflncX+IKirpCtvhmgEzAdHy76C/GasOGrdkkHUIDnCChSR9lidYXtefRP0BA0LTU0Lpc60o5COjlUG+PDBtDry9txTGpT1rKlukGYOCYwMkpqqZyHWUpomgwhCIV4Z8BZTrJfLdTRk051Pg8jBvwYwJzwfSRjxpJIYQ2LLiF0AqVmvY6kI50eQnK2Dgf6imno3RQycGzBr64QDzjKKKWPBCO4UFgKmOcHMv+GK5TGLMrP88Ylg35C1oaz9ZUyQ5kB4ZEqkUKzqV8s4vpxD3E+aMT7jZGOuJYK+k5VucFcHoLTkPeEob9Jsl7EyZC7PiE3YOXRut2KMiEfvWTQNvVeKPiryBxHYPMhWjKw5a5l/GYH3uuIt/7ZlwaaVldScS/05XmsusUWFSgyyVfzlAHWR1ynjudzdQXaDhsk2j8gGAp/q8JZaYgtmGUjli6S4rQPTLoBHZK2MWu0Fx36N230C4qRh21PLOwCNNkxZzU30dt+/dVslgyzhNsfiAu64Q3T8SYj4GY3ZAd0UzsINB2BqUsOHYRum5ltnICTrAhMmnVCp4Xunb1tBbhjaCOPm11+9YSkbDoBuov6oDNC/Sba9sDTjqGzwkQhnsnqtWk35XCVVY+0HUISZmibjHUKnRDPXsLtc8hmNDqgJbd4iIa5PbRYjLqEkqaRZWLWS8auKDWiHertXYGyGGRn4v0t99hZI9VLodN0LC86WSYxg59qkK/7wr7avpLGXUblevc86e/1F51abZuAmNDYId9FaFM0/zxZ364Zu8domfDg2SFZja5v2KoNbSuz1iFVPpbRaIYJCU2urUvUD+05cQ4T05YzQZRhxFIzRnxiJlSMS5v7nMXGvXODrLVsmw/4M3Joh4bxMAqJe9uQSfeju4PPE/WYCO1G6OG8Bz9l7nCk+Y4zuS+Xdn3ZiuWkw91E0jbWJ63DaBfVw7J/P0k+wydmaNMTIwDMwvbQAQccUoreXPL3DzjNjbYxLBW9LV2D3pzfTRQ6vD8Uswc37wdnx3bAhphUw5G7bboiD6swRosfjtqtKM81Qd4+PTkyYg/GaAOXsuAwGkJn603CSb0N3gFxGWZ1PDlXJ/TY/WQkPsjDUQNDezg8XceQo1WKbTxzi810Ss8ioOJH54a6JWkaLzwe7B9DTpAbRdoXniBnpMHBNi19fcoxPyiW9/J6HgWoX6fDHNhurNKbZw9trcby6+GREyh3DnsLLcf1Ijrj6SKbF6urELY/OUg3NMPdj6RsGBk1hZ94z3oI8vdUAYR0FNpaKUeC1RWXBljxJFHc1Q12D5oo3Fk4m+VT54Jw5HlS++dpY4sscADmDGl9Ci2qhInX9bTfhUDTHAAjE2Mxjt9UtQRxcRdFNilrM1H3sdBjL+ixdmmpIonPDoJdrnvcdW6sylyAs5smkCu88DQxTozad8jGwLmqV4e9Mzv4WK1vw+vp1S00NGU4CI/sAJB7miS0DD6mKKnJ8jKOIfj2Km0uSNm3hYe8Uc8DlxYIjR89OTOWBdFqWDoACyWJ6YB2yuKp8n4dcha9Np4O8HgiTNehXY9Qu9GLn8iKDU8SRAZ5tiHTcmYovIcEtoMOpCOW+j20V316jkpbRObCAaQgIbB+02YgPnPU5YXWQZsCmTN8BC8prs08XL/bK9Z28d4rO4o8PJcG2oWiVCRtiyVYPycsnIXWuN9pNuPRmowbP6NvBGt8sKVzMQ84QvXqCfYqeV2TK4vMEbGQwQjeAihlGYzHnvVBLufL2oUuxCewpGmObW4/nDWzUaXRCvHSVYu+VsBiE9vJiU1bhY5nszTjE8RNWKSDwRu1OQ7tklhpHNuh//Hqey5vRyUEC2nENZkWHREyEDsc0vI+gQxMmeRl1yypCuprmXdW9xg7h0eGNI+Hq35BDIzzsgNy6wuVlT0vHse45H6lIvQSQFfJ045RjNPwx5jQq1CoFNEhHrp7nfI6iJuXP1TREhEHDj16h0A6L0CGcaYYCSp0JJYVti4Ly8pFrLq1MOj39xZQYisbXsDVbeS5idSZiN4hkC6UeukZMujms3tIqGYyRBEjN3q/bJM4bTIg2+LDT5hOKCeFjLlappLSPQTSnUbR5kNH5M1xcAKbsk2QmLGWlyFSm1kI6X+qRLemEKqWTdsnRrmXvN6JybCxHmhmW1FbclIkgBQKci8sObRWzoDVxts047PYhcMwfQZDKKenqbUk0NUxDMVrmgRXwotHUmPrpVM8UwsYAbmk0NXwI8T7JJRCZMJkBxePDaUxSk52ODG2kJe9tNDV7z4pzdoYyLOEjbFQliNnZnAhybIYX9varR1FXbqYJ86K2Ci+ztXsi/f5Tl70UkOja/eZlGJYiLs/Gu7sFZcAGl2f222/cHaE27F9+xObxjp/uaWB7vJ1BfoK9BXoK9BXoK9Ad/36fwEGAKeaT7p+ZP6VAAAAAElFTkSuQmCC);
}</pre>
<h3>Comparing the alternatives</h3>
<p>As you can see, the Data URI example is <em>a lot</em> of characters, but the beauty of it is that it describes the image inline, completely eliminating the need for a HTTP request! And sure, as you can see the file size will get bigger (especially in this example), but overall the result is much better than a huge number of HTTP requests. Besides, from my testing and reading about other peoples&#8217; results, if you gzip your CSS file the resulting size is about the same as the regular image URL reference!</p>
<h3>Web browser support</h3>
<p>Data URIs are supported in:</p>
<ul>
<li>Firefox 2+</li>
<li>Safari &#8211; all versions</li>
<li>Google Chrome &#8211; all versions</li>
<li>Opera 7.2+</li>
<li>Internet Explorer 8+</li>
</ul>
<h4>Internet Explorer&#8230;</h4>
<p>As you can see, Internet Explorer does actually support Data URIs from IE 8! However, Microsoft, not to get astray from their long-standing tradition of doing half-ass implementations, only support data URIs smaller than 32 kilobytes. That might sound like a lot, but naturally it becomes a stick in your eye when you have larger images. For instance, in the web site I work on now, I have two images that were too large as Data URIs for IE 8, so I needed to include those two specific files exclusively for IE 8.</p>
<p>What about Internet Explorer versions older than IE 8 then? Actually, interestingly enough they support <a href="http://en.wikipedia.org/wiki/MHTML">the MHTML format</a>, which is an alternative way to accomplish the same thing for older IE versions. Stoyan Stefanov, also of Yahoo!, have written about this approach in <a href="http://www.phpied.com/mhtml-when-you-need-data-uris-in-ie7-and-under/">MHTML &#8211; when you need data: URIs in IE7 and under</a> and related problems in Vista and Windows 7 in <a href="http://www.phpied.com/data-uris-mhtml-ie7-win7-vista-blues/">Data URIs, MHTML and IE7/Win7/Vista blues</a>.</p>
<p>There is some serious trickery, and limitations, when it comes to getting MHTML working. I know a number of people who used it, but in my tests, I actually never got it to work properly. Looking at general web site statistics, though, IE 6 and IE 7 usage steadily decreases all the time. If you want to solve it with MHTML, absolutely, but for me personally, I believe with offering the Data URI solution to all of the above-mentioned supported web browsers, I will still reach a good majority of the market, and, importantly, future web browsers.</p>
<h3>Tools for encoding</h3>
<p>There are a number of terminal-based tools to convert your images into the base64-encoded format, and you also have the option of <a href="http://www.dailycoding.com/Utils/Converter/ImageToBase64.aspx">online image to base64 converters</a>. However, doing all this conversion (fairly) manually and then pasting the code into your code is quite tedious. There has to be a better way, right?</p>
<p>Right! Nicholas Zakas has created the outstanding tool <a href="http://github.com/nzakas/cssembed">CSSEmbed</a>, which takes a CSS file as input, goes through it and encodes all image references to base64. This means that the action of changing all your image references in your CSS file to base64-encoded is a matter of seconds!</p>
<p>Just <a href="http://github.com/nzakas/cssembed/downloads">download the cssembed JAR file</a>, put it wherever you like (placed in the same directory as the CSS file below for simplicity) and then call it like this:</p>
<pre class="brush: html">java -jar cssembed-0.3.2.jar styles.css > styles-base64.css</pre>
<p>This creates a new file named <code>myStylesheet-base64.css</code> where all image references have become base64-encoded. Awesome, right? It also supports conversion for MHTML for targeting older versions of Internet Explorer. Nicolas has written more about it and how it works in <a href="http://www.nczonline.net/blog/2009/11/03/automatic-data-uri-embedding-in-css-files/">Automatic data URI embedding in CSS files</a>.</p>
<h2>High-traffic web sites using Data URIs</h2>
<p>By now, I hope you are as excited as me about this! Imagine removing about 2/3 of all your HTTP requests in a second, thanks to CSSEmbed! And this practice is not some future technology that we might use in five years, it&#8217;s here today! Just take a look at the thumbnails in <a href="http://www.google.com/search?q=monkeys">a Google search for monkey</a> and the search button in <a href="http://search.yahoo.com/">Yahoo! Search</a>, for instance, and you will see what I&#8217;m talking about.</p>
<p>Therefore, I hope this have inspired you to get faster web pages without compromising one bit with the content!</p>
<h2>Acknowledgements</h2>
<p>Great thanks to <a href="http://www.nonblocking.io/">Malte Ubl</a> for suggestions and help, and to <a href="http://novemberborn.net/">Mark Wubben</a> for discussing base64-encoding alternatives.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=pIPY99e4bA0:fUSjKjzEFgw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=pIPY99e4bA0:fUSjKjzEFgw:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=pIPY99e4bA0:fUSjKjzEFgw:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=pIPY99e4bA0:fUSjKjzEFgw:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/01/15/how-to-reduce-the-number-of-http-requests/feed/</wfw:commentRss>
		<slash:comments>210</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/01/15/how-to-reduce-the-number-of-http-requests/</feedburner:origLink></item>
		<item>
		<title>CSS background transparency without affecting child elements, through RGBa and filters</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/Dsj9mHGmaps/</link>
		<comments>http://robertnyman.com/2010/01/11/css-background-transparency-without-affecting-child-elements-through-rgba-and-filters/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 10:57:21 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1577</guid>
		<description><![CDATA[Looking at the design of most web pages today, almost exclusively all of them include some semi-transparency of elements. However, getting the desired effect in CSS is harder than one might think.
The problem
If we want an element to have a semi-transparent background, and let whatever is behind it shine through, we have two options:

Using CSS [...]]]></description>
			<content:encoded><![CDATA[<p>Looking at the design of most web pages today, almost exclusively all of them include some semi-transparency of elements. However, getting the desired effect in CSS is harder than one might think.</p>
<h2>The problem</h2>
<p>If we want an element to have a semi-transparent background, and let whatever is behind it shine through, we have two options:</p>
<ul>
<li>Using CSS and opacity</li>
<li>Creating a 24-bit PNG background image</li>
</ul>
<p>The problem with using opacity in CSS, besides <a href="http://robertnyman.com/2008/09/16/you-want-css-opacity-to-go-with-that-well-suit-yourself/">the annoying syntax to cater to all web browsers</a>, is that not only the background of the element will have transparency, but all of its child elements as well. This means that any text within will have the same opacity, which I would dare to venture is <em>very seldom</em> the result one wants. You can cater to this problem with creating redundant elements, some tricky CSS positioning and such, but really, it&#8217;s a mess.</p>
<p>The problem with PNG images is, beside a superfluous HTTP request, that images are way, way more larger in file size than one or two lines of CSS code &#8211; especially considering that the image has to be a bit larger to avoid <a href="http://robertnyman.com/2009/05/26/serious-memory-leak-issue-with-24-bit-png-images-with-alpha-transparency-in-internet-explorer/">serious memory leak issues with 24-bit PNG images with alpha transparency in Internet Explorer</a>.</p>
<h2>The solution!</h2>
<p>Therefore, I can happily offer an alternative for you: <a href="http://en.wikipedia.org/wiki/RGBA_color_space">RGBa colors</a>. The beauty in this is that you declare the normal RGB values + values for the level of transparency you want, resulting in a very easy way to declare transparency for a color. Making this happen with CSS, with a fallback for those web browsers that doesn&#8217;t support it, would look like this:</p>
<pre class="brush: html">
	.alpha60 {
		/* Fallback for web browsers that doesn't support RGBa */
		background: rgb(0, 0, 0);
		/* RGBa with 0.6 opacity */
		background: rgba(0, 0, 0, 0.6);
	}
</pre>
<p>The transparency will only be applied to the background &#8211; fantastic, isn&#8217;t it?! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3>A little caveat</h3>
<p>Shockingly enough (erm), no version of Internet Explorer supports RGBa colors (i.e. not IE 6, IE 7 or IE 8 at the time of this writing). However, and lucky for us, in year 2000 Microsoft went crazy with implementing various filters in IE. One of them are <a href="http://msdn.microsoft.com/en-us/library/ms532997(VS.85).aspx">the gradient filter</a>, and what we can do is use that and just define the same start and end color. &#8220;Ok, but how do I get the transparency&#8221;, you might be thinking now. The answer to that is that you will declare that as part of the color hex value. A CSS gradient filter achieving the same effect as the CSS code above would look like this:</p>
<pre class="brush: html">
	.alpha60 {
		filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);
	}
</pre>
<p>As you can see, it is actually declared as part of an 8-digit hex value, where the first two numbers is the alpha hex value, the next two is Red, and so on. The difference between how we do it with RGBa is that the hex value will range from 0 to 255, just as any color value. So, how do we convert an alpha level of <code>0.6</code> to its hex value?</p>
<p>This where a little Math comes in the picture. Basically, we take our desired alpha level, <code>0.6</code>, and multiplies it with 255 &#8211; then we convert that result into hex. One very easy way to do this is make use of <a href="http://www.google.com/help/features.html">Google&#8217;s Search Features</a>, and just <a href="http://www.google.se/search?q=0.6+*+255+in+hex">search google for 0.6 * 255 in hex</a>. Unfortunately, though, Google&#8217;s calculator seems to only handle integers, hence <a href="http://www.google.se/search?q=0.3+*+255+in+hex">0.3 * 255 in hex</a> won&#8217;t give you a result.</p>
<p>An alternative, or quicker way altogether, is to use the beauty of JavaScript. Just open up Firebug and type this into the console:</p>
<pre class="brush: js">
	// Replace 0.6 with your desired alpha level
	Math.floor(0.6 * 255).toString(16);
</pre>
<p>99 is then corresponding to 0.6, and becomes the first two digits of the start and end colors for the gradient filter.</p>
<h2>Combining it all</h2>
<p>With all techniques learned above, let&#8217;s put it together in a working CSS rule:</p>
<pre class="brush: html">
	.alpha60 {
		/* Fallback for web browsers that doesn't support RGBa */
		background: rgb(0, 0, 0);
		/* RGBa with 0.6 opacity */
		background: rgba(0, 0, 0, 0.6);
		/* For IE 5.5 - 7*/
		filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);
		/* For IE 8*/
		-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";
	}
</pre>
<p>NOTE! In addition to this, you have to declare <code>background: transparent</code> for IE web browsers, preferably served via conditional comments or similar!</p>
<h2>Web browser support</h2>
<p>RGBa support is available in:</p>
<ul>
<li>Firefox 3+</li>
<li>Safari 2+</li>
<li>Opera 10</li>
</ul>
<p>Filters in Internet Explorer are available since Internet Explorer 5.5.</p>
<p>This means that this will work for virtually everyone!</p>
<h3>Acknowledgements</h3>
<p>Thanks to <a href="http://css-tricks.com/rgba-browser-support/">RGBa Browser Support</a> and <a href="http://leaverou.me/2009/02/bulletproof-cross-browser-rgba-backgrounds/">Bulletproof, cross-browser RGBA backgrounds, today</a> for the information and inspiration.</p>
<p>Thanks to <a href="http://friendlybit.com/">Emil Stenström</a> and <a href="http://kodfabrik.se/">Pelle Wessman</a> for coming up with countless alternatives for hex conversion, and explaining basic math to stupid me. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=Dsj9mHGmaps:_oD8sqb4IZU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=Dsj9mHGmaps:_oD8sqb4IZU:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=Dsj9mHGmaps:_oD8sqb4IZU:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=Dsj9mHGmaps:_oD8sqb4IZU:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/01/11/css-background-transparency-without-affecting-child-elements-through-rgba-and-filters/feed/</wfw:commentRss>
		<slash:comments>43</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/01/11/css-background-transparency-without-affecting-child-elements-through-rgba-and-filters/</feedburner:origLink></item>
		<item>
		<title>Thank you for 2009 – Happy New Year!</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/yxhFGSexnRA/</link>
		<comments>http://robertnyman.com/2009/12/30/thank-you-for-2009-happy-new-year/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 22:23:32 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[Geek Meet]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Personal/life]]></category>
		<category><![CDATA[Speaking]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[Web browsers]]></category>
		<category><![CDATA[eumozcamp09]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1573</guid>
		<description><![CDATA[I hope you are all having some nice time off; I just wanted to take the time to reflect on 2009 and what it was like for me.
Speaking and travel
I think career- and experience-wise, the biggest thing I did this year was starting to travel around and speak at conferences. And while the idea of [...]]]></description>
			<content:encoded><![CDATA[<p>I hope you are all having some nice time off; I just wanted to take the time to reflect on 2009 and what it was like for me.</p>
<h2>Speaking and travel</h2>
<p>I think career- and experience-wise, the biggest thing I did this year was starting to travel around and speak at conferences. And while the idea of it had been brewing in my head for a while, it it is really one person I owe a big thanks of gratitude too, and that is <a href="http://blog.reybango.com/">Rey Bango</a> for pushing me over the brink.</p>
<p>Mozilla were to organize a large event in March in Berlin, and he contacted me and suggested that I should give a presentation about developing Firefox extensions (like a live version of my <a href="http://robertnyman.com/2009/01/24/how-to-develop-a-firefox-extension/">How to develop a Firefox extension</a> article). What he also did was encourage me that I could do it and that I should be brave about it, and as a result, it opened up a year of traveling in Europe giving presentations. Thank you Rey!</p>
<p><a href="http://www.flickr.com/photos/68898616@N00/3391540639/" title="Robert Nyman by patrickf33, on Flickr"><img src="http://farm4.static.flickr.com/3640/3391540639_f5bf365b56.jpg" width="500" height="375" alt="Robert Nyman" class="align-center"></a></p>
<p>Read more about it in <a href="http://robertnyman.com/2009/03/31/the-trip-to-berlin-and-the-mozilla-add-ons-workshop-2009/">The trip to Berlin and the Mozilla Add-Ons Workshop 2009</a>. Berlin was really a starting point for my relationship with Mozilla, and I gave presentations at two more Mozilla conferences this year and was also a part of a panel about HTML5 at the Mozilla Camp Europe.</p>
<p>My next presentation in line was thanks to the trust of <a href="http://unclescript.blogspot.com/">Peter Svensson</a> who asked me to speak at the Scandinavian Web Developer Conference, where I was the only Swede presenting, and had quite a good time. Same week ended with me speaking at a joint event between Mozilla and Nokia (the Maemo division) in Copenhagen in Denmark, and it was also a great time, and a chance to meet my friend <a href="http://roderick.dk/">Morgan Roderick</a> for the first time in person.</p>
<p><a href="http://www.flickr.com/photos/68898616@N00/3591593967/" title="Robert Nyman by patrickf33, on Flickr"><img src="http://farm4.static.flickr.com/3602/3591593967_63f7353608.jpg" width="500" height="281" alt="Robert Nyman" class="align-center"></a></p>
<p>Week after that, I spoke at the Mozilla Swedish Community Meetup, where Mozilla came to Stockholm and treated us to a nice Mozilla evening. Following that, summer was calm and easy, and it didn&#8217;t really start again till the beginning of October, now with Mozilla Camp Europe, this year taking place in Prague. I wasn&#8217;t scheduled to speak, but due to some openings, at least I partook as a panelist discussing HTML5 with the audience, other panel members and prominent people in the Firefox team &#8211; it&#8217;s all summed up in <a href="http://robertnyman.com/2009/10/07/travel-stories-and-session-recaps-from-mozilla-camp-europe-prague-3-4-october-2009/">Travel stories and session recaps from Mozilla Camp Europe Prague, 3-4 October 2009</a>.</p>
<p><a href="http://www.flickr.com/photos/nitot/3983431330/" title="HTML 5 round table by nitot, on Flickr"><img src="http://farm4.static.flickr.com/3501/3983431330_e23bf1dfa8.jpg" width="500" height="375" alt="HTML 5 round table" class="align-center"></a></p>
<p>A few weeks rest, and then in November it really started taking off. With four speaking performances at major conferences within a month, I started to remotely imagine what it must feel like to be <a href="http://www.wait-till-i.com/">Chris Heilmann</a>. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://www.flickr.com/photos/manssandstrom/4132454413/" title="Robert Nyman by Måns Sandström, on Flickr"><img src="http://farm3.static.flickr.com/2675/4132454413_35740b1348.jpg" width="500" height="334" alt="Robert Nyman" class="align-center"></a></p>
<p>First out the door was Øredev, where I got to share the stage and then hassle (read: befriend) two of my major inspirations: Douglas Crockford and Steve Souders &#8211; <a href="http://robertnyman.com/2009/11/16/the-%C3%B8redev-2009-conference-adventure/">The Øredev 2009 Conference adventure</a>. Just three days later, the first instance of JSConf.eu took place in Berlin, and although I felt my own presentation was mediocre at best (I did much better at the other events), it was quite a good place to meet a lot of JavaScript people &#8211; <a href="http://robertnyman.com/2009/11/18/the-jsconf-eu-conference-and-my-visit-to-berlin/">The JSConf.eu conference and my visit to Berlin</a>.</p>
<p><a href="http://www.flickr.com/photos/blank22763/4089932006/" title="hblank-JSConfeu_091108-42 by holgerblank, on Flickr"><img src="http://farm3.static.flickr.com/2666/4089932006_f4579172ae.jpg" width="500" height="332" alt="hblank-JSConfeu_091108-42" class="align-center"></a></p>
<p><a href="http://www.flickr.com/photos/remysharp/4125332306/" title="Robert Nyman by Remy Sharp, on Flickr"><img src="http://farm3.static.flickr.com/2591/4125332306_d2f767dcef.jpg" width="332" height="500" alt="Robert Nyman" class="align-center"></a></p>
<p>Following that was a conference that I had known about for quite some time, and given the setting of UK and the outstanding speakers that had been invited, I really wanted to make it a good one &#8211; and I think I did! What I&#8217;m talking about is Full Frontal, and I believe it was a personal highlight for me as a speaker this year (at least one of the top three) &#8211; <a href="http://robertnyman.com/2009/11/25/my-full-frontal-09-escapades-the-javascript-conference/">My Full Frontal ‘09 escapades – The JavaScript conference</a>.</p>
<p><a href="http://www.flickr.com/photos/songo/4162212891/" title="Love Bears and IE .. a match by David Ramalho, on Flickr"><img src="http://farm3.static.flickr.com/2744/4162212891_d80ee777c6.jpg" width="500" height="282" alt="Love Bears and IE .. a match" class="align-center"></a></p>
<p>Rounding off this conference year was a nice trip to Lisbon in Portugal, and a great time at the Codebits conference &#8211; <a href="http://robertnyman.com/2009/12/08/my-trip-to-lisbon-portugal-and-the-codebits-conference/">My trip to Lisbon, Portugal, and the Codebits conference</a>.</p>
<p>And just to make things better, December 23rd I received an invitation from Mozilla to the <a href="http://www.fosdem.org/2010/">FOSDEM</a> (Free and Open Source Software Developers&#8217; European Meeting) in February! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>So, thanks everyone for your trust and letting me speak at your conference, and thank you to Mozilla for believing in me!</p>
<h2>Honorable mentions</h2>
<p>The absolutely wonderful thing about conferences is the the fantastic people you get to meet, and the places and cultures you get to experience. I&#8217;ve met so many great people this year, too many to mention here, and without a doubt, my feeble mind is probably forgetting a number of you just right now. What I wanted to bring up, though, was a few names that I have met at more than one conference this year and have spent some considerable time together with.</p>
<h3><a href="http://somethin-else.org/">William Quiviger</a></h3>
<p><a href="http://www.flickr.com/photos/robertnyman/3985387400/" title="William Quiviger by Robert Nyman, on Flickr"><img src="http://farm4.static.flickr.com/3528/3985387400_63e508ce82.jpg" width="500" height="333" alt="William Quiviger" class="align-center"></a></p>
<p>William is, amongst other things, an event organizer for Mozilla, and his out-of-this-world ability to handle pressure and make sure things work out, while at the same time sincerely caring about everyones&#8217; wishes and needs, is extremely impressive. </p>
<h3><a href="http://patrickfinch.net/">Patrick Finch</a></h3>
<p>Patrick is the European Marketing Manager for Mozilla, a fantastic and friendly guy, a Brit expat residing in Sweden, and, at least in my world, he sounds and looks like Remington Steele. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://www.flickr.com/photos/robertnyman/3985413272/" title="Patrick Finch by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2580/3985413272_7ce4d85505.jpg" width="500" height="333" alt="Patrick Finch" class="align-center"></a></p>
<h3><a href="http://brian.kingsonline.net/talk/">Brian King</a></h3>
<p>Our first meeting was in Berlin, and then at every other Mozilla event this year. Brian is doing a lot of work for Mozilla in general, and add-on development in particular, and his friendly way and always being there to help has been highly appreciated by me, and I hope to meet him again many more times (a feeling I hope is mutual <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ).</p>
<p><a href="http://www.flickr.com/photos/robertnyman/3984628527/" title="Brian King by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2541/3984628527_5363e89eae.jpg" width="500" height="333" alt="Brian King" class="align-center"></a></p>
<h3><a href="http://remysharp.com/">Remy Sharp</a></h3>
<p><a href="http://www.flickr.com/photos/robertnyman/4166681332/" title="Remy Sharp - Speakers' dinner - Codebits conference by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2733/4166681332_e833226701.jpg" width="500" height="333" alt="Remy Sharp - Speakers' dinner - Codebits conference" class="align-center"></a></p>
<p>I think Remy and I share some kind of record on being at the same place at the same time this year. We met at SWDC in May, Geek Meet in June, then Øredev, JSConf.eu, Full Frontal and Codebits. Needless to say, he&#8217;s probably mighty sick of me by now, but for me, it has been great to meet him throughout the year, since he is both friendly and very talented (although his work/web dedication is sometimes a bit frightening, even to me).</p>
<h3><a href="http://www.molly.com/">Molly Holzschlag</a></h3>
<p>I had the pleasure of meeting Molly first at the Scandinavian Web Developer Conference in May, and then have her over for Geek Meet in October. She&#8217;s a truly fantastic person, and even though how well-known she is, I really appreciate her taking the time to listen to everyone.</p>
<p><a href="http://www.flickr.com/photos/robertnyman/4030987991/" title="Molly - Easy Access Point by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2716/4030987991_b8df659991.jpg" width="500" height="333" alt="Molly - Easy Access Point" class="align-center"></a></p>
<h3><a href="http://roderick.dk/">Morgan Roderick</a></h3>
<p><a href="http://www.flickr.com/photos/remysharp/4102954132/" title="Shock! by Remy Sharp, on Flickr"><img src="http://farm3.static.flickr.com/2626/4102954132_f57e286ba7.jpg" width="500" height="375" alt="Shock!" class="align-center"></a></p>
<p>I&#8217;ve known Morgan for a few years, but this year was the first time we got to meet &#8211; first in Copenhagen and then in Berlin. Morgan is extremely caring and I always act like a child around him, since he is just the nice guy that takes care of things. He seems to love Berlin, but who knows, one day we might even meet in Sweden? <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3>Søren Skrøder</h3>
<p><a href="http://www.flickr.com/photos/robertnyman/3985323102/" title="Søren Skrøder by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2456/3985323102_51e4d2d16b.jpg" width="500" height="333" alt="Søren Skrøder" class="align-center"></a></p>
<p>Søren is a Dane working with localization for Mozilla, and we first met in Copenhagen and then did a Prague city walkabout together in October. He is a very nice guy, and if you ever cared about beards, Søren has one to kill for!</p>
<h3><a href="http://novemberborn.net/">Mark Wubben</a></h3>
<p>Mark is also someone I have known for a number of years, but met for the first time this year when he spoke at Geek Meet in February. He then came to the Scandinavian Web Developer Conference followed by the Mozilla event in Copenhagen. For fun, I named him a stalker of mine, and haven&#8217;t seen him since&#8230; <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://www.flickr.com/photos/robertnyman/3899972230/" title="Mozilla Maemo Danish Weekend, Copenhagen, May 2009 by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2500/3899972230_a627774dc7.jpg" width="375" height="500" alt="Mozilla Maemo Danish Weekend, Copenhagen, May 2009" class="align-center"></a></p>
<h3><a href="http://my.opera.com/chrismills/blog/">Chris Mills</a></h3>
<p>Ah, Chris Mills. Chris is the crazy heavy metal Brit working with developer relations for Opera, and he spoke at Geek Meet in June and then we meet at Full Frontal in Brighton in November. Extremely nice fellow, crazy stories, but I believe I actually made him flush at the Full Frontal after-party! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://www.flickr.com/photos/remysharp/3405978121/" title="Opera Rocker by Remy Sharp, on Flickr"><img src="http://farm4.static.flickr.com/3633/3405978121_c03d01561f.jpg" width="375" height="500" alt="Opera Rocker" class="align-center"></a></p>
<h2>Conference information and presentation slides</h2>
<p>Here are all the links to the events mentioned above and also to my presentation slides:</p>
<h3>Mozilla Add-Ons Workshop, Berlin [Germany] &#8211; March 28th</h3>
<p>
	Presentation: <a href="http://presentation-slides.googlecode.com/files/how-to-write-your-first-extension-berlin.pdf">How to write your first extension (PDF 1.6 MB)</a><br />
	Event information: <a href="https://wiki.mozilla.org/MAOW:2009:Berlin:en">Mozilla Add-Ons Workshop Berlin, March 28th</a>
</p>
<h3>Scandinavian Web Developer Conference 2009, Stockholm [Sweden] &#8211; May 25th</h3>
<p>
	Presentation: <a href="http://www.slideshare.net/robnyman/modern-web-development">Modern Web Development (View/Download on SlideShare)</a><br />
	Event information: <a href="http://www.swdc2009.com/index_en.html">Scandinavian Web Developer Conference 2009</a>
</p>
<h3>Mozilla/Maemo Danish Weekend, Copenhagen [Denmark] &#8211; May 30th-31st</h3>
<p>
	Presentation: <a href="http://www.slideshare.net/robnyman/how-to-write-your-first-firefox-extensio">How to write your first extension (View/Download on SlideShare)</a><br />
	Event information: <a href="http://wiki.maemo.org/MozillaMaemoDanishWeekend">Mozilla/Maemo Danish Weekend</a>
</p>
<h3>Mozilla Swedish Community Meetup, Stockholm [Sweden] &#8211; June 2nd</h3>
<p>
	Presentation: <a href="http://www.slideshare.net/robnyman/how-to-write-your-first-firefox-extensio">How to write your first extension (View/Download on SlideShare)</a><br />
	Event information: <a href="https://wiki.mozilla.org/SwedishMeetup">Mozilla Swedish Community Meetup</a>
</p>
<h3>Øredev 2009, Malmö [Sweden] &#8211; November 4th</h3>
<p>
	Presentation: <a href="http://www.slideshare.net/robnyman/javascript-from-birth-to-closure">JavaScript &#8211; From Birth to Closure (View/Download on SlideShare)</a><br />
	Event information: <a href="http://www.oredev.org/">Øredev 2009</a>
</p>
<h3>JSConf.eu 2009, Berlin [Germany] &#8211; November 7th</h3>
<p>
	Presentation: <a href="http://www.slideshare.net/robnyman/javascript-from-birth-to-closure">JavaScript &#8211; From Birth to Closure (View/Download on SlideShare)</a><br />
	Event information: <a href="http://jsconf.eu/2009/">JSConf.eu 2009</a>
</p>
<h3>Full Frontal JavaScript Conference 2009, Brighton [United Kingdom] &#8211; November 20th</h3>
<p>
	Presentation: <a href="http://www.slideshare.net/robnyman/javascript-from-birth-to-closure">JavaScript &#8211; From Birth to Closure (View/Download on SlideShare)</a><br />
	Event information: <a href="http://2009.full-frontal.org/">Full Frontal JavaScript Conference 2009</a>
</p>
<h3>Codebits 2009, Lisbon [Portugal] &#8211; December 3rd</h3>
<p>
	Presentation: <a href="http://www.slideshare.net/robnyman/javascript-from-birth-to-closure">JavaScript &#8211; From Birth to Closure (View/Download on SlideShare)</a><br />
	Event information: <a href="http://codebits.eu/">Codebits 2009</a>
</p>
<h2>The year of people dying</h2>
<p>It seems like 2009 was a year when a lot of people died, especially on a celebrity level. Reading <a href="http://www.bowlofserial.com/2009/09/03/famous-people-whove-died-in-2009-so-far/">Famous People Who’ve Died in 2009 (so far) </a> and delving deeper in <a href="http://www.whosdatedwho.com/celebrities/people/list/celebrity-categories.asp?FD=yod">Celebrities who died in: 2009 (page 1)</a> it makes you wonder what was really going on.</p>
<p>Naturally, of all the people that passed away, Michael Jackson was by far the most famous one.</p>
<p>I just hope everyone will get to rest in peace.</p>
<h2>All my posts in 2009</h2>
<p>I first thought of picking out a few of my blog posts that I liked this year, but then again, it seems like everyone have their own favorite. Instead, I thought I&#8217;d list all of my posts in 2009 below for you to skim through them, and re-read the ones you like, or perhaps find one you missed the first time around.</p>
<h3><a href='http://robertnyman.com/2009/12/' title='December 2009'>December 2009</a></h3>
<ul class="postspermonth">
<li>22: <a href='http://robertnyman.com/2009/12/22/merry-christmas-happy-holidays-2009/' title='Merry Christmas, Happy Holidays!'>Merry Christmas, Happy Holidays!</a></li>
<li>18: <a href='http://robertnyman.com/2009/12/18/releasing-inline-code-finder-as-a-google-chrome-extension/' title='Releasing Inline Code Finder as a Google Chrome extension'>Releasing Inline Code Finder as a Google Chrome extension</a></li>
<li>17: <a href='http://robertnyman.com/2009/12/17/testing-object-oriented-css-oocss-for-easier-css-development/' title='Testing Object-Oriented CSS (OOCSS) for easier CSS development'>Testing Object-Oriented CSS (OOCSS) for easier CSS development</a></li>
<li>14: <a href='http://robertnyman.com/2009/12/14/content-management-systems-are-a-dying-breed/' title='Content Management Systems are a dying breed'>Content Management Systems are a dying breed</a></li>
<li>08: <a href='http://robertnyman.com/2009/12/08/the-death-of-a-friend/' title='The death of a friend'>The death of a friend</a></li>
<li>08: <a href='http://robertnyman.com/2009/12/08/my-trip-to-lisbon-portugal-and-the-codebits-conference/' title='My trip to Lisbon, Portugal, and the Codebits conference'>My trip to Lisbon, Portugal, and the Codebits conference</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/11/' title='November 2009'>November 2009</a></h3>
<ul class="postspermonth">
<li>30: <a href='http://robertnyman.com/2009/11/30/speaking-at-codebits-in-lisbon-portugal/' title='Speaking at Codebits in Lisbon, Portugal'>Speaking at Codebits in Lisbon, Portugal</a></li>
<li>27: <a href='http://robertnyman.com/2009/11/27/the-html5-syntax-options-problem/' title='The HTML5 syntax options problem'>The HTML5 syntax options problem</a></li>
<li>25: <a href='http://robertnyman.com/2009/11/25/my-full-frontal-09-escapades-the-javascript-conference/' title='My Full Frontal &#039;09 escapades  - The JavaScript conference'>My Full Frontal &#8216;09 escapades  &#8211; The JavaScript conference</a></li>
<li>18: <a href='http://robertnyman.com/2009/11/18/the-jsconf-eu-conference-and-my-visit-to-berlin/' title='The JSConf.eu conference and my visit to Berlin'>The JSConf.eu conference and my visit to Berlin</a></li>
<li>17: <a href='http://robertnyman.com/2009/11/17/a-faster-web-with-resource-packages-mozilla-suggestion-to-have-just-one-http-request/' title='A faster web with Resource Packages - Mozilla suggestion to have just one HTTP request'>A faster web with Resource Packages &#8211; Mozilla suggestion to have just one HTTP request</a></li>
<li>16: <a href='http://robertnyman.com/2009/11/16/the-%c3%b8redev-2009-conference-adventure/' title='The Øredev 2009 Conference adventure'>The Øredev 2009 Conference adventure</a></li>
<li>09: <a href='http://robertnyman.com/2009/11/09/firefox-turns-five-years-old-today-congratulations/' title='Firefox turns five years old today - congratulations!'>Firefox turns five years old today &#8211; congratulations!</a></li>
<li>02: <a href='http://robertnyman.com/2009/11/02/this-just-in-speaking-at-jsconf-eu-november-7th-8th-2009/' title='This just in: Speaking at JSConf.eu November 7th-8th 2009!'>This just in: Speaking at JSConf.eu November 7th-8th 2009!</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/10/' title='October 2009'>October 2009</a></h3>
<ul class="postspermonth">
<li>29: <a href='http://robertnyman.com/2009/10/29/apple-to-patent-css-transformations-and-animations/' title='Apple to patent CSS transformations and animations'>Apple to patent CSS transformations and animations</a></li>
<li>27: <a href='http://robertnyman.com/2009/10/27/releasing-firefinder-1-01-now-with-support-for-8-languages/' title='Releasing Firefinder 1.01 - now with support for 8 languages'>Releasing Firefinder 1.01 &#8211; now with support for 8 languages</a></li>
<li>26: <a href='http://robertnyman.com/2009/10/26/speaking-at-full-frontal-javascript-conference-20th-november-2009/' title='Speaking at Full Frontal - JavaScript Conference - 20th November 2009'>Speaking at Full Frontal &#8211; JavaScript Conference &#8211; 20th November 2009</a></li>
<li>21: <a href='http://robertnyman.com/2009/10/21/web-browser-market-share-and-rounding-errors/' title='Web browser market share and rounding errors'>Web browser market share and rounding errors</a></li>
<li>14: <a href='http://robertnyman.com/2009/10/14/an-introduction-to-html5/' title='An introduction to HTML5'>An introduction to HTML5</a></li>
<li>13: <a href='http://robertnyman.com/2009/10/13/speaking-at-%c3%b8redev-2009-developer-conference-november-4th-2009/' title='Speaking at &Oslash;redev 2009 Developer Conference, November 4th 2009'>Speaking at &Oslash;redev 2009 Developer Conference, November 4th 2009</a></li>
<li>08: <a href='http://robertnyman.com/2009/10/08/help-making-firefox-better-share-your-thoughts/' title='Help making Firefox better - share your thoughts!'>Help making Firefox better &#8211; share your thoughts!</a></li>
<li>07: <a href='http://robertnyman.com/2009/10/07/travel-stories-and-session-recaps-from-mozilla-camp-europe-prague-3-4-october-2009/' title='Travel stories and session recaps from Mozilla Camp Europe Prague, 3-4 October 2009'>Travel stories and session recaps from Mozilla Camp Europe Prague, 3-4 October 2009</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/09/' title='September 2009'>September 2009</a></h3>
<ul class="postspermonth">
<li>28: <a href='http://robertnyman.com/2009/09/28/invited-to-mozilla-camp-europe-prague-3-4-october-2009/' title='Invited to Mozilla Camp Europe Prague, 3-4 October 2009'>Invited to Mozilla Camp Europe Prague, 3-4 October 2009</a></li>
<li>23: <a href='http://robertnyman.com/2009/09/23/google-chrome-frame-google-wave-not-supporting-any-version-of-internet-explorer/' title='Google Chrome Frame &amp; Google Wave not supporting any version of Internet Explorer'>Google Chrome Frame &#038; Google Wave not supporting any version of Internet Explorer</a></li>
<li>22: <a href='http://robertnyman.com/2009/09/22/one-million-downloads-for-getelementsbyclassname/' title='One million downloads for getElementsByClassName'>One million downloads for getElementsByClassName</a></li>
<li>21: <a href='http://robertnyman.com/2009/09/21/geek-meet-october-2009-molly-holzschlag-will-present-about-html-5-and-other-goodies/' title='Geek Meet October 2009 - Molly Holzschlag will present about HTML 5 and other goodies'>Geek Meet October 2009 &#8211; Molly Holzschlag will present about HTML 5 and other goodies</a></li>
<li>18: <a href='http://robertnyman.com/2009/09/18/the-passing-of-patrick-swayze/' title='The passing of Patrick Swayze'>The passing of Patrick Swayze</a></li>
<li>15: <a href='http://robertnyman.com/2009/09/15/apples-app-store-and-installing-what-you-like-on-an-iphone/' title='Apple&#039;s App Store and installing what you like on an iPhone'>Apple&#8217;s App Store and installing what you like on an iPhone</a></li>
<li>11: <a href='http://robertnyman.com/2009/09/11/getting-caught-for-speeding/' title='Getting caught for speeding'>Getting caught for speeding</a></li>
<li>09: <a href='http://robertnyman.com/2009/09/09/fuck-ie-gently/' title='Fuck IE gently'>Fuck IE gently</a></li>
<li>07: <a href='http://robertnyman.com/2009/09/07/firefinder-1-0-released-code-collaboration-with-the-friendlyfire-feature-better-integration-with-firebug-and-more/' title='Firefinder 1.0 released - code collaboration with the FriendlyFire feature, better integration with Firebug and more'>Firefinder 1.0 released &#8211; code collaboration with the FriendlyFire feature, better integration with Firebug and more</a></li>
<li>02: <a href='http://robertnyman.com/2009/09/02/apple-mac-os-x-versions-named-after-german-tanks/' title='Apple Mac OS X versions named after German tanks?'>Apple Mac OS X versions named after German tanks?</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/08/' title='August 2009'>August 2009</a></h3>
<ul class="postspermonth">
<li>31: <a href='http://robertnyman.com/2009/08/31/35/' title='35'>35</a></li>
<li>28: <a href='http://robertnyman.com/2009/08/28/when-the-wiimote-nintento-wii-remote-stops-working/' title='When the Wiimote (Nintento Wii Remote) stops working'>When the Wiimote (Nintento Wii Remote) stops working</a></li>
<li>27: <a href='http://robertnyman.com/2009/08/27/how-do-you-value-an-experience/' title='How do you value an experience?'>How do you value an experience?</a></li>
<li>26: <a href='http://robertnyman.com/2009/08/26/hi-ho-silver-im-back/' title='Hi Ho Silver - I&#039;m back!'>Hi Ho Silver &#8211; I&#8217;m back!</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/07/' title='July 2009'>July 2009</a></h3>
<ul class="postspermonth">
<li>05: <a href='http://robertnyman.com/2009/07/05/summer-break-2009/' title='Summer break 2009'>Summer break 2009</a></li>
<li>01: <a href='http://robertnyman.com/2009/07/01/firefox-35-is-released-information-about-having-multiple-firefox-versions-and-web-developer-extension-compatibility/' title='Firefox 3.5 is released - information about having multiple Firefox versions and web developer extension compatibility'>Firefox 3.5 is released &#8211; information about having multiple Firefox versions and web developer extension compatibility</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/06/' title='June 2009'>June 2009</a></h3>
<ul class="postspermonth">
<li>30: <a href='http://robertnyman.com/2009/06/30/pictureslides-20-highly-customizable-option-to-create-javascript-slideshows/' title='PictureSlides 2.0 - highly customizable option to create JavaScript slideshows'>PictureSlides 2.0 &#8211; highly customizable option to create JavaScript slideshows</a></li>
<li>26: <a href='http://robertnyman.com/2009/06/26/the-death-of-michael-jackson/' title='The death of Michael Jackson'>The death of Michael Jackson</a></li>
<li>25: <a href='http://robertnyman.com/2009/06/25/microsofts-recent-marketing-campaigns/' title='Microsoft&#039;s recent marketing campaigns'>Microsoft&#8217;s recent marketing campaigns</a></li>
<li>24: <a href='http://robertnyman.com/2009/06/24/review-of-acdc-at-ullevi-stadium-june-21st-2009/' title='Review of AC/DC at Ullevi Stadium June 21st 2009'>Review of AC/DC at Ullevi Stadium June 21st 2009</a></li>
<li>23: <a href='http://robertnyman.com/2009/06/23/opera-unite-some-questions-and-answers/' title='Opera Unite - some questions and answers'>Opera Unite &#8211; some questions and answers</a></li>
<li>18: <a href='http://robertnyman.com/2009/06/18/swedish-midsummer-celebrations/' title='Swedish Midsummer celebrations'>Swedish Midsummer celebrations</a></li>
<li>18: <a href='http://robertnyman.com/2009/06/18/new-javascript-features-with-native-json-support-and-javascript-181-additions/' title='New JavaScript features with native JSON support and JavaScript 1.8.1 additions'>New JavaScript features with native JSON support and JavaScript 1.8.1 additions</a></li>
<li>16: <a href='http://robertnyman.com/2009/06/16/do-you-take-notes/' title='Do you take notes?'>Do you take notes?</a></li>
<li>15: <a href='http://robertnyman.com/2009/06/15/thoughts-on-microsofts-move-to-ship-windows-7-without-internet-explorer-in-europe/' title='Thoughts on Microsoft&#039;s move to ship Windows 7 without Internet Explorer in Europe'>Thoughts on Microsoft&#8217;s move to ship Windows 7 without Internet Explorer in Europe</a></li>
<li>11: <a href='http://robertnyman.com/2009/06/11/impossible-to-uninstall-safari-4-in-mac-os-x-apple-pretty-much-follows-suit-with-microsoft/' title='Impossible to uninstall Safari 4 in Mac OS X - Apple pretty much follows suit with Microsoft'>Impossible to uninstall Safari 4 in Mac OS X &#8211; Apple pretty much follows suit with Microsoft</a></li>
<li>10: <a href='http://robertnyman.com/2009/06/10/store-information-on-the-client-side-with-dom-storageweb-storage-plenty-of-improvements-available/' title='Store information on the client side with DOM Storage/Web Storage - plenty of improvements available'>Store information on the client side with DOM Storage/Web Storage &#8211; plenty of improvements available</a></li>
<li>09: <a href='http://robertnyman.com/2009/06/09/my-thoughts-on-twitter/' title='My thoughts on Twitter'>My thoughts on Twitter</a></li>
<li>08: <a href='http://robertnyman.com/2009/06/08/poll-which-javascript-library-do-you-use/' title='Poll: which JavaScript library do you use?'>Poll: which JavaScript library do you use?</a></li>
<li>05: <a href='http://robertnyman.com/2009/06/05/geek-meet-charity-june-4th-2009-was-a-success/' title='Geek Meet Charity June 4th 2009 was a success!'>Geek Meet Charity June 4th 2009 was a success!</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/05/' title='May 2009'>May 2009</a></h3>
<ul class="postspermonth">
<li>28: <a href='http://robertnyman.com/2009/05/28/getters-and-setters-with-javascript-code-samples-and-demos/' title='Getters and setters with JavaScript - code samples and demos'>Getters and setters with JavaScript &#8211; code samples and demos</a></li>
<li>27: <a href='http://robertnyman.com/2009/05/27/four-years/' title='Four years'>Four years</a></li>
<li>26: <a href='http://robertnyman.com/2009/05/26/serious-memory-leak-issue-with-24-bit-png-images-with-alpha-transparency-in-internet-explorer/' title='Serious memory leak issue with 24-bit PNG images with alpha transparency in Internet Explorer'>Serious memory leak issue with 24-bit PNG images with alpha transparency in Internet Explorer</a></li>
<li>20: <a href='http://robertnyman.com/2009/05/20/mozillamaemo-danish-weekend-may-30th-31st-addition-to-my-two-weeks-of-speak/' title='Mozilla/Maemo Danish Weekend May 30th-31st - addition to my two weeks of speak'>Mozilla/Maemo Danish Weekend May 30th-31st &#8211; addition to my two weeks of speak</a></li>
<li>15: <a href='http://robertnyman.com/2009/05/15/as-we-were/' title='As we were'>As we were</a></li>
<li>14: <a href='http://robertnyman.com/2009/05/14/invasion-of-my-public-privacy/' title='Invasion of my public privacy'>Invasion of my public privacy</a></li>
<li>13: <a href='http://robertnyman.com/2009/05/13/mozilla-swedish-community-meetup-in-stockholm-june-2nd-2009/' title='Mozilla Swedish Community Meetup in Stockholm June 2nd 2009'>Mozilla Swedish Community Meetup in Stockholm June 2nd 2009</a></li>
<li>12: <a href='http://robertnyman.com/2009/05/12/firefinder-for-firebug-an-extension-to-quickly-find-elements-matching-your-css-selectors-or-xpath-expressions/' title='Firefinder for Firebug - an extension to quickly find elements matching your CSS selectors or XPath expressions'>Firefinder for Firebug &#8211; an extension to quickly find elements matching your CSS selectors or XPath expressions</a></li>
<li>11: <a href='http://robertnyman.com/2009/05/11/mozilla-prism-brings-power-to-stand-alone-web-applications/' title='Mozilla Prism brings power to stand-alone web applications'>Mozilla Prism brings power to stand-alone web applications</a></li>
<li>07: <a href='http://robertnyman.com/2009/05/07/the-alt-attribute-is-not-for-tooltips/' title='The alt attribute is NOT for tooltips'>The alt attribute is NOT for tooltips</a></li>
<li>05: <a href='http://robertnyman.com/2009/05/05/metallica-live-may-4th-2009-at-the-globe-arena-in-stockholm-sweden/' title='Metallica live May 4th 2009 at the Globe arena in Stockholm, Sweden'>Metallica live May 4th 2009 at the Globe arena in Stockholm, Sweden</a></li>
<li>04: <a href='http://robertnyman.com/2009/05/04/geek-meet-charity-june-4th-2009-chris-mills-and-remy-sharp-speaking/' title='Geek Meet Charity June 4th 2009 - Chris Mills and Remy Sharp speaking'>Geek Meet Charity June 4th 2009 &#8211; Chris Mills and Remy Sharp speaking</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/04/' title='April 2009'>April 2009</a></h3>
<ul class="postspermonth">
<li>30: <a href='http://robertnyman.com/2009/04/30/my-father-would-have-turned-70-today/' title='My father would have turned 70 today'>My father would have turned 70 today</a></li>
<li>29: <a href='http://robertnyman.com/2009/04/29/moving-to-new-host-working-out-the-kinks/' title='Moving to new host, working out the kinks'>Moving to new host, working out the kinks</a></li>
<li>27: <a href='http://robertnyman.com/2009/04/27/introduction-test-cases-and-web-browser-compatibility-tables-for-javascript-16-javascript-17-javascript-18/' title='Introduction, test cases and web browser compatibility tables for JavaScript 1.6, JavaScript 1.7 &amp; JavaScript 1.8'>Introduction, test cases and web browser compatibility tables for JavaScript 1.6, JavaScript 1.7 &#038; JavaScript 1.8</a></li>
<li>24: <a href='http://robertnyman.com/2009/04/24/d-a-d-at-klubben-stockholm-april-4th-2009-concert-review/' title='D-A-D at Klubben, Stockholm April 4th 2009 - concert review'>D-A-D at Klubben, Stockholm April 4th 2009 &#8211; concert review</a></li>
<li>21: <a href='http://robertnyman.com/2009/04/21/speaking-at-the-swedish-web-developer-conference-2009-may-25th/' title='Speaking at the Swedish Web Developer Conference 2009, May 25th'>Speaking at the Swedish Web Developer Conference 2009, May 25th</a></li>
<li>20: <a href='http://robertnyman.com/2009/04/20/easier-source-control-management-with-distributed-version-control-system-and-mercurial/' title='Easier Source Control Management with Distributed Version Control System and Mercurial'>Easier Source Control Management with Distributed Version Control System and Mercurial</a></li>
<li>15: <a href='http://robertnyman.com/2009/04/15/a-heading-solution-you-havent-seen-before/' title='A heading solution you haven&#039;t seen before'>A heading solution you haven&#8217;t seen before</a></li>
<li>03: <a href='http://robertnyman.com/2009/04/03/mozilla-labs-online-code-editor-bespin/' title='Mozilla Labs&#039; online code editor Bespin'>Mozilla Labs&#8217; online code editor Bespin</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/03/' title='March 2009'>March 2009</a></h3>
<ul class="postspermonth">
<li>31: <a href='http://robertnyman.com/2009/03/31/the-trip-to-berlin-and-the-mozilla-add-ons-workshop-2009/' title='The trip to Berlin and the Mozilla Add-Ons Workshop 2009'>The trip to Berlin and the Mozilla Add-Ons Workshop 2009</a></li>
<li>26: <a href='http://robertnyman.com/2009/03/26/search-smugmug-photos-easily-with-smug-search-ubiquity-command/' title='Search SmugMug photos easily with smug-search Ubiquity command'>Search SmugMug photos easily with smug-search Ubiquity command</a></li>
<li>23: <a href='http://robertnyman.com/2009/03/23/bob-dylan-club-gig-at-berns-in-stockholm-march-22nd-2009/' title='Bob Dylan club gig at Berns in Stockholm March 22nd 2009'>Bob Dylan club gig at Berns in Stockholm March 22nd 2009</a></li>
<li>20: <a href='http://robertnyman.com/2009/03/20/an-evening-with-microsoft/' title='An evening with Microsoft'>An evening with Microsoft</a></li>
<li>16: <a href='http://robertnyman.com/2009/03/16/your-end-users-shouldnt-have-to-know-technology/' title='Your end users shouldn&#039;t have to know technology'>Your end users shouldn&#8217;t have to know technology</a></li>
<li>13: <a href='http://robertnyman.com/2009/03/13/what-to-know-what-to-learn/' title='What to know, what to learn'>What to know, what to learn</a></li>
<li>10: <a href='http://robertnyman.com/2009/03/10/speaking-at-mozilla-add-ons-workshop-maow-in-berlin-march-29th-2009/' title='Speaking at Mozilla Add-Ons Workshop (MAOW) in Berlin March 29th 2009'>Speaking at Mozilla Add-Ons Workshop (MAOW) in Berlin March 29th 2009</a></li>
<li>09: <a href='http://robertnyman.com/2009/03/09/adobe-air-15-issue-solution-and-support-experience/' title='Adobe AIR 1.5 issue - solution and support experience'>Adobe AIR 1.5 issue &#8211; solution and support experience</a></li>
<li>02: <a href='http://robertnyman.com/2009/03/02/adobe-flash-pros-and-cons/' title='Adobe Flash - pros and cons'>Adobe Flash &#8211; pros and cons</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/02/' title='February 2009'>February 2009</a></h3>
<ul class="postspermonth">
<li>26: <a href='http://robertnyman.com/2009/02/26/headhunters/' title='Headhunters'>Headhunters</a></li>
<li>23: <a href='http://robertnyman.com/2009/02/23/review-of-acdc-at-the-globe-arena-stockholm-february-20th-2009/' title='Review of AC/DC at the Globe Arena, Stockholm February 20th 2009'>Review of AC/DC at the Globe Arena, Stockholm February 20th 2009</a></li>
<li>20: <a href='http://robertnyman.com/2009/02/20/reviews-of-the-nominated-movies-for-best-motion-picture-in-the-oscar-academy-awards/' title='Reviews of the nominated movies for Best Motion Picture in the Oscar Academy Awards'>Reviews of the nominated movies for Best Motion Picture in the Oscar Academy Awards</a></li>
<li>17: <a href='http://robertnyman.com/2009/02/17/handle-duplicate-content-indexing-for-seo-with-the-relcanonical-attribute/' title='Handle duplicate content indexing for SEO with the rel=&quot;canonical&quot; attribute'>Handle duplicate content indexing for SEO with the rel=&#8221;canonical&#8221; attribute</a></li>
<li>16: <a href='http://robertnyman.com/2009/02/16/ie-8-standards-compliancy-goes-back-to-being-an-opt-in/' title='IE 8 - standards compliancy goes back to being an opt-in'>IE 8 &#8211; standards compliancy goes back to being an opt-in</a></li>
<li>12: <a href='http://robertnyman.com/2009/02/12/companies-and-social-networking/' title='Companies and social networking'>Companies and social networking</a></li>
<li>09: <a href='http://robertnyman.com/2009/02/09/stop-developing-for-internet-explorer-6/' title='Stop developing for Internet Explorer 6'>Stop developing for Internet Explorer 6</a></li>
<li>05: <a href='http://robertnyman.com/2009/02/05/new-version-of-inline-code-finder-with-event-filtering-and-a-download-record/' title='New version of Inline Code Finder, with event filtering - and a download record'>New version of Inline Code Finder, with event filtering &#8211; and a download record</a></li>
<li>04: <a href='http://robertnyman.com/2009/02/04/how-to-solve-first-child-css-bug-in-ie-7/' title='How to solve :first-child CSS bug in IE 7'>How to solve :first-child CSS bug in IE 7</a></li>
<li>03: <a href='http://robertnyman.com/2009/02/03/opera-web-standards-curriculum-article-handling-events-with-javascript/' title='Opera Web Standards Curriculum article: Handling events with JavaScript'>Opera Web Standards Curriculum article: Handling events with JavaScript</a></li>
<li>02: <a href='http://robertnyman.com/2009/02/02/contribute-to-the-stockholm-sweden-twestival-charity-event/' title='Contribute to the Stockholm Sweden Twestival charity event '>Contribute to the Stockholm Sweden Twestival charity event </a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/01/' title='January 2009'>January 2009</a></h3>
<ul class="postspermonth">
<li>30: <a href='http://robertnyman.com/2009/01/30/what-was-your-first-hex-code/' title='What was your first hex code?'>What was your first hex code?</a></li>
<li>29: <a href='http://robertnyman.com/2009/01/29/geek-meet-february-2009-with-mark-wubben/' title='Geek Meet February 2009, with Mark Wubben'>Geek Meet February 2009, with Mark Wubben</a></li>
<li>26: <a href='http://robertnyman.com/2009/01/26/microsoft-force-installs-firefox-extension/' title='Microsoft force-installs Firefox extension'>Microsoft force-installs Firefox extension</a></li>
<li>24: <a href='http://robertnyman.com/2009/01/24/how-to-develop-a-firefox-extension/' title='How to develop a Firefox extension'>How to develop a Firefox extension</a></li>
<li>22: <a href='http://robertnyman.com/2009/01/22/flickr-gallery-plus-better-photo-set-viewing-with-firefox-extension-and-greasemonkey-userscript/' title='Flickr Gallery Plus! - better photo set viewing with Firefox extension and Greasemonkey userscript'>Flickr Gallery Plus! &#8211; better photo set viewing with Firefox extension and Greasemonkey userscript</a></li>
<li>19: <a href='http://robertnyman.com/2009/01/19/extending-web-browser-functionality-greasemonkey-for-all-web-browsers/' title='Extending web browser functionality - Greasemonkey for all web browsers'>Extending web browser functionality &#8211; Greasemonkey for all web browsers</a></li>
<li>
<li>05: <a href='http://robertnyman.com/2009/01/05/apple-macworld-expo-keynote-predictions/' title='Apple Macworld Expo keynote predictions'>Apple Macworld Expo keynote predictions</a></li>
</ul>
<h2>Happy New Year!</h2>
<p>With that, I&#8217;d like to thank you for 2009, and here&#8217;s to a great 2010!</p>
<p>Happy New Year!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=yxhFGSexnRA:1RnBrH4vjAw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=yxhFGSexnRA:1RnBrH4vjAw:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=yxhFGSexnRA:1RnBrH4vjAw:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=yxhFGSexnRA:1RnBrH4vjAw:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2009/12/30/thank-you-for-2009-happy-new-year/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2009/12/30/thank-you-for-2009-happy-new-year/</feedburner:origLink></item>
		<item>
		<title>Merry Christmas, Happy Holidays!</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/pX6AukFZwc4/</link>
		<comments>http://robertnyman.com/2009/12/22/merry-christmas-happy-holidays-2009/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 11:43:23 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Personal/life]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1569</guid>
		<description><![CDATA[It&#8217;s that time of year that should be spent with your loved ones no work, no obligations, just share some happiness with people who are special to you.
I would just like to sincerely thank you for reading, for putting up with me and for all the knowledge and good thoughts you share with me. I [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s that time of year that should be spent with your loved ones no work, no obligations, just share some happiness with people who are special to you.</p>
<p>I would just like to sincerely thank you for reading, for putting up with me and for all the knowledge and good thoughts you share with me. I truly appreciate it! I plan to write a little longer post before New Years, summarizing this year.</p>
<p>I thought I&#8217;d accompany my wishes with one of the best pictures taken of my family:</p>
<p><a href="http://www.flickr.com/photos/robertnyman/4205999772/" title="Best portrait ever of my family by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2494/4205999772_a4ca21e0bb.jpg" width="500" height="333" alt="Best portrait ever of my family" class="align-center"></a></p>
<p>Merry Christmas, Happy Holidays! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=pX6AukFZwc4:Sqkrp5nhYaQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=pX6AukFZwc4:Sqkrp5nhYaQ:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=pX6AukFZwc4:Sqkrp5nhYaQ:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=pX6AukFZwc4:Sqkrp5nhYaQ:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2009/12/22/merry-christmas-happy-holidays-2009/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2009/12/22/merry-christmas-happy-holidays-2009/</feedburner:origLink></item>
		<item>
		<title>Releasing Inline Code Finder as a Google Chrome extension</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/Yqif-r0I2Do/</link>
		<comments>http://robertnyman.com/2009/12/18/releasing-inline-code-finder-as-a-google-chrome-extension/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 10:18:23 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[Firefox extensions]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Reviews/tests]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1567</guid>
		<description><![CDATA[I put a lot of time into ensuring web interface code quality, both for code in projects I work in and in doing code audits for other web sites. One of the best ways to find undesired inline styles, inline JavaScript events and javascript: links, I believe, is my Inline Code Finder extension and now [...]]]></description>
			<content:encoded><![CDATA[<p>I put a lot of time into ensuring web interface code quality, both for code in projects I work in and in doing code audits for other web sites. One of the best ways to find undesired inline styles, inline JavaScript events and <code>javascript:</code> links, I believe, is my <a href="http://robertnyman.com/inline-code-finder/">Inline Code Finder extension</a> and now it&#8217;s available for Google Chrome as well!</p>
<h2>What it does</h2>
<p><img src="http://www.robertnyman.com/images/inline-code-finder/stand-alone-google.png" alt="A picture of Inline Code Finder having been run on google.com, displaying inline styling, inline JavaScript events and javascript: links" class="align-center"></p>
<p>Inline Code Finder traverses through all elements in a web page, and if it finds a HTML element with any of these, it will highlight them:</p>
<ul>
<li>Inline JavaScript events</li>
<li>Inline style</li>
<li><code>javascript:</code> links</li>
</ul>
<p>The idea is to help separating content (HTML) from presentation (CSS) and interaction (JavaScript), and also for performance, to make sure HTML pages are as lightweight as possible to load while all styling and JavaScript code should be kept in separate files so they can be cached and reused.</p>
<p>I strongly encourage you use it to improve your interface code: <a href="https://chrome.google.com/extensions/detail/lfllandeffkmadbndfckhdbkekdfahom">Download Inline Code Finder for Google Chrome.</a></p>
<p>NOTE: To be able to install extensions, on Windows/Linux you need to have <a href="http://www.google.com/landing/chrome/beta/">Google Chrome for Windows/Linux from the beta channel</a>. For Mac users, you need to <a href="http://www.chromium.org/getting-involved/dev-channel#TOC-Mac">install Google Chrome from the Dev channel for Mac</a>. Unfortunately, though, at the time of this writing, extensions are turned off in the Mac version, but instead you can use <a href="http://build.chromium.org/buildbot/snapshots/chromium-rel-mac/?C=M;O=D">Chromium for Mac</a> (the base for Google Chrome) to use it (I have heard they will soon be enabled in Google Chrome for Mac as well).</p>
<h2>What it&#8217;s like writing an extension for Google Chrome</h2>
<p>Coming from a background of having written a number of extensions for Firefox and Firebug, I was eager to offer my functionality in another web browser, and also evaluate the developer experience of the Google Chrome extension model. I have to say that, so far, it has been extremely pleasant writing an extension for Google Chrome! It seems like they have carefully studied in what areas Firefox have succeeded, and also its problem areas, and just made sure that extension development goes as smooth as possible.</p>
<p>It literally just takes a few minutes to get your first extension loaded into Google Chrome, and from there on, there&#8217;s a <a href="http://code.google.com/chrome/extensions/">good documentation</a> for achieving most things you would probably want to do when developing an extension. For instance, one thing&#8217;s that&#8217;s quite cool is using the HTML5 <code>localStorage</code> for storing options for your extension.</p>
<p>To share your extension with the world, or just find other extensions you might be interested in, Google have launched the <a href="https://chrome.google.com/extensions">Google Chrome Extensions gallery</a>. What&#8217;s quite nice here is that as a developer, unless you try to access you try to access the user&#8217;s files on disk or use certain APIs in your extension, there&#8217;s no review process! This means that I can deploy, and update, my extension at any time I want to and it will be live immediately! People who have gotten used to waiting with the review processes of Apple&#8217;s App store or <a href="https://addons.mozilla.org/">Mozilla&#8217;s add-ons</a> will absolutely love this!</p>
<p>I for one just hope that they can manage to keep it this way, but at the same time, I&#8217;m a bit wary that it will maybe only be like this until Google Chrome will suffer from some serious exploit, and then they will have reviewing queues just like anyone else. Only the future can tell, I guess.</p>
<p>Both with developing extensions, and getting rid of the review process for most extension types, I think Google have gotten many many things right. I sure hope the work with <a href="https://jetpack.mozillalabs.com/">Jetpack for Mozilla</a>, which is planned in practice be the future extension model of Firefox, will achieve similar results &#8211; so far it looks very promising with existing and upcoming API support, and jQuery being included by default in Jetpack.</p>
<p>The dream, which will most likely only remain a dream for some time, would naturally be to have identical extension models for as many web browsers as possible, so any developer can offer their extensions to everyone, no matter the web browser.</p>
<p>For now, though, I&#8217;m quite happy with the extension development process for Google Chrome, and I hope to release more extensions for it soon. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=Yqif-r0I2Do:XR9Uk-UEez8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=Yqif-r0I2Do:XR9Uk-UEez8:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=Yqif-r0I2Do:XR9Uk-UEez8:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=Yqif-r0I2Do:XR9Uk-UEez8:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2009/12/18/releasing-inline-code-finder-as-a-google-chrome-extension/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2009/12/18/releasing-inline-code-finder-as-a-google-chrome-extension/</feedburner:origLink></item>
		<item>
		<title>Testing Object-Oriented CSS (OOCSS) for easier CSS development</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/Iblk2NhYfV0/</link>
		<comments>http://robertnyman.com/2009/12/17/testing-object-oriented-css-oocss-for-easier-css-development/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 10:41:08 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[Reviews/tests]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1564</guid>
		<description><![CDATA[Let&#8217;s face it: developing CSS that should work across various web browsers and platforms is hard, and could prove to be quite a challenge. This is where Object-Oriented CSS (OOCSS) steps in.
What it is
OOCSS is being developed by Nicole Sullivan, with a background at Yahoo!, who now consults for Facebook. The objective is to make [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s face it: developing CSS that should work across various web browsers and platforms is hard, and could prove to be quite a challenge. This is where <a href="http://wiki.github.com/stubbornella/oocss">Object-Oriented CSS (OOCSS)</a> steps in.</p>
<h2>What it is</h2>
<p>OOCSS is being developed by <a href="http://www.stubbornella.org/content/">Nicole Sullivan</a>, with a background at Yahoo!, who now consults for Facebook. The objective is to make CSS development as stable, modular and, very importantly, <em>predictable</em> as possible.</p>
<p>There are a number of different modules, where the most important parts are good CSS resetting (taken from Yahoo!), template and grid handling. However, there are also parts for tabs, talk bubbles, content media etc. The best way to see it in action is to go to the <a href="http://wiki.github.com/stubbornella/oocss">OOCSS page at GitHub</a> to watch and download the examples.</p>
<h2>What I like</h2>
<p>I have been working with the base files for my current project, to evaluate it and also make things easier for me. Having a good framework for your basic CSS is vital in any web site you will ever build. You will get a consistent result, and instead of building the same things over and over, you can put your time and effort into what will make that specific web site into the best possible.</p>
<p>OOCSS is extremely easy to use, has overall worked flawlessly, and extending the good base is very simple. I also like it being very light-weight (my combination of resetting, template &amp; grids weighs in just under 5 kb), which means my own web site-specific CSS becomes much easier to write, and it becomes much smaller because of not having to write redundant CSS.</p>
<h2>What I don&#8217;t like</h2>
<p>As you might be aware of, using good semantics is very important to me, and when it comes to both elements being used as well as the naming of CSS classes, I believe it should contain a meaning for what it will contain. OOCSS contains class names like <code>.leftCol</code>, <code>.rightCol</code>, <code>.body</code>, <code>.h1</code>, <code>.h2</code> etc. And to me, and what I believe is to be in line with the notion of the semantic web, is that one of the fundamentals with CSS class names is to <em>not</em> use class names which describes the actual presentation/layout, but rather what it will contain.</p>
<p>And fair enough, I think one of the choices behind this was to make it easy to beginners, but still, when you end up with code like <code>&lt;h1 class="h2"&gt;</code>, that&#8217;s just wrong to me. No class name should ever be named after an actual element name if you ask me (especially not the name of another element).</p>
<p>I got to meet Nicole at <a href="http://jsconf.eu/2009/">JSConf.eu</a>, and naturally had to ask her about her choices for class names. She said that she thought it was ok to also use &#8220;visual semantics&#8221;, i.e. class names that would describe how it would actually be presented. Trying to be open and understandable, I could somewhat see where she was coming from with this.</p>
<p>But, I suggested using other names that would have more meaning <em>and</em> be easy to understand at the same time, like <code>.main-heading</code>, <code>.complementary</code> etc. The reply I got was that she had tried it, but &#8220;It was too hard for people to remember it&#8221;. And that I&#8217;m mot just buying. Sure, <code>.rightCol</code> might be a tad easier to remember, but just going the easiest route time doesn&#8217;t always make it right.</p>
<p>So, in my files, I use class names that convey actual meaning.</p>
<h2>Conclusion</h2>
<p>Despite my little rant on class names (which you can easily change to whatever you want), OOCSS is quite exciting, and so far I have experienced good results with, and the possibility for me to focus on more important things! I definitely recommend you try it out, and give Nicole any input or feedback you might have.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=Iblk2NhYfV0:rVKlAigG6N0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=Iblk2NhYfV0:rVKlAigG6N0:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=Iblk2NhYfV0:rVKlAigG6N0:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=Iblk2NhYfV0:rVKlAigG6N0:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2009/12/17/testing-object-oriented-css-oocss-for-easier-css-development/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2009/12/17/testing-object-oriented-css-oocss-for-easier-css-development/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.996 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-03-11 15:44:58 -->
