<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;C0YGQnczeip7ImA9WhRaFE0.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828</id><updated>2012-02-16T14:05:23.982Z</updated><category term="ada lovelace" /><category term="tools" /><category term="s3" /><category term="bug" /><category term="books" /><category term="performance google analytics ads" /><category term="project cobalt" /><category term="films" /><category term="instructions" /><category term="WS2008" /><category term="threading" /><category term="FTP7" /><category term="chrome" /><category term="feynman" /><category term="XmlReader" /><category term="cartesian" /><category term="kinetic" /><category term="rss" /><category term="gas" /><category term="video" /><category term="unicode" /><category term="Remember The Milk" /><category term="iceland" /><category term="task manager" /><category term="project colbolt" /><category term="Native XML Database" /><category term="cars" /><category term="maturity" /><category term="NUnit" /><category term="copy360" /><category term="colour" /><category term="visualization" /><category term="big-oh" /><category term="russia" /><category term="code powershell" /><category term="weighttp" /><category term="go performance google ads amazon" /><category term="international" /><category term="lambda" /><category term="MarkLogic" /><category term="Extension method" /><category term="rotate" /><category term="haiku" /><category term="palindrome" /><category term="cross-domain" /><category term="Oslo" /><category term="Oil" /><category term="Resolutions" /><category term="IIS7" /><category term="T-SQL" /><category term="velocity" /><category term="blogging" /><category term="channel9" /><category term="error" /><category term="blogger android" /><category term="google" /><category term="Gordon Brown" /><category term="technorati" /><category term="information architecture" /><category term="quantitative easing" /><category term="ec2" /><category term="ESB" /><category term="Architectural Journal" /><category term="quote" /><category term="flight" /><category term="pathetic self promotion" /><category term="Northen Rock" /><category term="gadget" /><category term="explosion" /><category term="Artificial Intelligence" /><category term="bank of england" /><category term="XQuery" /><category term="typography" /><category term="charity" /><category term="Language" /><category term="best practice" /><category term="user interface" /><category term="google ads performance aws" /><category term="standards w3c" /><category term="zen" /><category term="wars" /><category term="uml" /><category term="Obama" /><category term="Pentasolve" /><category term="drag-and-drop" /><category term="code" /><category term="image" /><category term="devops" /><category term="london" /><category term="update" /><category term="gmail alias swaks" /><category term="periodic table" /><category term="golden ratio" /><category term="speed" /><category term="lilly allen" /><category term="SQL Server 2008" /><category term="lifehack" /><category term="pcmosd" /><category term="markov" /><category term="Tenori-on" /><category term="unfanboy" /><category term="music" /><category term="RDBMS" /><category term="codeplex" /><category term="embedding" /><category term="Fun" /><category term="Getting Things Done" /><category term="gps" /><category term="Mrs Watanabe" /><category term="nitf" /><category term="progamming books" /><category term="Economy" /><category term="Movember" /><category term="ireland" /><category term="amazon aws google performance golang" /><category term="Moonlight" /><category term="nursery rhyme" /><category term="cash" /><category term="pledge" /><category term="MLUC08" /><category term="AdaLovelaceDay09" /><category term="Silverlight" /><category term="mobile" /><category term="visual" /><category term="square root" /><category term="aws s3 ec2 golang" /><category term="web-services" /><category term="characters" /><category term="rhino mock" /><category term="puzzle" /><category term="wtf" /><category term="phone" /><category term="OpenStreetMap" /><category term="IMF" /><category term="travel" /><category term="renderer" /><category term="amazon aws google ads performance" /><category term="DSL" /><category term="favicon" /><category term="diagrams" /><category term="performance" /><category term="standards w3c uml" /><category term="Project Strontium" /><category term="aws" /><category term="economist" /><category term="Elliott wave" /><category term="Dynamic evaluation" /><category term="doors" /><category term="Fibonacci" /><category term="LINQ" /><category term="security" /><category term="Anagrams" /><category term="David Cameron" /><category term="Bush" /><category term="XML" /><category term="cloud" /><category term="game" /><category term="VS2008" /><category term="xUnit" /><category term="spatial data" /><category term="heuristic" /><category term="errors" /><category term="europe" /><category term="book review" /><category term="coding" /><category term="credit crunch" /><category term="Dispatcher" /><category term="orange" /><category term="architecture" /><category term="Exceptions" /><category term="widget" /><category term="revenues" /><category term="McCain" /><category term="atttachments" /><category term="javascript" /><category term="irony" /><category term="cache" /><category term="Investment" /><category term="dynamic" /><category term="mock" /><category term="postfix" /><category term="polar" /><category term="fedora" /><category term="proof of concept" /><category term="evolutionary" /><category term="Regular expressions" /><category term="Politics" /><category term="problem solving" /><category term="agile" /><category term="jargon" /><category term="ichimoku clouds" /><category term="tag cloud" /><category term="amazon" /><category term="internet" /><category term="Permutations" /><category term="ci" /><category term="xqUnit" /><category term="Shakespeare" /><category term="guardian" /><category term="pedias" /><category term="computer science" /><category term="Anaglyph" /><category term="SDLC" /><category term="vision" /><category term="soap" /><category term="MOM" /><category term="xeyes" /><category term="blue-green" /><category term="oscillators" /><category term="htc" /><category term="gis" /><category term="Alliteration" /><category term="font" /><category term="LTCM 2.0" /><category term="C#" /><category term="outlook" /><category term="clipping" /><category term="blogger" /><category term="cif" /><category term="food" /><category term="generics" /><category term="San Francisco" /><category term="poetry" /><category term="joke" /><category term="little boots" /><category term="bezier" /><category term="hamlet" /><category term="NASA" /><category term="doh" /><category term="money" /><title>Figment Engine</title><subtitle type="html">Concept generation and storage</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.figmentengine.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>168</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/figmentengine/pqxP" /><feedburner:info uri="figmentengine/pqxp" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DkUHRXc4cSp7ImA9WhRXFk4.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-70513247303382853</id><published>2011-12-23T09:35:00.001Z</published><updated>2011-12-23T09:57:14.939Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-23T09:57:14.939Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ec2" /><category scheme="http://www.blogger.com/atom/ns#" term="errors" /><category scheme="http://www.blogger.com/atom/ns#" term="weighttp" /><category scheme="http://www.blogger.com/atom/ns#" term="aws" /><title>Installing weighttp on AWS/EC2: ev library not found</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/P8CcOZkij4aedEASUFpD0dS2ltM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/P8CcOZkij4aedEASUFpD0dS2ltM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/P8CcOZkij4aedEASUFpD0dS2ltM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/P8CcOZkij4aedEASUFpD0dS2ltM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span style="font-family: inherit;"&gt;when installing weighttp on AWS EC2 using the Amazon Linux AMI you might get errors such as:&lt;/span&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;"ev library not found." when running ./waf configure
or&lt;/li&gt;
&lt;li&gt;libev.so.4 not being found&lt;/li&gt;
&lt;/ul&gt;
This series of steps fixed it for me:&lt;br /&gt;
&lt;script src="https://gist.github.com/1513767.js"&gt; &lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-70513247303382853?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/wypPHKeP13Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/70513247303382853/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=70513247303382853" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/70513247303382853?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/70513247303382853?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/wypPHKeP13Y/installing-weighttp-on-awsec2-ev.html" title="Installing weighttp on AWS/EC2: ev library not found" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/12/installing-weighttp-on-awsec2-ev.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8FQXY_fip7ImA9WhRSF04.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-9178431658949825180</id><published>2011-11-19T21:23:00.001Z</published><updated>2011-11-19T21:40:10.846Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-19T21:40:10.846Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="performance google analytics ads" /><title>Sutton with analytics</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lNO-KK_gV_O5xCVOluvtEBpYbYk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lNO-KK_gV_O5xCVOluvtEBpYbYk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lNO-KK_gV_O5xCVOluvtEBpYbYk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lNO-KK_gV_O5xCVOluvtEBpYbYk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://sutton.chart.is/"&gt;Sutton&lt;/a&gt;: a website to test performance &amp;amp; seo has not reach #1 yet :-)&lt;br /&gt;
&lt;br /&gt;
The next stage is to get more information about visits, before adding google analytics the page performed something like &lt;a href="http://www.webpagetest.org/result/110830_GQ_1F0RH/"&gt;this&lt;/a&gt;:&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div id="average" style="text-align: center;"&gt;
&lt;br /&gt;
&lt;table align="center" border="1" cellpadding="10" cellspacing="0" class="pretty" id="tableResults" style="background-color: white; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 0px; border-collapse: collapse; border-left-color: white; border-left-style: solid; border-left-width: 0px; border-right-color: white; border-right-style: solid; border-right-width: 0px; border-top-color: white; border-top-style: solid; border-top-width: 0px; margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: white; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="empty" colspan="4" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Document Complete&lt;/span&gt;&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Fully Loaded&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Load Time&lt;/span&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;First Byte&lt;/span&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Start Render&lt;/span&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;DOM Elements&lt;/span&gt;&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Time&lt;/span&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Requests&lt;/span&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Bytes In&lt;/span&gt;&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Time&lt;/span&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Requests&lt;/span&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Bytes In&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;First View&lt;/span&gt;&lt;/td&gt;&lt;td id="fvLoadTime" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.355s&lt;/span&gt;&lt;/td&gt;&lt;td id="fvTTFB" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.321s&lt;/span&gt;&lt;/td&gt;&lt;td id="fvStartRender" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.383s&lt;/span&gt;&lt;/td&gt;&lt;td id="fvDomElements" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;31&lt;/span&gt;&lt;/td&gt;&lt;td class="border" id="fvDocComplete" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.355s&lt;/span&gt;&lt;/td&gt;&lt;td id="fvRequestsDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;1&lt;/span&gt;&lt;/td&gt;&lt;td id="fvBytesDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;3 KB&lt;/span&gt;&lt;/td&gt;&lt;td class="border" id="fvFullyLoaded" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.597s&lt;/span&gt;&lt;/td&gt;&lt;td id="fvRequests" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;3&lt;/span&gt;&lt;/td&gt;&lt;td id="fvBytes" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;8 KB&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" class="even" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Repeat View&lt;/span&gt;&lt;/td&gt;&lt;td class="even" id="rvLoadTime" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.279s&lt;/span&gt;&lt;/td&gt;&lt;td class="even" id="rvTTFB" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.240s&lt;/span&gt;&lt;/td&gt;&lt;td class="even" id="rvStartRender" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.259s&lt;/span&gt;&lt;/td&gt;&lt;td class="even" id="rvDomElements" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;31&lt;/span&gt;&lt;/td&gt;&lt;td class="even border" id="rvDocComplete" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.279s&lt;/span&gt;&lt;/td&gt;&lt;td class="even" id="rvRequestsDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;1&lt;/span&gt;&lt;/td&gt;&lt;td class="even" id="rvBytesDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;3 KB&lt;/span&gt;&lt;/td&gt;&lt;td class="even border" id="rvFullyLoaded" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.290s&lt;/span&gt;&lt;/td&gt;&lt;td class="even" id="rvRequests" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;2&lt;/span&gt;&lt;/td&gt;&lt;td class="even" id="rvBytes" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;3 KB&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div id="tables" style="text-align: left;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
After adding it looked performed like this:&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;table align="center" border="1" cellpadding="10" cellspacing="0" class="pretty" id="tableResults" style="background-color: white; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 0px; border-collapse: collapse; border-left-color: white; border-left-style: solid; border-left-width: 0px; border-right-color: white; border-right-style: solid; border-right-width: 0px; border-top-color: white; border-top-style: solid; border-top-width: 0px; margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: white; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="empty" colspan="4" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Document Complete&lt;/span&gt;&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Fully Loaded&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Load Time&lt;/span&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;First Byte&lt;/span&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Start Render&lt;/span&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;DOM Elements&lt;/span&gt;&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Time&lt;/span&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Requests&lt;/span&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Bytes In&lt;/span&gt;&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Time&lt;/span&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Requests&lt;/span&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Bytes In&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;First View&lt;/span&gt;&lt;/td&gt;&lt;td id="fvLoadTime" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.364s&lt;/span&gt;&lt;/td&gt;&lt;td id="fvTTFB" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.331s&lt;/span&gt;&lt;/td&gt;&lt;td id="fvStartRender" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.393s&lt;/span&gt;&lt;/td&gt;&lt;td id="fvDomElements" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;36&lt;/span&gt;&lt;/td&gt;&lt;td class="border" id="fvDocComplete" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.364s&lt;/span&gt;&lt;/td&gt;&lt;td id="fvRequestsDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;2&lt;/span&gt;&lt;/td&gt;&lt;td id="fvBytesDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;16 KB&lt;/span&gt;&lt;/td&gt;&lt;td class="border" id="fvFullyLoaded" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.687s&lt;/span&gt;&lt;/td&gt;&lt;td id="fvRequests" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;5&lt;/span&gt;&lt;/td&gt;&lt;td id="fvBytes" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;22 KB&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" class="even" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Repeat View&lt;/span&gt;&lt;/td&gt;&lt;td class="even" id="rvLoadTime" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.338s&lt;/span&gt;&lt;/td&gt;&lt;td class="even" id="rvTTFB" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.225s&lt;/span&gt;&lt;/td&gt;&lt;td class="even" id="rvStartRender" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.369s&lt;/span&gt;&lt;/td&gt;&lt;td class="even" id="rvDomElements" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;36&lt;/span&gt;&lt;/td&gt;&lt;td class="even border" id="rvDocComplete" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.338s&lt;/span&gt;&lt;/td&gt;&lt;td class="even" id="rvRequestsDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;2&lt;/span&gt;&lt;/td&gt;&lt;td class="even" id="rvBytesDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;4 KB&lt;/span&gt;&lt;/td&gt;&lt;td class="even border" id="rvFullyLoaded" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0.498s&lt;/span&gt;&lt;/td&gt;&lt;td class="even" id="rvRequests" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;3&lt;/span&gt;&lt;/td&gt;&lt;td class="even" id="rvBytes" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;4 KB&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
Overall its looks ok (a few extra KB - hopefully that users have already loaded from visiting other sites), however the repeat view time has crept up by nearly 0.200s, something that is not too surprising with the need to force the client to fetch a non-cacheable&amp;nbsp;tracking image (&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px;"&gt;GET /__utm.gif?...&lt;/span&gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-9178431658949825180?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/rugIBMqmbpU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/9178431658949825180/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=9178431658949825180" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/9178431658949825180?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/9178431658949825180?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/rugIBMqmbpU/sutton-with-analytics.html" title="Sutton with analytics" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/11/sutton-with-analytics.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0INR3s_fSp7ImA9WhdXGEo.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-6998136794793103894</id><published>2011-09-01T10:26:00.001+01:00</published><updated>2011-09-01T13:19:56.545+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-01T13:19:56.545+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="aws s3 ec2 golang" /><title>Comparing S3 with EC2 micro instance with go</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zjsSjVAcdgU3tOdRkZi-ZY2RiMo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zjsSjVAcdgU3tOdRkZi-ZY2RiMo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zjsSjVAcdgU3tOdRkZi-ZY2RiMo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zjsSjVAcdgU3tOdRkZi-ZY2RiMo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Created the same page on both S3 and on an EC2 micro instance running linux &amp;amp; go.&lt;br /&gt;
&lt;br /&gt;
Using Google's web master tools as a bench-marker: the S3 instance is for &lt;a href="http://croydon.chart.is/"&gt;Croydon&lt;/a&gt;:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-MqqS3Q31FZs/Tl9Oq8ip_KI/AAAAAAAABmQ/X5tt8CMLNPk/s1600/chart+croydon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://3.bp.blogspot.com/-MqqS3Q31FZs/Tl9Oq8ip_KI/AAAAAAAABmQ/X5tt8CMLNPk/s640/chart+croydon.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
And on EC2 micro instance for &lt;a href="http://new-malden.chart.is/"&gt;New Malden&lt;/a&gt;:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-9Tf7bgFcqN8/Tl9O42tl_KI/AAAAAAAABmU/8y79hnyNfXI/s1600/chart+chart.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://2.bp.blogspot.com/-9Tf7bgFcqN8/Tl9O42tl_KI/AAAAAAAABmU/8y79hnyNfXI/s640/chart+chart.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: right;"&gt;
Time spent downloading a page (in milliseconds)&lt;/div&gt;
&lt;br /&gt;
Looks pretty good - this is the instance that&lt;a href="http://blog.figmentengine.com/2011/08/perfomance-of-go-as-web-server-on"&gt;&amp;nbsp;bench-marked&amp;nbsp;well&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
All assets etc are the same, so should be a fair comparison, I'll give it a few days to get a good average.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-6998136794793103894?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/jumg1DXqudY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/6998136794793103894/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=6998136794793103894" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/6998136794793103894?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/6998136794793103894?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/jumg1DXqudY/comparing-s3-with-ec2-micro-instance.html" title="Comparing S3 with EC2 micro instance with go" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-MqqS3Q31FZs/Tl9Oq8ip_KI/AAAAAAAABmQ/X5tt8CMLNPk/s72-c/chart+croydon.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/09/comparing-s3-with-ec2-micro-instance.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYAQXwyfCp7ImA9WhdXF08.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-5603874433625917803</id><published>2011-08-30T18:14:00.000+01:00</published><updated>2011-08-30T18:42:20.294+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-30T18:42:20.294+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="amazon aws google performance golang" /><title>Perfomance of Go as a web server on Amazon AWS</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tEMKQJ_qdPWMwuGxEt66dfacsyM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tEMKQJ_qdPWMwuGxEt66dfacsyM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tEMKQJ_qdPWMwuGxEt66dfacsyM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tEMKQJ_qdPWMwuGxEt66dfacsyM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Continuing the series on performance and exploring the &lt;a href="http://golang.org/"&gt;Go language&lt;/a&gt; I wanted to see how many requests/second I could get out of an Amazon micro instance.&lt;br /&gt;
&lt;br /&gt;
I used &lt;a href="http://www.joedog.org/index/siege-home"&gt;Siege&lt;/a&gt; for the testing of the "&lt;a href="http://sutton.chart.is/"&gt;Sutton&lt;/a&gt;" server, and using the same code that gives us this &lt;a href="http://www.webpagetest.org/result/110830_GQ_1F0RH/"&gt;sort of response&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Helvetica, sans-serif; line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div id="average" style="text-align: center;"&gt;
&lt;br /&gt;
&lt;table align="center" border="1" cellpadding="10" cellspacing="0" class="pretty" id="tableResults" style="background-color: white; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 0px; border-collapse: collapse; border-left-color: white; border-left-style: solid; border-left-width: 0px; border-right-color: white; border-right-style: solid; border-right-width: 0px; border-top-color: white; border-top-style: solid; border-top-width: 0px; margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: white; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="empty" colspan="4" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Document Complete&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Fully Loaded&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Load Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;First Byte&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Start Render&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;DOM Elements&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Requests&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Bytes In&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Requests&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Bytes In&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;First View&lt;/td&gt;&lt;td id="fvLoadTime" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.355s&lt;/td&gt;&lt;td id="fvTTFB" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.321s&lt;/td&gt;&lt;td id="fvStartRender" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.383s&lt;/td&gt;&lt;td id="fvDomElements" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;31&lt;/td&gt;&lt;td class="border" id="fvDocComplete" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.355s&lt;/td&gt;&lt;td id="fvRequestsDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1&lt;/td&gt;&lt;td id="fvBytesDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;3 KB&lt;/td&gt;&lt;td class="border" id="fvFullyLoaded" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.597s&lt;/td&gt;&lt;td id="fvRequests" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;3&lt;/td&gt;&lt;td id="fvBytes" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;8 KB&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" class="even" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Repeat View&lt;/td&gt;&lt;td class="even" id="rvLoadTime" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.279s&lt;/td&gt;&lt;td class="even" id="rvTTFB" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.240s&lt;/td&gt;&lt;td class="even" id="rvStartRender" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.259s&lt;/td&gt;&lt;td class="even" id="rvDomElements" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;31&lt;/td&gt;&lt;td class="even border" id="rvDocComplete" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.279s&lt;/td&gt;&lt;td class="even" id="rvRequestsDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1&lt;/td&gt;&lt;td class="even" id="rvBytesDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;3 KB&lt;/td&gt;&lt;td class="even border" id="rvFullyLoaded" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.290s&lt;/td&gt;&lt;td class="even" id="rvRequests" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;2&lt;/td&gt;&lt;td class="even" id="rvBytes" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;3 KB&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div id="tables" style="text-align: left;"&gt;
&lt;/div&gt;
&lt;br /&gt;
I also added some caching on the server side, to stop it regenerating the content every time.&lt;br /&gt;
&lt;br /&gt;
Using Siege from a large instance (a small instance could not generate enough requests) I got the following results:&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;$ siege -c 40 -t 20s -d0 http://wimbledon.chart.is&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Lifting the server siege... &amp;nbsp; &amp;nbsp; &amp;nbsp;done.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Transactions:&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; 28178 hits&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Availability:&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;100.00 %&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Elapsed time:&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; 19.78 secs&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Data transferred:&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; 68.07 MB&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;Response time:&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0.03 secs&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;Transaction rate:&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt; &amp;nbsp; &amp;nbsp; 1424.57 trans/sec&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Throughput:&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3.44 MB/sec&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Concurrency:&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; 37.69&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Successful transactions: &amp;nbsp; &amp;nbsp; &amp;nbsp; 28178&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Failed transactions:&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Longest transaction:&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1.51&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Shortest transaction:&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0.00&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
So over 1,000 requests/second on the smallest AWS instance! the server is running at 100% CPU so some simple performance analysis could yield some significant improvements. Also some more effort around making the benchmark more trustworthy, especially with higher numbers of concurrent requests.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-5603874433625917803?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/-oYOisWB3FA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/5603874433625917803/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=5603874433625917803" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/5603874433625917803?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/5603874433625917803?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/-oYOisWB3FA/perfomance-of-go-as-web-server-on.html" title="Perfomance of Go as a web server on Amazon AWS" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/08/perfomance-of-go-as-web-server-on.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYGRn0-eyp7ImA9WhdQFk0.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-4482772087140630274</id><published>2011-08-17T12:36:00.003+01:00</published><updated>2011-08-17T19:52:07.353+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-17T19:52:07.353+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="performance" /><category scheme="http://www.blogger.com/atom/ns#" term="favicon" /><category scheme="http://www.blogger.com/atom/ns#" term="amazon" /><category scheme="http://www.blogger.com/atom/ns#" term="s3" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><title>Hosting favicon.ico on a different server (Amazon S3)</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gXwXKW6UA7Ud4wAfr6wg6IxksRk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gXwXKW6UA7Ud4wAfr6wg6IxksRk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gXwXKW6UA7Ud4wAfr6wg6IxksRk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gXwXKW6UA7Ud4wAfr6wg6IxksRk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div&gt;To increase the performance of our very simple&amp;nbsp;&lt;a href="http://croydon.chart.is/"&gt;Where is Croydon&lt;/a&gt;&amp;nbsp;test site static assets are hosted on S3.&lt;br /&gt;
&lt;br /&gt;
One of the assets that is requested for a site is &lt;a href="http://en.wikipedia.org/wiki/Favicon"&gt;favicon.ico&lt;/a&gt;&amp;nbsp;the icon is used against the site name in browsers (normally to make spotting it among many tabs easier). By default this is requested from the root of the site, however this can be changed by adding:&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;link rel="shortcut icon" href="http://static.chart.is/favicon.ico" /&amp;gt;&lt;/span&gt;&lt;/div&gt;
to each page (head element) on the site.&lt;br /&gt;
&lt;br /&gt;
To host it on S3 requires a bucket matching the domain name, and mapping a CNAME to point to the amazon end-point. In this case using a "static" sub-domain to host these kinds of static assets.&amp;nbsp;&lt;i&gt;Note: if you get "Access Denied" from these its probably because of permissions for "Everyone" to open/download are not set (per asset).&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Doing this means the browser can use a&amp;nbsp;separate&amp;nbsp;connection to&amp;nbsp;retrieve&amp;nbsp;the icon, and therefore process the download in&amp;nbsp;parallel&amp;nbsp;with other content. Its worth considering multiple sub-domains if you have many static assets. This also has the benefit of reducing requests to your site's servers, and improving server-side cache hits as well.&lt;br /&gt;
&lt;br /&gt;
During testing of this a little "feature" of chrome was discovered, it requests "/favicon.ico" from you site if you do a "view page source" - even if you specify a different location.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-4482772087140630274?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/bSuZYs0AMMw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/4482772087140630274/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=4482772087140630274" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/4482772087140630274?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/4482772087140630274?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/bSuZYs0AMMw/hosting-faviconico-on-different-server.html" title="Hosting favicon.ico on a different server (Amazon S3)" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/08/hosting-faviconico-on-different-server.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04BRHwzeip7ImA9WhdQFUw.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-7970502356783162236</id><published>2011-08-12T15:59:00.005+01:00</published><updated>2011-08-16T17:25:55.282+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-16T17:25:55.282+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google ads performance aws" /><title>Google Ads Async (asynchronous)</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/k4Kkg-fZaZyfb8ycu6H4j-6RWbY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/k4Kkg-fZaZyfb8ycu6H4j-6RWbY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/k4Kkg-fZaZyfb8ycu6H4j-6RWbY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/k4Kkg-fZaZyfb8ycu6H4j-6RWbY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Making Google Ads asynchronous seems to be critical to&amp;nbsp;achieving&amp;nbsp;better performance, in this post in the continuing series on optimization of sites (&lt;a href="http://blog.figmentengine.com/2011/07/performance-effect-of-google-ads.html"&gt;Performance: the effect of google ads&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="http://blog.figmentengine.com/2011/08/go-faster-stripes-for-site-performance.html"&gt;Go Faster Stripes for site performance and google ads&lt;/a&gt;), a simple idea has some interesting implications.&lt;br /&gt;
&lt;br /&gt;
The current ad code for &lt;a href="http://croydon.chart.is/"&gt;Where is Croydon&lt;/a&gt; looks like this:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;amp;lt;script type="text/javascript"&amp;amp;gt;&amp;amp;lt;!--&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;google_ad_client = "pub-7600935420912685";&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;google_ad_slot = "7690333966";&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;google_ad_width = 336;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;google_ad_height = 280;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;//--&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;amp;lt;/script&amp;amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;amp;lt;script type="text/javascript"&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&amp;amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;amp;lt;/script&amp;amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And performs like &lt;a href="http://www.webpagetest.org/result/110812_62_1A63Z/"&gt;this&lt;/a&gt;:&lt;br /&gt;
&lt;table align="center" border="1" cellpadding="10" cellspacing="0" class="pretty" id="tableResults" style="background-color: white; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 0px; border-collapse: collapse; border-left-color: white; border-left-style: solid; border-left-width: 0px; border-right-color: white; border-right-style: solid; border-right-width: 0px; border-top-color: white; border-top-style: solid; border-top-width: 0px; margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: white; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="empty" colspan="4" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Document Complete&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Fully Loaded&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Load Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;First Byte&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Start Render&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;DOM Elements&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Requests&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Bytes In&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Requests&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Bytes In&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;First View&lt;/td&gt;&lt;td id="fvLoadTime" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1.939s&lt;/td&gt;&lt;td id="fvTTFB" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.289s&lt;/td&gt;&lt;td id="fvStartRender" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.426s&lt;/td&gt;&lt;td id="fvDomElements" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;187&lt;/td&gt;&lt;td class="border" id="fvDocComplete" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1.939s&lt;/td&gt;&lt;td id="fvRequestsDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;12&lt;/td&gt;&lt;td id="fvBytesDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;52 KB&lt;/td&gt;&lt;td class="border" id="fvFullyLoaded" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;2.438s&lt;/td&gt;&lt;td id="fvRequests" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;14&lt;/td&gt;&lt;td id="fvBytes" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;53 KB&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" class="even" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Repeat View&lt;/td&gt;&lt;td class="even" id="rvLoadTime" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1.054s&lt;/td&gt;&lt;td class="even" id="rvTTFB" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.228s&lt;/td&gt;&lt;td class="even" id="rvStartRender" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.574s&lt;/td&gt;&lt;td class="even" id="rvDomElements" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;182&lt;/td&gt;&lt;td class="even border" id="rvDocComplete" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1.054s&lt;/td&gt;&lt;td class="even" id="rvRequestsDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;2&lt;/td&gt;&lt;td class="even" id="rvBytesDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;6 KB&lt;/td&gt;&lt;td class="even border" id="rvFullyLoaded" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1.054s&lt;/td&gt;&lt;td class="even" id="rvRequests" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;2&lt;/td&gt;&lt;td class="even" id="rvBytes" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;6 KB&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Document complete in about 2 seconds is not good enough, (given our page has nothing on it), and the advert script is going to slow down any other asset downloads (by putting the browser into serial mode).&lt;br /&gt;
&lt;br /&gt;
So how can we fix this? a bit of re-plumbing should fix this, our ad script becomes:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;amp;lt;script type="text/javascript"&amp;amp;gt;&amp;amp;lt;!--&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;google_ad_client = "pub-7600935420912685";&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;google_ad_slot = "7690333966";&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;google_ad_width = 336;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;google_ad_height = 280;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;//--&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;amp;lt;/script&amp;amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;amp;lt;script type="text/javascript"&amp;amp;gt;&amp;amp;lt;!--&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;// dynamically Load Ads out-of-band&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;setTimeout((function ()&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;// placeholder for ads&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var eleAds = document.createElement("ads"); &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // dynamic script element&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var eleScript = document.createElement("script"); &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // remember the implementation of document.write function&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; w = document.write;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // override and replace with our version&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; document.write = (function(params)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;// replace our placeholder with real ads&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;eleAds.innerHTML = params;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;// put the old implementation back in place&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;document.write=w;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // setup the ads script element&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; eleScript.setAttribute("type", "text/javascript");&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; eleScript.setAttribute("src", "http://pagead2.googlesyndication.com/pagead/show_ads.js");&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // add the two elements, causing the ads script to run&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; document.body.appendChild(eleAds); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; document.body.appendChild(eleScript); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;}), 1);&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //--&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;amp;lt;/script&amp;amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How does this work? Google's Ad script is quite "nasty" as it uses &lt;a href="http://stackoverflow.com/questions/802854/why-is-document-write-considered-a-bad-practice"&gt;document.write, generally not a good idea&lt;/a&gt; &amp;nbsp;as it can only be used during page creation. So this script does two things:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;it dynamically inserts the&amp;nbsp;Google&amp;nbsp;ad script, allowing this to be&amp;nbsp;separate&amp;nbsp;from the main page render, hence the rest of the page can load without waiting for the adverts&lt;/li&gt;
&lt;li&gt;it re-plumbs the document.write function to instead add the ads to a placeholder element. If this is not done then the&amp;nbsp;Google&amp;nbsp;code will try to call document.write and it won't output anything as the document is already complete. For completeness the code re-plumbs document.write after the first call, but really there should be no other code calling it.&lt;/li&gt;
&lt;/ol&gt;
Now this code is far from bullet proof, or tested (&lt;a href="http://www.codinghorror.com/blog/2007/03/the-works-on-my-machine-certification-program.html"&gt;WOMM&lt;/a&gt;), but it shows the basic principle - it works only because its specific to the&amp;nbsp;Google&amp;nbsp;code, a more generic solution might need to &lt;a href="http://ejohn.org/blog/xhtml-documentwrite-and-adsense/"&gt;follow this approach&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
What does all this effort &lt;a href="http://www.webpagetest.org/result/110812_91_1A6AP/"&gt;yield&lt;/a&gt; us:&lt;br /&gt;
&lt;table align="center" border="1" cellpadding="10" cellspacing="0" class="pretty" id="tableResults" style="background-color: white; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 0px; border-collapse: collapse; border-left-color: white; border-left-style: solid; border-left-width: 0px; border-right-color: white; border-right-style: solid; border-right-width: 0px; border-top-color: white; border-top-style: solid; border-top-width: 0px; margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: white; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="empty" colspan="4" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Document Complete&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Fully Loaded&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Load Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;First Byte&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Start Render&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;DOM Elements&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Requests&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Bytes In&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Requests&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Bytes In&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;First View&lt;/td&gt;&lt;td id="fvLoadTime" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.484s&lt;/td&gt;&lt;td id="fvTTFB" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.332s&lt;/td&gt;&lt;td id="fvStartRender" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.584s&lt;/td&gt;&lt;td id="fvDomElements" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;191&lt;/td&gt;&lt;td class="border" id="fvDocComplete" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.484s&lt;/td&gt;&lt;td id="fvRequestsDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1&lt;/td&gt;&lt;td id="fvBytesDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;3 KB&lt;/td&gt;&lt;td class="border" id="fvFullyLoaded" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;2.353s&lt;/td&gt;&lt;td id="fvRequests" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;13&lt;/td&gt;&lt;td id="fvBytes" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;55 KB&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" class="even" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Repeat View&lt;/td&gt;&lt;td class="even" id="rvLoadTime" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.347s&lt;/td&gt;&lt;td class="even" id="rvTTFB" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.211s&lt;/td&gt;&lt;td class="even" id="rvStartRender" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.611s&lt;/td&gt;&lt;td class="even" id="rvDomElements" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;186&lt;/td&gt;&lt;td class="even border" id="rvDocComplete" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.347s&lt;/td&gt;&lt;td class="even" id="rvRequestsDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1&lt;/td&gt;&lt;td class="even" id="rvBytesDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0 KB&lt;/td&gt;&lt;td class="even border" id="rvFullyLoaded" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1.185s&lt;/td&gt;&lt;td class="even" id="rvRequests" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;2&lt;/td&gt;&lt;td class="even" id="rvBytes" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;6 KB&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Fully loaded has not changed (as expected, we are still loading the same amount), but document complete is massively improved - from 2 seconds to less than half a second. Whilst this might seem to be moving numbers around, it means that the browser can render the rest of the page &lt;b&gt;before&lt;/b&gt;&amp;nbsp;adverts, and since adverts can be very very slow, this can make the site appear much faster.&lt;br /&gt;
&lt;br /&gt;
And for those of you who do want to cheat performance numbers, then changing the &amp;nbsp;"&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;}), 1);&lt;/span&gt;" line to "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;}), 4000);&lt;/span&gt;" gives you &lt;a href="http://www.webpagetest.org/result/110812_X9_1A6JR/"&gt;this&lt;/a&gt;. A page that is "fully loaded" in 0.39 seconds - this is of course cheating, the adverts appear 4 seconds later, but&amp;nbsp;&lt;a href="https://sites.google.com/a/webpagetest.org/docs/using-webpagetest/quick-start-quide#TOC-Fully-Loaded:"&gt;https://sites.google.com/a/webpagetest.org/docs/using-webpagetest/quick-start-quide#TOC-Fully-Loaded:&lt;/a&gt;&amp;nbsp;looks for 2 seconds of no activity to judged fully loaded time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-7970502356783162236?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/DgNgigzoD-A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/7970502356783162236/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=7970502356783162236" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/7970502356783162236?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/7970502356783162236?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/DgNgigzoD-A/google-ads-async-asynchronous.html" title="Google Ads Async (asynchronous)" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/08/google-ads-async-asynchronous.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4GRn4zfSp7ImA9WhdRGUQ.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-4923722136107815250</id><published>2011-08-09T16:17:00.002+01:00</published><updated>2011-08-10T18:22:07.085+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-10T18:22:07.085+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="go performance google ads amazon" /><title>Go Faster Stripes for site performance and google ads</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4bavKVtImjCONsb35o4DZ2iOV98/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4bavKVtImjCONsb35o4DZ2iOV98/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4bavKVtImjCONsb35o4DZ2iOV98/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4bavKVtImjCONsb35o4DZ2iOV98/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Carrying on our performance experiments with Amazon AWS and Go..&lt;br /&gt;
&lt;br /&gt;
Repeating the same experiments, but comparing EC2 with S3.&lt;br /&gt;
&lt;br /&gt;
S3 looked like this &lt;a href="http://www.webpagetest.org/result/110729_C7_163S2/"&gt;last time&lt;/a&gt;:&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Helvetica, sans-serif; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;table align="center" border="1" cellpadding="10" cellspacing="0" class="pretty" id="tableResults" style="background-color: white; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 0px; border-collapse: collapse; border-left-color: white; border-left-style: solid; border-left-width: 0px; border-right-color: white; border-right-style: solid; border-right-width: 0px; border-top-color: white; border-top-style: solid; border-top-width: 0px; margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: white; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="empty" colspan="4" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
Document Complete&lt;/div&gt;
&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
Fully Loaded&lt;/div&gt;
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
Load Time&lt;/div&gt;
&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
First Byte&lt;/div&gt;
&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
Start Render&lt;/div&gt;
&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
DOM Elements&lt;/div&gt;
&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
Time&lt;/div&gt;
&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
Requests&lt;/div&gt;
&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
Bytes In&lt;/div&gt;
&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
Time&lt;/div&gt;
&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
Requests&lt;/div&gt;
&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
Bytes In&lt;/div&gt;
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
First View&lt;/div&gt;
&lt;/td&gt;&lt;td id="fvLoadTime" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
0.518s&lt;/div&gt;
&lt;/td&gt;&lt;td id="fvTTFB" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
0.391s&lt;/div&gt;
&lt;/td&gt;&lt;td id="fvStartRender" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
0.000s&lt;/div&gt;
&lt;/td&gt;&lt;td id="fvDomElements" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
14&lt;/div&gt;
&lt;/td&gt;&lt;td class="border" id="fvDocComplete" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
0.518s&lt;/div&gt;
&lt;/td&gt;&lt;td id="fvRequestsDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
1&lt;/div&gt;
&lt;/td&gt;&lt;td id="fvBytesDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
1 KB&lt;/div&gt;
&lt;/td&gt;&lt;td class="border" id="fvFullyLoaded" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
0.518s&lt;/div&gt;
&lt;/td&gt;&lt;td id="fvRequests" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
1&lt;/div&gt;
&lt;/td&gt;&lt;td id="fvBytes" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
1 KB&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" class="even" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
Repeat View&lt;/div&gt;
&lt;/td&gt;&lt;td class="even" id="rvLoadTime" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
0.363s&lt;/div&gt;
&lt;/td&gt;&lt;td class="even" id="rvTTFB" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
0.237s&lt;/div&gt;
&lt;/td&gt;&lt;td class="even" id="rvStartRender" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
0.000s&lt;/div&gt;
&lt;/td&gt;&lt;td class="even" id="rvDomElements" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
14&lt;/div&gt;
&lt;/td&gt;&lt;td class="even border" id="rvDocComplete" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
0.363s&lt;/div&gt;
&lt;/td&gt;&lt;td class="even" id="rvRequestsDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
1&lt;/div&gt;
&lt;/td&gt;&lt;td class="even" id="rvBytesDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
0 KB&lt;/div&gt;
&lt;/td&gt;&lt;td class="even border" id="rvFullyLoaded" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
0.363s&lt;/div&gt;
&lt;/td&gt;&lt;td class="even" id="rvRequests" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
1&lt;/div&gt;
&lt;/td&gt;&lt;td class="even" id="rvBytes" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
0 KB&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
Document complete in under half a second, with TTFB of 0.391s and document complete 0.518s&lt;/div&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
These look pretty respectable, but now compare with an EC2 instance (t1.large linux) using Google Go language as a HTTP server&lt;/div&gt;
&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px;"&gt;&lt;br class="Apple-interchange-newline" /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;table align="center" border="1" cellpadding="10" cellspacing="0" class="pretty" id="tableResults" style="background-color: white; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 0px; border-collapse: collapse; border-left-color: white; border-left-style: solid; border-left-width: 0px; border-right-color: white; border-right-style: solid; border-right-width: 0px; border-top-color: white; border-top-style: solid; border-top-width: 0px; margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: white; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="empty" colspan="4" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Document Complete&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Fully Loaded&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Load Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;First Byte&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Start Render&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;DOM Elements&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Requests&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Bytes In&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Requests&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Bytes In&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;First View&lt;/td&gt;&lt;td id="fvLoadTime" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.342s&lt;/td&gt;&lt;td id="fvTTFB" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.212s&lt;/td&gt;&lt;td id="fvStartRender" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.000s&lt;/td&gt;&lt;td id="fvDomElements" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;14&lt;/td&gt;&lt;td class="border" id="fvDocComplete" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.342s&lt;/td&gt;&lt;td id="fvRequestsDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1&lt;/td&gt;&lt;td id="fvBytesDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1 KB&lt;/td&gt;&lt;td class="border" id="fvFullyLoaded" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.342s&lt;/td&gt;&lt;td id="fvRequests" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1&lt;/td&gt;&lt;td id="fvBytes" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1 KB&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" class="even" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Repeat View&lt;/td&gt;&lt;td class="even" id="rvLoadTime" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.389s&lt;/td&gt;&lt;td class="even" id="rvTTFB" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.224s&lt;/td&gt;&lt;td class="even" id="rvStartRender" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.000s&lt;/td&gt;&lt;td class="even" id="rvDomElements" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;14&lt;/td&gt;&lt;td class="even border" id="rvDocComplete" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.389s&lt;/td&gt;&lt;td class="even" id="rvRequestsDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1&lt;/td&gt;&lt;td class="even" id="rvBytesDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1 KB&lt;/td&gt;&lt;td class="even border" id="rvFullyLoaded" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.389s&lt;/td&gt;&lt;td class="even" id="rvRequests" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1&lt;/td&gt;&lt;td class="even" id="rvBytes" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1 KB&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div id="download" style="clear: both; padding-bottom: 5px; padding-left: 0px; padding-right: 0px; padding-top: 5px; text-align: right;"&gt;
&lt;div style="text-align: -webkit-auto;"&gt;
Faster across the board - TTFB has halved to 0.212s and this is time saved off document complete and fully loaded. I was expecting that S3 would be very fast at serving static content, and its looks reasonable, but compared to this single server (large admittedly) its a fair % slower.&lt;br /&gt;
&lt;br /&gt;
Now what happens with Google adverts? we get a similar &lt;a href="http://blog.figmentengine.com/2011/07/performance-effect-of-google-ads.html"&gt;google ads penalty&lt;/a&gt; to last time, 1.5s penalty on document complete and fully loaded:&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" border="1" cellpadding="10" cellspacing="0" class="pretty" id="tableResults" style="background-color: white; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 0px; border-collapse: collapse; border-left-color: white; border-left-style: solid; border-left-width: 0px; border-right-color: white; border-right-style: solid; border-right-width: 0px; border-top-color: white; border-top-style: solid; border-top-width: 0px; margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: white; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="empty" colspan="4" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Document Complete&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Fully Loaded&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Load Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;First Byte&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Start Render&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;DOM Elements&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Requests&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Bytes In&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Requests&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Bytes In&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;First View&lt;/td&gt;&lt;td id="fvLoadTime" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1.582s&lt;/td&gt;&lt;td id="fvTTFB" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.283s&lt;/td&gt;&lt;td id="fvStartRender" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.411s&lt;/td&gt;&lt;td id="fvDomElements" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;175&lt;/td&gt;&lt;td class="border" id="fvDocComplete" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1.582s&lt;/td&gt;&lt;td id="fvRequestsDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;10&lt;/td&gt;&lt;td id="fvBytesDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;51 KB&lt;/td&gt;&lt;td class="border" id="fvFullyLoaded" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1.582s&lt;/td&gt;&lt;td id="fvRequests" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;10&lt;/td&gt;&lt;td id="fvBytes" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;51 KB&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" class="even" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Repeat View&lt;/td&gt;&lt;td class="even" id="rvLoadTime" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1.184s&lt;/td&gt;&lt;td class="even" id="rvTTFB" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.210s&lt;/td&gt;&lt;td class="even" id="rvStartRender" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.523s&lt;/td&gt;&lt;td class="even" id="rvDomElements" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;175&lt;/td&gt;&lt;td class="even border" id="rvDocComplete" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1.184s&lt;/td&gt;&lt;td class="even" id="rvRequestsDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;2&lt;/td&gt;&lt;td class="even" id="rvBytesDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;6 KB&lt;/td&gt;&lt;td class="even border" id="rvFullyLoaded" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1.184s&lt;/td&gt;&lt;td class="even" id="rvRequests" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;2&lt;/td&gt;&lt;td class="even" id="rvBytes" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;6 KB&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Whats hidden in these numbers is a little gem - the ~0.200s saved using the EC2 instance is still there, i.e. this performs ~0.200s faster than S3 even when using Google Ads.&lt;br /&gt;
&lt;br /&gt;
So even if you have a very heavy page, and are using CDN or other techniques to speed things up, &lt;b&gt;you really need to see if you can get your TTFB down&lt;/b&gt; - and that may mean looking at async HTTP servers such as Go or Node.js&lt;br /&gt;
&lt;br /&gt;
Here is the Go code for this example (the HTML is literal using back-quotes `), based on one of the &lt;a href="http://wh3rd.net/practical-go/#(15)"&gt;Go examples&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;package main&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;import (&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "fmt"&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "http"&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;func Hello(w http.ResponseWriter, r *http.Request) {&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fmt.Fprintf(w,&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;`&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;amp;lt;!doctype html&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;amp;lt;html lang="en-GB"&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;amp;lt;head&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;amp;lt;meta charset="utf-8"&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;amp;lt;title&amp;amp;gt;Croydon&amp;amp;lt;/title&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;amp;lt;meta name="description" content="Croydon"&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;amp;lt;/head&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;amp;lt;body&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;amp;lt;article&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;amp;lt;p&amp;amp;gt;Croydon&amp;amp;lt;/p&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;amp;lt;p&amp;amp;gt;Information on Croydon: shops, restaurants, property, schools, council &amp;amp;amp;amp; government&amp;amp;lt;/p&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;amp;lt;/article&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;amp;lt;script type="text/javascript"&amp;amp;gt;&amp;amp;lt;!--&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; google_ad_client = "pub-7600935420912685";&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; google_ad_slot = "7690333966";&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; google_ad_width = 336;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; google_ad_height = 280;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //--&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;amp;lt;/script&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;amp;lt;script type="text/javascript"&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;amp;lt;/script&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;amp;lt;/body&amp;amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;amp;lt;/html&amp;amp;gt;`)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;func main() &amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; http.HandleFunc("/", Hello)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; http.ListenAndServe(":8080", nil)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
Note that the previous tests were rerun to ensure no significant variance in timings. The next set of test will be to see if we can keep sub-0.300s for template based content (as opposed to hard-coded HTML)&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: -webkit-auto;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-4923722136107815250?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/IepGENr-0GM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/4923722136107815250/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=4923722136107815250" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/4923722136107815250?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/4923722136107815250?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/IepGENr-0GM/go-faster-stripes-for-site-performance.html" title="Go Faster Stripes for site performance and google ads" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/08/go-faster-stripes-for-site-performance.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIHSHk8fip7ImA9WhdREUQ.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-6721189369568880155</id><published>2011-08-01T12:18:00.003+01:00</published><updated>2011-08-01T12:18:59.776+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-01T12:18:59.776+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="gmail alias swaks" /><title>Don't use Google Mail to test email aliases: sent mails vanish</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gENTTv0sofC5mx0Eys8q5zeb_HM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gENTTv0sofC5mx0Eys8q5zeb_HM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gENTTv0sofC5mx0Eys8q5zeb_HM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gENTTv0sofC5mx0Eys8q5zeb_HM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;If you setup a new email alias and want to test it then don't use Google Mail.&lt;br /&gt;
&lt;br /&gt;
In order to save space gmail does not store duplicate messages, so messages sent to an alias that are redirected to your gmail account (via pop etc) simply vanish.&lt;br /&gt;
&lt;br /&gt;
If you check the gmail logs (settings, accounts and import, view history) you can see it fetched the email, but then it simply discards it.&lt;br /&gt;
&lt;br /&gt;
So its best to send the email using a&amp;nbsp;separate&amp;nbsp;client (such as &lt;a href="http://jetmore.org/john/code/swaks/"&gt;swaks&lt;/a&gt;), this problem also appears with &lt;a href="http://www.google.com/support/forum/p/gmail/thread?tid=639f3e4e523df741&amp;amp;hl=en"&gt;sub-domains&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-6721189369568880155?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/rUvMQ_iaTvs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/6721189369568880155/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=6721189369568880155" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/6721189369568880155?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/6721189369568880155?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/rUvMQ_iaTvs/dont-use-google-mail-to-test-email.html" title="Don't use Google Mail to test email aliases: sent mails vanish" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/08/dont-use-google-mail-to-test-email.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMCRXg8fSp7ImA9WhdSGUg.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-6798239297072856603</id><published>2011-07-29T16:09:00.002+01:00</published><updated>2011-07-29T16:14:24.675+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-29T16:14:24.675+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="amazon aws google ads performance" /><title>Performance: the effect of google ads</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uvWHRNgDx3tl2HPzwOwnrTyfpXI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uvWHRNgDx3tl2HPzwOwnrTyfpXI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uvWHRNgDx3tl2HPzwOwnrTyfpXI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uvWHRNgDx3tl2HPzwOwnrTyfpXI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;I've created a test page (on the subject of &lt;a href="http://croydon.chart.is/"&gt;croydon&lt;/a&gt;) that is hosted on Amazon's S3 as a static site. This is part of a series of tests I'm doing to see how best to use AWS and other technologies (mongoDB &amp;amp; Go), and how performance effects ranking (more on this in a later blog).&lt;br /&gt;
&lt;br /&gt;
I'm expecting some delays due to the DNS setup, but the&lt;a href="http://www.webpagetest.org/result/110729_C7_163S2/"&gt; first test&lt;/a&gt; looks pretty good&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Helvetica, sans-serif; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;table align="center" border="1" cellpadding="10" cellspacing="0" class="pretty" id="tableResults" style="background-color: white; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 0px; border-collapse: collapse; border-left-color: white; border-left-style: solid; border-left-width: 0px; border-right-color: white; border-right-style: solid; border-right-width: 0px; border-top-color: white; border-top-style: solid; border-top-width: 0px; margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: white; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="empty" colspan="4" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Document Complete&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Fully Loaded&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Load Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;First Byte&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Start Render&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;DOM Elements&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Requests&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Bytes In&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Requests&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Bytes In&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;First View&lt;/td&gt;&lt;td id="fvLoadTime" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.518s&lt;/td&gt;&lt;td id="fvTTFB" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.391s&lt;/td&gt;&lt;td id="fvStartRender" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.000s&lt;/td&gt;&lt;td id="fvDomElements" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;14&lt;/td&gt;&lt;td class="border" id="fvDocComplete" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.518s&lt;/td&gt;&lt;td id="fvRequestsDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1&lt;/td&gt;&lt;td id="fvBytesDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1 KB&lt;/td&gt;&lt;td class="border" id="fvFullyLoaded" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.518s&lt;/td&gt;&lt;td id="fvRequests" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1&lt;/td&gt;&lt;td id="fvBytes" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1 KB&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" class="even" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Repeat View&lt;/td&gt;&lt;td class="even" id="rvLoadTime" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.363s&lt;/td&gt;&lt;td class="even" id="rvTTFB" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.237s&lt;/td&gt;&lt;td class="even" id="rvStartRender" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.000s&lt;/td&gt;&lt;td class="even" id="rvDomElements" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;14&lt;/td&gt;&lt;td class="even border" id="rvDocComplete" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.363s&lt;/td&gt;&lt;td class="even" id="rvRequestsDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1&lt;/td&gt;&lt;td class="even" id="rvBytesDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0 KB&lt;/td&gt;&lt;td class="even border" id="rvFullyLoaded" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.363s&lt;/td&gt;&lt;td class="even" id="rvRequests" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1&lt;/td&gt;&lt;td class="even" id="rvBytes" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0 KB&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
Document complete in under half a second, and fully loaded about the same! - this shows how fast Amazon's AWS is for this kind of simple site (and it took minutes to set up as well)&lt;br /&gt;
&lt;br /&gt;
Now looks what happens when we add some google JavaScript for&amp;nbsp;the&amp;nbsp;&lt;a href="http://www.webpagetest.org/result/110729_E8_163W1/"&gt;second test&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #666666; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &lt;script &lt;="" font="" type="text/javascript"&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font class="Apple-style-span" face="'Courier New', Courier, monospace" color="#666666"&gt;&amp;nbsp; &amp;nbsp; src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font class="Apple-style-span" face="'Courier New', Courier, monospace" color="#666666"&gt;&amp;nbsp; 
&lt;/script&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="cleared" style="clear: both; color: #222222; display: block; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px;"&gt;
&lt;/div&gt;
&lt;div id="average" style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; text-align: center;"&gt;
&lt;table align="center" border="1" cellpadding="10" cellspacing="0" class="pretty" id="tableResults" style="background-color: white; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 0px; border-collapse: collapse; border-left-color: white; border-left-style: solid; border-left-width: 0px; border-right-color: white; border-right-style: solid; border-right-width: 0px; border-top-color: white; border-top-style: solid; border-top-width: 0px; margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: white; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: white; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="empty" colspan="4" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Document Complete&lt;/th&gt;&lt;th align="center" class="border" colspan="3" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Fully Loaded&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th align="center" class="empty" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: white; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: white; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Load Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;First Byte&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Start Render&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;DOM Elements&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Requests&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Bytes In&lt;/th&gt;&lt;th align="center" class="border" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Time&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Requests&lt;/th&gt;&lt;th align="center" style="background-attachment: initial; background-clip: initial; background-color: gainsboro; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Bytes In&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;First View&lt;/td&gt;&lt;td id="fvLoadTime" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;2.251s&lt;/td&gt;&lt;td id="fvTTFB" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.382s&lt;/td&gt;&lt;td id="fvStartRender" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.703s&lt;/td&gt;&lt;td id="fvDomElements" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;173&lt;/td&gt;&lt;td class="border" id="fvDocComplete" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;2.251s&lt;/td&gt;&lt;td id="fvRequestsDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;11&lt;/td&gt;&lt;td id="fvBytesDoc" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;51 KB&lt;/td&gt;&lt;td class="border" id="fvFullyLoaded" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;2.251s&lt;/td&gt;&lt;td id="fvRequests" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;11&lt;/td&gt;&lt;td id="fvBytes" style="border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;51 KB&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="left" class="even" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;Repeat View&lt;/td&gt;&lt;td class="even" id="rvLoadTime" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1.046s&lt;/td&gt;&lt;td class="even" id="rvTTFB" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.264s&lt;/td&gt;&lt;td class="even" id="rvStartRender" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;0.552s&lt;/td&gt;&lt;td class="even" id="rvDomElements" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;173&lt;/td&gt;&lt;td class="even border" id="rvDocComplete" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1.046s&lt;/td&gt;&lt;td class="even" id="rvRequestsDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;2&lt;/td&gt;&lt;td class="even" id="rvBytesDoc" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;6 KB&lt;/td&gt;&lt;td class="even border" id="rvFullyLoaded" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;1.046s&lt;/td&gt;&lt;td class="even" id="rvRequests" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;2&lt;/td&gt;&lt;td class="even" id="rvBytes" style="background-attachment: initial; background-clip: initial; background-color: whitesmoke; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; padding-bottom: 0.4em; padding-left: 0.4em; padding-right: 0.4em; padding-top: 0.4em; text-align: center;" valign="middle"&gt;6 KB&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
Document complete is now over 2 1/4 seconds, that seems a heavy price in performance to pay - and as a website owner there is little you can do about this, an irony as &lt;a href="http://googlewebmastercentral.blogspot.com/2010/04/using-site-speed-in-web-search-ranking.html"&gt;Google ranks faster performing sites higher&lt;/a&gt;.&lt;/div&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-6798239297072856603?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/xHiMyuHdt-M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/6798239297072856603/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=6798239297072856603" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/6798239297072856603?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/6798239297072856603?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/xHiMyuHdt-M/performance-effect-of-google-ads.html" title="Performance: the effect of google ads" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/07/performance-effect-of-google-ads.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04AQn88cSp7ImA9WhZQGUo.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-4116837667355156830</id><published>2011-04-28T09:35:00.001+01:00</published><updated>2011-04-28T09:39:03.179+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-28T09:39:03.179+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="standards w3c uml" /><title>XML for UML State diagrams</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/byaAtj6ClezW-Y-fcB-cCf4VwU4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/byaAtj6ClezW-Y-fcB-cCf4VwU4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/byaAtj6ClezW-Y-fcB-cCf4VwU4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/byaAtj6ClezW-Y-fcB-cCf4VwU4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;W3C again...&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;"&lt;/span&gt;..&lt;span class="Apple-style-span" style="font-family: sans-serif;"&gt;Harel State Tables are a state machine notation that was developed by the mathematician David Harel&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif;"&gt;&lt;a href="http://www.w3.org/TR/2011/WD-scxml-20110426/#Harel_Politi" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0000cc;"&gt;[Harel and Politi]&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif;"&gt;and is included in UML&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif;"&gt;&lt;a href="http://www.w3.org/TR/2011/WD-scxml-20110426/#UML" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0000cc;"&gt;[UML 2.3]&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif;"&gt;. They offer a clean and well-thought out semantics for sophisticated constructs such as a parallel states. They have been defined as a graphical specification language, however, and hence do not have an XML representation. The goal of this document is to combine Harel semantics with an XML syntax that is a logical extension of CCXML's state and event notation..&lt;/span&gt;"&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: x-small;"&gt;&lt;a href="http://www.w3.org/TR/2011/WD-scxml-20110426/"&gt;State Chart XML (SCXML): State Machine Notation for Control Abstraction&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
I like the m&lt;a href="http://www.w3.org/TR/2011/WD-scxml-20110426/#N1182D"&gt;icrowave example&lt;/a&gt;:&lt;br /&gt;
&lt;div style="text-align: left;"&gt;&lt;pre&gt;&amp;lt;scxml datamodel="ecmascript" initial="off" version="1.0" xmlns="http://www.w3.org/2005/07/scxml"&amp;gt;

  
  &amp;lt;datamodel&amp;gt;
    &amp;lt;data expr="5" id="cook_time"&amp;gt;
    &amp;lt;data expr="true" id="door_closed"&amp;gt;
    &amp;lt;data expr="0" id="timer"&amp;gt;
  &amp;lt;/data&amp;gt;&amp;lt;/data&amp;gt;&amp;lt;/data&amp;gt;&amp;lt;/datamodel&amp;gt;

  &amp;lt;state id="off"&amp;gt;
    
    &amp;lt;transition event="turn.on" target="on"&amp;gt;
  &amp;lt;/transition&amp;gt;&amp;lt;/state&amp;gt;

  &amp;lt;state id="on"&amp;gt;
    &amp;lt;initial&amp;gt;
        &amp;lt;transition target="idle"&amp;gt;
    &amp;lt;/transition&amp;gt;&amp;lt;/initial&amp;gt;
    

    &amp;lt;transition event="turn.off" target="off"&amp;gt;
    &amp;lt;transition cond="timer &amp;gt;= cook_time" target="off"&amp;gt;

    &amp;lt;state id="idle"&amp;gt;
      
      &amp;lt;transition cond="door_closed" target="cooking"&amp;gt;
      &amp;lt;transition event="door.close" target="cooking"&amp;gt;
        &amp;lt;assign expr="true" location="door_closed"&amp;gt;
        
      &amp;lt;/assign&amp;gt;&amp;lt;/transition&amp;gt;
    &amp;lt;/transition&amp;gt;&amp;lt;/state&amp;gt;

    &amp;lt;state id="cooking"&amp;gt;
      &amp;lt;transition event="door.open" target="idle"&amp;gt;
        &amp;lt;assign expr="false" location="door_closed"&amp;gt;
      &amp;lt;/assign&amp;gt;&amp;lt;/transition&amp;gt;

      
      &amp;lt;transition event="time"&amp;gt;
        &amp;lt;assign expr="timer + 1" location="timer"&amp;gt;
      &amp;lt;/assign&amp;gt;&amp;lt;/transition&amp;gt;
    &amp;lt;/state&amp;gt;

  &amp;lt;/transition&amp;gt;&amp;lt;/transition&amp;gt;&amp;lt;/state&amp;gt;

&amp;lt;/scxml&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-4116837667355156830?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/SPRwwvF7f7I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/4116837667355156830/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=4116837667355156830" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/4116837667355156830?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/4116837667355156830?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/SPRwwvF7f7I/xml-for-uml-state-diagrams.html" title="XML for UML State diagrams" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/04/xml-for-uml-state-diagrams.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEHQnc-cCp7ImA9WhZQGUo.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-2895326150319076067</id><published>2011-04-28T09:16:00.001+01:00</published><updated>2011-04-28T09:17:13.958+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-28T09:17:13.958+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="standards w3c" /><title>The Ubiquitous W3C: Battery standards</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/T2GGihhOJnAEHnzk2okOXx17EDc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T2GGihhOJnAEHnzk2okOXx17EDc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/T2GGihhOJnAEHnzk2okOXx17EDc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T2GGihhOJnAEHnzk2okOXx17EDc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Batteries? wow!&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I saw this release from the W3C and it made me sit up:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: inherit;"&gt;"&lt;span class="Apple-style-span" style="color: #666666;"&gt;The&amp;nbsp;&lt;a href="http://www.w3.org/2009/dap/" target="_blank"&gt;Device APIs and Policy Working Group&lt;/a&gt;&amp;nbsp;has published the First Public Working Draft of&amp;nbsp;&lt;a href="http://www.w3.org/TR/2011/WD-battery-status-20110426/" target="_blank"&gt;Battery Status Event Specification&lt;/a&gt;. This specification provides tools for developers to access device battery status (charge level, time remaining, etc.) within Web Applications. This specification defines a new DOM event type that provides information about the battery status of the hosting device and associated auxiliary devices. Learn more about the&lt;a href="http://www.w3.org/2007/uwa/" target="_blank"&gt;Ubiquitous Web Applications Activity&lt;/a&gt;.&lt;/span&gt;"&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
why? because I thought - &lt;i&gt;why is the W3C publishing standards about batteries at all?&lt;/i&gt; W3C stands for "World Wide Web Consortium", yet here we are looking at how to monitor battery status within a web page.&lt;br /&gt;
&lt;br /&gt;
it just show you how&amp;nbsp;&lt;span class="Apple-style-span" style="color: #003399; font-family: 'Arial Narrow', sans-serif; font-size: 21px; font-weight: bold;"&gt;&lt;a href="http://www.w3.org/2007/uwa/"&gt;Ubiquitous&lt;/a&gt;&lt;/span&gt;&amp;nbsp;they are trying to be!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-2895326150319076067?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/CWYRVx3NHQQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/2895326150319076067/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=2895326150319076067" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/2895326150319076067?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/2895326150319076067?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/CWYRVx3NHQQ/ubiquitous-w3c-battery-standards.html" title="The Ubiquitous W3C: Battery standards" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/04/ubiquitous-w3c-battery-standards.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4EQH0-eyp7ImA9WhZRGEU.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-5609042102987571762</id><published>2011-04-15T16:55:00.000+01:00</published><updated>2011-04-15T16:55:01.353+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-15T16:55:01.353+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="image" /><title>OCD</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pZv54AE58cMzqI9yZqREd2gOyhg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pZv54AE58cMzqI9yZqREd2gOyhg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pZv54AE58cMzqI9yZqREd2gOyhg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pZv54AE58cMzqI9yZqREd2gOyhg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;love these&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-CcsZLxIwBiE/TahqLSCERzI/AAAAAAAAARs/oDf0UgokiWs/s1600/OCD-500x707.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-CcsZLxIwBiE/TahqLSCERzI/AAAAAAAAARs/oDf0UgokiWs/s640/OCD-500x707.jpg" width="451" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://www.adaptcreative.co.uk/2010/08/mental-disorder-posters/"&gt;http://www.adaptcreative.co.uk/2010/08/mental-disorder-posters/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-5609042102987571762?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/1v889V8kGw0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/5609042102987571762/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=5609042102987571762" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/5609042102987571762?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/5609042102987571762?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/1v889V8kGw0/ocd.html" title="OCD" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-CcsZLxIwBiE/TahqLSCERzI/AAAAAAAAARs/oDf0UgokiWs/s72-c/OCD-500x707.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/04/ocd.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEDQn45fSp7ImA9WhZRGEU.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-8795912592623678184</id><published>2011-04-15T16:51:00.000+01:00</published><updated>2011-04-15T16:51:13.025+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-15T16:51:13.025+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="doh" /><title>Print before reading</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/V6PVMxsfsPOtZQqjCPlqTWTtfUs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V6PVMxsfsPOtZQqjCPlqTWTtfUs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/V6PVMxsfsPOtZQqjCPlqTWTtfUs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V6PVMxsfsPOtZQqjCPlqTWTtfUs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="color: #111111; font-family: 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 15px;"&gt;especially when you print an email out, and you get an extra page with "please think about the environment before you print this..."&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #111111; font-family: 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;a href="http://media.economist.com/sites/all/themes/econfinal/images/the-economist-logo.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://media.economist.com/sites/all/themes/econfinal/images/the-economist-logo.gif" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #111111; font-family: 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 15px;"&gt;I wonder how much energy is waster by sending these extra bytes around the internet...&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.economist.com/node/18529895" rel="nofollow" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #01317e; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Spare us the e-mail yada-yada&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #4c4c4c; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 3px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline; width: 341px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;http://www.economist.com/node/18529895&lt;/span&gt;&lt;br /&gt;
“IF THIS e-mail is received in error, notify the sender immediately.” “This e-mail does not create an attorney-client relationship.” “Any tax advice in this e-mail is not intended to be used for the purpose of avoiding penalt...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-8795912592623678184?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/_3TeWNix9rs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/8795912592623678184/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=8795912592623678184" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/8795912592623678184?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/8795912592623678184?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/_3TeWNix9rs/print-before-reading.html" title="Print before reading" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/04/print-before-reading.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYERH0_fCp7ImA9WhZRGEo.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-88815673783956777</id><published>2011-04-15T14:11:00.000+01:00</published><updated>2011-04-15T14:11:45.344+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-15T14:11:45.344+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="quote" /><title>If it's complex it can't work until it's empty</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ODzl8AjZL0fBEd6zSZBE10ERwY8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ODzl8AjZL0fBEd6zSZBE10ERwY8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ODzl8AjZL0fBEd6zSZBE10ERwY8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ODzl8AjZL0fBEd6zSZBE10ERwY8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Amazing quote&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px; line-height: 22px;"&gt;An aside, what made all these things work so well is that they were empty inside. Almost skeletal. Hard to believe there isn't more to it. I asked one of my mentors how this could be and he said it&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; line-height: 22px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; line-height: 22px;"&gt;&lt;i&gt;has&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; line-height: 22px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; line-height: 22px;"&gt;to be that way. &lt;span class="Apple-style-span" style="background-color: yellow;"&gt;If it's complex it can't work until it's empty&lt;/span&gt;. These days we have another way to describe this, my friend and former colleague David Weinberger called it&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; line-height: 22px;"&gt;&lt;a href="http://www.smallpieces.com/"&gt;Small Pieces, Loosely Joined&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 16px; line-height: 22px;"&gt;. I've never heard a better description of the architecture of the Internet.&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://scripting.com/stories/2011/04/15/letsBuildANewInternetInAca.html#p6247"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;http://scripting.com/stories/2011/04/15/letsBuildANewInternetInAca.html#p6247&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;must be a line from blade runner...&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-88815673783956777?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/AFcxpdgyFe0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/88815673783956777/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=88815673783956777" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/88815673783956777?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/88815673783956777?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/AFcxpdgyFe0/if-its-complex-it-cant-work-until-its.html" title="If it's complex it can't work until it's empty" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/04/if-its-complex-it-cant-work-until-its.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYNRnwzcCp7ImA9WhZRGEg.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-7415974649126740130</id><published>2011-04-15T09:29:00.000+01:00</published><updated>2011-04-15T09:29:57.288+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-15T09:29:57.288+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="wars" /><category scheme="http://www.blogger.com/atom/ns#" term="fedora" /><category scheme="http://www.blogger.com/atom/ns#" term="postfix" /><title>Cloud Providers the new war: It Depends</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/C_qUiC_YsqBUi60pCvulraoqxOU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C_qUiC_YsqBUi60pCvulraoqxOU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/C_qUiC_YsqBUi60pCvulraoqxOU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C_qUiC_YsqBUi60pCvulraoqxOU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;span class="680295707-15042011"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Some  interesting reading about rackspace vs AWS in terms of  price/performance&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="680295707-15042011"&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://gasoftwareblog.com/home/2011/3/31/amazon-ec2-vs-rackspace-are-all-cloud-hosting-services-the-s.html" title="blocked::http://gasoftwareblog.com/home/2011/3/31/amazon-ec2-vs-rackspace-are-all-cloud-hosting-services-the-s.html"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;http://gasoftwareblog.com/home/2011/3/31/amazon-ec2-vs-rackspace-are-all-cloud-hosting-services-the-s.html&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://scripting.com/stories/2011/04/14/rackspaceBeatsEc2ByALot.html" title="blocked::http://scripting.com/stories/2011/04/14/rackspaceBeatsEc2ByALot.html"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;http://scripting.com/stories/2011/04/14/rackspaceBeatsEc2ByALot.html&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://news.ycombinator.com/item?id=2448812" title="blocked::http://news.ycombinator.com/item?id=2448812"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;http://news.ycombinator.com/item?id=2448812&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;reading the hacker news thread I can see that&amp;nbsp;beginning&amp;nbsp;of a new religion - which cloud provider do you use? its going to be one of those windows/linux, firefox/IE wars... and ultimately there no real way to say which one is best, as &lt;b&gt;it depends&lt;/b&gt; on what you need.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I moved my hosting from a dedicated server (windows) to a AWS micro instance (linux fedora). Its only been running for two weeks, but its only cost $10 compared to $50 - of course I had a physically dedicated machine before, but the micro instance seems happy enough running email (postfix). I'll write a post about setting it up later. So the cloud will save me $1000/year - not bad!&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-7415974649126740130?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/DpAJdvo0EHg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/7415974649126740130/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=7415974649126740130" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/7415974649126740130?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/7415974649126740130?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/DpAJdvo0EHg/cloud-providers-new-war-it-depends.html" title="Cloud Providers the new war: It Depends" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/04/cloud-providers-new-war-it-depends.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EAR3k-eSp7ImA9WhZRF0Q.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-6015252484310839833</id><published>2011-04-14T17:45:00.002+01:00</published><updated>2011-04-14T17:47:26.751+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-14T17:47:26.751+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="irony" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="ireland" /><title>Connected world irony</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iXJ961OenbttSU2Eys10ebML89I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iXJ961OenbttSU2Eys10ebML89I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iXJ961OenbttSU2Eys10ebML89I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iXJ961OenbttSU2Eys10ebML89I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Before the Internet individual computers were used to accomplish general tasks: such as word processing;&amp;nbsp;spreadsheets&amp;nbsp;etc.&lt;br /&gt;
&lt;br /&gt;
The Internet allowed computers to be massively interconnected, allowing a user to access many other computer's resources.&lt;br /&gt;
&lt;br /&gt;
Now the Cloud is moving these basic tasks to work on the Web, allowing users to work on their documents etc from any computer.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-lUYJx3jrI_s/Tackjr0Z7gI/AAAAAAAAARo/n28BixFUoPQ/s1600/global+network.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-lUYJx3jrI_s/Tackjr0Z7gI/AAAAAAAAARo/n28BixFUoPQ/s320/global+network.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://www.freedigitalphotos.net/images/view_photog.php?photogid=1152"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;Image: jscreationzs / FreeDigitalPhotos.net&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The irony of the Cloud is that an unconnected computer becomes useless, as all documents etc are in the cloud. &lt;b&gt;The advent of the cloud has turned a useful general purpose tool into a type-writer with no ribbon&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
This train of thought was caused my me being in Ireland, in the country side with no Internet access or mobile signal. Happily I was writing code (64bit assembly on Fedora), and I suddenly thought:&lt;br /&gt;
&lt;div style="text-align: right;"&gt;"&lt;i&gt;are programmers the only people have a use for a&amp;nbsp;disconnected&amp;nbsp;computer&amp;nbsp;any-more?&lt;/i&gt;"&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-6015252484310839833?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/PA9c5HOVQEI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/6015252484310839833/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=6015252484310839833" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/6015252484310839833?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/6015252484310839833?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/PA9c5HOVQEI/connected-world-irony.html" title="Connected world irony" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-lUYJx3jrI_s/Tackjr0Z7gI/AAAAAAAAARo/n28BixFUoPQ/s72-c/global+network.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/04/connected-world-irony.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAFSX09cSp7ImA9Wx9VGUw.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-5712791948098130079</id><published>2011-02-05T14:55:00.001Z</published><updated>2011-02-05T14:55:18.369Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-05T14:55:18.369Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="gadget" /><title>I'm backing this watch</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/H1ENy5kUPCEiFSp5pb0J1XUlp6g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/H1ENy5kUPCEiFSp5pb0J1XUlp6g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/H1ENy5kUPCEiFSp5pb0J1XUlp6g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/H1ENy5kUPCEiFSp5pb0J1XUlp6g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;p&gt;this seems so smart...&lt;br&gt;
http://kck.st/hyrZpz&lt;/p&gt;
&lt;br/&gt;&lt;img src='http://lh5.ggpht.com/_DEP-Cchblg0/TU1k1JGTLtI/AAAAAAAAAPk/4O4Gup7qPt8/KickStartersmall.full.png' /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-5712791948098130079?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/5VzwWb3upo8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/5712791948098130079/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=5712791948098130079" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/5712791948098130079?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/5712791948098130079?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/5VzwWb3upo8/i-backing-this-watch.html" title="I&amp;#39;m backing this watch" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_DEP-Cchblg0/TU1k1JGTLtI/AAAAAAAAAPk/4O4Gup7qPt8/s72-c/KickStartersmall.full.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/02/i-backing-this-watch.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8CRno6fCp7ImA9Wx9VGUw.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-888987611678801802</id><published>2011-02-05T14:49:00.001Z</published><updated>2011-02-05T14:57:47.414Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-05T14:57:47.414Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="blogger android" /><title>New blogger app for android</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9N-yog9A4R7Mb7o2wCo9GkcPYCs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9N-yog9A4R7Mb7o2wCo9GkcPYCs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9N-yog9A4R7Mb7o2wCo9GkcPYCs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9N-yog9A4R7Mb7o2wCo9GkcPYCs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;p&gt;my first post using my phone. The main limiting factor seems to be that insert picture does not allow a web address, which is a bit daft.&lt;/p&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-888987611678801802?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/KGgnDTBnw2U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/888987611678801802/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=888987611678801802" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/888987611678801802?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/888987611678801802?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/KGgnDTBnw2U/new-blogger-app-for-android.html" title="New blogger app for android" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/02/new-blogger-app-for-android.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cAR34_eSp7ImA9Wx9XFUQ.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-8182723713719848478</id><published>2011-01-09T17:30:00.001Z</published><updated>2011-01-09T17:44:06.041Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-09T17:44:06.041Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wtf" /><title>stating the  (un)obvious</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ovzos1_RZW53ZddtFJxFiDIWx1U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ovzos1_RZW53ZddtFJxFiDIWx1U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ovzos1_RZW53ZddtFJxFiDIWx1U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ovzos1_RZW53ZddtFJxFiDIWx1U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_DEP-Cchblg0/TSnuW33fwDI/AAAAAAAAANE/l47x1xgpOOY/s1600/2011-01-09+15.53.11.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="384" src="http://1.bp.blogspot.com/_DEP-Cchblg0/TSnuW33fwDI/AAAAAAAAANE/l47x1xgpOOY/s640/2011-01-09+15.53.11.jpg" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Red Gate&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-8182723713719848478?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/AHNBlB_z1rs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/8182723713719848478/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=8182723713719848478" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/8182723713719848478?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/8182723713719848478?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/AHNBlB_z1rs/stating-unobvious.html" title="stating the  (un)obvious" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_DEP-Cchblg0/TSnuW33fwDI/AAAAAAAAANE/l47x1xgpOOY/s72-c/2011-01-09+15.53.11.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2011/01/stating-unobvious.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYAQnczfip7ImA9Wx9SFkk.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-4686444415635575388</id><published>2010-12-06T12:55:00.000Z</published><updated>2010-12-06T12:55:43.986Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-06T12:55:43.986Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Language" /><title>Learning some more languages...</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zfrYKUetQpV2h887JEaMRK1LCH8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zfrYKUetQpV2h887JEaMRK1LCH8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zfrYKUetQpV2h887JEaMRK1LCH8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zfrYKUetQpV2h887JEaMRK1LCH8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;going to try this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://draft.blogger.com/goog_1459053185"&gt;&lt;img border="0" src="http://ecx.images-amazon.com/images/I/51C%2BJGTYWbL._SL160_.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://www.amazon.co.uk/gp/product/193435659X?ie=UTF8&amp;amp;tag=figmengi-21&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=19450&amp;amp;creativeASIN=193435659X"&gt;Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (Pragmatic Programmers)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-4686444415635575388?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/_HPTDJzBOfA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/4686444415635575388/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=4686444415635575388" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/4686444415635575388?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/4686444415635575388?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/_HPTDJzBOfA/learning-some-more-languages.html" title="Learning some more languages..." /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2010/12/learning-some-more-languages.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AHQH87cSp7ImA9Wx9SFk4.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-6106805800288345291</id><published>2010-12-06T12:45:00.002Z</published><updated>2010-12-06T12:48:51.109Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-06T12:48:51.109Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="unfanboy" /><title>Bog Standard</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/k8A5g-MsRCbtKCO3WmoDRCCd-Ck/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/k8A5g-MsRCbtKCO3WmoDRCCd-Ck/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/k8A5g-MsRCbtKCO3WmoDRCCd-Ck/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/k8A5g-MsRCbtKCO3WmoDRCCd-Ck/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;I've been having a rethink about my core skills recently - looking at my resume/CV I see that I have spent a long time in the windows camp (10 years+).&lt;br /&gt;
&lt;br /&gt;
So I've decided to jump to the Unix (Linux) camp again for a while.&lt;br /&gt;
&lt;br /&gt;
Why?&lt;br /&gt;
&lt;br /&gt;
My main reason is that I don't buy the proprietary platform story anymore - I don't see enough value add. I'm not happy with the constraints, and the monolithic nature of the solution space.&lt;br /&gt;
&lt;br /&gt;
But more than anything, I don't like being on one side of the fence - I don't want to be limited by a particular view point, or a fan boy for linux or windows.&lt;br /&gt;
&lt;br /&gt;
So I'm moving from:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Windows 7 to &lt;a href="http://draft.blogger.com/"&gt;Fedora 14&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;C# to C++, especially &lt;a href="http://draft.blogger.com/"&gt;C++0x&lt;/a&gt;&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;or Node.js &lt;/li&gt;
&lt;li&gt;or anything that looks interesting&lt;/li&gt;
&lt;li&gt;and maybe something like ruby &lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Silverlight to &lt;a href="http://html5.org/"&gt;HTML 5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;I want to be more standards based, and less proprietary, hence &lt;a href="http://draft.blogger.com/"&gt;bog standard&lt;/a&gt;..&lt;br /&gt;
&lt;br /&gt;
Its been a while since I did anything on Unix, so I expect it will be painful, but as I type this in firefox running under fedora I feel I'm investing in my &lt;a href="http://pragprog.com/the-pragmatic-programmer/extracts/tips"&gt;knowledge portfolio&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-6106805800288345291?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/EKRdEq-uUZg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/6106805800288345291/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=6106805800288345291" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/6106805800288345291?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/6106805800288345291?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/EKRdEq-uUZg/bog-standard.html" title="Bog Standard" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2010/12/bog-standard.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcMQXc9eyp7ImA9Wx5XFks.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-5248015144358071692</id><published>2010-09-16T20:41:00.000+01:00</published><updated>2010-09-16T20:41:20.963+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-16T20:41:20.963+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="feynman" /><title>Surely You Must Be Listening to Mr. Feynman!</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Erv_s_DJFv_NpmI1ijjf5rrYRXM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Erv_s_DJFv_NpmI1ijjf5rrYRXM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Erv_s_DJFv_NpmI1ijjf5rrYRXM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Erv_s_DJFv_NpmI1ijjf5rrYRXM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;OMG - Can't wait....&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;a href="https://www.bbc.co.uk/programmes/b00ts5mm"&gt;The Feynman Variations&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
if you can't then watch:&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;a href="http://www.bbc.co.uk/sn/tvradio/programmes/horizon/broadband/archive/feynman/"&gt;BBC Archive &amp;gt; Richard Feynman &lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.flickr.com/photos/maitri/1444965179/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" qx="true" src="http://farm2.static.flickr.com/1392/1444965179_1faea4770f.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-5248015144358071692?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/zykulEm742o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/5248015144358071692/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=5248015144358071692" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/5248015144358071692?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/5248015144358071692?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/zykulEm742o/surely-you-must-be-listening-to-mr.html" title="Surely You Must Be Listening to Mr. Feynman!" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm2.static.flickr.com/1392/1444965179_1faea4770f_t.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2010/09/surely-you-must-be-listening-to-mr.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcHRH05eyp7ImA9Wx5SGU0.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-7740529687479739109</id><published>2010-08-15T17:01:00.004+01:00</published><updated>2010-08-15T20:53:55.323+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-15T20:53:55.323+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="devops" /><category scheme="http://www.blogger.com/atom/ns#" term="ci" /><category scheme="http://www.blogger.com/atom/ns#" term="agile" /><category scheme="http://www.blogger.com/atom/ns#" term="maturity" /><category scheme="http://www.blogger.com/atom/ns#" term="pcmosd" /><title>The Pragmatic Capability Model Of Software Delivery (PCM-OSD)</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/H-fxYVtONdWVGn_VmhUmIVYud-o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/H-fxYVtONdWVGn_VmhUmIVYud-o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/H-fxYVtONdWVGn_VmhUmIVYud-o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/H-fxYVtONdWVGn_VmhUmIVYud-o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;The “Agile” vs “Formal” delivery discussion is well underway – with many interesting posts on the subject (such as &lt;a href="http://theagileexecutive.com/2010/02/19/the-agile-flywheel/"&gt;The Agile Flywheel&lt;/a&gt;). &lt;br /&gt;
&lt;div&gt;I was interested in this discussion because I needed to answer the question:&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;em&gt;“How good are we at delivering software products?”&lt;/em&gt;&lt;/div&gt;The reason for asking the question was a “platform” that we had created, a platform in the sense that other teams were expected to build applications on top of it. If we were expecting other teams to build on top of it we needed to ensure that it was “good quality”, that it would provide a firm foundation for their work. Also as it was a platform with many teams using a shared infrastructure, applications built on top of the platform had to be of “good quality” as well, otherwise they would degrade the platform for others.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;Of course it’s hard to quantitatively define “good quality”, we can all recognised a good product like, but it’s harder to quantify all the attributes and processes that go into making a good product. It’s even harder to definitively show that a particular product is good enough against the nebulous label of “good quality”.&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;Unfortunately that’s exactly what we needed to do.&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style="color: #741b47; font-size: large;"&gt;Creating a model&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;The approach taken was to create a model that captured the definition of “good quality”, which turns out to be a measure of how well a particular team delivers software products.&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;There are many metrics to measure individual activities, but what was needed was a holistic cross-functional measure – something that could cover the following areas:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Development&lt;/strong&gt;: how we work with code&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Building&lt;/strong&gt;: how we turn code into deployable artefacts&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deploying&lt;/strong&gt;: how we deploy into environments&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testing&lt;/strong&gt;: how do we ensure that the deployment is good&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reporting&lt;/strong&gt;: how we drive transparency (for quality)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Support&lt;/strong&gt;: how we manage incidents and requests&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Product Management&lt;/strong&gt;: how we understand &amp;amp; communicate the product needs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Architecture&lt;/strong&gt;: how we manage our technical direction&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operations&lt;/strong&gt;: how we manage the run-time environments&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div&gt;Ultimately the model could have been created using different functional areas (for example we did not include Operations in this version), and the expectations are just opinion. The model presented here is easy to change and should be adaptable by others, for example tweaking to match local concerns.&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;The model is a mash-up of Agile &amp;amp; Formal product delivery views:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Agile: how to do software development, &lt;a href="http://en.wikipedia.org/wiki/Scrum_(development)"&gt;Scrum&lt;/a&gt; focuses within that on how to project manage and handle requirements, &lt;a href="http://en.wikipedia.org/wiki/DevOps"&gt;DevOps&lt;/a&gt; looks at the deployment and infrastructure aspects.&lt;/li&gt;
&lt;li&gt;Formal: &lt;a href="http://en.wikipedia.org/wiki/CMMI"&gt;CMMI&lt;/a&gt; (Capability Maturity Model Integration) and &lt;a href="http://en.wikipedia.org/wiki/ITIL"&gt;ITIL&lt;/a&gt; (Information Technology Infrastructure Library) look at process improvement and IT Management.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div&gt;Our model takes the “Maturity” concept from the formal stream, and a “Pragmatic Capability” from the agile stream. We did not want a model that was about a team’s ability to improve (e.g. continuous improvement), we wanted a snapshot of the capability of the team in a functional area. It was also heavily informed by the work we were doing with Thought Works on testing&amp;nbsp;and &lt;a href="http://en.wikipedia.org/wiki/Continuous_integration"&gt;CI&lt;/a&gt;, and by the highly recommended urban{code}’s anthillpro whitepaper:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.anthillpro.com/html/resources/white-papers/view.html?id=1214"&gt;Enterprise Continuous Integration Maturity Model&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div&gt;Combining these concepts and streams together gives us the “Pragmatic Capability Model Of Software Delivery” (PCM-OSD).&lt;/div&gt;&lt;div&gt;&lt;span style="color: #741b47; font-size: large;"&gt;The implementation&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;The model was implemented in Excel and consists of the a spreadsheet with three tabs:&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_DEP-Cchblg0/TGgA4qTB9TI/AAAAAAAAALI/lsGMExLr0So/s1600/pcmosd1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="384" ox="true" src="http://4.bp.blogspot.com/_DEP-Cchblg0/TGgA4qTB9TI/AAAAAAAAALI/lsGMExLr0So/s640/pcmosd1.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Model Definition &amp;amp; Product Preview&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;This first worksheet “Model” defines the model (in terms of functional areas and attributes) and allows you to select a particular project and see what the maturity results are for each attribute in the functional areas. The Project Rating ranges from “F” to “A++”, this stops us trying to present precise % which would probably cause more arguments (an idea taken from thought works)&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_DEP-Cchblg0/TGgBklLpcJI/AAAAAAAAALM/BQ2M3tlpbiY/s1600/pcmosd2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="412" ox="true" src="http://3.bp.blogspot.com/_DEP-Cchblg0/TGgBklLpcJI/AAAAAAAAALM/BQ2M3tlpbiY/s640/pcmosd2.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Assement data collection&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;The second worksheet “Projects” is used to collect the data from the maturity assessment. Each Project has a column that the data can be collected against, the list of projects at the top drives the drop-down on the “Model” worksheet.&lt;/div&gt;The calculation is very simple, each attribute is given a score of 0-5, and the % maturity for the functional area is calculated by adding all the attribute scores up and taking that as a % of the maximum score possible for that area. Note this calculation is therefore very dependent on how many attributes are in each area, and how you group into functional areas. Finally these % are mapped to a rating (F to A++)&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_DEP-Cchblg0/TGgCEjSswII/AAAAAAAAALQ/2XNKjz4zQdk/s1600/pcmosd3.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="330" ox="true" src="http://1.bp.blogspot.com/_DEP-Cchblg0/TGgCEjSswII/AAAAAAAAALQ/2XNKjz4zQdk/s640/pcmosd3.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Reporting – benchmark projects&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;The final worksheet “Reports” is used to visualize the results. We used the Radar chart (a type of polar chart) to visualize the data.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color: #741b47; font-size: large;"&gt;Applying the model&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;In order to use it for our projects we created two benchmarks:&lt;/div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;A “baseline” project, that assumes the lowest level of maturity that is acceptable&lt;/li&gt;
&lt;li&gt;A “Agile Platform” project, that assumes good practice, not not to the “insane level” (see anthillpro’s whitepaper)&lt;/li&gt;
&lt;/ul&gt;By creating these two benchmarks we can show our projects relatively by overlaying them:&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_DEP-Cchblg0/TGgC9MN3RPI/AAAAAAAAALU/-M56M3DJkeU/s1600/pcmosd4.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="380" ox="true" src="http://4.bp.blogspot.com/_DEP-Cchblg0/TGgC9MN3RPI/AAAAAAAAALU/-M56M3DJkeU/s640/pcmosd4.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Visualization of Maturity: Our platform before any improvement work&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;This first shows how our platform looked before we tried to improve it – the red peeking though shows us areas we have concerns that need addressing.&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_DEP-Cchblg0/TGgDU2248HI/AAAAAAAAALY/fdjbRphk_9k/s1600/pcmosd5.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="446" ox="true" src="http://4.bp.blogspot.com/_DEP-Cchblg0/TGgDU2248HI/AAAAAAAAALY/fdjbRphk_9k/s640/pcmosd5.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Visualization of Maturity: the platform after targeted improvement&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;And this diagram shows how our project looked after we improved our practices, no more red shows so have reached a base level of maturity, and we have made substantial steps towards become an “agile platform”.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color: #741b47; font-size: large;"&gt;Assessment process&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: left;"&gt;We carried out this assessment on a 10 projects, and the diagrams produced coincided with our intuition of the teams maturity. We carried out the assessments by interviewing the technical leads on the projects (about one hour), and the information can be used to allow us to identify future training needs and capital expenditure.&lt;a href="http://3.bp.blogspot.com/_DEP-Cchblg0/TGgDtlQJA9I/AAAAAAAAALc/jds1TkRI_Ds/s1600/pcmosd6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="308" ox="true" src="http://3.bp.blogspot.com/_DEP-Cchblg0/TGgDtlQJA9I/AAAAAAAAALc/jds1TkRI_Ds/s640/pcmosd6.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;During the assessment process the focus was on ensuring the teams understood the purpose of the process, and our preference to give a lower score for an attribute rather than over estimate the maturity of a team. For attributes that were not applicable to a particular team (for example internal facing only teams) the approach was to give a 5 for the maturity rather than penalize due to non-applicability. For the teams the opportunity to identify training opportunities, mentoring or improved working was the main benefit. In the future a quarterly review might allow teams to see where they should target their continuous improvement efforts.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color: #741b47; font-size: large;"&gt;Our opinionated model&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;The model is based on our views of what’s important, and the maturity levels defined by our views. Applying this model unchanged is arguable, so its worth understanding our reasoning behind the attributes, so they can be changed to match your views.&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;The model is documented in the same structure of the Excel Workbook, in terms of Areas with Attributes, each which has a description/benefit statement (what benefit you see from increasing this attribute)&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Development&lt;/strong&gt;: how we work with code &lt;/li&gt;

&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Check in frequency&lt;/strong&gt;: as you move to a CI process the frequency of check in drives how quickly problems are found. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Behaviour&lt;/strong&gt;: how responsible do developers act about ensuring the code is good, follows the broken window theory&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Int. Documentation&lt;/strong&gt;: what kind of documentation is available internally – not quantity, more quality. Preferably automated and easy to maintain.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ext. Documentation&lt;/strong&gt;: what kind of documentation is available internally – not quantity, more quality&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Feedback loop&lt;/strong&gt;: how long before a developer gets feedback on the quality implementation for a user story. This reflects the efficiency of tools, process and project. For example having too many dependencies may make build time too long. This feedback must have value - so tests and environments like live.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code Management&lt;/strong&gt;: coping with the need for multiple developers to work on the same code at the same time, using source control effectively allows parallelism and root cause tracking.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source control&lt;/strong&gt;: how do we use source control, making source control the start of an quality process rather than just a repository.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;Building&lt;/strong&gt;: how we turn code into deployable artefacts&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Build&lt;/strong&gt;: how easy is it to create a new build, making this quick and painless reduces friction to introducing CI and other automated tools&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Binaries&lt;/strong&gt;: how to manage the output of a build, is it versioned and tracked – and do we test the same artefact through all environments up to production&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuration&lt;/strong&gt;: often ignored it can turn a well designed system into an un-deployable mess, ultimately should be automated and by convention over config as much as possible&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;Deploying&lt;/strong&gt;: how we deploy into environments &lt;/li&gt;

&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Deployment&lt;/strong&gt;: how we make a release live, making this painless and automated reduces friction to testing and rapid evolution&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resource&lt;/strong&gt;: what skills are needed to deploy, having special skills constraints becomes a blocker, ultimately it should be the final output of CI&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Database&lt;/strong&gt;: repositories and databases need to be deployable as easily as the application&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Environment&lt;/strong&gt;: having well defined standard environments with automation allows for creation of test environments and additional live capacity automatically&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;Testing&lt;/strong&gt;: how do we ensure that the deployment is good&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Code Quality&lt;/strong&gt;: how do we ensure that code is good, pair programming and automated tools help, and toxicity reports can drive technical debt reduction and help in adjusting estimates for changing code in toxic areas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manual test&lt;/strong&gt;: how is manual testing carried out, having some targeted smoke/sanity tests can quickly discover defects, user confirmations for stories allows dev to tests themselves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unit test&lt;/strong&gt;: how do we do unit testing, using TDD improves the design, and increased coverage improves the ability to detect regressions earlier –whilst there is no defined lower limited for coverage, 60% seems to be a reasonable target for most teams. This should be higher for critical systems (and platform).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Acceptance test&lt;/strong&gt;: how are acceptance tests carried out, these normally start out manual, but moving to automation allows cheaper tests cycles, and frees up testers to do targeted manual tests&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Performance&lt;/strong&gt;: often left until after a release causes performance issues (loss in revenue or increased costs), doing it earlier is cheaper (than fixing after) and can be ROI based (&lt;a href="http://www.phpied.com/the-performance-business-pitch/"&gt;http://www.phpied.com/the-performance-business-pitch/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security&lt;/strong&gt;: testing the security of the application can be automated to detect the main problem areas (&lt;a href="http://www.owasp.org/index.php/Top_10"&gt;OWASP top 10&lt;/a&gt;), and ultimately ovoid creating weaknesses in the first place.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automation&lt;/strong&gt;: moving from highly skilled resources running low-value manual processes, to automating as much as possible and targeting manual work where is leverages skill sets most&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;Reporting&lt;/strong&gt;: how we drive transparency (for quality)&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Visibility&lt;/strong&gt;: increasing transparency drives the team to higher quality, and allows cross project comparison &amp;amp; learning&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traceability&lt;/strong&gt;: being able to track why change occur, from end user feature to code, config and environment changes allows quicker fixing and trend detection&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integration&lt;/strong&gt;: how well integrated is information sharing within the project team, is there one information repository or unconnected datasets (bugs not related to builds for example)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Defects&lt;/strong&gt;: how defects are tracked and related to changes in the system enables better investigation and reporting&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;Support&lt;/strong&gt;: how we manage incidents and requests&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Support process&lt;/strong&gt; &lt;strong&gt;definition&lt;/strong&gt;: do we have a defined process for managing a incident, is it reviewed for effectiveness?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Support structure&lt;/strong&gt;: what resource is allocated to providing support, having designated support reduces interrupting people unnecessarily &amp;amp; increases velocity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Triage&lt;/strong&gt;: how do we decide the priority to assign problems, and the resolution time. Ensuring that there is agreement to priorities across the whole team (especially with the business) ensure focus on what matters.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Self-service support&lt;/strong&gt;: how do external teams/users get support for themselves (forums/wiki), can the community improve the knowledge base&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Support SLA&lt;/strong&gt;: do we have publicised goals, do we have processes for managing exceptions and ensuring we monitor compliance&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;Product Management&lt;/strong&gt;: understanding &amp;amp; communicate the product needs&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Vision&lt;/strong&gt;: understanding the direction of the product and aligning with technology changes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Requirements&lt;/strong&gt;: gathering new features and change requests, communicating stories in an actionable and testable way, prioritising by value. Better quality stories reduce confusion and increase velocity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documentation&lt;/strong&gt;: gather and report in a consistent way, understand all the documents other roles create (dev &amp;amp; arch esp.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Communications&lt;/strong&gt;: communicating to internal &amp;amp; extern teams and customers. Is everyone aware of the product vision and changes etc&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Co-Ordination&lt;/strong&gt;: how does product management integrate with dev, architecture and project management office – is it aligned, reducing confusion and arguments between the different functions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Delivery&lt;/strong&gt;: moving from ad hoc delivery to repeatable delivery with selection of stories into releases rather than holding up releases for stories&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;Architecture&lt;/strong&gt;: how we manage our technical direction&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Documentation (A)&lt;/strong&gt;: ensuring we have light-weight documentation and diagrams that aid continual product evolution&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Technical Debt management&lt;/strong&gt;: keeping track of decisions that reduce velocity or options for future delivery, proactive planning to remove over time&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Technical Risk management&lt;/strong&gt;: keeping track of technical risks to the project in the existing solution, understand and communicate the impact of risks and costs to fix them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vision (A)&lt;/strong&gt;: understanding to technology vision for the product, aligning it with the product road map&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;Operations&lt;/strong&gt;: how we manage the run-time environments&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;this area was exclude from our model as we are still working out the details of the attributes that would best capture capability levels&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;span style="color: #741b47; font-size: large;"&gt;Next steps&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;The next phase is to complete the assessments for all the teams, and see what proactive action we can take to improve each team. Reports that are worth considering:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;tracking the change in a team over time,&lt;/li&gt;
&lt;li&gt;understanding the gaps in external supplier teams,&lt;/li&gt;
&lt;li&gt;and looking at a set of teams in aggregate to find repeating patterns..&lt;/li&gt;
&lt;/ul&gt;One of the unsurprising findings from the process is that is a lot easier to introduce best practice at the start of a project, and this model allows the make and processes of a team to be tuned before starting. It would be interesting to see what others think of this approach, where they think there are weaknesses, and if they try to apply it any issues or changes they made.&lt;br /&gt;
&lt;br /&gt;
The latest version of the &lt;a href="http://www.figmentengine.com/pcmosd/PCM-OSD%20v1.2.xlsx"&gt;Pragmatic Capability Model Of Software Delivery spreadsheet&lt;/a&gt; uses generated data (RANDBETWEEN function), just replace this with your values.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-7740529687479739109?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/cprhTaI5yjs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/7740529687479739109/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=7740529687479739109" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/7740529687479739109?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/7740529687479739109?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/cprhTaI5yjs/pragmatic-capability-model-of-software.html" title="The Pragmatic Capability Model Of Software Delivery (PCM-OSD)" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_DEP-Cchblg0/TGgA4qTB9TI/AAAAAAAAALI/lsGMExLr0So/s72-c/pcmosd1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2010/08/pragmatic-capability-model-of-software.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMDQ3o5fCp7ImA9WxFaEk8.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-7453978492259610039</id><published>2010-07-15T22:14:00.000+01:00</published><updated>2010-07-15T22:14:32.424+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-15T22:14:32.424+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="performance" /><category scheme="http://www.blogger.com/atom/ns#" term="devops" /><title>Web Performance &amp; Dev Ops</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3z6IlYtz9cC02V21_JBfs2ED_8Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3z6IlYtz9cC02V21_JBfs2ED_8Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3z6IlYtz9cC02V21_JBfs2ED_8Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3z6IlYtz9cC02V21_JBfs2ED_8Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;A&amp;nbsp;few links that are relevant to web performance, how to improve it and its effect on the bottom line:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.webperformancetoday.com/2010/06/15/everything-you-wanted-to-know-about-web-performance/"&gt;Cheat Sheet: Everything you wanted to know about web performance but were afraid to ask&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.phpied.com/the-performance-business-pitch/"&gt;The performance business pitch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stevesouders.com/hpws/rules.php"&gt;14 Rules for Faster-Loading Web Sites&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.watchingwebsites.com/archives/proof-that-speeding-up-websites-improves-online-business"&gt;Proof that speeding up websites improves online business&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;And a book that has some good hints on rethinking the approach to building scalable architectecure for the web:&lt;br /&gt;
&lt;a href="http://www.amazon.co.uk/gp/product/067232699X?ie=UTF8&amp;amp;tag=figmengi-21&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=19450&amp;amp;creativeASIN=067232699X"&gt;Scalable Internet Architectures (Developer's Library)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.amazon.co.uk/gp/product/067232699X?ie=UTF8&amp;amp;tag=figmengi-21&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=19450&amp;amp;creativeASIN=067232699X" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" rw="true" src="http://ecx.images-amazon.com/images/I/51ZFYH5mqlL._SL160_.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="left" class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;Well worth looking into &lt;a href="http://en.wikipedia.org/wiki/DevOps"&gt;Dev Ops&lt;/a&gt;&amp;nbsp;as well&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-7453978492259610039?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/hP4pWmfThfw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/7453978492259610039/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=7453978492259610039" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/7453978492259610039?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/7453978492259610039?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/hP4pWmfThfw/web-performance-dev-ops.html" title="Web Performance &amp; Dev Ops" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.figmentengine.com/2010/07/web-performance-dev-ops.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EEQH48fSp7ImA9WxFbFU0.&quot;"><id>tag:blogger.com,1999:blog-2851998125830919828.post-6517588651347165489</id><published>2010-07-07T13:23:00.001+01:00</published><updated>2010-07-07T13:26:41.075+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-07T13:26:41.075+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="agile" /><category scheme="http://www.blogger.com/atom/ns#" term="book review" /><title>Growing Object-Oriented Software Guided by Tests</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RMQ5j-DMDIXwvAjHJmEI7dTNSU0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RMQ5j-DMDIXwvAjHJmEI7dTNSU0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RMQ5j-DMDIXwvAjHJmEI7dTNSU0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RMQ5j-DMDIXwvAjHJmEI7dTNSU0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;I've just finished reading &lt;a href="http://www.amazon.co.uk/gp/product/0321503627?ie=UTF8&amp;amp;tag=figmengi-21&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=19450&amp;amp;creativeASIN=0321503627"&gt;Growing Object-Oriented Software, Guided by Tests (Beck Signature)&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.co.uk/e/ir?t=figmengi-21&amp;amp;l=as2&amp;amp;o=2&amp;amp;a=0321503627" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px;" width="1" /&gt;&amp;nbsp;it is without doubt a very good book (I'd go so far to say the best book I have read this year).&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;&lt;a href="http://www.amazon.co.uk/gp/product/0321503627?ie=UTF8&amp;amp;tag=figmengi-21&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=19450&amp;amp;creativeASIN=0321503627"&gt;&lt;img alt="Book cover: Growing Object-Oriented Software, Guided by Tests " border="0" src="http://ecx.images-amazon.com/images/I/51VI2SgJRwL._BO2,204,203,200_PI,35,-76_AA300_SH20_OU02_.jpg" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Understanding how to&amp;nbsp;do agile development well is not something you learn and then are finished with, it is something that you can always do better...&lt;br /&gt;
&lt;br /&gt;
The first part of the book is about the fundamentals, and the rest is then applying to an example project. This involves creating user stories, the high level architecture and writing the acceptance, unit test and finally the functioning code - all at one vertical slice at a time. By this I mean that they show how you can evolve the architecture and code during the development process - something that is hard to understand without a worked example.&lt;br /&gt;
&lt;br /&gt;
Going back over the fundamentals, with the clarity of these authors really taught me a lot. And the example allowed you to see what thay mean. The book is short and the diagrams nicely done - well recommend this one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2851998125830919828-6517588651347165489?l=blog.figmentengine.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/figmentengine/pqxP/~4/COoKTPgy21g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.figmentengine.com/feeds/6517588651347165489/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2851998125830919828&amp;postID=6517588651347165489" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/6517588651347165489?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2851998125830919828/posts/default/6517588651347165489?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/figmentengine/pqxP/~3/COoKTPgy21g/growing-object-oriented-software-guided.html" title="Growing Object-Oriented Software Guided by Tests" /><author><name>fe</name><uri>http://www.blogger.com/profile/10497505263673073471</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_DEP-Cchblg0/SLarWWLZHQI/AAAAAAAAAAg/ckPH4xM-oL8/s1600-R/02dsb2jhbc9fcarcbxwagafel3rpbguvmc8yodaymqaaaaaaaad8soud.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://blog.figmentengine.com/2010/07/growing-object-oriented-software-guided.html</feedburner:origLink></entry></feed>

