<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: steve-souders</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/steve-souders.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2018-01-18T14:39:38+00:00</updated><author><name>Simon Willison</name></author><entry><title>Quoting Steve Souders</title><link href="https://simonwillison.net/2018/Jan/18/steve-souders/#atom-tag" rel="alternate"/><published>2018-01-18T14:39:38+00:00</published><updated>2018-01-18T14:39:38+00:00</updated><id>https://simonwillison.net/2018/Jan/18/steve-souders/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://calendar.perfplanet.com/2017/tracking-cpu-with-long-tasks-api/"&gt;&lt;p&gt;The biggest bottleneck in web performance today is CPU. Compared to seven years ago, there’s 5x more JavaScript downloaded on the top 1000 websites over the last seven years, and 3x more CSS. Half of web activity comes from mobile devices with a smaller CPU and limited battery power.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://calendar.perfplanet.com/2017/tracking-cpu-with-long-tasks-api/"&gt;Steve Souders&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/steve-souders"&gt;steve-souders&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-performance"&gt;web-performance&lt;/a&gt;&lt;/p&gt;



</summary><category term="steve-souders"/><category term="web-performance"/></entry><entry><title>Velocity: Forcing Gzip Compression</title><link href="https://simonwillison.net/2010/Sep/30/gzip/#atom-tag" rel="alternate"/><published>2010-09-30T17:45:00+00:00</published><updated>2010-09-30T17:45:00+00:00</updated><id>https://simonwillison.net/2010/Sep/30/gzip/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.stevesouders.com/blog/2010/07/12/velocity-forcing-gzip-compression/"&gt;Velocity: Forcing Gzip Compression&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Almost every browser supports gzip these days, but 15% of web requests have had their Accept-Encoding header stripped or mangled, generally due to poorly implemented proxies or anti-virus software. Steve Souders passes on a trick used by Google Search, where an iframe is used to test the browser’s gzip support and set a cookie to force gzipping of future pages.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/browsers"&gt;browsers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gzip"&gt;gzip&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/performance"&gt;performance&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/proxies"&gt;proxies&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/steve-souders"&gt;steve-souders&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;&lt;/p&gt;



</summary><category term="browsers"/><category term="gzip"/><category term="performance"/><category term="proxies"/><category term="steve-souders"/><category term="recovered"/></entry><entry><title>Diffable: only download the deltas</title><link href="https://simonwillison.net/2010/Jul/11/diffable/#atom-tag" rel="alternate"/><published>2010-07-11T12:19:00+00:00</published><updated>2010-07-11T12:19:00+00:00</updated><id>https://simonwillison.net/2010/Jul/11/diffable/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.stevesouders.com/blog/2010/07/09/diffable-only-download-the-deltas/"&gt;Diffable: only download the deltas&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
JavaScript library for detecting and serving diffs to JavaScript rather than downloading large scripts every time a few lines of code are changed. “Using Diffable has reduced page load times in Google Maps by more than 1200 milliseconds (~25%). Note that this benefit only affects users that have an older version of the script in cache. For Google Maps that’s 20-25% of users.”


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/google-maps"&gt;google-maps&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/performance"&gt;performance&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/steve-souders"&gt;steve-souders&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/diffable"&gt;diffable&lt;/a&gt;&lt;/p&gt;



</summary><category term="google-maps"/><category term="javascript"/><category term="performance"/><category term="steve-souders"/><category term="recovered"/><category term="diffable"/></entry><entry><title>Google Analytics goes async</title><link href="https://simonwillison.net/2009/Dec/2/async/#atom-tag" rel="alternate"/><published>2009-12-02T18:30:47+00:00</published><updated>2009-12-02T18:30:47+00:00</updated><id>https://simonwillison.net/2009/Dec/2/async/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.stevesouders.com/blog/2009/12/01/google-analytics-goes-async/"&gt;Google Analytics goes async&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
This is excellent news—the latest version of the Google Analytics JavaScript is designed to allow for asynchronous loading, so it won’t hold up the rendering of your page. Analytics and banner ads are the two worst offenders when it comes to slowing down page loads. Now if only a banner ad vendor would follow suit...


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ads"&gt;ads&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/analytics"&gt;analytics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/async"&gt;async&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/google"&gt;google&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/google-analytics"&gt;google-analytics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/performance"&gt;performance&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/steve-souders"&gt;steve-souders&lt;/a&gt;&lt;/p&gt;



