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

<channel>
	<title>Binary Orders of Magnitude &#187; Sergey Chernyshev</title>
	<atom:link href="http://www.sergeychernyshev.com/blog/author/sergeychernyshev/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sergeychernyshev.com/blog</link>
	<description>Sergey Chernyshev's blog about projects and web in general.</description>
	<lastBuildDate>Thu, 09 Sep 2010 04:34:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=3.0-alpha</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Performance as competitive advantage</title>
		<link>http://www.sergeychernyshev.com/blog/performance-as-competitive-advantage/</link>
		<comments>http://www.sergeychernyshev.com/blog/performance-as-competitive-advantage/#comments</comments>
		<pubDate>Thu, 09 Sep 2010 04:28:00 +0000</pubDate>
		<dc:creator>Sergey Chernyshev</dc:creator>
				<category><![CDATA[Web Performance]]></category>

		<guid isPermaLink="false">http://www.sergeychernyshev.com/blog/?p=1046</guid>
		<description><![CDATA[Sometimes it&#8217;s hard to quantify the benefits of performance improvements. Many tools try to show you data and many rule-based tests and best practices exist to describe the goals, but there is still no clear connection in business people&#8217;s heads between particular site&#8217;s performance and savings or profits that performance optimization projects will bring.
As part [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes it&#8217;s hard to quantify the benefits of performance improvements. Many tools try to show you data and many rule-based tests and best practices exist to describe the goals, but there is still no clear connection in business people&#8217;s heads between particular site&#8217;s performance and savings or profits that performance optimization projects will bring.</p>
<p>As part of <a href="http://www.showslow.com/">ShowSlow</a> project I&#8217;m working on making it easier to get the technical answers, but my experience with real world web development projects and Web Performance Meetups movement is showing that business answer is often more important then technology answer here as ultimate requirements of performance are not technical (like in scalability, for example), but psychological.</p>
<p>But I&#8217;d like to look at this business problem from a new perspective that is different from traditional tweaking / improvements / benefit approach. I think that speed of interaction is such an essential product quality that by breaking traditional web performance barriers companies can create fundamentally new products and make completely new things possible in the cloud-based web application space.</p>
<p>Of course I&#8217;m talking about today&#8217;s <a href="http://googleblog.blogspot.com/2010/09/search-now-faster-than-speed-of-type.html">Google Instant</a> announcement. New user experience they introduced completely breaks traditional search paradigm similar to how AdWords broke advertising paradigm. More over, achieving this technical goal and building the system of this complexity is extremely hard, but this is exactly what makes it easier for them to keep competition at bay.</p>
<p>Google is not the first company to bake web performance into a new product. Facebook before them created new experience with their activity feed pages using various innovative technologies like <a href="http://www.facebook.com/notes/facebook-engineering/bigpipe-pipelining-web-pages-for-high-performance/389414033919">BigPipe</a> and <a href="http://wiki.github.com/facebook/hiphop-php/">HipHop</a>, for example. Incredible statistics that brought them to the leading positions on the charts of the web heavily depend on ability to deliver next level of quality for their social product. Both Facebook and Google, invested in many backend and front end technologies that improve web performance and that allows them to keep unprecedented levels of user engagement.</p>
<p>It is great to see that competition between the two giants is moving web performance to the next level!</p>
<p>Again, competitive advantage cab be built by close attention to web application performance as well as new kind of products that would be impossible to develop with common latency levels and speed of interaction. To get to next levels of usability and to provide new experiences, companies must embrace web performance as a critical element in their product development.</p>
<p>What do you think? How can other big companies on the web change their products using high performance and get ahead of competition? Can you do that at your company?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sergeychernyshev.com/blog/performance-as-competitive-advantage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Philip Tellis at NY Web Performance, September 15</title>
		<link>http://www.sergeychernyshev.com/blog/philip-tellis-at-ny-web-performance-september-15/</link>
		<comments>http://www.sergeychernyshev.com/blog/philip-tellis-at-ny-web-performance-september-15/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 15:44:36 +0000</pubDate>
		<dc:creator>Sergey Chernyshev</dc:creator>
				<category><![CDATA[Meetup]]></category>
		<category><![CDATA[Web Performance]]></category>

		<guid isPermaLink="false">http://www.sergeychernyshev.com/blog/?p=1025</guid>
		<description><![CDATA[Summer is over, we&#8217;re all vacation-recharged and it&#8217;s time for some serious Web Performance! Come out of your sleepy summer mood and join us for next New York Web Performance session.
September 15 at 5:45PM (time is updated) at Logicworks:
RSVP here: http://www.meetup.com/Web-Performance-NY/calendar/14568561/
Philip Tellis (@bluesmoon) will be speaking at New York Web Performance group about Boomerang!
Philip is [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.meetup.com/Web-Performance-NY/calendar/14568561/"><img style="float: right; margin-left: 1em; border: 0;" title="Guest speaker Philip Tellis talks about Boomerang at New York Web Performance Group" src="http://www.sergeychernyshev.com/blog/wp-content/uploads/2010/01/nywebperf_logo.png" alt="New York Web Performance Group Logo" width="150" height="99" /></a>Summer is over, we&#8217;re all vacation-recharged and it&#8217;s time for some serious Web Performance! Come out of your sleepy summer mood and join us for next <strong>New York Web Performance</strong> session.</p>
<p><strong>September 15 at 5:45PM (time is updated)</strong> at Logicworks:</p>
<blockquote><p>RSVP here: <a href="http://www.meetup.com/Web-Performance-NY/calendar/14568561/">http://www.meetup.com/Web-Performance-NY/calendar/14568561/</a></p></blockquote>
<p><a href="http://bluesmoon.info/">Philip Tellis</a> (<a href="http://twitter.com/bluesmoon">@bluesmoon</a>) will be speaking at New York Web Performance group about Boomerang!</p>
<p>Philip is a self described geek working for Yahoo! who recently presented Latency: <a href="http://en.oreilly.com/velocity2010/public/schedule/detail/13031">Why You Should Worry and What You Can Do About It</a> (<a href="http://www.youtube.com/watch?v=xVkyDbC2r0s">video</a>) at Velocity 2010.</p>
<p>His accomplishments include, but not limited to: </p>
<ul>
<li>Member of the <a href="http://developer.yahoo.com/performance/">Yahoo! Exceptional Performance Group</a> and <a href="http://security.yahoo.com/">Yahoo! Security Group</a></li>
<li>Creator of open source application <a href="http://yahoo.github.com/boomerang/doc/">Boomerang</a> (a RUM javascript beacon)</li>
<li>Author of the <a href="http://tech.bluesmoon.info/search/label/4.01-strict">4.01 Strict</a> web comic</li>
</ul>
<p><strong>Topic:</strong><br />
Philip will be presenting his new open source project Boomerang.js. Why it was written, how to implement it, and what can be done with the data.</p>
<p>For a little background on Boomerang.js:<br />
Boomerang is a piece of JavaScript that you add to your web pages, where it measures the performance of your website from your end user&#8217;s point of view. It has the ability to send this data back to your server for further analysis. With boomerang, you find out exactly how fast your users think your site is.<</p>
<p>This is an excellent example of RUM (real user monitoring) that allows sites to effectively and actively measure real page performance for their actual users as they see it.</p>
<p>Boomerang is open source and released under the BSD license.</p>
<p><strong>Agenda: (time is updated)</strong><br />
5:45 &#8211; arrive to the event, meet other members<br />
6:00 &#8211; Introductions &#038; Boomerang presentation by Philip Tellis<br />
6:45 &#8211; Q&#038;A<br />
7:00 &#8211; Open Discussion, Networking</p>
<p><strong>Location:</strong><br />
LogicWorks<br />
<a href="http://bit.ly/cK9cQx">155 Avenue of the Americas<br />
Fifth Floor<br />
New York, NY 10013</a></p>
<p>Directions: <a href="http://bit.ly/cK9cQx">http://bit.ly/cK9cQx</a><br />
Entrance View: <a href="http://bit.ly/a4DwrM">http://bit.ly/a4DwrM</a></p>
<p>See you all there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sergeychernyshev.com/blog/philip-tellis-at-ny-web-performance-september-15/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drop-in .htaccess is now on Github. Go fork it!</title>
		<link>http://www.sergeychernyshev.com/blog/drop-in-htaccess-is-now-on-github-go-fork-it/</link>
		<comments>http://www.sergeychernyshev.com/blog/drop-in-htaccess-is-now-on-github-go-fork-it/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 03:31:52 +0000</pubDate>
		<dc:creator>Sergey Chernyshev</dc:creator>
				<category><![CDATA[Web Performance]]></category>

		<guid isPermaLink="false">http://www.sergeychernyshev.com/blog/?p=931</guid>
		<description><![CDATA[A few people got interested in drop-in web performance .htaccess file so I decided to move it to a separate project on Github and invite all of you to participate in building a simple solution for web site performance that anyone can use!
github.com/sergeychernyshev/.htaccess
Go, fork it! We have a lot of work to do:

Stoyan Stephanov suggested [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://github.com/sergeychernyshev/.htaccess"><img style="float: right; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub" /></a>A few people got interested in drop-in web performance .htaccess file so I decided to move it to a separate project on Github and invite all of you to participate in building a simple solution for web site performance that anyone can use!</p>
<blockquote><p><code><a href="http://github.com/sergeychernyshev/.htaccess">github.com/sergeychernyshev/.htaccess</a></code></p></blockquote>
<p><strong>Go, <a href="http://github.com/sergeychernyshev/.htaccess">fork it</a>!</strong> We have a lot of work to do:</p>
<ul>
<li><a href="http://www.phpied.com/">Stoyan Stephanov</a> <a href="http://www.sergeychernyshev.com/blog/speed-up-your-site-drop-in-htaccess-file/comment-page-1/#comment-17451">suggested</a> that we should move to whitelisting for gzip
</li>
<li><a href="http://paulirish.com/">Paul Irish</a> also <a href="http://www.sergeychernyshev.com/blog/speed-up-your-site-drop-in-htaccess-file/comment-page-1/#comment-17715">shared</a> .htaccess he created as part of <a href="http://github.com/paulirish/html5-boilerplate/blob/master/.htaccess">HTML5 boilerplate project</a></li>
<li>since I posted about this to Apache mailing list, I was also hoping to create <strong>fast-httpd.conf</strong> similar to <a href="http://github.com/sergeychernyshev/.htaccess/blob/master/fast-nginx.conf"><strong>fast-nginx.conf</strong></a> with a set of instructions for <strong>fast by default web servers</strong></li>
</ul>
<p>Check out the <a href="http://github.com/sergeychernyshev/.htaccess/issues">issue tracker</a>, add your own suggestions / bug reports and vote for those that you think are important.</p>
<p>P.S. If you&#8217;d like to include sample .htaccess file with your Subversion project, just run</p>
<blockquote><p><code>svn propedit svn:externals .</code></p></blockquote>
<p>and add following line to it:</p>
<blockquote><p><code>sample.htaccess http://svn.github.com/sergeychernyshev/.htaccess.git</code></p></blockquote>
<p>I did this in SVN Assets.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sergeychernyshev.com/blog/drop-in-htaccess-is-now-on-github-go-fork-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meet for SPEED &#8211; hands on web performance sessions!</title>
		<link>http://www.sergeychernyshev.com/blog/meet-for-speed-hands-on-web-performance-sessions/</link>
		<comments>http://www.sergeychernyshev.com/blog/meet-for-speed-hands-on-web-performance-sessions/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 05:51:02 +0000</pubDate>
		<dc:creator>Sergey Chernyshev</dc:creator>
				<category><![CDATA[Meet for SPEED]]></category>
		<category><![CDATA[Meetup]]></category>
		<category><![CDATA[Web Performance]]></category>

		<guid isPermaLink="false">http://www.sergeychernyshev.com/blog/?p=918</guid>
		<description><![CDATA[Time for some serious speeding up for our web sites!
Come join us at Meet for SPEED event at Logicworks next Tuesday, August 24th at 7:00PM!

RSVP: http://www.meetup.com/Web-Performance-NY/calendar/14209517/
Bring your laptop and we&#8217;ll work together on optimizing our sites!
You can benefit even if you can&#8217;t edit your site right now &#8211; we will be happy to share the [...]]]></description>
			<content:encoded><![CDATA[<p>Time for some serious speeding up for our web sites!<br />
Come join us at <strong><a href="http://www.meetup.com/Web-Performance-NY/calendar/14209517/">Meet for SPEED</a></strong> event at <a href="http://www.logicworks.net/">Logicworks</a> next <strong>Tuesday, August 24th at 7:00PM</strong>!</p>
<p><a href="http://www.sergeychernyshev.com/blog/meet-for-speed-hands-on-web-performance-sessions/meetforspped/"><img style="float:none; margin: 2em; border: 0;" title="Tools: dynaTrace AJAX Edition at New York Web Performance Group" src="http://www.sergeychernyshev.com/blog/wp-content/uploads/2010/08/meetforspped.png" alt="" title="Meet for SPEED" width="354" height="100"/></a></p>
<p>RSVP: <a href="http://www.meetup.com/Web-Performance-NY/calendar/14209517/">http://www.meetup.com/Web-Performance-NY/calendar/14209517/</a></p>
<p><strong>Bring your laptop</strong> and we&#8217;ll work together on optimizing <strong>our sites</strong>!</p>
<p>You can benefit even if you can&#8217;t edit your site right now &#8211; we will be happy to share the knowledge.</p>
<p>We&#8217;ll all learn how to see <strong>what&#8217;s slow and how to make it fast</strong>!</p>
<p>Directions:<br />
LogicWorks<br />
<a href="http://www.logicworks.net/contact-us/location-phone">155 Avenue of the Americas<br />
Fifth Floor<br />
New York, NY 10013</a></p>
<p>Hope to see you all there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sergeychernyshev.com/blog/meet-for-speed-hands-on-web-performance-sessions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>dynaTrace AJAX Edition at Time Inc. next week</title>
		<link>http://www.sergeychernyshev.com/blog/dynatrace-ajax-edition-at-time-inc-next-week/</link>
		<comments>http://www.sergeychernyshev.com/blog/dynatrace-ajax-edition-at-time-inc-next-week/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 21:19:00 +0000</pubDate>
		<dc:creator>Sergey Chernyshev</dc:creator>
				<category><![CDATA[Meetup]]></category>
		<category><![CDATA[Web Performance]]></category>

		<guid isPermaLink="false">http://www.sergeychernyshev.com/blog/?p=907</guid>
		<description><![CDATA[
A special guest, Andreas Grabner is coming to New York City to present new features of upcoming dynaTrace AJAX Edition 2.0 at NY Web Performance Meetup!
dynaTrace AJAX Edition is a free tool that provides full JavaScript, Network, Rendering, DOM and XHR tracing for Internet Explorer 6, 7 &#38; 8. With the latest version the Ajax Edition [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.meetup.com/Web-Performance-NY/calendar/13964452/"><img style="float: right; margin-left: 1em; border: 0;" title="Tools: dynaTrace AJAX Edition at New York Web Performance Group" src="http://www.sergeychernyshev.com/blog/wp-content/uploads/2010/01/nywebperf_logo.png" alt="New York Web Performance Group Logo" width="150" height="99" /></a><br />
A special guest, <strong>Andreas Grabner</strong> is coming to New York City to present new features of upcoming <strong>dynaTrace AJAX Edition 2.0</strong> at <a href="http://www.meetup.com/Web-Performance-NY/calendar/13964452/">NY Web Performance Meetup</a>!</p>
<p>dynaTrace AJAX Edition is a free tool that provides full JavaScript, Network, Rendering, DOM and XHR tracing for <strong>Internet Explorer 6, 7 &amp; 8</strong>. With the latest version the Ajax Edition automatically analysis Best Practices in the areas of Browser Caching, Network Resources, Server-Side Activity, JavaScript/AJAX and also provides additional Key Performance Metrics that are essential for tracking the end-user perceived performance of a web site such as Time to First Impression, Time to onLoad or Time to Fully Loaded.</p>
<p><strong>Agenda: </strong><br />
6:00 &#8211; arrive to the event, meet other members<br />
6:30 &#8211; intro to web performance, industry updates by Sergey Chernyshev<br />
7:15 &#8211; dynaTrace AJAX Edition presentation by Andreas Grabner<br />
8:30 &#8211; Q&#038;A<br />
9:00 &#8211; Open Discussion, Networking</p>
<p><strong>Time Inc.</strong> offered their Watercooler meeting to host NY Web Performance meetup.  Refreshments will be served.</p>
<p>Host contact: <strong>Alla Gringaus, Web Technology Fellow</strong><br />
Questions: <strong>646 391 9671</strong></p>
<p>Location:<br />
<strong>Rockefeller Center<br />
Time &amp; Life Bldg<br />
<a href="http://bit.ly/cNBZ28" target="_blank">1271 Ave of the Americas (entrance 50th St and 6th Ave)<br />
2nd Floor, room #1<br />
New York, NY 10020</a></strong></p>
<p>Nearest Transit:<br />
<strong>50th St &#8211; 8th Ave (C, E)<br />
50th St &#8211; Ave of the Americas (F, V, B, D)<br />
49th St &#8211; 7th Ave (N, R, W)</strong></p>
<p>Get directions on Google Maps: <a href="http://bit.ly/cNBZ28">http://bit.ly/cNBZ28</a><br />
Street View for the Entrance: <a href="http://bit.ly/d4FsVf">http://bit.ly/d4FsVf</a></p>
<p>Come join us for a great presentation and discussion!</p>
<p>Please <a href="http://www.meetup.com/Web-Performance-NY/calendar/13964452/">RSVP on the group page @ Meetup.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sergeychernyshev.com/blog/dynatrace-ajax-edition-at-time-inc-next-week/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SLO-JS and how to speed up widgets</title>
		<link>http://www.sergeychernyshev.com/blog/slo-js-and-how-to-speed-up-widgets/</link>
		<comments>http://www.sergeychernyshev.com/blog/slo-js-and-how-to-speed-up-widgets/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 06:03:03 +0000</pubDate>
		<dc:creator>Sergey Chernyshev</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Web Performance]]></category>

		<guid isPermaLink="false">http://www.sergeychernyshev.com/blog/?p=842</guid>
		<description><![CDATA[This Thursday I gave a talk at NY Web Performance about third-party content and topic proven to be quite hot with many people in the audience, good Q&#38;A and group discussion afterwards. We talked about ad banners, widgets and tracking &#8220;pixels&#8221; and overall theme was lack of control and heavy reliance on 3rd parties.
Ads and [...]]]></description>
			<content:encoded><![CDATA[<p>This Thursday I gave a talk at <a href="http://www.meetup.com/Web-Performance-NY/calendar/13985715/">NY Web Performance</a> about <a href="http://www.techpresentations.org/Taming_third-party_content:_ads,_widgets,_trackers">third-party content</a> and topic proven to be quite hot with many people in the audience, good Q&amp;A and group discussion afterwards. We talked about ad banners, widgets and tracking &#8220;pixels&#8221; and overall theme was lack of control and heavy reliance on 3rd parties.</p>
<p>Ads and tracking pixels, unfortunately are quite complex and changing their behavior is hard, but <strong>widgets</strong> are a bit simpler to deal with and can probably be improved.</p>
<p>Working on my <a href="http://www.mediawikiwidgets.org/Main_Page">MediaWikiWidgets.org</a> project, I saw quite a few widgets and over time I started to realize that sales people&#8217;s magical promise of &#8220;easy integration with single line of JavaScript&#8221; which you can see on any site that provides widgets (and especially those that rely on widgets as primary method of distribution) is fundamentally flawed.</p>
<p>While it&#8217;s a great sales promise and simplifies integration, maintenance and gives a lot of control over user&#8217;s information, it brings slowness and introduces <a href="http://en.wikipedia.org/wiki/SPOF">SPOF</a>s to publisher&#8217;s sites.</p>
<p>To make people think about performance when they hear the magical sales pitch of <strong>Single line of JavaScript</strong>, I decided to abbreviate it to <strong title="Single line of JavaScript" style="border-bottom:1px dashed silver">SLO-JS</strong> which gives a very clear impression about the performance quality of this solution.</p>
<p>Now, next time when you see the magical words in vendor&#8217;s proposal, there is no need to explain or complain, <strong>just abbreviate it</strong> and this will hopefully give the right impression and make people think about testing the performance of the 3rd party source.</p>
<h2>Solutions</h2>
<p>It would&#8217;ve been pointless if there was no alternative to the SLO-JS, but in reality, it is not the only way to include code, it&#8217;s just the oldest and there are other, more reliable and fast alternatives. All we need to do is to explain how they work and make it easy for vendors to provide these alternatives to sites that care about performance.</p>
<p><strong>First alternative</strong> is quite simple &#8211; instead of copy-pasting a SLO-JS snippet, just let people copy-paste a mix of HTML, CSS (optional) and async JS call that will create a reasonable placeholder until data is loaded and will not block the rendering for the rest of the site.</p>
<p>A few vendors are already do that &#8211; <a href="http://disqus.com/">DISQUS</a>, for example, provides the following code:</p>
<pre style="margin-left: 1em; background: #ECE9D8; padding: 0.5em; border: 1px solid black; font-size: larger"><span style='color:#a65700; '>&lt;</span><span style='color:#800000; font-weight:bold; '>div</span><span style='color:#274796; '> </span><span style='color:#074726; '>id</span><span style='color:#808030; '>=</span><span style='color:#0000e6; '>"disqus_thread"</span><span style='color:#a65700; '>></span><span style='color:#a65700; '>&lt;/</span><span style='color:#800000; font-weight:bold; '>div</span><span style='color:#a65700; '>></span>
<span style='color:#a65700; '>&lt;</span><span style='color:#800000; font-weight:bold; '>script type="text/javascript"</span><span style='color:#a65700; '>></span>
  <span style='color:#808030; '>(</span><span style='color:#800000; font-weight:bold; '>function</span><span style='color:#808030; '>(</span><span style='color:#808030; '>)</span> <span style='color:#800080; '>{</span>
   <span style='color:#800000; font-weight:bold; '>var</span> dsq <span style='color:#808030; '>=</span> document<span style='color:#808030; '>.</span>createElement<span style='color:#808030; '>(</span><span style='color:#0000e6; '>'script'</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
   dsq<span style='color:#808030; '>.</span>type <span style='color:#808030; '>=</span> <span style='color:#0000e6; '>'text/javascript'</span><span style='color:#800080; '>;</span> dsq<span style='color:#808030; '>.</span>async <span style='color:#808030; '>=</span> <span style='color:#0f4d75; '>true</span><span style='color:#800080; '>;</span>
   dsq<span style='color:#808030; '>.</span>src <span style='color:#808030; '>=</span> <span style='color:#0000e6; '>'http://mediawikiwidgets.disqus.com/embed.js'</span><span style='color:#800080; '>;</span>
   <span style='color:#808030; '>(</span>document<span style='color:#808030; '>.</span>getElementsByTagName<span style='color:#808030; '>(</span><span style='color:#0000e6; '>'head'</span><span style='color:#808030; '>)</span><span style='color:#808030; '>[</span><span style='color:#008c00; '>0</span><span style='color:#808030; '>]</span>
      <span style='color:#808030; '>||</span> document<span style='color:#808030; '>.</span>getElementsByTagName<span style='color:#808030; '>(</span><span style='color:#0000e6; '>'body'</span><span style='color:#808030; '>)</span><span style='color:#808030; '>[</span><span style='color:#008c00; '>0</span><span style='color:#808030; '>]</span><span style='color:#808030; '>)</span><span style='color:#808030; '>
         .</span>appendChild<span style='color:#808030; '>(</span>dsq<span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
  <span style='color:#800080; '>}</span><span style='color:#808030; '>)</span><span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#a65700; '>&lt;/</span><span style='color:#800000; font-weight:bold; '>script</span><span style='color:#a65700; '>></span></pre>
<p>Notice that it gives you a div tag with <i>disqus_thread</i> id to insert into your page (in this case the placeholder is just empty) and then uses <a href="http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/" title="great article by Steve Souders explaining the problem and solutions">asynchronous script tag</a> to load the data without blocking the rest of the page.</p>
<p>Transforming your code to take advantage of this probably requires a couple hours of work at best &#8211; just replace document.write with static HTML wrapper (with specific ID or class) and build additional DOM elements within the code, then use wrapper&#8217;s ID to insert the DOM tree and use the async tag to load all your JS code.</p>
<p>Use this pattern for good widget development, suggest similar approach to vendors that give you the most grief, and we&#8217;ll have faster web pages pretty soon.</p>
<p><strong>Another alternative</strong> I proposed at the Meetup is to download content on the back-end and insert it right into HTML with optional JavaScript used only for data load.</p>
<p>Most of the time content doesn&#8217;t change for each request and can be cached for minutes, hours or even days at a time. In some cases it never changes, especially for embeddable content like YouTube videos or Flickr photos.</p>
<p><a href="http://andrewschaaf.com/">Andrew Schaaf</a> proposed a name for it &#8211; <strong>Fetch and store JavaScript</strong> with great &#8220;superhero&#8221; abbreviation of <strong title="Fetch and store JavaScript" style="border-bottom:1px dashed silver">FAST-JS</strong>.</p>
<p>It is quite easy to implement them in the language of your choice and probably worthy of Open Source project that will enable appropriate caching mechanism and make it easy for people to implement fast solutions to SLO-JS.</p>
<p>It&#8217;s a bit harder to do then async widgets and requires some backend coding, but will allow reducing front-end complexity and amount of extra JS on the page to zero.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sergeychernyshev.com/blog/slo-js-and-how-to-speed-up-widgets/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ShowSlow 0.7: dynaTrace beacon, list pagination, removing local URLs</title>
		<link>http://www.sergeychernyshev.com/blog/showslow-0-7-dynatrace-beacon-list-pagination-removing-local-urls/</link>
		<comments>http://www.sergeychernyshev.com/blog/showslow-0-7-dynatrace-beacon-list-pagination-removing-local-urls/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 22:10:16 +0000</pubDate>
		<dc:creator>Sergey Chernyshev</dc:creator>
				<category><![CDATA[ShowSlow]]></category>

		<guid isPermaLink="false">http://www.sergeychernyshev.com/blog/?p=793</guid>
		<description><![CDATA[A few changes were made to ShowSlow in a past couple months so it&#8217;s time for a new release &#8211; welcome ShowSlow 0.7!
Full list of changes can be seen in bug tracker, but here are the most important ones:

Resolved a problem with missing mod_rewrite (#43)
A few people complained that timeplot charts and other JS-based functionality [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/showslow/downloads/list"><img style="float: right; margin-left: 1em; border: 0;" title="Download Show Slow 0.7" src="http://www.sergeychernyshev.com/blog/wp-content/uploads/2009/04/showslow.png" alt="" width="100" height="100" /></a>A few changes were made to ShowSlow in a past couple months so it&#8217;s time for a new release &#8211; welcome <strong><a href="http://code.google.com/p/showslow/downloads/list">ShowSlow 0.7</a></strong>!</p>
<p>Full list of changes can be seen in <a href="http://code.google.com/p/showslow/issues/list?can=1&#038;q=status:Fixed&#038;sort=-closed&#038;colspec=ID%20Type%20Stars%20Status%20Priority%20Owner%20Summary%20Closed">bug tracker</a>, but here are the most important ones:</p>
<ol>
<li><strong>Resolved a problem with missing mod_rewrite (<a href="http://code.google.com/p/showslow/issues/detail?id=43">#43</a>)</strong><br />
A few people complained that timeplot charts and other JS-based functionality wasn&#8217;t working on details page. This was happening because mod_rewrite wasn&#8217;t enabled for the site or wasn&#8217;t compiled into Apache at all. The fix was actually done in <a href="http://code.google.com/p/svn-assets/">SVN Assets</a> project and it will autodetect mod_rewrite now and will use query string for URL uniqueness if it&#8217;s not available.</li>
<li><strong>dynaTrace beacon and results on details page (<a href="http://code.google.com/p/showslow/issues/detail?id=46">#46</a>)</strong><br />
dynaTrace team is releasing beaconing functionality in <strong>dynaTrace AJAX Edition 2.0</strong> (coming up in August, but <a href="http://ajax.dynatrace.com/pages/download/download.aspx">Beta is already available</a>) and you can now send results to Show Slow.<br />
<img src="http://www.sergeychernyshev.com/blog/wp-content/uploads/2010/07/dunaTrace_ShowSlow_menu.png" alt="dynaTrace ShowSlow menu" title="dynaTrace ShowSlow menu" style="border:1px solid black; float: none" width="527" height="124"/>
</li>
<li><strong>Added Google Friend Connect support for user registration and login</strong><br />
<a href="http://code.google.com/p/userbase/">UserBase</a> (which Show Slow uses for user management) supports Google Friend Connect for a while and I just added it to Show Slow so now users can use Google, Twitter, Yahoo!, OpenID, AIM or Netlog accounts to sign in (and Google will probably support more in the future).<br />
<a href="http://www.sergeychernyshev.com/blog/showslow-0-7-dynatrace-beacon-list-pagination-removing-local-urls/gfc_showslow/" rel="attachment wp-att-805"><img src="http://www.sergeychernyshev.com/blog/wp-content/uploads/2010/07/gfc_showslow.png" alt="Google Friend Connect for logging in" title="Google Friend Connect for logging in" width="371" height="197"  style="border:1px solid black; float: none" /></a>
</li>
<li><strong>file:// and chrome:// URLs as well as local network URLs are now ignored (<a href="http://code.google.com/p/showslow/issues/detail?id=55">#55</a>)</strong><br />
I don&#8217;t know why, but people were submitting data for non-HTTP protocol URLs (file://, chrome://) and private networks (10.x, 193.168.x and even 127.0.0.x) to public instance (<a href="http://www.showslow.com/">http://www.showslow.com/</a>).</p>
<p>I believe some of them might be pointless on private instances as well.</p>
<p>So now Show Slow is configured to ignore those URLs, but <a href="http://www.showslow.org/Installation_and_configuration#Ignore_URLs">you can configure your instance</a> to accept internal IPs if you really need it (although I suggest you use internal DNS for development sites instead).</li>
<li><strong>Added pagination to URL listing (<a href="http://code.google.com/p/showslow/issues/detail?id=23">#23</a>)</strong><br />
<strong>Ryan Doherty</strong> submitted a patch for list pagination for <a href="http://www.showslow.com/all.php">URLs measured</a> tab which was important to increase performance of the tool.</li>
<li><strong>Added pagination to URL listing (<a href="http://code.google.com/p/showslow/issues/detail?id=60">#60</a>)</strong><br />
I also worked on grouping of URLs so now <a href="http://www.showslow.org/Installation_and_configuration#Grouping_URLs">you can configure Show Slow to group URLs</a> on your instance for different groups within your company or just for different sites or site sections driven by different tools, for example.</li>
</ol>
<p><strong>Upgrading is easy</strong> &#8211; just <a href="http://code.google.com/p/showslow/downloads/list">download new version</a> and follow <a href="http://www.showslow.org/Upgrading_existing_instance">upgrade instructions</a>.</p>
<p>If you don&#8217;t want to wait for a packaged release, feel free to use <a href="http://showslow.googlecode.com/svn/trunk/">Subversion</a> &#8211; all you need to do is run <strong>make</strong> and it will upgrade both code and database.</p>
<p>If you prefer to use Subversion but stick with release code, the tag for this release is <a href="http://showslow.googlecode.com/svn/tags/REL_0_7/">REL_0_7</a></p>
<p>As always, please report any problems with installation to the mailing list:<br />
<a href="http://groups.google.com/group/showslow">http://groups.google.com/group/showslow</a></p>
<p>And feel free to <a href="http://www.showslow.org/Main_Page#Contributing">contribute</a> &#8211; there are many ways to do so:<br />
<a href="http://www.showslow.org/Main_Page#Contributing">http://www.showslow.org/Main_Page#Contributing</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sergeychernyshev.com/blog/showslow-0-7-dynatrace-beacon-list-pagination-removing-local-urls/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>July 2010 Meetup: Taming third-party content: ads, widgets, trackers</title>
		<link>http://www.sergeychernyshev.com/blog/taming-third-party-content-ads-widgets-trackers/</link>
		<comments>http://www.sergeychernyshev.com/blog/taming-third-party-content-ads-widgets-trackers/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 19:40:58 +0000</pubDate>
		<dc:creator>Sergey Chernyshev</dc:creator>
				<category><![CDATA[Meetup]]></category>
		<category><![CDATA[Web Performance]]></category>

		<guid isPermaLink="false">http://www.sergeychernyshev.com/blog/?p=785</guid>
		<description><![CDATA[
Third party content slows down our site while we don&#8217;t have control over it.
Ad banners, JavaScript widgets, analytics trackers &#8211; they all contribute to site&#8217;s slowness and sometimes are biggest offender.
On July 22nd, I&#8217;m going to give a presentation entitled &#8220;Taming third-party content: ads, widgets, trackers&#8221; at New York Web Performance Meetup.
If you run a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.meetup.com/Web-Performance-NY/calendar/13985715/"><img style="float: right; margin-left: 1em; border: 0;" title="New York Web Performance Group" src="http://www.sergeychernyshev.com/blog/wp-content/uploads/2010/01/nywebperf_logo.png" alt="New York Web Performance Group Logo" width="150" height="99" /></a><br />
<strong>Third party content slows down</strong> our site while we don&#8217;t have control over it.</p>
<p><strong>Ad banners, JavaScript widgets, analytics trackers</strong> &#8211; they all contribute to site&#8217;s slowness and sometimes are biggest offender.</p>
<p>On <strong>July 22nd</strong>, I&#8217;m going to give a presentation entitled &#8220;<strong>Taming third-party content: ads, widgets, trackers</strong>&#8221; at <a href="http://www.meetup.com/Web-Performance-NY/calendar/13985715/">New York Web Performance Meetup</a>.</p>
<p>If you run a web site, you most likely have 3rd party content and it&#8217;s most likely slowing you down.<br />
Come and let&#8217;s talk how we can solve this!</p>
<p>Please <a href="http://www.meetup.com/Web-Performance-NY/calendar/13985715/">RSVP on Meetup.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sergeychernyshev.com/blog/taming-third-party-content-ads-widgets-trackers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Concept: Window into a virtual world</title>
		<link>http://www.sergeychernyshev.com/blog/window-into-a-virtual-world/</link>
		<comments>http://www.sergeychernyshev.com/blog/window-into-a-virtual-world/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 12:51:53 +0000</pubDate>
		<dc:creator>Sergey Chernyshev</dc:creator>
				<category><![CDATA[Concepts]]></category>

		<guid isPermaLink="false">http://www.sergeychernyshev.com/blog/?p=757</guid>
		<description><![CDATA[When I first visited ITP show back in 2005 or so, I realized that I am interested in physical computing and when going home from the show I came up with the idea of a project with ITP spirit &#8211; a window into a virtual world.
The idea was to use a notebook or a tablet [...]]]></description>
			<content:encoded><![CDATA[<p>When I first visited <a href="http://itp.nyu.edu/show">ITP show</a> back in 2005 or so, I realized that I am interested in physical computing and when going home from the show I came up with the idea of a project with ITP spirit &#8211; <em>a window into a virtual world</em>.</p>
<p>The idea was to use a notebook or a tablet PC with a compass and gyroscope contraption attached to it to browse 360 degree panoramas so the viewport of the panorama matches the direction of the screen. This way moving the viewport, user will be able to see the &#8220;virtual world on the other side of the portal&#8221;.</p>
<p>You can guess why I&#8217;m writing about this concept right now &#8211; because I couldn&#8217;t imagine back then that device like that would be available to consumers. And now I&#8217;m using it to type this post, yes, I&#8217;m talking about Apple iPad ;)</p>
<p>So, getting back to the concept &#8211; now there is no need for custom hardware which I was thinking is necessary 5 years ago and all is needed now is an iPad application.</p>
<p>OpenGL sphere with 360 panorama mapped to it as a texture plus some (probably sophisticated) logic to make device scroll the panorama based on accelerometers and compass.</p>
<p>Combine it with some sci-fi panoramas or with some real-estate panoramas and you have a cool product that blows peoples mind and gets all the blogging attention you need to make a first million in the app store.</p>
<p>Another app for real estate brokers that can go along with this one is panorama maker &#8211; just point you camera around the room (maybe in video mode) and augmented with direction and tilt data it can help automate panorama creation which broker (or &#8220;for sale by owner&#8221; enthusiast) just uploads to property&#8217;s site.</p>
<p>All that is a bit optimistic, obviously, as panorama creation uses some hardcore math and requires significant image processing and often manual involvement, but it can definitely be aided by dimensional data.</p>
<p>Let me know if anything like that already exists or if you&#8217;re interested to give it a try &#8211; I&#8217;d pay for such app for sure! Can do that in advance using kickstarter.com if you like ;)</p>
<p>Comments are always welcome! And don&#8217;t try to be easy on my feelings, tell me what wrong here ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sergeychernyshev.com/blog/window-into-a-virtual-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Show Slow now Ignores non-public URLs</title>
		<link>http://www.sergeychernyshev.com/blog/show-slow-ignores-non-public-urls/</link>
		<comments>http://www.sergeychernyshev.com/blog/show-slow-ignores-non-public-urls/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 00:06:01 +0000</pubDate>
		<dc:creator>Sergey Chernyshev</dc:creator>
				<category><![CDATA[ShowSlow]]></category>

		<guid isPermaLink="false">http://www.sergeychernyshev.com/blog/?p=761</guid>
		<description><![CDATA[A few people noticed that users submitted all kinds of URLs to Show Slow including those with file:// schema and even chrome:// schema (internal schema for Firefox extension files). Some users also sent URLs with private IPs and from localhost which can not be accessed from the internet by general public.
I added some code to [...]]]></description>
			<content:encoded><![CDATA[<p>A few people noticed that users submitted <a href="http://www.showslow.com/all.php">all kinds of URLs</a> to Show Slow including those with <em>file://</em> schema and even <em>chrome://</em> schema (internal schema for Firefox extension files). Some users also sent URLs with private IPs and from localhost which can not be accessed from the internet by general public.</p>
<p>I added some code to handle these problems and now non-HTTP URLs are not going to be accepted and private network addresses will be ignored by default too.</p>
<p><a href="http://www.showslow.com/my.php"><img class="alignnone" src="http://www.sergeychernyshev.com/blog/wp-content/uploads/2010/06/showslow_ignore_local_URLs.png" alt="Show Slow displays old URLs that are being ignored with new configuration in red" width="600" height="168" /></a></p>
<p>You can still configure your own instance to accept private network URLs by <a href="http://www.showslow.org/Installation_and_configuration#Ignore_URLs">tweaking the settings</a>, but you probably shouldn&#8217;t remove localhosts anyway.</p>
<p>Don&#8217;t forget to run <em>deleteignored.php</em> to remove measurements for URLs that were not supposed to be tracked.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sergeychernyshev.com/blog/show-slow-ignores-non-public-urls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
