<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TimKadlec.com</title>
	<atom:link href="http://timkadlec.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://timkadlec.com</link>
	<description>A Wisconsin based web developer writing about the web.</description>
	<lastBuildDate>Tue, 15 May 2012 16:56:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>WTFWG</title>
		<link>http://timkadlec.com/2012/05/wtfwg/</link>
		<comments>http://timkadlec.com/2012/05/wtfwg/#comments</comments>
		<pubDate>Tue, 15 May 2012 16:48:23 +0000</pubDate>
		<dc:creator>Tim Kadlec</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[responsive]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[whatwg]]></category>

		<guid isPermaLink="false">http://timkadlec.com/?p=1401</guid>
		<description><![CDATA[This morning, Ian Hickson emailed the WHATWG mailing list mentioning that a attribute that was currently being discussed on the list (srcset) is now added to the draft of the spec. To understand why this sucks, a little background is needed. Responsive images are a difficult beast to tame: there really isn&#8217;t a good solution [...]]]></description>
			<content:encoded><![CDATA[<p>This morning, Ian Hickson <a href="http://lists.w3.org/Archives/Public/public-whatwg-archive/2012May/0247.html">emailed the WHATWG mailing list</a> mentioning that a attribute that was currently being discussed on the list (srcset) is now added to the <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/embedded-content-1.html#attr-img-srcset">draft of the spec</a>. To understand why this sucks, a little background is needed.</p>
<p>Responsive images are a difficult beast to tame: there really isn&#8217;t a good solution for them today. As a result, some discussion started on the WHATWG mailing list months ago about what to do. The WHATWG pointed out that the list was for standardizing and suggested it would be better if the discussion were moved into a community group.</p>
<p>So, obediently, <a href="http://www.w3.org/community/respimg/">a community group chaired by Mat Marquis</a> was started (in February). A lot of discussion took place about the appropriate way to handle responsive images and one solution, <a href="http://www.w3.org/community/respimg/2012/03/07/14/">the new picture element</a>, garnered the majority of support.</p>
<p>On May 10th, the previously mentioned <a href="http://lists.w3.org/Archives/Public/public-whatwg-archive/2012May/0138.html">srcset attribute was presented</a> on the WHATWG mailing list by someone from Apple.</p>
<p>That same day it was recommended to the list that they take a look at all the discussion that had taken place in the community group. A debate about the two solutions ensued.</p>
<p>The feedback from developers was not particularly glowing. To <a href="http://lists.w3.org/Archives/Public/public-whatwg-archive/2012May/0252.html">quote Matt Wilcox</a>:</p>
<blockquote>
<p>I do not see much potential for srcset. The result of asking the author community was overwhelmingly negative, indirection or no indirection.</p>
</blockquote>
<p>It was <a href="http://lists.w3.org/Archives/Public/public-whatwg-archive/2012May/0176.html">argued by Simon Pieters of Opera</a> that the srcset attribute would be easier to implement and that as a result, that would help developers:</p>
<blockquote>
<p>I think an attribute is simpler to implement and thus likely to result in fewer bugs in browsers, which in turn benefits Web developers.</p>
</blockquote>
<p>This morning, the attribute was added to the spec.</p>
<p>I&#8217;ve got my own opinion about the correct solution, but that&#8217;s not really what&#8217;s I think is most troubling here. Note what happened:</p>
<ol>
<li>Developers got involved in trying to standardize a solution to a common and important problem.</li>
<li>The WHATWG told them to move the discussion to a community group.</li>
<li>The discussion was moved (back in February), a general consenus (not unanimous, but a majority) was reached about the picture element.</li>
<li>Another (partial) solution was proposed directly on the WHATWG list by an Apple employee.</li>
<li>A discussion ensued regarding the two methods, where they overlapped, and how the general opinions of each. The majority of developers favored the picture element and the majority of implementors favored the srcset attribute.</li>
<li>While the discussion was still taking place, and only 5 days after it was originally proposed, the srcset attribute (but not the picture element) was added to the draft.</li>
</ol>
<p>What. The. Hell.</p>
<p>The developer community did everything asked of them. They followed procedure, they thoroughly discussed the options available. They were careful enough to consider what to do for browsers that wouldn&#8217;t support the element—<a href="https://github.com/scottjehl/picturefill">a working polyfill</a> is readily available. Their solution even emulates the existing standardized audio and video elements.</p>
<p>Meanwhile an Apple representative writes one email about a new attribute that only partially solves the problem and the 5 days later it&#8217;s in the spec. In case there is any doubt, I&#8217;m not blaming him at all for how this all played out. That blame falls on the WHATWG. Whatever their rationale was for putting this in the draft, the method in which it was added reeks of valuing the opinion of implementors over developers.</p>
<p>In the draft of the <a href="http://www.w3.org/TR/html-design-principles/">W3C HTML design principles</a>, they clearly state the priority that should be given when determining standards:</p>
<blockquote>
<p>In case of conflict, consider users over authors over implementors over specifiers over theoretical purity. In other words costs or difficulties to the user should be given more weight than costs to authors; which in turn should be given more weight than costs to implementors; which should be given more weight than costs to authors of the spec itself, which should be given more weight than those proposing changes for theoretical reasons alone.</p>
</blockquote>
<p>Those levels of priority make a lot of sense to me and it&#8217;s discouraging (to say the least!) to see them dismissed in this case. This kind of thing simply cannot happen. It&#8217;s tough to get people to voice their opinions to begin with. To find that their opinion holds no weight won&#8217;t make it any easier going forward.</p>
<p>What message does it send when developers try to contribute their time, energy and effort to help solve a problem only to have it so casually dismissed?</p>
<p>As Scott Jehl responded <a href="https://twitter.com/#!/scottjehl/status/202378107502600192">on Twitter</a>:</p>
<blockquote>
<p>insulting. Not to mention, that it can&#8217;t work today. What was the purpose of our @w3c community group?</p>
</blockquote>
<p>Insulting indeed. Not too surprising though. After all, we&#8217;ve seen <a href="http://adactio.com/journal/4982/">this sort of thing before.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://timkadlec.com/2012/05/wtfwg/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>BDConf:focus on Responsive</title>
		<link>http://timkadlec.com/2012/05/bdconffocus-on-responsive/</link>
		<comments>http://timkadlec.com/2012/05/bdconffocus-on-responsive/#comments</comments>
		<pubDate>Thu, 03 May 2012 14:46:19 +0000</pubDate>
		<dc:creator>Tim Kadlec</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bdconf]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[responsive]]></category>
		<category><![CDATA[speaking]]></category>

		<guid isPermaLink="false">http://timkadlec.com/?p=1370</guid>
		<description><![CDATA[If you&#8217;ve gone to a BDConf (more on the recent Orlando event very soon!), you know we keep the focus pretty tight: web design and development for beyond the desktop. No native discussion, just web. We thought it would be fun to get even more focused. So on June 4th in Minneapolis, we&#8217;ll host the [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve gone to a BDConf (more on the recent Orlando event very soon!), you know we keep the focus pretty tight: web design and development for beyond the desktop. No native discussion, just web. We thought it would be fun to get even more focused. So on June 4th in Minneapolis, we&#8217;ll host the first ever <a href="http://bdconf.com/2012/focuson-responsive-mn/">BDConf:focus on event</a> and do a deep dive into responsive design: all day, all responsive.</p>
<p>The lineup is amazing. Seriously.</p>
<p>Dave Rupert, lead developer at Paravel, co-host of the ShopTalk podcast, and creator of awesome tools like FitVids and FitText, will get the day kicked off with a <a href="http://bdconf.com/2012/focuson-responsive-mn/schedule#davatron5000">four hour workshop</a>.</p>
<p>After lunch, Mat Marquis will get the afternoon started with his presentation, <a href="http://bdconf.com/2012/focuson-responsive-mn/schedule#wilto">&#8220;Next Steps for Responsive Design&#8221;</a>. Mat worked on the Boston Globe project and heads up the Responsive Images Community Group for the W3C, so he&#8217;s got some hard-earned experience to pull from. He&#8217;s also a seriously funny guy.</p>
<p>Then, Kristofer Layon will present <a href="http://bdconf.com/2012/focuson-responsive-mn/schedule#klayon">&#8220;The Minimal Viable Web&#8221;</a>. Kristofer is the author of two books, most recently the excellent &#8220;Mobilizing Web Sites&#8221;. I love how practical and pragmatic that book is and I expect his talk will keep the same tone.</p>
<p>I&#8217;ll close the day with a new talk for me, <a href="http://bdconf.com/2012/focuson-responsive-mn/schedule#tkadlec">&#8220;Creating Responsive Experiences&#8221;</a>. I&#8217;ve been on a kick for awhile now that I think responsive design has to be about more than just layout, and I&#8217;ll try to make my case (and back it up with a few examples).</p>
<p>It should be an awesome day! The venue, <a href="http://openbookmn.com/performance_hall.aspx">Open Book</a>, has a cool feel to it and we&#8217;re going to keep attendance low—you won&#8217;t be lost in a huge ballroom of people.</p>
<p>There are still passes available. If you want to make the trip (and you do!), code &#8216;KADLEMN&#8217; will shave $100 off the cost of <a href="https://bdconf.com/register/2012/focuson-responsive-mn">registration</a>.</p>
<p>I hope to see you in Minneapolis—it&#8217;s going to be awesome!</p>
]]></content:encoded>
			<wfw:commentRss>http://timkadlec.com/2012/05/bdconffocus-on-responsive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Media Query &amp; Asset Downloading Results</title>
		<link>http://timkadlec.com/2012/04/media-query-asset-downloading-results/</link>
		<comments>http://timkadlec.com/2012/04/media-query-asset-downloading-results/#comments</comments>
		<pubDate>Tue, 10 Apr 2012 15:09:17 +0000</pubDate>
		<dc:creator>Tim Kadlec</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[media queries]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[responsive]]></category>

		<guid isPermaLink="false">http://timkadlec.com/?p=1318</guid>
		<description><![CDATA[A little while back, I mentioned I was doing some research for the book about how images are downloaded when media queries are involved. To help with that, I wrote up some automated tests where Javascript could determine whether or not the image was requested and the results could be collected by Browserscope for review. [...]]]></description>
			<content:encoded><![CDATA[<p>A little while back, <a href="http://timkadlec.com/2012/02/media-query-asset-downloading-tests/">I mentioned</a> I was doing some research for <a href="http://responsiveenhancement.com">the book</a> about how images are downloaded when media queries are involved. To help with that, I wrote up some automated tests where Javascript could determine whether or not the image was requested and the results could be collected by Browserscope for review. I posted some initial findings, but I think I’ve got enough data now to be able to go into a bit more detail.</p>
<p>First, any credit has to go to the awesome team at Cloud Four. <a href="http://cloudfour.com/examples/mediaqueries/image-test/">Most of the tests were created by them</a> for some testing they were doing. I just added some Javascript to automate them.</p>
<p>On to the results!</p>
<h2 id="test_one_image_tag">Test One: Image Tag</h2>
<p><a href="http://timkadlec.com/mq/test1.php">Run the test</a></p>
<p>This page tried to hide an image contained within a div by using display: none. The HTML and CSS are below:<br />
<code>
<pre>
&lt;div id="test1"&gt;
    &lt;img src="images/test1.png" alt="" /&gt;
&lt;/div&gt;

@media all and (max-width: 600px) {
    #test1 { display:none; }
}
</pre>
<p></code></p>
<h3 id="the_results">The results</h3>
<p>If there is one method of hiding images that I can say with 100% certainty should be avoided, it’s using display:none. It’s completely useless. It appears that Opera Mobile and Opera Mini don’t download the image (see the initial post for the reasons why), but the image is requested by, well, everyone else.</p>
<table class="testResults" cellspacing="3">
<thead>
<tr>
<th>Tested</th>
<th>Requests Image</th>
</tr>
</thead>
<tbody>
<tr>
<td>Android 2.1+</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Blackberry (6.0+)</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Chrome (4.1)+</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Chrome Mobile</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Fennec (10.0+)</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Firefox (3.6+)</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>IE</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>iOS (4.26+)</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Kindle (3.0)</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Opera (11.6+)</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Opera Mini (6.5+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Opera Mobile (11.5)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>RockMelt</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Safari (4+)</td>
<td class="fail">Yes</td>
</tr>
</tbody>
</table>
<h3 id="conclusion">Conclusion</h3>
<p>Simple: don’t do this.</p>
<h2 id="test_two_background_image_display_none">Test Two: Background Image Display None</h2>
<p><a href="http://timkadlec.com/mq/test2.php">Run the test</a></p>
<p>In this test, a div was given a background image. If the screen was under 600px wide, the div was set to display:none. The HTML and CSS are below:<br />
<code>
<pre>
<;div id="test2">;<;/div>;

#test2 {
    background-image:url('images/test2.png');
    width:200px;
    height:75px;
}
@media all and (max-width: 600px) {
    #test2 {display:none;}
}
</pre>
<p></code></p>
<h3 id="the_results">The results</h3>
<p>The same as with the first test: every browser tested, aside from Opera Mini and Opera Mobile, will download the image.</p>
<table class="testResults" cellspacing="3">
<thead>
<tr>
<th>Tested</th>
<th>Requests Image</th>
</tr>
</thead>
<tbody>
<tr>
<td>Android 2.1+</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Blackberry (6.0+)</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Chrome (4.1)+</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Chrome Mobile</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Fennec (10.0+)</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Firefox (3.6+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>IE</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>iOS (4.26+)</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Kindle (3.0)</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Opera (11.6+)</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Opera Mini (6.5+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Opera Mobile (11.5)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>RockMelt</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Safari (4+)</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Silk</td>
<td class="fail">Yes</td>
</tr>
</tbody>
</table>
<h3 id="conclusion">Conclusion</h3>
<p>Once again: don’t do this. Thankfully, as some of the other tests show, there are a few easy ways to hide background images without having the image requested.</p>
<h2 id="test_three_background_image_parent_object_set_to_display_none">Test Three: Background Image, Parent Object Set to Display None</h2>
<p><a href="http://timkadlec.com/mq/test3.php">Run the test</a></p>
<p>In this test, a div was given a background image. The parent of the div (another div) was set to display:none when the screen was under 600px wide. The HTML and CSS are below:<br />
<code>
<pre>
<;div id="test3">;
    <;div>;<;/div>;
<;/div>;

#test3 div {
    background-image:url('images/test3.png');
    width:200px;
    height:75px;
}
@media all and (max-width: 600px) {
    #test3 {
        display:none;
    }
}
</pre>
<p></code></p>
<h3 id="the_results">The results</h3>
<p>Kudos to Jason Grigsby for catching this one. On the surface, it’s not entirely obvious why this would be any different than test two. However, when doing his initial research, he noticed this seemed to make a difference so he decided to test it. Lucky for us he did because this method is actually pretty reliable.</p>
<table class="testResults" cellspacing="3">
<thead>
<tr>
<th>Tested</th>
<th>Requests Image</th>
</tr>
</thead>
<tbody>
<tr>
<td>Android 2.1+</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Blackberry (6.0+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Chrome (16+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Chrome Mobile</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Fennec (10.0+)</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Firefox (3.6+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>IE 9+</td>
<td class="pass">No</td>
</tr>
<tr>
<td>iOS (4.26+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Kindle (3.0)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Opera (11.6+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Opera Mini (6.5+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Opera Mobile (11.5)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Safari (4+)</td>
<td class="pass">No</td>
</tr>
</tbody>
</table>
<h3 id="conclusion">Conclusion</h3>
<p>This method works well. With the exception of the over-eager Fennec, every tested browser only downloads the image when needed. The issue with this method is that you do have the requirement of being able to hide the containing element. If that’s an option, then feel free to go ahead and use this approach.</p>
<h2 id="test_four_background_image_with_cascade_override">Test Four: Background Image with Cascade Override</h2>
<p><a href="http://timkadlec.com/mq/test4.php">Run the test</a></p>
<p>In this test, a div is given a background image. If the screen is under 600px, then the div is given a different background image. This tested to see if both images were requested, or only the one needed. The HTML and CSS are below:<br />
<code>
<pre>
<;div id="test4">;<;/div>;

#test4 {
    background-image:url('images/test4-desktop.png');
    width:200px;
    height:75px;
}
@media all and (max-width: 600px) {
    #test4 {
        background-image:url('images/test4-mobile.png');
    }
}
</pre>
<p></code></p>
<h3 id="the_results">The results</h3>
<p>While certainly better than using display:none, this method is a little spotty.</p>
<table class="testResults" cellspacing="3">
<thead>
<tr>
<th>Tested</th>
<th>Requests Both</th>
</tr>
</thead>
<tbody>
<tr>
<td>Android 2.1-3.0?</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Android 4.0</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Blackberry 6.0</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Blackberry 7.0</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Chrome (16+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Chrome Mobile</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Fennec (10.0+)</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Firefox (3.6+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>IE 9+</td>
<td class="pass">No</td>
</tr>
<tr>
<td>iOS (4.26+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Kindle (3.0)</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Opera (11.6+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Opera Mini (6.5+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Opera Mobile (11.5)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Safari 4.0</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Safari 5.0+</td>
<td class="pass">No</td>
</tr>
</tbody>
</table>
<h3 id="conclusion">Conclusion</h3>
<p>I’d avoid it. While the situation is improving, Android 2.x, which dominates the Android marketshare, still downloads both images as does Fennec and the Kindle. Between the three, but particularly because of Android, I would recommend looking at other options.</p>
<h2 id="test_five_background_image_where_desktop_image_set_with_min_width">Test Five: Background Image Where Desktop Image Set with Min-Width</h2>
<p><a href="http://timkadlec.com/mq/test5.php">Run the test</a></p>
<p>In this test, a div is given one background image if the (min-width: 601px) media query matches, and a different one if (max-width: 600px) matches. The HTML and CSS is below:<br />
<code>
<pre>
<;div id="test5">;<;/div>;

@media all and (min-width: 601px) {
    #test5 {
        background-image:url('images/test5-desktop.png');
        width:200px;
        height:75px;
    }
}
@media all and (max-width: 600px) {
    #test5 {
        background-image:url('images/test5-mobile.png');
        width:200px;
        height:75px;
    }
}
</pre>
<p></code></p>
<h3 id="the_results">The results</h3>
<p>The situation here is a little better.</p>
<table class="testResults" cellspacing="3">
<thead>
<tr>
<th>Tested</th>
<th>Requests Both</th>
</tr>
</thead>
<tbody>
<tr>
<td>Android 2.1+</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Blackberry (6.0+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Chrome (16+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Chrome Mobile</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Fennec (10.0+)</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Firefox (3.6+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>IE 9+</td>
<td class="pass">No</td>
</tr>
<tr>
<td>iOS (4.26+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Kindle (3.0)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Opera (11.6+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Opera Mini (6.5+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Opera Mobile (11.5)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Safari (4+)</td>
<td class="pass">No</td>
</tr>
</tbody>
</table>
<h3 id="conclusion">Conclusion</h3>
<p>More browsers play along this time. Fennec, as always, just can’t control itself. <del datetime="2012-04-11T04:04:21+00:00">Android 2.x is….odd. It requests both images, but only if the screen size is over 600px and the min-width media query kicks in. This behavior appears to stop as of Android 3. This is an odd one and I would love to know why the heck it happens.</del> <ins datetime="2012-04-11T04:04:21+00:00">Actually, good news here. Jason Grigsby pinged me and said his results for this test weren&#8217;t jiving with what I reported here, so I re-ran the tests on a few Android 2.x devices. Turns out, my initial results were off: Android 2.x plays nicely and my initial runs of this test on that platform were wrong. Not only is this good news for developers, but it is also a much more sane behavior and it has restored my faith in humanity. Or at least my faith in Android.</ins></p>
<p>It’s also worth nothing that if you use this method, you’ll need to consider alternate options for Internet Explorer 8 and under. Those versions of the browser don’t support media queries, so no image will be applied. Of course, this is simple enough to fix with conditional comments and an IE specific stylesheet.</p>
<h2 id="test_6_background_image_display_none_max_device_width">Test Six: Background Image Display None (max-device-width)</h2>
<p><a href="http://timkadlec.com/mq/test6.php">Run the test</a></p>
<p>This test was the same as test two, but it used max-device-width for the media query instead of max-width. The HTML and CSS is below:<br />
<code>
<pre>
<;div id="test6">;<;/div>;

#test6 {
    background-image:url('images/test6.png');
    width:200px;
    height:75px;
}
@media all and (max-device-width: 600px) {
    #test6 {
        display:none;
    }
}
</pre>
<p></code></p>
<h3>Conclusion</h3>
<p>I&#8217;m not going to spend much time on this, as it ended up being a throw away test. There were no differences in behavior between this and test two. The test was added because of a tweet where someone had mentioned they were getting different results than the original tests by Cloud Four, but the discrepancy ended up being caused by something else entirely (a typo, if I remember right).</p>
<h2>Test Seven: Cascade Override for High Resolution</h2>
<p><a href="http://timkadlec.com/mq/test7.php">Run the test</a></p>
<p>The final test was added to the suite a bit late. With the retina iPad around the corner, there were a lot of posts about how to handle serving images to high-res displays. In one post, <a href="http://bradfrostweb.com/blog/mobile/hi-res-optimization/">Brad Frost mentioned</a> he thought it would be interesting to see test results for this, so I added it in.</p>
<p>In this test, a div is given a background image. Then, by using the min-device-pixel-ratio meda query, a new background image was applied if the minimum ratio was 1.5.</p>
<p>The HTML and CSS are below:<br />
<code>
<pre>
<;div id="test7">;<;/div>;

#test7 {
    background-image:url('images/test7-lowres.png');
    width:200px;
    height:75px;
}
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (min--moz-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
    #test7 {
        background-image:url('images/test7-highres.png');
        width:200px;
        height:75px;
    }
}
</pre>
<p></code></p>
<h3 id="the_results">The results</h3>
<p>Of all the tests, this one is the one that could benefit the most from having some more people run it. That being said, it does look like the following behavior is accurate.</p>
<table class="testResults" cellspacing="3">
<thead>
<tr>
<th>Tested</th>
<th>Requests Both</th>
</tr>
</thead>
<tbody>
<tr>
<td>Android 2.1-3.0?</td>
<td class="fail">Yes</td>
</tr>
<tr>
<td>Android 4.0</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Blackberry 6.0</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Blackberry 7.0</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Chrome (16+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Chrome Mobile</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Fennec (10.0+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Firefox (3.6+)</td>
<td class="pass">No</td>
</tr>
<td>IE 9+</td>
<td class="pass">No</td>
</tr>
<tr>
<td>iOS (4.26+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Kindle (3.0)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Opera (11.6+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Opera Mini (6.5+)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Opera Mobile (11.5)</td>
<td class="pass">No</td>
</tr>
<tr>
<td>Safari 4.0+</td>
<td class="pass">No</td>
</tr>
</tbody>
</table>
<h3 id="conclusion">Conclusion</h3>
<p>Again, this test could stand to be run a bit more, just to be safe. It looks like this method will work the vast majority of the time. Unfortunately, it appears Android 2.x will download both images <em>if the device pixel ratio is above or equal to 1.5 (or whatever value you set in the media query)</em>. So in the case of the above tests, if you’ve got a high resolution device running Android 2.x you’re out of luck.</p>
<p>The good news, for now, is that I&#8217;m unaware of any Android device with a device pixel ratio over 1.5. So if you&#8217;re targeting the retina display iOS devices, you could set your min-device-pixel-ratio to 2 and be safe. And of course, now that I&#8217;ve said it, I fully expect the first 3 comments for this post to all correct me and point out the one Android device that just has to prove me wrong.</p>
<p>The earliest rounds of this test looked more promising for Android, so this is a bit of a bummer for me. They’re the only browser that seems to mess it up, but they’re also one of the biggest players.</p>
<h2 id="recommendations">Recommendations</h2>
<p>If you’re going to hide a content image, you’re not going to be able to do it by setting display:none. I recommend using a Javascript or server-side based approach instead.</p>
<p>If you want to hide a background image, your best bet is to hide the parent element. If you can’t do that, then use a cascade override (like test five above) and set the background-image to none when you want it hidden.</p>
<p>For swapping background images, define them both inside of media queries.</p>
<h2 id="going_forward">Going Forward</h2>
<p>If you run any of <a href="http://timkadlec.com/mq/">the tests</a> and think something above is incorrect, either <a href="mailto:tim@timkadlec.com">drop me a line</a> or say report it on <a href="https://github.com/tkadlec/Media-Query-test">GitHub</a> so I can dig into it. The same goes for adding any additional tests.</p>
]]></content:encoded>
			<wfw:commentRss>http://timkadlec.com/2012/04/media-query-asset-downloading-results/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>Looking for the right tool</title>
		<link>http://timkadlec.com/2012/02/looking-for-the-right-tool/</link>
		<comments>http://timkadlec.com/2012/02/looking-for-the-right-tool/#comments</comments>
		<pubDate>Mon, 27 Feb 2012 17:37:16 +0000</pubDate>
		<dc:creator>Tim Kadlec</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[responsive]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://timkadlec.com/?p=1276</guid>
		<description><![CDATA[Whether or not to design in the browser is an often debated subject. The latest discussion seems to be prompted, in part, because of the recent Responsive Summit (by the way, if you haven’t done so already, be sure to check out a few recaps of the day). Mark Boulton just put his thoughts to [...]]]></description>
			<content:encoded><![CDATA[<p>Whether or not to design in the browser is an often debated subject. The latest discussion seems to be prompted, in part, because of the recent Responsive Summit (by the way, if you haven’t done so already, be sure to check out a <a href="http://www.markboulton.co.uk/journal/comments/responsive-summit-workflow">few</a> <a href="http://www.markboulton.co.uk/journal/comments/responsive-summit-workflow">recaps</a> <a href="http://www.markboulton.co.uk/journal/comments/responsive-summit-workflow">of</a> <a href="http://mistermorris.tumblr.com/post/18273059852/a-better-responsive-image-format">the</a> <a href="http://joshemerson.co.uk/blog/responsive-process/#more-100">day</a>).</p>
<p>Mark Boulton just put his thoughts to screen with a post entitled <a href="http://www.markboulton.co.uk/journal/comments/responsive-summit-the-one-tool">“Responsive Summit: The One Tool”</a>. In it, he makes the case that knowing your materials is more important than using a specific tool. He makes an excellent point when he discusses why he feels comfortable in Photoshop:</p>
<blockquote><p>Since 1997, I’ve been working almost exclusively on the web. Throughout all of that time, the realisation of what the projects would look like are done in Photoshop. That means, yes, I’ve been using Photoshop in a production environment for fifteen years. Malcolm Gladwell said it takes 10,000 hours, or 10 years of repetitive use, to become an expert in something. I guess that means I’m an expert in creating pictures of websites. Photoshop is like an extension of my mind. To use Photoshop for me is as effortless and almost as fast as a pencil. I get stuff done; quickly.</p></blockquote>
<p>That point, that the familiarity you have with a tool matters, is an important one to keep in mind. Designing is a creative endeavour. You can’t do it well with tools you aren’t entirely comfortable with.</p>
<p>If we had been designing in the browser since 1997, this would all be a non-issue. Of course it wasn’t possible back then to do so—our tools were too limited. That’s not the point I’m making. The point is that if we had that same level of experience designing in the browser, I suspect no one would debate whether the approach made sense. Designing in the browser lets you get deeply entrenched in the characteristics of the web. Designing in a graphics editor like Photoshop removes you from them.</p>
<p>Those against designing in the browser talk about how working in code is too limiting. Of course the opposite is true as well—working in a graphics editor is too limiting in many ways. You are limited to designing for a specific size at a time. You are limited by not being able to design for interactions. That’s a big one. The web is an interactive medium, not a static one. It has little in common with print and much more in common with software. Graphic editors, for all their powerful tools, aren’t equipped to handle this.</p>
<p>There is room for a better tool here. One that lets you experiment easily, but doesn’t detach you from the constraints and capabilities of the environment you are creating for. Later in his post, Mark continues:</p>
<blockquote><p>I can’t have happy accidents in a browser when I’m writing specific rules and then watching the results in a browser. There is too much in the feedback loop.</p></blockquote>
<p>This made me think of a presentation by Bret Victor called <a href="https://vimeo.com/36579366">“Inventing on Principle”</a>. Not only do I recommend it, I think it should be required viewing.</p>
<p>During the presentation he discusses the need for immediate feedback from our tools:</p>
<blockquote><p>Creators need an immediate connection to what they create. And what I mean by that is when you&#8217;re making something, if you make a change or you make a decision, you need to see the effect of that immediately. There can&#8217;t be any delay, and there can&#8217;t be anything hidden. Creators have to be able to see what they&#8217;re doing.</p></blockquote>
<p>Specifically, he tackles coding. He demonstrates a tool that lets him instantly see how the changes in his Javascript affect the canvas for which he is creating. This instantaneous feedback provides fertile ground for experimentation, and he demonstrates that over and over in the video. Because of the direct connection between the code and the result, you&#8217;re able to start using advanced controls (start around 3:45 into the video, and again around 10:45) to help the process of discovery and experimentation.</p>
<p>This, I think, is where we need to head. We need to be able to create on the web, but we need tools that make it easier for us to experiment. Tools that let us be creative without decoupling us from the very medium we are creating for.</p>
<p>We’re not likely to ever remove a graphic editor completely from our workflow, nor should that be our goal. There is nothing wrong with graphic editors. We simply need to be aware of what they are good at, and where they fall short. Instead, our goal should be to move towards tools and processes that let us capitalize on the interactive nature of the web.</p>
<p>It&#8217;s about using the right tool for the right job. I&#8217;m not convinced we have the right tool yet.</p>
]]></content:encoded>
			<wfw:commentRss>http://timkadlec.com/2012/02/looking-for-the-right-tool/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Media Query &amp; Asset Downloading Tests</title>
		<link>http://timkadlec.com/2012/02/media-query-asset-downloading-tests/</link>
		<comments>http://timkadlec.com/2012/02/media-query-asset-downloading-tests/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 17:37:52 +0000</pubDate>
		<dc:creator>Tim Kadlec</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[media queries]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[responsive]]></category>

		<guid isPermaLink="false">http://timkadlec.com/?p=1246</guid>
		<description><![CDATA[When you’re building a responsive site, there will undoubtedly be times when you need to change a background image, or when you need to hide an image for a specific resolution range. Unfortunately if you’re not careful, this can lead to multiple images being downloaded even when they aren’t being used. A few people—including Jason [...]]]></description>
			<content:encoded><![CDATA[<p>When you’re building a responsive site, there will undoubtedly be times when you need to change a background image, or when you need to hide an image for a specific resolution range. Unfortunately if you’re not careful, this can lead to multiple images being downloaded even when they aren’t being used. A few people—including <a href="http://www.cloudfour.com/css-media-query-for-mobile-is-fools-gold/">Jason Grigsby</a>, <a href="http://blog.assortedgarbage.com/2010/12/css3-media-queries-download-answers/">Greg Rewis</a> and <a href="http://aaronmentele.com/2012/01/15/media-queries-for-mobile-browsers/">Aaron Mentele</a>—have done some excellent testing about how images are downloaded when media queries are involved. So far, the tests have been conducted using manual methods. There is absolutely nothing wrong with that, but I wanted to find a way to make the testing more automated so that a wider group of people could contribute to the test results.</p>
<p>To that end, I’ve hacked together <a href="http://timkadlec.com/mq">a few tests</a> (using Jason’s tests as a starting point) that store their results in <a href="http://browserscope.org">Browsercope</a>. The test is fairly simple. For each test case, I check to see if the background image (or content image) has been loaded by checking the <code>image.complete</code> property. The property (which appears to be well supported) returns true if the image has been  requested and downloaded, and false otherwise. So, if I want to see if <code>image2.png</code> has been downloaded, my code looks like this:</p>
<pre><code>var myImage = new Image();
myImage.src = ‘http://somedomain.com/image2.png’;

if (myImage.complete) {
 //already downloaded
} else {
 //not yet downloaded
}</code></pre>
<h2>Early results</h2>
<p>It’s early, but already a few trends (some interesting, some less so) are emerging:</p>
<ul>
<li>Setting an image to <code>display:none</code> won’t stop the image from downloading (see <a href="http://timkadlec.com/mq/test1.php">test 1</a>). So don’t do it. We already knew this, but the tests are reinforcing it.</li>
<li>The same goes for setting an element to <code>display:none</code>: the background will still be downloaded by everybody (see <a href="http://timkadlec.com/mq/test2.php">test2</a>).</li>
<li>Setting the parent object to <code>display:none</code>, however, does work pretty consistently (see <a href="http://timkadlec.com/mq/test3.php">test 3</a>). It looks like Fennec still downloads the image, but Android, iOS and Opera won’t.</li>
<li>Downloading behavior for a simple cascade override is pretty inconsistent (see <a href="http://timkadlec.com/mq/test4.php">test 4</a>). However, setting background images within a media query and then overriding seems to work pretty well (<a href="http://timkadlec.com/mq/test5.php">test 5</a>). Fennec is a little eager again, but Android, iOS, Opera and the Kindle only download what’s needed.</li>
</ul>
<p>Finally, my favorite nugget of information so far pertains to Opera Mobile. Opera, as it turns out, is darn clever. Instead of using the parser to trigger resource downloading, they use layout code. This means that since they have information about viewport size and visibility settings, they can be much more selective about which resources they download. So, for example, if an element is outside the viewport then the background image doesn&#8217;t have to be downloaded on page load.</p>
<p>When I talked to Ola Kleiven of Opera about this optimization, he said that Opera used to implement the same behavior on Opera for desktop prior to 11.60 but had to pull it due to compatibility reasons. Developers were relying on things like the load events of these images, so when they didn’t load in Opera, things would break. It’s too bad: it’s an interesting and effective optimization method. I would love to see this behavior implemented cross-browser, but as an opt-in feature (maybe a meta tag or something could trigger it).</p>
<p>Thanks to everyone who has already been testing—it’s been fun to watch the results come in! If you haven&#8217;t run the tests yet and you&#8217;ve got a few minutes, <a href="http://timkadlec.com/mq/">please do</a>. Once the number of results gets to a nice level, I’ll post a more detailed follow-up about which browsers behave in what ways. I&#8217;ll also include any interesting findings in <a href="http://responsiveenhancement.com">the book</a>.</p>
<p>In the meantime, feel free to fire up the tests on any and all devices you have. If you think of another test you would like to see added, or see a potential issue with the test, <a href="mailto:tim@timkadlec.com">let me know</a>. One of the benefits of automating the test results is that it should be very easy to add new tests and quickly get broad results.</p>
]]></content:encoded>
			<wfw:commentRss>http://timkadlec.com/2012/02/media-query-asset-downloading-tests/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>More shovels</title>
		<link>http://timkadlec.com/2012/01/more-shovels/</link>
		<comments>http://timkadlec.com/2012/01/more-shovels/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 15:39:40 +0000</pubDate>
		<dc:creator>Tim Kadlec</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://timkadlec.com/?p=1232</guid>
		<description><![CDATA[There is no shortage of information floating around today. There are a multitude of books, magazines, newspapers, blog posts, articles, videos and podcasts just clamoring for our attention. It&#8217;s an incredible thing, this wealth of information we have at our fingertips. Never before has so much knowledge been so easily accessible. We&#8217;ve responded by creating [...]]]></description>
			<content:encoded><![CDATA[<p>There is no shortage of information floating around today. There are a multitude of books, magazines, newspapers, blog posts, articles, videos and podcasts just clamoring for our attention. It&#8217;s an incredible thing, this wealth of information we have at our fingertips. Never before has so much knowledge been so easily accessible.</p>
<p>We&#8217;ve responded by creating a lot of tools that help us collect this information. We can easily store quotes, snippets or even full articles in any one of a hundred different sites and services. We can save links to the videos and recordings that moved us on some level. RSS feeds make it incredibly easy to consume massive quantities of online articles and blog posts. Tools like the incredible <a href="http://ifttt.com/">Ifttt</a> help make our many online services interact with each other, further easing the process of collecting information.</p>
<p>But what happens to that information after it has been carefully tagged and stored away? The more new information we collect, the more old information gets buried. That post we read that sparked an idea, that quote that stirred something deep within—lost and buried. Forgotten amongst the piles of all the other information we&#8217;ve collected.</p>
<p>Certainly this is nothing new—the issue has merely been amplified. Technology, though, is supposed to work for us. It&#8217;s supposed to help us solve issues we&#8217;ve had in the past. Why not push our tools to not merely collect, but to remind us what is already there?</p>
<p>We need more services like the<a href="https://kindle.amazon.com/"> Kindle Daily Review</a> and <a href="http://timehop.com/">Timehop</a>. Kindle&#8217;s Daily Review delivers &#8220;flash-cards&#8221; of a book you&#8217;ve read in the past. It displays notes and highlights that you made. It&#8217;s fantastic! I love seeing a passage from a book that I had forgotten all about, but that still sparks something within me. Timehop is similar—it lets you know what you posted on Twitter, Facebook, Foursquare or Instagram a year ago. I&#8217;ve only been using that service for a short time, but already I&#8217;ve found several articles and conversations that I had forgotten about.</p>
<p>Why is this important? Because serendipity is a stimulant. In his book, <a href="http://www.amazon.com/gp/product/1935633163/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1935633163">&#8220;Marshall McLuhan: You Know Nothing of My Work&#8221;</a>, Douglas Coupland had this to say about Marshall McLuhan, one of the most prescient minds of the last century: &#8220;For Marshall, the fun of ideas lay in crashing them together to see what emerged from the collision.&#8221; When you rub two stones together, you can make a spark that starts a fire. Put two seemingly unrelated ideas next to each other and the effect is the same.</p>
<p>Searching, for the most part, eliminates those kinds of serendipitous discoveries. It&#8217;s a more or less direct path to the very specific type of information we are looking for. A service like the Kindle Daily Review, a service that provides <a href="http://test.org.uk/2009/01/28/slow-data-and-the-pleasure-of-automated-nostalgia/">automated nostalgia</a>—that&#8217;s the kind of tool that encourages the mixing of ideas, the friction that causes the spark.</p>
<p>We have enough piles. What we need are more shovels.</p>
]]></content:encoded>
			<wfw:commentRss>http://timkadlec.com/2012/01/more-shovels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Work to be done</title>
		<link>http://timkadlec.com/2012/01/work-to-be-done/</link>
		<comments>http://timkadlec.com/2012/01/work-to-be-done/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 22:18:55 +0000</pubDate>
		<dc:creator>Tim Kadlec</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[responsive]]></category>

		<guid isPermaLink="false">http://timkadlec.com/?p=1182</guid>
		<description><![CDATA[Smashing Magazine just launched their newly redesigned site. Personally, I think it looks pretty great. The ads are a little distracting perhaps, but other than that, the side content mostly gets out of the way leading to a pleasant reading experience. And of course, it’s responsive. That adds another level of loveliness. The navigation adjustments [...]]]></description>
			<content:encoded><![CDATA[<p>Smashing Magazine just launched their <a href="http://smashingmagazine.com">newly redesigned site</a>. Personally, I think it looks pretty great. The ads are a little distracting perhaps, but other than that, the side content mostly gets out of the way leading to a pleasant reading experience.</p>
<p>And of course, it’s responsive. That adds another level of loveliness. The navigation adjustments in particular are kind of interesting to watch. My favorite layout is the last one to kick in before you hit 1020px. It’s clean, easy to read, and the ads are not yet there.</p>
<p>But….</p>
<p>There’s a catch here. For as lovely as the site looks, there’s a lot going wrong from a technical perspective.</p>
<h2>Performance</h2>
<p>For starters, the size. Even on my phone, the site weighs in at a massive 1.4MB. A large part of the issue is that those ads, the same ones that don’t display below 1020px, are still being requested and loaded on smaller resolutions. They&#8217;re just being hidden with a little touch of &#8216;display:none&#8217;.</p>
<p>When I tested, the site also made about 90 requests. That’s an awful big drag on page load time—no matter what device or network you are viewing the site on.</p>
<h2>Advertising</h2>
<p>Another potential concern is the advertising. I’m not sure exactly on Smashing Magazine’s business model, prices, etc., so it’s hard to criticize their advertising efforts too much. I do find it interesting that their ads are all hidden below 1020px though, leaving their ads visible to only a portion of their audience.</p>
<p>One reason for this may be the high number of ads they display. In their sidebar, I count 16 ads. They are distracting at large resolutions, so I imagine they got to be very overwhelming on smaller resolutions. Having to re-orchestrate 16 ads onto a small screen layout would be a very tall task.</p>
<p>Again, we’re talking business model here so there&#8217;s obviously much more at play than what an outside perspective grants, but I would love to see fewer ads. Not just for Smashing Magazine, but across all sites. Less ad spaces, more money per slot. (Roger Black talks about this in detail in his posts <a href="http://rogerblack.com/blog/post/the_holy_grail_part_i">The holy grail, part 1</a> and <a href="http://rogerblack.com/blog/post/the_holy_grail_part_2">part 2</a>.) The result would be three key improvements:</p>
<ol>
<li>You would have a lighter, cleaner experience.</li>
<li>The ads would provide more value to the advertisers—less ads competing for eyeballs per page.</li>
<li>The smaller number of ads would be much easier to manage across resolutions.</li>
</ol>
<h2>Bigger picture</h2>
<p>Now, having said all that, I could be guilty of premature condemnation. Perhaps this is the interim solution and a fix to these issues (performance in particular) is forthcoming.</p>
<p>Jason Grigsby put it nicely in <a href="https://twitter.com/#!/grigs/status/157200482429960192">two</a> <a href="https://twitter.com/#!/grigs/status/157200706317729792">tweets</a>:</p>
<blockquote><p>When I have guests and don’t have time to clean, I shove things in a closet. No biggee. Everyone does it. But the house isn’t really clean.</p>
<p>The key is following through and cleaning the closet as well. Let’s hope others are better at it than I am at home. :-)</p></blockquote>
<p>Of course he&#8217;s right. In fact, I have a few messy closets myself. (Both literally and metaphorically.)</p>
<p>And I don&#8217;t mean to pick on Smashing Magazine. They are far from the only site making these kinds of mistakes on the technical side of things and from a business perspective, the discussion about how to handle advertising is far from being resolved. And again, from a visual perspective I think they did an awful lot of things right.</p>
<p>We simply need to ensure that the discussion broadens. Responsive design is a fantastic approach, one that brings us closer to taking advantage of the inherent flexibility of the web. But simply being responsive is not the destination. To maximize the potential of a responsive approach, we need to focus not only on the visual components, but on the technical execution and business ramifications as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://timkadlec.com/2012/01/work-to-be-done/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>I&#8217;m Writing a Book</title>
		<link>http://timkadlec.com/2012/01/im-writing-a-book/</link>
		<comments>http://timkadlec.com/2012/01/im-writing-a-book/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 21:28:45 +0000</pubDate>
		<dc:creator>Tim Kadlec</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[responsive]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://timkadlec.com/?p=1142</guid>
		<description><![CDATA[So, I&#8217;m writing a book on responsive enhancement for New Riders. To say I&#8217;m excited is a bit of an understatement. I love sharing what I know, and writing a book has been something I&#8217;ve wanted to do for a long time. I&#8217;m not sure of the exact publication date yet, but it looks like [...]]]></description>
			<content:encoded><![CDATA[<p>So, I&#8217;m writing <a href="http://responsiveenhancement.com">a book on responsive enhancement</a> for New Riders.</p>
<p>To say I&#8217;m excited is a bit of an understatement. I love sharing what I know, and writing a book has been something I&#8217;ve wanted to do for a long time. I&#8217;m not sure of the exact publication date yet, but it looks like the book should be out sometime in the second half of the year.</p>
<h2 id="dude_there8217s_already_an_awesome_book_on_responsive_web_design">Uh&#8230;there’s already an awesome book on responsive web design</h2>
<p>Why yes, there is, and I wholeheartedly recommend buying a copy. Like, <a href="http://www.abookapart.com/products/responsive-web-design">now</a>. Ethan’s book is a brilliant read. I even wrote a <a href="http://timkadlec.com/2011/06/book-review-responsive-web-design/">glowing review</a> shortly after finishing it. In that review, I said I was pining for a sequel—something that would build on the core principles Ethan discussed. When Michael Nolan of New Riders got in touch a few months ago and asked if I was interested in writing a book, I saw it as an opportunity to get that book written.</p>
<h2>More info, please!</h2>
<p>The book will be an exploration of how a responsive approach can be integrated into the workflow—from planning and early mockups through to the actual development of the site. In addition to fluid layouts, media queries and fluid images, the book will discuss topics such as design deliverables, structured content, feature detection and server-side enhancements.</p>
<p>If you want to keep up with the progress, your best bets are to follow me on <a href="http://twitter.com/tkadlec">twitter</a>, stay tuned to this blog, and sign up for the mailing list at <a href="http://responsiveenhancement.com">responsiveenhancement.com</a>.</p>
<p>I’ll keep you posted!</p>
]]></content:encoded>
			<wfw:commentRss>http://timkadlec.com/2012/01/im-writing-a-book/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>What I Read in 2011</title>
		<link>http://timkadlec.com/2012/01/what-i-read-in-2011/</link>
		<comments>http://timkadlec.com/2012/01/what-i-read-in-2011/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 17:55:42 +0000</pubDate>
		<dc:creator>Tim Kadlec</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[books]]></category>

		<guid isPermaLink="false">http://timkadlec.com/?p=1157</guid>
		<description><![CDATA[A new year has begun. That means that it’s once again time to take a look back at what books I read over the past year. Unfortunately, it appears I’m trending entirely in the wrong direction. While I managed to read 38 books in 2009 and 33 in 2010, I only made it through 29 [...]]]></description>
			<content:encoded><![CDATA[<p>A new year has begun. That means that it’s once again time to take a look back at what books I read over the past year. Unfortunately, it appears I’m trending entirely in the wrong direction. While I managed to read <a href="http://timkadlec.com/2010/02/what-i-read-in-2009/">38 books in 2009</a> and <a href="http://timkadlec.com/2011/01/what-i-read-in-2010/">33 in 2010</a>, I only made it through 29 this past year. Hopefully I can reverse that trend in 2012.</p>
<p>One interesting trend—at least to me—is that I returned to reading a lot more web related books (10!) this year. This is in no small part related to the A Book Apart series. If they keep churning out quality books like this, that count is likely to stay very high.</p>
<p>As always, if the book made this list, then I enjoyed it on some level. There are far too many good books out there to suffer through one that doesn&#8217;t interest me. If I&#8217;m not enjoying it I set it aside.</p>
<p>If you’re looking for specific recommendations, &#8220;The Invisible Man&#8221; (which I had read before and will read again) and &#8220;The Demolished Man&#8221; top my (short) list of fiction. &#8220;Obliquity&#8221;, &#8220;Marshall McLuhan: You Know Nothing of My Work!&#8221; and &#8220;The Death and Life of the Great American School System&#8221; are at the top for non-fiction (excluding the web-related ones).</p>
<ol>
<li><a href="http://www.fivesimplesteps.com/products/hardboiled-web-design">Hardboiled Web Design</a> by Andy Clarke</li>
<li><a href="http://www.amazon.com/gp/product/0451457994/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0451457994">2001: A Space Odyssey</a> by Arthur C. Clarke</li>
<li><a href="http://www.amazon.com/gp/product/1591844096/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1591844096">Linchpin</a> by Seth Godin</li>
<li><a href="http://www.amazon.com/gp/product/B00403NG2C/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B00403NG2C">Pull</a> by David Siegel</li>
<li><a href="http://www.amazon.com/gp/product/0465025579/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0465025579">The Death and Life of the Great American School System</a> by Diane Ravitch</li>
<li><a href="http://www.amazon.com/gp/product/1449301959/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1449301959">Confessions of a Public Speaker</a> by Scott Berkun</li>
<li><a href="http://www.amazon.com/gp/product/0812536363/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0812536363">Rainbows End</a> by Vernor Vinge</li>
<li><a href="http://www.amazon.com/gp/product/1857988221/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1857988221">The Demolished Man</a> by Alfred Bester</li>
<li><a href="http://www.amazon.com/gp/product/1594485380/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1594485380">Where Good Ideas Come From</a> by Steven Johnson</li>
<li><a href="http://www.abookapart.com/products/html5-for-web-designers">HTML5 for Web Designers</a> by Jeremy Keith</li>
<li><a href="http://www.amazon.com/gp/product/1594202788/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1594202788">Obliquity</a> by John Kay</li>
<li><a href="http://www.abookapart.com/products/responsive-web-design">Responsive Web Design</a> by Ethan Marcotte (<a href="http://timkadlec.com/2011/06/book-review-responsive-web-design/">See my review</a>)</li>
<li><a href="http://easy-readers.net/books/adaptive-web-design/">Adaptive Web Design</a> by Aaron Gustafson</li>
<li><a href="http://www.abookapart.com/products/css3-for-web-designers">CSS3 for Web Designers</a> by Dan Cederholm</li>
<li><a href="http://www.abookapart.com/products/the-elements-of-content-strategy">The Elements of Content Strategy</a> by Erin Kissane</li>
<li><a href="http://www.amazon.com/gp/product/0321525655/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321525655">Presentation Zen</a> by Garr Reynolds</li>
<li><a href="http://www.amazon.com/gp/product/1580493424/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1580493424">The Invisible Man</a> by HG Wells</li>
<li><a href="http://www.amazon.com/gp/product/1594203008/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1594203008">The Filter Bubble</a> by Eli Parson</li>
<li><a href="http://www.amazon.com/Big-Deal-Famous-Almost-ebook/dp/B005HJPUNQ">Big Deal</a> by Robert Hoekman Jr.</li>
<li><a href="http://www.amazon.com/gp/product/0446576220/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0446576220">Delivering Happiness</a> by Tony Hsieh</li>
<li><a href="http://www.amazon.com/gp/product/0375423729/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0375423729">The Information</a> by James Gleick</li>
<li><a href="http://www.abookapart.com/products/mobile-first">Mobile First</a> by Luke Wroblewski (<a href="http://timkadlec.com/2011/10/book-review-mobile-first/">See my review</a>)</li>
<li><a href="http://www.abookapart.com/products/designing-for-emotion">Designing for Emotion</a> by Aaron Walter</li>
<li><a href="http://www.amazon.com/gp/product/0321620062/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321620062">Content Strategy for the Web</a> by Kristina Halverson</li>
<li><a href="http://www.amazon.com/gp/product/0385480016/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0385480016">Bird by Bird</a> by Anne Lamott</li>
<li><a href="http://www.amazon.com/gp/product/1935633163/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1935633163">Marshall McLuhan: You Know Nothing of My Work!</a> by Douglas Coupland</li>
<li><a href="http://www.amazon.com/gp/product/0983873100/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0983873100">Mindfire</a> by Scott Berkun</li>
<li><a href="http://www.amazon.com/gp/product/0321703545/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321703545">Simple and Usable</a> by Giles Colborne</li>
<li><a href="http://www.amazon.com/gp/product/0755361555/ref=as_li_ss_tl?ie=UTF8&amp;tag=timkadcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0755361555">Loose</a> by Martin Thomas</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://timkadlec.com/2012/01/what-i-read-in-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile performance and carrier networks</title>
		<link>http://timkadlec.com/2011/12/mobile-performance-and-carrier-networks/</link>
		<comments>http://timkadlec.com/2011/12/mobile-performance-and-carrier-networks/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 21:58:45 +0000</pubDate>
		<dc:creator>Tim Kadlec</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[elsewhere]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://timkadlec.com/?p=1150</guid>
		<description><![CDATA[I always look forward to the December return of the all the lovely advent blogs that are full of web goodness. Sites like 24ways, PHPAdvent and the Performance Calendar mean that I&#8217;ll have something to look forward to reading each day. So I was very excited when Stoyan asked if I would like to write another [...]]]></description>
			<content:encoded><![CDATA[<p>I always look forward to the December return of the all the lovely advent blogs that are full of web goodness. Sites like <a href="http://24ways.org/">24ways</a>, <a href="http://phpadvent.org/2011">PHPAdvent</a> and the <a href="http://calendar.perfplanet.com/2011/">Performance Calendar</a> mean that I&#8217;ll have something to look forward to reading each day. So I was very excited when <a href="http://www.phpied.com/">Stoyan</a> asked if I would like to write another post for the Performance Calendar this year.</p>
<p>This year&#8217;s post is an overview of how inconsistent mobile networks are, as well as a plea for more communication between carriers, manufacturers and developers. If you&#8217;re interested in mobile performance, please <a href="http://calendar.perfplanet.com/2011/carrier-networks-down-the-rabbit-hole/">give it a read</a>.</p>
<p>Be sure to check out the rest of the articles there as well. As usual, there&#8217;s lots of good content already posted with more sure to come. In particular, I recommend Stoyan&#8217;s post on <a href="http://calendar.perfplanet.com/2011/the-art-and-craft-of-the-async-snippet/">asynchronous snippets</a>, <a href="http://www.blaze.io/">Guy&#8217;s</a> look at <a href="http://calendar.perfplanet.com/2011/why-inlining-everything-is-not-the-answer/">when you should and shouldn&#8217;t inline resources</a>, and a post on <a href="http://calendar.perfplanet.com/2011/localstorage-read-performance/">localStorage performance</a> by <a href="http://www.nczonline.net/">Nicholas</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://timkadlec.com/2011/12/mobile-performance-and-carrier-networks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