</summary><category term="ads"/><category term="analytics"/><category term="async"/><category term="google"/><category term="google-analytics"/><category term="javascript"/><category term="performance"/><category term="steve-souders"/></entry><entry><title>LABjs: new hotness for script loading</title><link href="https://simonwillison.net/2009/Nov/26/labjs/#atom-tag" rel="alternate"/><published>2009-11-26T12:28:29+00:00</published><updated>2009-11-26T12:28:29+00:00</updated><id>https://simonwillison.net/2009/Nov/26/labjs/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.getify.com/2009/11/labjs-new-hotness-for-script-loading/"&gt;LABjs: new hotness for script loading&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Created in collaboration with Steve Souders, LABjs is a JavaScript loading library which makes it easy to have scripts download in parallel while still ensuring that they execute sequentially where required to ensure dependencies are met. It’s unclear how you would decide to use this over concatenating all scripts together in to a single file.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/labjs"&gt;labjs&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/loading"&gt;loading&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/performance"&gt;performance&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/script"&gt;script&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/steve-souders"&gt;steve-souders&lt;/a&gt;&lt;/p&gt;



</summary><category term="javascript"/><category term="labjs"/><category term="loading"/><category term="performance"/><category term="script"/><category term="steve-souders"/></entry><entry><title>Coupling asynchronous scripts</title><link href="https://simonwillison.net/2009/Apr/30/coupling/#atom-tag" rel="alternate"/><published>2009-04-30T19:57:38+00:00</published><updated>2009-04-30T19:57:38+00:00</updated><id>https://simonwillison.net/2009/Apr/30/coupling/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.stevesouders.com/blog/2008/12/27/coupling-async-scripts/"&gt;Coupling asynchronous scripts&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
More from Steve Souders, this time discussing methods to cause externally loaded scripts to execute in the correct order, obeying dependencies. Surprisingly there’s no mention of YUI loader or the Dojo packaging system.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/dojo"&gt;dojo&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/loading"&gt;loading&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/steve-souders"&gt;steve-souders&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/yui"&gt;yui&lt;/a&gt;&lt;/p&gt;



</summary><category term="dojo"/><category term="javascript"/><category term="loading"/><category term="steve-souders"/><category term="yui"/></entry><entry><title>Loading Scripts Without Blocking</title><link href="https://simonwillison.net/2009/Apr/30/high/#atom-tag" rel="alternate"/><published>2009-04-30T19:56:33+00:00</published><updated>2009-04-30T19:56:33+00:00</updated><id>https://simonwillison.net/2009/Apr/30/high/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/"&gt;Loading Scripts Without Blocking&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Steve Souders is publishing extracts from his new book, “Even Faster Web Sites”. Here’s a systematic study of different JavaScript loading methods, along with a decision tree for picking the most appropriate one for your application.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/blocking"&gt;blocking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/loading"&gt;loading&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/performance"&gt;performance&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/steve-souders"&gt;steve-souders&lt;/a&gt;&lt;/p&gt;



</summary><category term="blocking"/><category term="javascript"/><category term="loading"/><category term="performance"/><category term="steve-souders"/></entry><entry><title>IE8 speeds things up</title><link href="https://simonwillison.net/2008/Mar/11/high/#atom-tag" rel="alternate"/><published>2008-03-11T05:42:32+00:00</published><updated>2008-03-11T05:42:32+00:00</updated><id>https://simonwillison.net/2008/Mar/11/high/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.stevesouders.com/blog/2008/03/10/ie8-speeds-things-up/"&gt;IE8 speeds things up&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Steve Souders notes that IE8 downloads script files in parallel before executing them sequentially, giving it a significant speed boost over other browsers that download sequentially.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/browsers"&gt;browsers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ie8"&gt;ie8&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/performance"&gt;performance&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/steve-souders"&gt;steve-souders&lt;/a&gt;&lt;/p&gt;



</summary><category term="browsers"/><category term="ie8"/><category term="performance"/><category term="steve-souders"/></entry><entry><title>YSlow: Bug (fix) in Firebug's Net Panel</title><link href="https://simonwillison.net/2007/Oct/5/yslow/#atom-tag" rel="alternate"/><published>2007-10-05T22:26:10+00:00</published><updated>2007-10-05T22:26:10+00:00</updated><id>https://simonwillison.net/2007/Oct/5/yslow/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://developer.yahoo.com/yslow/netpanelpatch.html"&gt;YSlow: Bug (fix) in Firebug&amp;#x27;s Net Panel&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
The latest release of the YSlow page analysis plugin (announced at FOWA) also fixes a misleading bug in Firebug’s Net panel.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/firebug"&gt;firebug&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/firefox"&gt;firefox&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/fowa"&gt;fowa&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/profiling"&gt;profiling&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/steve-souders"&gt;steve-souders&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/yahoo"&gt;yahoo&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/yslow"&gt;yslow&lt;/a&gt;&lt;/p&gt;



</summary><category term="firebug"/><category term="firefox"/><category term="fowa"/><category term="profiling"/><category term="steve-souders"/><category term="yahoo"/><category term="yslow"/></entry></feed>