<?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>High Performance Web Sites</title>
	<atom:link href="http://www.stevesouders.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.stevesouders.com/blog</link>
	<description>Essential knowledge for making your web pages faster.</description>
	<lastBuildDate>Mon, 16 Aug 2010 17:39:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Redirect caching deep dive</title>
		<link>http://www.stevesouders.com/blog/2010/07/23/redirect-caching-deep-dive/</link>
		<comments>http://www.stevesouders.com/blog/2010/07/23/redirect-caching-deep-dive/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 07:34:15 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
				<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[redirects]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1439</guid>
		<description><![CDATA[I was talking to a performance guru today who considers redirects one of the top two performance problems impacting web pages today. (The other was document.write.) I agree redirects are an issue, so much so that I wrote a chapter on avoiding redirects in High Performance Web Sites. What makes matters worse is that, even [...]]]></description>
			<content:encoded><![CDATA[<p>I was talking to a performance guru today who considers redirects one of the top two performance problems impacting web pages today. (The other was <code>document.write</code>.) I agree redirects are an issue, so much so that I wrote a chapter on avoiding redirects in <a href="http://www.amazon.com/High-Performance-Web-Sites-Essential/dp/0596529309">High Performance Web Sites</a>. What makes matters worse is that, even though redirects are cacheable, most browsers (even the new ones) don&#8217;t cache them.</p>
<p>Another performance guru, <a href="http://www.fiddler2.com/">Eric Lawrence</a>, sent me an email last week pointing out how cookies, status codes, and response headers affect redirect caching. Even though there are a few redirect tests in <a href="http://www.browserscope.org/">Browserscope</a>, they don&#8217;t test all of these conditions. I wanted a more thorough picture of the state of redirect caching across browsers.</p>
<p>The <a href="http://stevesouders.com/tests/redirects/">Redirect Caching Tests page</a> provides a test harness for exercising different redirect caching scenarios.</p>
<div style="text-align: center;"><a href="http://stevesouders.com/tests/redirects/index.php"><img class="aligncenter" src="http://stevesouders.com/images/redirect-caching-form.png" alt="" width="448" height="110" /></a></div>
<p>You can use the &#8220;Test Once&#8221; button to test a specific scenario, but if you choose &#8220;Test All&#8221; the harness runs through all the tests and offers to post the results (anonymously) to Browserscope. Here&#8217;s a snapshot of the <a href="http://stevesouders.com/tests/redirects/results.php">results</a>:</p>
<div style="text-align: center;"><a href="http://stevesouders.com/tests/redirects/results.php"><img class="alignnone" src="http://stevesouders.com/images/redirect-caching-results.png" border="0" alt="" width="480" height="225" /></a></div>
<p>I realize you can&#8217;t read the results, but suffice it to say red is bad. If you click on the table you&#8217;ll go to <a href="http://stevesouders.com/tests/redirects/results.php">the full results</a>. They&#8217;re broken into two tables: redirects that <em>should </em>be cached, and redirects that <em>should not</em> be cached. For example, a 301 response with an expiration date in the future should be cached, but a 302 redirect with an expiration date in the past shouldn&#8217;t be cached. The official ruling can be found in <a href="http://tools.ietf.org/html/rfc2616">RFC 2616</a>. (Also, discussions Eric had with <a href="http://www.mnot.net/">Mark Nottingham</a>, chair of the <a href="http://tools.ietf.org/wg/httpbis/">Httpbis working group</a>, indicate that 303 redirects with a future expiration date should be cached.)</p>
<p>Chrome, iPhone, and Opera 10.60 are doing the best job, but there&#8217;s still a lot of missed opportunities. IE 9 platform preview 3 still doesn&#8217;t cache any redirects, but Eric&#8217;s blog post, <a href="http://blogs.msdn.com/b/ie/archive/2010/07/14/caching-improvements-in-internet-explorer-9.aspx">Caching Improvements in Internet Explorer 9</a>, describes how that&#8217;ll be in the final version of IE9. If you use redirects that don&#8217;t change, make sure to use a 301 status code and set an expiration date in the future. That will ensure they&#8217;re cached in Chome, Firefox, iPhone, Opera, and IE9. </p>
<p>Please help out by running the test on your browser (especially mobile!) and contributing the results back to Browserscope so we can help browser vendors know what needs to be fixed.</p>
<div id=share style="margin: 20px 0 20px 40px;">
<a href='http://stevesouders.com/tests/redirects/' style="background: #F1AA3D url(http://stevesouders.com/p3pc/gradients.png) 0 0 repeat-x; border: 0; border-bottom: 1px solid #AAA; padding: 5px 25px; background-color: #F1AA3D; text-decoration: none; color: #fff; font-size: 150%; font-weight: bold; text-shadow: 0 1px 2px #444; white-space: nowrap; -moz-border-radius: 8px; -webkit-border-radius: 8px; -moz-box-shadow: 0 2px 2px rgba(102, 102, 102, .4); -webkit-box-shadow: 0 2px 2px rgba(102, 102, 102, .4);">Run the Test</a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2010/07/23/redirect-caching-deep-dive/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Velocity: TCP and the Lower Bound of Web Performance</title>
		<link>http://www.stevesouders.com/blog/2010/07/13/velocity-tcp-and-the-lower-bound-of-web-performance/</link>
		<comments>http://www.stevesouders.com/blog/2010/07/13/velocity-tcp-and-the-lower-bound-of-web-performance/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 02:08:53 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
				<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Velocity]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[delayed ack]]></category>
		<category><![CDATA[slow start]]></category>
		<category><![CDATA[TCP]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1427</guid>
		<description><![CDATA[John Rauser (Amazon) was my favorite speaker at Velocity. His keynote on Creating Cultural Change was great. I recommend you watch the video.
John did another session that was longer and more technical entitled TCP  and the Lower Bound of Web Performance. Unfortunately this wasn&#8217;t scheduled in the videotape room. But yesterday Mike Bailey contacted [...]]]></description>
			<content:encoded><![CDATA[<p>John Rauser (Amazon) was my favorite speaker at <a href="http://conferences.oreilly.com/velocity">Velocity</a>. His keynote on <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/11793">Creating Cultural Change</a> was great. I recommend you watch the <a href="http://www.youtube.com/watch?v=UL2WDcNu_3A&amp;feature=player_embedded">video</a>.</p>
<p>John did another session that was longer and more technical entitled <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/11792">TCP  and the Lower Bound of Web Performance</a>. Unfortunately this wasn&#8217;t scheduled in the videotape room. But yesterday <a href="http://mike.bailey.net.au/">Mike Bailey</a> contacted me saying he had recorded the talk with his Flip. With John&#8217;s approval, Mike has uploaded his <a href="http://mike.bailey.net.au/blog/?p=39">video of John Rauser&#8217;s TCP talk</a> from Velocity. <span style="text-decoration: line-through;">This video runs out before the end of the talk, so make sure to follow along in the <a href="https://docs.google.com/viewer?url=http:%2F%2Fassets.en.oreilly.com%2F1%2Fevent%2F44%2FTCP%2520and%2520the%2520Lower%2520Bound%2520of%2520Web%2520Performance%2520Presentation.pdf">slides</a> so you can walk through the conclusion yourself.</span> [Update: Mike Bailey uploaded the last 7 minutes, so now you can hear the conclusion directly from John!]</p>
<p>John starts by taking a stab at what we should expect for coast-to-coast roundtrip latency:</p>
<ul>
<li>Roundtrip distance between the west coast and the east coast is 7400 km.</li>
<li>The speed of light in a vacuum is 299,792.458 km/second.</li>
<li>So the theoretical minimum for roundtrip latency is 25 ms.</li>
<li>But light&#8217;s not traveling in a vacuum. It&#8217;s propagating in glass in fiber optic cables.</li>
<li>The index of refraction of glass is 1.5, which means light travels at 66% of the speed in glass that it does in a vacuum.</li>
<li>So a more realistic roundtrip latency is ~37 ms.</li>
<li>Using a Linksys wireless router and a Comcast cable connection, John&#8217;s roundtrip latency is ~90ms. Which isn&#8217;t really that bad, given the other variables involved.</li>
</ul>
<p style="text-align: center;"><img class="aligncenter" src="http://stevesouders.com/images/90ms-roundtrip.png" alt="" width="400" height="276" /></p>
<p>The problem is it&#8217;s been like this for well over a decade. This is about the same latency that <a href="http://www.stuartcheshire.org/rants/Latency.html">Stuart Cheshire found</a> in 1996. This is important because as developers we know that network latency matters when it comes to building a responsive web app.</p>
<p>With that backdrop, John launches into a history of TCP that leads us to the current state of network latency. The Internet was born in September of 1981 with <a href="http://tools.ietf.org/html/rfc0793">RFC 793</a> documenting the Transmission Control Protocol, better known as TCP.</p>
<p>Given the size of the TCP window (64 kB) there was a chance for  congestion, as noted in <a href="http://tools.ietf.org/html/rfc896">Congestion Control in  IP/TCP   Internetworks (RFC 896)</a>:</p>
<blockquote><p>Should the  round-trip time exceed the maximum retransmission interval  for any  host, that host will begin to introduce more and more copies of  the  same datagrams into the net. The network is now in serious trouble.   Eventually all available buffers in the switching nodes will be full and   packets must be dropped. Hosts are sending each packet several times,   and eventually some copy of each packet arrives at its destination.  This  is congestion collapse.</p>
<p>This condition is stable. Once the  saturation  point has been reached, if the algorithm for selecting  packets to be  dropped is fair, the network will continue to operate in a  degraded  condition. Congestion collapse and pathological congestion  are not  normally seen in the ARPANET / MILNET system because these  networks have  substantial excess capacity.</p></blockquote>
<p>Although  it&#8217;s true that in 1984, when RFC 896 was written, the Internet had  &#8220;substantial excess capacity&#8221;, that quickly changed. In 1981 there were  213 hosts on the Internet. But the number of hosts started growing  rapidly. In October of 1986, with over 5000 hosts on the Internet, there  occurred the first in a series of congestion   collapse events.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://stevesouders.com/images/internet-hosts.png" alt="" width="400" height="303" /></p>
<p>This led to the development of the TCP slow start algorithm, as described in RFCs <a href="http://tools.ietf.org/html/rfc2581">2581</a>, <a href="http://tools.ietf.org/html/rfc3390">3390</a>, and <a href="http://tools.ietf.org/html/rfc1122">1122</a>.  The key to this algorithm is the introduction of a new concept called the <em>congestion window (cwnd)</em> which is maintained by the server. The basic algorithm is:</p>
<ol>
<li>initalize cwnd to 3 full segments</li>
<li>increment cwnd by one  full segment for each ACK</li>
</ol>
<p>TCP slow start was widely adopted. As seen in the following packet flow diagram, the number of packets starts small and doubles, thus avoiding the congestion collision experienced previously.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://stevesouders.com/images/slow-start-packets.png" alt="" width="336" height="325" /></p>
<p>There were still inefficiencies, however. In some situations, too many ACKs would be sent. Thus we now have the delayed ACK algorithm from <a href="http://tools.ietf.org/html/rfc813">RFC 813</a>. So the nice packet growth seen above now looks like this:</p>
<p style="text-align: center;"><img class="aligncenter" src="http://stevesouders.com/images/delayed-ack-packets.png" alt="" width="326" height="361" /></p>
<p style="text-align: left;">At this point, after referencing so many RFCs and showing numerous ACK diagrams, John aptly asks, &#8220;Why should we care?&#8221; <span style="text-decoration: line-through;">Sadly, the video stops at this point around slide 160. But if we continue through the <a href="https://docs.google.com/viewer?url=http:%2F%2Fassets.en.oreilly.com%2F1%2Fevent%2F44%2FTCP%2520and%2520the%2520Lower%2520Bound%2520of%2520Web%2520Performance%2520Presentation.pdf">slides</a> we see how </span>John brings us back to what web developers deal with on a daily basis.</p>
<p>Keeping in mind that the size of a segment is 1460 bytes (&#8220;1500 octets&#8221; as specified in <a href="http://tools.ietf.org/html/rfc894">RFC 894</a> minus 40 bytes for TCP and IP headers), we see how many roundtrips are required to deliver various payload sizes. (I overlaid a kB conversion in red.)</p>
<p style="text-align: center;"><img class="aligncenter" src="http://stevesouders.com/images/roundtrips-per-kb.png" alt="" width="514" height="375" /></p>
<p style="text-align: left;">John&#8217;s conclusion is that &#8220;TCP slow start means that network latency strictly limits the throughput  of fresh connections.&#8221; He gives these recommendations for what can be done about the situation:</p>
<ol>
<li>Carefully consider every byte of content</li>
<li>Think about what goes into those first few packets
<ol style="list-style-type: none;">
<li>2.1 Keep your cookies small</li>
<li>2.2 Open connections for assets in the first three packets</li>
<li>2.3 Download small assets first</li>
</ol>
</li>
<li>Accept the speed of light (move content closer to users)</li>
</ol>
<p>All web developers need at least a basic understanding of the protocol used by their apps. John delivers a great presentation that is informative and engaging, with real takeaways. Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2010/07/13/velocity-tcp-and-the-lower-bound-of-web-performance/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Velocity: Forcing Gzip Compression</title>
		<link>http://www.stevesouders.com/blog/2010/07/12/velocity-forcing-gzip-compression/</link>
		<comments>http://www.stevesouders.com/blog/2010/07/12/velocity-forcing-gzip-compression/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 01:57:12 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[accept-encoding]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[proxies]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1412</guid>
		<description><![CDATA[
Tony Gentilcore was my officemate when I first started at Google. I was proud of my heritage as &#8220;the YSlow guy&#8221;. After all, YSlow was well over 1M downloads. After a few days I found out that Tony was the creator of Fasterfox &#8211; topping 11M downloads. Needless to say, we hit it off and [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin: 8px;"><a href="https://addons.mozilla.org/en-US/firefox/addon/1269/"><img class="alignnone" title="Fasterfox" src="http://stevesouders.com/images/fasterfox.png" alt="" width="120" height="133" /></a></div>
<p>Tony Gentilcore was my officemate when I first started at Google. I was proud of my heritage as &#8220;the YSlow guy&#8221;. After all, <a href="https://addons.mozilla.org/en-US/firefox/addon/5369/">YSlow</a> was well over 1M downloads. After a few days I found out that Tony was the creator of <a href="https://addons.mozilla.org/en-US/firefox/addon/1269/">Fasterfox</a> &#8211; topping 11M downloads. Needless to say, we hit it off and had a great year brainstorming techniques for optimizing web performance.</p>
<p>During that time, Tony was working with the Google Search team and discovered something interesting: ~15% of users with gzip-capable browsers were not sending an appropriate Accept-Encoding request header. As a result, they were sent uncompressed responses that were 3x bigger resulting in slower page load times. After some investigation, Tony discovered that intermediaries (proxies and anti-virus software) were stripping or munging the Accept-Encoding header. My blog post <a href="http://www.stevesouders.com/blog/2009/11/11/whos-not-getting-gzip/">Who&#8217;s not getting gzip?</a> summarizes the work with links to more information. Read Tony&#8217;s chapter in <a href="http://www.amazon.com/Even-Faster-Web-Sites-Performance/dp/0596522304">Even Faster Web Sites</a> for all the details.</p>
<p>Tony is now working on <a href="http://www.google.com/chrome/">Chrome</a>, but the discovery he made has fueled the work of Andy Martone and others on the Google Search team to see if they could improve page load times for users who weren&#8217;t getting compressed responses. They had an idea:</p>
<blockquote><p>For requests with missing or mangled Accept-Encoding headers, inspect the User-Agent to identify browsers that should understand gzip.<br />
Test their ability to decompress gzip.<br />
If successful, send them gzipped content!</p></blockquote>
<p>This is a valid strategy given that the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.3">HTTP spec</a> says that, in the absence of an Accept-Encoding header, the server may send a different content encoding based on additional information (such as the encodings known to be supported by the particular client).</p>
<p>During his presentation at Velocity, <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/14334">Forcing Gzip Compression</a>, Andy describes how Google Search implemented this technique:</p>
<ul>
<li>At the bottom of a page, inject JavaScript to:
<ul>
<li>Check for a cookie.</li>
<li>If absent, set a session cookie saying &#8220;compression NOT ok&#8221;.</li>
<li>Write out an iframe element to the page.</li>
</ul>
</li>
<li>The browser then makes a request for the iframe contents.</li>
<li>The server responds with an HTML document that is <em>always</em> compressed.</li>
<li>If the browser understands the compressed response, it executes the inlined JavaScript and sets the session cookie to &#8220;compression ok&#8221;.</li>
<li>On subsequent requests, if the server sees the &#8220;compression ok&#8221; cookie  it can send compressed responses.</li>
</ul>
<p>The savings are significant. An average Google Search results page is 34 kB, which compresses down to 10 kB. The ability to send a compressed response cuts page load times by ~15% for these affected users.</p>
<p>Andy&#8217;s <a href="http://assets.en.oreilly.com/1/event/44/Forcing%20Gzip%20Compression%20Presentation.zip">slides</a> contain more details about how to only run the test once, recommended cookie lifetimes, and details on serving the iframe. Since this discovery I&#8217;ve talked to folks at other web sites that confirm these mysterious requests that are missing an Accept-Encoding header. Check it out on your web site &#8211; 15% is a significant slice of users! If you&#8217;d like to improve their page load times, take Andy&#8217;s advice and send them a compressed response that is smaller and faster.</p>
<div style="text-align: right;">
<a href="http://www.fatcow.com/edu/velocity-forcing-gzip-compression-be/">Belorussian translation</a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2010/07/12/velocity-forcing-gzip-compression/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Mobile cache file sizes</title>
		<link>http://www.stevesouders.com/blog/2010/07/12/mobile-cache-file-sizes/</link>
		<comments>http://www.stevesouders.com/blog/2010/07/12/mobile-cache-file-sizes/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 17:07:20 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[browserscope]]></category>
		<category><![CDATA[cache]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1385</guid>
		<description><![CDATA[Mobile is big, but knowledge about how to make a mobile web site fast is lacking. The state of mobile web performance is in a similar place as desktop was six years ago when I started my performance deep dive. How many of us are happy with the speed of web pages on mobile? (I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p>Mobile is big, but knowledge about how to make a mobile web site fast is lacking. The state of mobile web performance is in a similar place as desktop was six years ago when I started my performance deep dive. How many of us are happy with the speed of web pages on mobile? (I&#8217;m not.) How many of us know the top 10 best practices for building high performance mobile web sites? (I don&#8217;t.)</p>
<p>I&#8217;ve been focusing more on mobile in order to help build this set of best practices. <a href="http://www.browserscope.org/">Browserscope</a> is a valuable resource since it measures all browsers, both mobile and desktop. The <a href="http://www.browserscope.org/?category=network&amp;v=2&amp;ua=Android%202.2,Blackberry%209700,iPad%204.0,iPhone%203.1,iPhone%204.0,Nokia%2095,Opera%20Mini%204.2,Palm%20Pre%201.0">Network category for popular mobile browsers</a> shows information about max connections per hostname, parallel script loading, redirect caching, and more. Since Browserscope&#8217;s data is crowdsourced it&#8217;s easy to get coverage on a wide variety of mobile devices. The table below shows the results from Browserscope for some popular mobile devices.</p>
<p><a href="http://www.browserscope.org/?category=network&amp;v=2&amp;ua=Android%202.2,Blackberry%209700,iPad%204.0,iPhone%203.1,iPhone%204.0,Nokia%2095,Opera%20Mini%204.2,Palm%20Pre%201.0"><img class="alignnone" src="http://stevesouders.com/images/browserscope-network-mobile-crop.png" alt="" width="550" height="304" /></a></p>
<p>One thing I&#8217;ve wanted to measure on mobile is the browser&#8217;s cache. Caching on mobile devices is a cause for concern. In my experience a page I visited just a few minutes ago doesn&#8217;t seem to be cached when I visit it again. A few months ago I started creating tests for measuring the browser&#8217;s cache.</p>
<p>That&#8217;s why I was especially excited to see Ryan Grove&#8217;s post on <a href="http://www.yuiblog.com/blog/2010/06/28/mobile-browser-cache-limits/">Mobile Browser Cache Limits</a>. I noticed his results were quite different from mine, so I <a href="http://www.yuiblog.com/blog/2010/06/28/mobile-browser-cache-limits/#comment-592479">commented</a> on his blog post and invited him to contact me. Which he did! It&#8217;s great to find someone to collaborate with, especially when designing tests like this where another pair of eyes is a big help.</p>
<p>Ryan and I created a new test design. He&#8217;s deployed his under the name <a href="http://github.com/rgrove/cachetest">cachetest on GitHub</a>. My implementation is called <a href="http://stevesouders.com/tests/cachesize/">Max Cache File Size</a>. I&#8217;m hosting it so you can run it immediately. I&#8217;ve integrated it with Browserscope as a <a href="http://www.browserscope.org/user/tests/howto">User Test</a>. Anyone who runs my hosted version has the option to post their results (anonymously) to Browserscope and contribute to building a repository for script cache sizes for all browsers.</p>
<div id=share style="margin: 20px 0 20px 40px;">
<a href='http://stevesouders.com/tests/cachesize/index.php?id=1278955234&#038;n=1&#038;type=js&#038;size=512&#038;auto=1' style="background: #F1AA3D url(http://stevesouders.com/p3pc/gradients.png) 0 0 repeat-x; border: 0; border-bottom: 1px solid #AAA; padding: 5px 25px; background-color: #F1AA3D; text-decoration: none; color: #fff; font-size: 150%; font-weight: bold; text-shadow: 0 1px 2px #444; white-space: nowrap; -moz-border-radius: 8px; -webkit-border-radius: 8px; -moz-box-shadow: 0 2px 2px rgba(102, 102, 102, .4); -webkit-box-shadow: 0 2px 2px rgba(102, 102, 102, .4);">Run the Test</a>
</div>
<p>Here&#8217;s a link to the <a href="http://www.browserscope.org/user/tests/table/agt1YS1wcm9maWxlcnINCxIEVGVzdBj_1OsBDA?v=3&amp;layout=simple&amp;f=Max%20js%20Cache%20Size%20(kB)">Max Cache File Size results on Browserscope</a>. A summary of the results with some other findings follows:</p>
<table border="0" cellspacing="0" cellpadding="2">
<tbody>
<tr style="background: #CCC;">
<th style="padding: 4px;">Browser</th>
<th style="padding: 4px;">Max Cached<br />
Script Size<br />
Same Session</th>
<th style="padding: 4px;">Cache Cross<br />
Lock/Unlock</th>
<th style="padding: 4px;">Cache Cross<br />
Power Cycle</th>
</tr>
<tr style="background: #FFF;">
<td style="padding: 4px;">Android 2.1</td>
<td align="center">4 MB</td>
<td align="center">yes</td>
<td align="center">yes</td>
</tr>
<tr style="background: #F0F0F0;">
<td style="padding: 4px;">Android 2.2</td>
<td align="center">2 MB</td>
<td align="center">yes</td>
<td align="center">yes</td>
</tr>
<tr style="background: #FFF;">
<td style="padding: 4px;">iPad</td>
<td align="center">4 MB</td>
<td align="center">yes</td>
<td align="center">no</td>
</tr>
<tr style="background: #F0F0F0;">
<td style="padding: 4px;">iPhone 3</td>
<td align="center">4 MB</td>
<td align="center">yes</td>
<td align="center">no</td>
</tr>
<tr style="background: #FFF;">
<td style="padding: 4px;">iPhone 4</td>
<td align="center">4 MB</td>
<td align="center">yes</td>
<td align="center">no</td>
</tr>
<tr style="background: #F0F0F0;">
<td style="padding: 4px;">Palm Pre</td>
<td align="center">1 MB</td>
<td align="center">yes</td>
<td align="center">yes</td>
</tr>
</tbody>
</table>
<p>My <a href="http://stevesouders.com/tests/cachesize/">Max Cache File Size</a> test measures the largest script that&#8217;s cached in the same session (going from one page to another page). Many mobile devices reach the maximum size tested &#8211; 4MB. It&#8217;s interesting to see that in the recent upgrade from Android 2.1 to 2.2, the maximum cached script size drops from 4MB to 2MB. The Palm Pre registers at 320kB &#8211; much smaller than the others but large enough to handle many real world situations. Note that these sizes are the script&#8217;s uncompressed size.</p>
<p>Knowing the cache size that applies during a single session is valuable, but users often revisit pages after locking and unlocking their device, and some users might even power cycle their device between visits. Ryan and I manually tested a few devices under these scenarios &#8211; the results are shown in the previous table. Although results are mixed for the power cycling case, the cached items persist across lock/unlock. For me personally, this is the more typical case. (I only power cycle when I&#8217;m on the plane or need to reset the device.)</p>
<p>These results show that the <a href="http://www.phpied.com/iphone-caching/">15 kB</a> and <a href="http://www.yuiblog.com/blog/2008/02/06/iphone-cacheability/">25 kB</a> size limit warnings for a single resource are no longer a concern for mobile devices. However, even though the test went as high as 4 MB (uncompressed), I dearly hope you&#8217;re not even close to that size. (I saw similar results for stylesheets, but removed them from the automated test because stylesheets over ~1 MB cause problems on the iPhone.)</p>
<p>It&#8217;s great to have this data, and have it verified by different sources. But this is only testing the maximum size of a single script and stylesheet that can be cached. I believe the bigger issue for mobile is the maximum cache size. A few months ago I wrote a <a href="http://www.stevesouders.com/blog/2010/04/26/call-to-improve-browser-caching/">Call to improve browser caching</a>. I wrote that in the context of desktop browsers, where I have visibility into the browser&#8217;s cache and available disk space. I think the size of mobile caches is even smaller. If you have information about the size of the browser cache on mobile devices, or tests to determine that, please share them in the comments below.</p>
<p>Finally, <a href="http://stevesouders.com/tests/cachesize/">please run the Max Cache File Size test</a> and add more data to the results. </p>
<div id=share style="margin: 20px 0 20px 40px;">
<a href='http://stevesouders.com/tests/cachesize/index.php?id=1278955234&#038;n=1&#038;type=js&#038;size=512&#038;auto=1' style="background: #F1AA3D url(http://stevesouders.com/p3pc/gradients.png) 0 0 repeat-x; border: 0; border-bottom: 1px solid #AAA; padding: 5px 25px; background-color: #F1AA3D; text-decoration: none; color: #fff; font-size: 150%; font-weight: bold; text-shadow: 0 1px 2px #444; white-space: nowrap; -moz-border-radius: 8px; -webkit-border-radius: 8px; -moz-box-shadow: 0 2px 2px rgba(102, 102, 102, .4); -webkit-box-shadow: 0 2px 2px rgba(102, 102, 102, .4);">Run the Test</a>
</div>
<p>Many thanks to Ryan Grove for working on this caching test &#8211; check out his updated post: <a href="http://www.yuiblog.com/blog/2010/07/12/mobile-browser-cache-limits-revisited/">Mobile Browser Cache Limits, Revisited</a>. And thanks to Lindsey Simon for making Browserscope such a great framework for crowdsourcing browser performance data.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2010/07/12/mobile-cache-file-sizes/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Diffable: only download the deltas</title>
		<link>http://www.stevesouders.com/blog/2010/07/09/diffable-only-download-the-deltas/</link>
		<comments>http://www.stevesouders.com/blog/2010/07/09/diffable-only-download-the-deltas/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 16:31:12 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[diffable]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1378</guid>
		<description><![CDATA[There were many new products and projects announced at Velocity, but one that I just found out about is Diffable. It&#8217;s ironic that I missed this one given that it happened at Velocity and is from Google. The announcement was made during a whiteboard talk, so it didn&#8217;t get much attention. If your web site [...]]]></description>
			<content:encoded><![CDATA[<p>There were many new products and projects announced at <a href="http://en.oreilly.com/velocity2010">Velocity</a>, but one that I just found out about is <em>Diffable</em>. It&#8217;s ironic that I missed this one given that it happened at Velocity and is from Google. The announcement was made during a whiteboard talk, so it didn&#8217;t get much attention. If your web site has large JavaScript downloads you&#8217;ll want to learn more about this performance optimization technique.</p>
<p>The <a href="http://code.google.com/p/diffable/">Diffable open source project</a> has plenty of information, including the <a href="http://docs.google.com/present/view?id=dhp4jpqq_58hmf8zxdk">Diffable slides</a> used by Josh Harrison and James deBoer at Velocity. As explained in the slides, Diffable uses differential compression to reduce the size of JavaScript downloads. It makes a lot of sense. Suppose your web site has a large external script. When a new release comes out, it&#8217;s often the case that a bulk of that large script is unchanged. And yet, users have to download the entire new script even if the old script is still cached.</p>
<p>Josh and James work on <a href="http://maps.google.com/">Google Maps</a> which has a main script that is ~300K. A typical revision for this 300K script produces patches that are less than 20K. It&#8217;s wasteful to download that other 280K if the user has the old revision in their cache. That&#8217;s the inspiration for Diffable.</p>
<p>Diffable is implemented on the server and the client. The server component records revision deltas so it can return a patch to bring older versions up to date. The client component (written in JavaScript) detects if an older version is cached and if necessary requests the patch to the current version. The client component knows how to merge the patch with the cached version and evals the result.</p>
<p>The savings are significant. 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&#8217;s 20-25% of users.</p>
<p><img class="alignnone" src="http://stevesouders.com/images/diffable-plt.png" alt="" width="488" height="274" /></p>
<p>In this post I&#8217;ve used scripts as the example, but Diffable works with other resources including stylesheets and HTML. The biggest benefit is with scripts because of their notorious blocking behavior. The <a href="http://docs.google.com/present/view?id=dhp4jpqq_58hmf8zxdk">Diffable  slides</a> contain more information including how JSON is used as the delta format, stats that show there&#8217;s no performance hit for using eval, and how Diffable also causes the page to be enabled sooner due to faster JavaScript execution. Give it a look.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2010/07/09/diffable-only-download-the-deltas/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Velocity: Google Maps API performance</title>
		<link>http://www.stevesouders.com/blog/2010/07/07/velocity-google-maps-api-performance/</link>
		<comments>http://www.stevesouders.com/blog/2010/07/07/velocity-google-maps-api-performance/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 20:09:57 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Fiddler]]></category>
		<category><![CDATA[google maps]]></category>
		<category><![CDATA[HAR]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1373</guid>
		<description><![CDATA[Several months ago I saw Susannah Raub do an internal tech talk on the performance improvements behind Google Maps API v3. She kindly agreed to reprise the talk at Velocity. Luckily it was videotaped, and the slides (ODP) are available, too. It&#8217;s a strong case study on improving performance, is valuable for developers working with [...]]]></description>
			<content:encoded><![CDATA[<p>Several months ago I saw Susannah Raub do an internal tech talk on the performance improvements behind <a href="http://code.google.com/apis/maps/documentation/javascript/">Google Maps API v3</a>. She kindly agreed to reprise the talk at <a href="http://en.oreilly.com/velocity2010">Velocity</a>. Luckily it was <a href="http://www.youtube.com/watch?v=Co-p0zmz76U&amp;feature=player_embedded">videotaped</a>, and <a href="http://assets.en.oreilly.com/1/event/44/Google%20Maps%20API%20v3%20-%20Built%20First%20for%20Mobile%20Presentation.odp">the slides</a> (ODP) are available, too. It&#8217;s a strong case study on improving performance, is valuable for developers working with the Google Maps API, and has a few takeaways that I&#8217;ll blog about more soon.</p>
<p>Susannah starts off bravely by showing how Google Maps API v2 takes 17 seconds to load on an iPhone. This was the motivation for the work on v3 &#8211; to improve performance. In order to improve performance you have to start by measuring it. The Google Maps team broke down &#8220;performance&#8221; into three categories:</p>
<ul>
<li><em>user perceived latency</em> &#8211; how long it takes for the page to appear usable, in this case for the map to be rendered</li>
<li><em>page ready time </em>- how long it takes for the page to become usable, e.g. for the map to be draggable</li>
<li><em>page load time </em>- how long it takes for all the elements to be present, in the case of maps this includes all of the map controls to be loaded and working</li>
</ul>
<p>The team wanted to measure all of these areas. It&#8217;s fairly easy to find tools to measure performance on the desktop &#8211; the Google Maps teamed used <a href="http://httpwatch.com/">HttpWatch</a>. Performance tools, or any development tools for that matter, are harder to come by in the mobile space. But the team especially wanted to focus on creating a fast experience on mobile devices. They ended up using Fiddler as a proxy to gain visibility into the page&#8217;s performance profile.</p>
<p><em>future blog post #1: </em>Coincidentally, today I saw a tweet about Craig Dunn&#8217;s instructions for <a href="http://conceptdev.blogspot.com/2009/01/monitoring-iphone-web-traffic-with.html">Monitoring iPhone web traffic (with Fiddler)</a>. This is a huge takeaway for anyone doing web development for mobile. At Velocity, <a href="http://blogs.msdn.com/b/ieinternals/">Eric Lawrence</a> (creator of <a href="http://www.fiddler2.com/fiddler2/">Fiddler</a>) announced Fiddler support for the <a href="http://groups.google.com/group/http-archive-specification/web/har-1-1-spec?hl=en">HTTP Archive Specification</a>. The HTTP Archive (HAR) format is a specification I <a href="http://www.stevesouders.com/blog/2009/10/19/http-archive-specification-firebug-and-httpwatch/">initiated</a> over a year ago with folks from <a href="http://httpwatch.com/">HttpWatch</a> and <a href="http://getfirebug.com/">Firebug</a>. HAR is becoming the industry standard just as I had hoped and is now supported in <a href="http://groups.google.com/group/http-archive-specification/web/har-adopters?hl=en">numerous developer tools</a>. I wrote one such tool, called <a href="http://stevesouders.com/flint/">HAR to Page Speed</a>, that takes a HAR file and displays a Page Speed performance analysis as well as an HTTP waterfall chart. Putting all these pieces together, you can now load a web site on your iPhone, monitor it with Fiddler, export it to a HAR file, and upload it to HAR to Page Speed to find out how it performs. Given Fiddler&#8217;s extensive capabilities for creating addons, I expect it won&#8217;t be long before all of this is built into Fiddler itself.</p>
<p>In the case of Google Maps API, the long pole in the tent was main.js. They have a small (15K) bootstrap script that loads main.js (180K). (All of the script sizes in this blog post are UNcompressed sizes.) The performance impact of main.js was especially bad on mobile devices because of less caching. They compiled their JavaScript (using <a href="http://code.google.com/closure/compiler/">Closure</a>) and combined three HTTP requests into one.</p>
<p><em>future blog post #2:</em> The team also realized that although their JavaScript download was large, the revisions between releases was small. They created a framework for only downloading deltas when possible that cut seconds off their download times. More on this tomorrow.</p>
<p>These performance improvements helped, but they wanted to go further. They redesigned their code using an MVC architecture. As a result, the initial download only needs to include the models, which are small. The larger views and controllers that do all the heavy lifting are loaded asynchronously. This reduced the initial bootstrap script from 15K to 4K, and the main.js from 180K to 33K.</p>
<p>The results speak for themselves. Susannah concludes by showing how v3 of Google Maps API takes only 5 seconds to load on the iPhone, compared to v2&#8217;s 17 seconds. The best practices the team employed for making Google Maps faster are valuable for anyone working on JavaScript-heavy web sites. Take a look at the <a href="http://www.youtube.com/watch?v=Co-p0zmz76U&amp;feature=player_embedded">video</a> and <a href="http://assets.en.oreilly.com/1/event/44/Google%20Maps%20API%20v3%20-%20Built%20First%20for%20Mobile%20Presentation.odp">slides</a>, and watch here for a follow-up on Fiddler for iPhone and loading JavaScript deltas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2010/07/07/velocity-google-maps-api-performance/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Velocity: Top 5 Mistakes of Massive CSS</title>
		<link>http://www.stevesouders.com/blog/2010/07/03/velocity-top-5-mistakes-of-massive-css/</link>
		<comments>http://www.stevesouders.com/blog/2010/07/03/velocity-top-5-mistakes-of-massive-css/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 19:22:12 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Velocity]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[reset]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1356</guid>
		<description><![CDATA[Nicole Sullivan and Stoyan Stefanov had the #3 highest rated session at Velocity &#8211; The  Top 5 Mistakes of Massive CSS. Nicole (aka, &#8220;stubbornella&#8221;) wrote a blog post summarizing their work. The motivator for paying attention to CSS are these stats that show how bad things are across the Alexa Top 1000:

42% don’t GZIP [...]]]></description>
			<content:encoded><![CDATA[<p>Nicole Sullivan and Stoyan Stefanov had the #3 highest rated session at Velocity &#8211; <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/13149">The  Top 5 Mistakes of Massive CSS</a>. Nicole (aka, &#8220;stubbornella&#8221;) wrote a <a href="http://www.stubbornella.org/content/2010/07/01/top-5-mistakes-of-massive-css/">blog post</a> summarizing their work. The motivator for paying attention to CSS are these stats that show how bad things are across the Alexa Top 1000:</p>
<ul>
<li>42% don’t GZIP CSS</li>
<li>44% have more than 2 CSS external files</li>
<li>56% serve CSS with cookies</li>
<li>62% don’t minify</li>
<li>21% have greater than 100K of CSS</li>
</ul>
<p>Many of these problems are measured by <a href="http://developer.yahoo.com/yslow">YSlow</a> and <a href="http://code.google.com/speed/page-speed/">Page Speed</a>, but the solutions still aren&#8217;t widely adopted. Nicole goes on to highlight more best practices for reducing the impact of CSS including minimizing float and using a reset stylesheet.</p>
<p>Checkout the<a href="http://www.youtube.com/watch?v=j6sAm7CLoCQ&amp;feature=player_embedded"></a> <a href="http://www.slideshare.net/stubbornella/5-mistakes-of-massive-css">slides</a> and <a href="http://www.youtube.com/watch?v=j6sAm7CLoCQ&amp;feature=player_embedded">video</a> of Nicole and Stoyan&#8217;s talk to learn how to avoid having CSS block your page from rendering.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">
<table style="border-collapse: collapse; width: 395pt;" border="0" cellspacing="0" cellpadding="0" width="525">
<col style="width: 218pt;" width="290"></col>
<col style="width: 100pt;" width="133"></col>
<col style="width: 77pt;" width="102"></col>
<tbody>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Choose   Your Own Adventure</td>
<td class="xl65" style="width: 100pt;" width="133">Adam Jacob</td>
<td class="xl65" style="width: 77pt;" width="102">Opscode</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">TCP and   the Lower Bound of Web Performance</td>
<td class="xl65" style="width: 100pt;" width="133">John Rauser</td>
<td class="xl65" style="width: 77pt;" width="102">Amazon</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">The Top   5 Mistakes of Massive CSS</td>
<td class="xl65" style="width: 100pt;" width="133">Nicole Sullivan</td>
<td class="xl65" style="width: 77pt;" width="102">Consultant</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Building   Performance Into the New Yahoo! Homepage</td>
<td class="xl65" style="width: 100pt;" width="133">Nicholas Zakas</td>
<td class="xl65" style="width: 77pt;" width="102">Yahoo!</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Hidden   Scalability Gotchas in Memcached and Friends</td>
<td class="xl65" style="width: 100pt;" width="133">Neil Gunther</td>
<td class="xl65" style="width: 77pt;" width="102">Performance Dynamics Company</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Internet   Explorer 9</td>
<td class="xl65" style="width: 100pt;" width="133">Jason Weber</td>
<td class="xl65" style="width: 77pt;" width="102">Microsoft</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Creating   Cultural Change</td>
<td class="xl65" style="width: 100pt;" width="133">John Rauser</td>
<td class="xl65" style="width: 77pt;" width="102">Amazon</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Scalable   Internet Architectures</td>
<td class="xl65" style="width: 100pt;" width="133">Theo Schlossnagle</td>
<td class="xl65" style="width: 77pt;" width="102">OmniTI</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Ignite   Velocity</td>
<td class="xl65" style="width: 100pt;" width="133">Andrew Shafer</td>
<td class="xl65" style="width: 77pt;" width="102">Cloudscaling</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">The   Upside of Downtime: How to Turn a Disaster Into an Opportunity</td>
<td class="xl65" style="width: 100pt;" width="133">Lenny Rachitsky</td>
<td class="xl65" style="width: 77pt;" width="102">Webmetrics/Neustar</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Metrics   101: What to Measure on Your Website</td>
<td class="xl65" style="width: 100pt;" width="133">Sean Power</td>
<td class="xl65" style="width: 77pt;" width="102">Watching Websites</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">The   90-Minute Optimization Life Cycle: Fast by Default Before Our Eyes?</td>
<td class="xl65" style="width: 100pt;" width="133">Joshua Bixby</td>
<td class="xl65" style="width: 77pt;" width="102">Strangeloop Networks</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Progressive   Enhancement: Tools and Techniques</td>
<td class="xl65" style="width: 100pt;" width="133">Anne Sullivan</td>
<td class="xl65" style="width: 77pt;" width="102">Google</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Chrome   Fast.</td>
<td class="xl65" style="width: 100pt;" width="133">Mike Belshe</td>
<td class="xl65" style="width: 77pt;" width="102">Google</td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2010/07/03/velocity-top-5-mistakes-of-massive-css/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Back to blogging after Velocity</title>
		<link>http://www.stevesouders.com/blog/2010/07/02/back-to-blogging-after-velocity/</link>
		<comments>http://www.stevesouders.com/blog/2010/07/02/back-to-blogging-after-velocity/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 19:04:39 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Evangelism]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Velocity]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[velocityconf]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1360</guid>
		<description><![CDATA[The last few weeks have been hectic. I was in London and Paris for 10 days. I returned a day before Velocity started. Most of you experienced or have heard about the awesomeness that was Velocity &#8211; great speakers, sponsors, and attendees. Right after Velocity I headed up to Foo Camp at O&#8217;Reilly HQ. This [...]]]></description>
			<content:encoded><![CDATA[<p>The last few weeks have been hectic. I was in London and Paris for 10 days. I returned a day before <a href="http://en.oreilly.com/velocity2010">Velocity</a> started. Most of you experienced or have heard about the awesomeness that was Velocity &#8211; great speakers, sponsors, and attendees. Right after Velocity I headed up to Foo Camp at O&#8217;Reilly HQ. This week I&#8217;ve been catching up on all the email that accumulated over three weeks.</p>
<p>During this time blogging has taken a backseat. But now that my head is above water I want to start relaying some of the key takeaways from Velocity. I wrote my <a href="http://www.stevesouders.com/blog/2010/06/25/velocity-wrap-up-2/">Velocity wrap-up</a> and mentioned my favorite sessions. But here are the top 10 sessions based on the attendee ratings:</p>
<ol>
<li> <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/13037">Choose Your Own Adventure</a> by Adam Jacob, Opscode (<a href="http://www.youtube.com/watch?v=Fx8OBeNmaWw">unofficial</a> <a href="http://www.youtube.com/watch?v=xChUw0SOBt4">video</a> <a href="http://www.youtube.com/watch?v=LKENuz-DKTg&amp;feature=related">snippets</a>)</li>
<li> <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/11792">TCP and the Lower Bound of Web Performance</a> by John Rauser, Amazon (<a href="http://assets.en.oreilly.com/1/event/44/TCP%20and%20the%20Lower%20Bound%20of%20Web%20Performance%20Presentation.pdf">slides</a>)</li>
<li> <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/13149">The Top 5 Mistakes of Massive CSS</a> by Nicole Sullivan, consultant and Stoyan Stefanov, Yahoo! (<a href="http://www.youtube.com/watch?v=j6sAm7CLoCQ&amp;feature=player_embedded">video</a>)</li>
<li> <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/11802">Building Performance Into the New Yahoo! Homepage</a> by Nicholas Zakas, Yahoo! (<a href="http://assets.en.oreilly.com/1/event/44/Building%20Performance%20Into%20the%20New%20Yahoo_%20Homepage%20Presentation.pdf">slides</a>)</li>
<li> <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/13046">Hidden Scalability Gotchas in Memcached and Friends</a> by Neil Gunther Performance Dynamics and Shanti Subramanyam and Stefan Parvu, Oracle (<a href="http://assets.en.oreilly.com/1/event/44/Hidden%20Scalability%20Gotchas%20in%20Memcached%20and%20Friends%20Presentation.pdf">video</a>)</li>
<li> <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/15307">Internet Explorer 9</a> by Jason Weber, Microsoft (<a href="http://assets.en.oreilly.com/1/event/44/Internet%20Explorer%209%20Presentation.pptx">slides</a>)</li>
<li> <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/11793">Creating Cultural Change</a> by John Rauser, Amazon (<a href="http://www.youtube.com/watch?v=UL2WDcNu_3A&amp;feature=player_embedded">video</a>)</li>
<li> <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/12564">Scalable Internet Architectures</a> by Theo Schlossnagle, OmniTI (<a href="http://assets.en.oreilly.com/1/event/44/Scalable%20Internet%20Architectures%20Presentation%202.pdf">slides</a>)</li>
<li> <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/12605">The Upside of Downtime: How to Turn a Disaster Into an Opportunity</a> by Lenny Rachitsky, Webmetrics/Neustar (<a href="http://www.youtube.com/watch?v=6MF2Pu6IW3Q&amp;feature=player_embedded">video</a>,<a href="http://www.slideshare.net/lennysan/the-upside-of-downtime-velocity-2010-4564992"> slides</a>)</li>
<li> Tied for #10:
<ol style="list-style-type: lower-alpha;">
<li> <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/14327">Metrics 101: What to Measure on Your Website</a> by Sean Power, Watching Websites (<a href="http://www.slideshare.net/bitcurrent/metrics-101">slides</a>)</li>
<li> <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/15414">The 90-Minute Optimization Life Cycle: Fast by Default Before Our Eyes?</a> by Joshua Bixby and Hooman Beheshti, Strangeloop Networks</li>
<li> <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/15425">Progressive Enhancement: Tools and Techniques</a> by Anne Sullivan, Google (<a href="http://www.monkey.org/~annie/ProgressiveEnhancement.html">slides</a>)</li>
<li> <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/15309">Chrome Fast.</a> by Mike Belshe, Google (<a href="http://www.belshe.com/test/velocity2010/">slides</a>)</li>
</ol>
</li>
</ol>
<p>Some things to highlight: Adam Jacob is an incredible speaker &#8211; insightful and funny. John Rauser is the speaker I enjoyed the most &#8211; he shows up twice at #2 and #7. Two of the browser presentations registered. The workshops this year were incredible and very well attended &#8211; four of them registered in the top 10 (#8, #10a, #10b, and #10c). Annie Sullivan rated high and it was her first time speaking at a conference.</p>
<p>The last two years at Velocity we&#8217;ve only been able to videotape the talks in one room, so this year that means about a third of the talks were videotaped. Four of these top rated sessions were taped. Next year I&#8217;ll try to get more of the top speakers in the video room. I&#8217;ve asked the five speakers without slides to upload them to the Velocity web site. Check back next week if you want those.</p>
<p>I actually feel electricity running up and down my spine looking over  these talks. To think I had something to do with pulling these gurus  together and offering a place for them to share what they know &#8211; it&#8217;s  humbling and exhilarating at the same time. I&#8217;ll be doing some more Velocity-related posts on specific sessions next week, so stay tuned.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">
<table style="border-collapse: collapse; width: 395pt;" border="0" cellspacing="0" cellpadding="0" width="525">
<col style="width: 218pt;" width="290"></col>
<col style="width: 100pt;" width="133"></col>
<col style="width: 77pt;" width="102"></col>
<tbody>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Choose   Your Own Adventure</td>
<td class="xl65" style="width: 100pt;" width="133">Adam Jacob</td>
<td class="xl65" style="width: 77pt;" width="102">Opscode</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">TCP and   the Lower Bound of Web Performance</td>
<td class="xl65" style="width: 100pt;" width="133">John Rauser</td>
<td class="xl65" style="width: 77pt;" width="102">Amazon</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">The Top   5 Mistakes of Massive CSS</td>
<td class="xl65" style="width: 100pt;" width="133">Nicole Sullivan</td>
<td class="xl65" style="width: 77pt;" width="102">Consultant</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Building   Performance Into the New Yahoo! Homepage</td>
<td class="xl65" style="width: 100pt;" width="133">Nicholas Zakas</td>
<td class="xl65" style="width: 77pt;" width="102">Yahoo!</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Hidden   Scalability Gotchas in Memcached and Friends</td>
<td class="xl65" style="width: 100pt;" width="133">Neil Gunther</td>
<td class="xl65" style="width: 77pt;" width="102">Performance Dynamics Company</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Internet   Explorer 9</td>
<td class="xl65" style="width: 100pt;" width="133">Jason Weber</td>
<td class="xl65" style="width: 77pt;" width="102">Microsoft</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Creating   Cultural Change</td>
<td class="xl65" style="width: 100pt;" width="133">John Rauser</td>
<td class="xl65" style="width: 77pt;" width="102">Amazon</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Scalable   Internet Architectures</td>
<td class="xl65" style="width: 100pt;" width="133">Theo Schlossnagle</td>
<td class="xl65" style="width: 77pt;" width="102">OmniTI</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Ignite   Velocity</td>
<td class="xl65" style="width: 100pt;" width="133">Andrew Shafer</td>
<td class="xl65" style="width: 77pt;" width="102">Cloudscaling</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">The   Upside of Downtime: How to Turn a Disaster Into an Opportunity</td>
<td class="xl65" style="width: 100pt;" width="133">Lenny Rachitsky</td>
<td class="xl65" style="width: 77pt;" width="102">Webmetrics/Neustar</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Metrics   101: What to Measure on Your Website</td>
<td class="xl65" style="width: 100pt;" width="133">Sean Power</td>
<td class="xl65" style="width: 77pt;" width="102">Watching Websites</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">The   90-Minute Optimization Life Cycle: Fast by Default Before Our Eyes?</td>
<td class="xl65" style="width: 100pt;" width="133">Joshua Bixby</td>
<td class="xl65" style="width: 77pt;" width="102">Strangeloop Networks</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Progressive   Enhancement: Tools and Techniques</td>
<td class="xl65" style="width: 100pt;" width="133">Anne Sullivan</td>
<td class="xl65" style="width: 77pt;" width="102">Google</td>
</tr>
<tr style="height: 24.95pt;" height="33">
<td class="xl65" style="height: 24.95pt; width: 218pt;" width="290" height="33">Chrome   Fast.</td>
<td class="xl65" style="width: 100pt;" width="133">Mike Belshe</td>
<td class="xl65" style="width: 77pt;" width="102">Google</td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2010/07/02/back-to-blogging-after-velocity/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Velocity wrap-up</title>
		<link>http://www.stevesouders.com/blog/2010/06/25/velocity-wrap-up-2/</link>
		<comments>http://www.stevesouders.com/blog/2010/06/25/velocity-wrap-up-2/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 22:53:02 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Evangelism]]></category>
		<category><![CDATA[Velocity]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1348</guid>
		<description><![CDATA[Velocity ended yesterday at 6pm &#8211; and the final presentations from 5:20-6:00 were still packed! It was a great conference. I&#8217;m wiped out from talking web performance from 8am to 10pm the last three days.
The highlight of the conference was the conference itself:

1200 attendees
89 speakers
28 sponsors
26 exhibitors

Compare that to the numbers for Velocity 2008: 600 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.oreilly.com/velocity2010">Velocity</a> ended yesterday at 6pm &#8211; and the final presentations from 5:20-6:00 were still packed! It was a great conference. I&#8217;m wiped out from talking web performance from 8am to 10pm the last three days.</p>
<p>The highlight of the conference was the conference itself:</p>
<ul>
<li>1200 attendees</li>
<li>89 speakers</li>
<li>28 sponsors</li>
<li>26 exhibitors</li>
</ul>
<p>Compare that to the numbers for Velocity 2008: 600 attendees, 65 speakers, 9 sponsors, 17 exhibitors. The growth is a testimonial for how the focus on web performance and operations has increased in just 2 years. Companies know their web sites have to be fast, available, and scalable. That&#8217;s why they come to Velocity.</p>
<p>We added a third track this year on Culture which meant I wasn&#8217;t able to attend every performance talk. But here are the talks I saw that really stood out:</p>
<ul>
<li><a href="http://en.oreilly.com/velocity2010/public/schedule/detail/11793">Creating Cultural Change</a> (<a href="http://www.youtube.com/watch?v=UL2WDcNu_3A&amp;feature=player_embedded">video</a>) and <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/11792">TCP  and the Lower Bound of Web Performance</a> (<a href="http://assets.en.oreilly.com/1/event/44/TCP%20and%20the%20Lower%20Bound%20of%20Web%20Performance%20Presentation.pdf">slides</a>) &#8211; John Rauser (Amazon) was the breakthrough speaker of the conference. Both talks not only had great content, they were also funny and delivered with style.</li>
<li><a href="http://en.oreilly.com/velocity2010/public/schedule/detail/15429">Datacenter Infrastructure Innovation</a> (<a href="http://www.youtube.com/watch?v=kHW-ayt_Urk&amp;feature=player_embedded">video</a>) &#8211; James Hamilton (Amazon) presents surprising stats about the true costs of infrastructure services.</li>
<li><a href="http://en.oreilly.com/velocity2010/public/schedule/detail/14371">Speed Matters</a> (<a href="http://www.youtube.com/watch?v=MStKwEff_kY&amp;feature=player_embedded">video</a>) &#8211; Urs Hölzle (Google) evangelizes creating a faster web via a long list of performance initiatives. Make sure to check out the links at the end to SSL and congestion window improvements.</li>
<li><a href="http://en.oreilly.com/velocity2010/public/schedule/detail/14488">The O&#8217;Reilly Radar</a> (<a href="http://www.youtube.com/watch?v=MH9qxqPMYGk&amp;feature=player_embedded">video</a>, <a href="http://assets.en.oreilly.com/1/event/44/O_Reilly%20Radar%20Presentation.pdf">slides</a>) &#8211; Tim O&#8217;Reilly leads the rally cry for the critical role of performance and operations to the future of the Web.</li>
<li><a href="http://en.oreilly.com/velocity2010/public/schedule/detail/15412">Don&#8217;t Let Third Parties Slow You Down</a> (<a href="http://www.youtube.com/watch?v=3NVpFj64MQU&amp;feature=player_embedded">video</a>, <a href="http://assets.en.oreilly.com/1/event/44/Don_t%20Let%20Third%20Parties%20Slow%20You%20Down%20Presentation.ppt">slides</a>) &#8211; Michael Kleber (Google) presents some great stats on the impact of 3rd party content, and at the end slips in some performance improvements he&#8217;s working on for Google AdSense.</li>
<li><a href="http://en.oreilly.com/velocity2010/public/schedule/detail/12462">JSMeter: Characterizing Real-World Behavior of JavaScript Programs</a> (<a href="http://assets.en.oreilly.com/1/event/44/JSMeter_%20Characterizing%20Real-World%20Behavior%20of%20JavaScript%20Programs%20Presentation.pptx">slides</a>) &#8211; Ben Zorn (Microsoft Research) reveals how unrepresentative today&#8217;s benchmarks are compared to real web sites. I really recommend you check out his charts.</li>
<li><a href="http://en.oreilly.com/velocity2010/public/schedule/detail/11802">Building Performance Into the New Yahoo! Homepage</a> (<a href="http://assets.en.oreilly.com/1/event/44/Building%20Performance%20Into%20the%20New%20Yahoo_%20Homepage%20Presentation.pdf">slides</a>) &#8211; Nicholas Zakas (Yahoo!) provided a case study of adding advanced performance techniques including progressive enhancement.</li>
</ul>
<p>There were other great talks such as <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/13149">The Top 5 Mistakes of Massive CSS</a> and <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/14277">Google Maps API v3 &#8211; Built First for Mobile</a> for which we&#8217;re still waiting for slides and possibly video. I encourage you to check out all the <a href="http://en.oreilly.com/velocity2010/public/schedule/proceedings">slides</a> and <a href="http://www.youtube.com/view_play_list?p=D1D3B0B233F2AD66">videos</a> &#8211; remember, I was only able to sit in on one of three tracks. There&#8217;s a lot more to see.</p>
<p>Thanks for making Velocity 2010 so amazing. I&#8217;ll see you at Velocity 2011! (Remember to register early!)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2010/06/25/velocity-wrap-up-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Velocity is coming fast June 22-24</title>
		<link>http://www.stevesouders.com/blog/2010/06/04/velocity-is-coming-fast-june-22-24/</link>
		<comments>http://www.stevesouders.com/blog/2010/06/04/velocity-is-coming-fast-june-22-24/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 08:09:21 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Velocity]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1342</guid>
		<description><![CDATA[Jesse Robbins and I co-chair Velocity &#8211; the web performance and operations conference run by O&#8217;Reilly. This year&#8217;s Velocity is coming fast (get it?) &#8211; June 22-24 at the Santa Clara Convention Center. This is the third year for Velocity. The first two years sold out, and this year is looking even stronger. We&#8217;ve added [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://radar.oreilly.com/jesse/">Jesse Robbins</a> and I co-chair <a href="http://en.oreilly.com/velocity2010">Velocity</a> &#8211; the web performance and operations conference run by O&#8217;Reilly. This year&#8217;s Velocity is coming fast (get it?) &#8211; June 22-24 at the Santa Clara Convention Center. This is the third year for Velocity. The first two years sold out, and this year is looking even stronger. We&#8217;ve added a third track so that&#8217;s 50% more workshops and sessions. That means more gurus to talk to and more topics to choose from.</p>
<p>Jesse did <a href="http://radar.oreilly.com/2010/06/velocity-web-performance-operations-webops-devops.html">a post</a> today about the ops side of the conference. Here are some of my favorites from the web performance track:</p>
<ul>
<li><span style="color: #0000ff;"><strong><a href="http://en.oreilly.com/velocity2010/public/schedule/detail/13063">Mobile Web High Performance</a></strong></span> &#8211; This workshop (workshops are on Tues June 22) is by O&#8217;Reilly author Maximiliano Firtman. Mobile is big and only a few people (including Maximiliano) know the performance side of mobile. His book? <a href="http://oreilly.com/catalog/9780596807795/">Programming the Mobile Web</a></li>
<li><strong><a href="http://en.oreilly.com/velocity2010/public/schedule/detail/15425">Progressive Enhancement: Tools and Techniques</a></strong> &#8211; The most important pattern I recommend for today&#8217;s web sites is to render the page quickly and adorn later with JavaScript. Some of the more advanced web apps are doing this, but otherwise it&#8217;s not a well known pattern. Annie is one of my favorite performance developers at Google. She has built sites that do progressive enhancement, so I&#8217;m super psyched that she agreed to give this workshop. Very important for anyone with a bunch of JavaScript in their site.</li>
<li><strong><a href="http://en.oreilly.com/velocity2010/public/schedule/detail/11802">Building Performance Into the New Yahoo! Homepage</a></strong> &#8211; Nicholas Zakas, JavaScript performance guru, talks about the real world story of making Yahoo! front page twice as fast.</li>
<li><strong><a href="http://en.oreilly.com/velocity2010/public/schedule/detail/13149">The Top 5 Mistakes of Massive CSS</a></strong> &#8211; Nicole Sullivan (consultant) and Stoyan Stefanov (Yahoo!) share their lessons learned optimizing the CSS for Facebook and Yahoo! Search.</li>
<li>The <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/15311"><strong>Firefox</strong></a>, <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/15309"><strong>Chrome</strong></a>, and <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/15307"><strong>Internet Explorer</strong></a> teams will be there to talk about the latest performance improvements to their browsers. That&#8217;s followed by the <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/15314"><strong>Browser Panel</strong></a> where you get to ask more questions.</li>
<li><strong><a href="http://en.oreilly.com/velocity2010/public/schedule/detail/15306">Lightning</a> <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/15310">Demos</a></strong> on Wed and Thurs will give everyone a chance to see dynaTrace, Firebug, YSlow, Page Speed, HttpWatch, AOL (Web)Pagetest, Speed Tracer, and Fiddler.</li>
<li>We have an amazing line-up of <strong>keynoters</strong>: Wednesday morning features <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/15429">James  Hamilton</a> (Amazon), <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/14371">Urs  Hölzle</a> (Google), and <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/14488">Tim  O&#8217;Reilly</a> (O&#8217;Reilly Media). All in one morning! Thursday brings back  <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/12987">John  Adams</a> (Twitter) and <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/14129">Bobby  Johnson</a> (Facebook). Their Velocity 2009 talks were standing room  only.</li>
</ul>
<p>I&#8217;m looking forward to all the talks and catching up with the speakers. I&#8217;m most excited about the hallway conversations. It&#8217;s great hearing about what other developers have discovered during their own performance optimization projects. I especially enjoy how accessible the speakers are. It&#8217;s amazing how willing everyone is to share what they&#8217;ve learned and to work together to advance the state of web performance and operations. After all, that&#8217;s what Velocity is all about.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2010/06/04/velocity-is-coming-fast-june-22-24/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
