<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-17912762</id><updated>2024-10-24T12:14:40.079+00:00</updated><category term="Web performance matters index"/><title type='text'>Performance Matters</title><subtitle type='html'>&lt;B&gt;Slowness Considered Harmful&lt;/B&gt;&#xa;&lt;BR&gt;&#xa;&lt;small&gt;Collected thoughts about software and site performance&lt;/small&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default?alt=atom'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default?alt=atom&amp;start-index=26&amp;max-results=25'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>53</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-17912762.post-234270058039616899</id><published>2007-03-18T09:59:00.000+00:00</published><updated>2007-03-18T10:12:41.149+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Web performance matters index"/><title type='text'>Index of Migrated Posts</title><content type='html'>All posts from this site have now been migrated to their new locations at &lt;a href=&quot;http://www.webperformancematters.com&quot;&gt;&lt;b&gt;Web Performance Matters&lt;/b&gt;&lt;/a&gt;. This index is a cross-reference to the new site for anyone who arrives here from an old link. &lt;br /&gt;&lt;br /&gt;My previous post (see below) also lists new locations for a few recent items that are not included in this list.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;line-height: 0.9em;&quot; &gt;&lt;br /&gt;&lt;h4 style=&quot;margin:0;&quot; &gt;Foundations&lt;/h4&gt;&lt;br /&gt;&lt;ul style=&quot;margin:0;&quot; &gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/11/1/probability-the-rain-in-spain-.html&quot;&gt;Probability: The Rain in Spain ...&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2006/4/1/waterfall-methods-past-and-ever-present.html&quot;&gt;Waterfall Methods: Past and Ever-Present&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2006/4/16/software-engineering-matters.html&quot;&gt;Software Engineering Matters&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h4 style=&quot;margin:0;&quot; &gt;Performance as an Aspect of Usability&lt;/h4&gt;&lt;br /&gt;&lt;ul style=&quot;margin:0;&quot; &gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot; http://www.webperformancematters.com/objectives/&quot;&gt;Why Performance Matters&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/10/17/web-usability-a-simple-framework.html&quot;&gt;Web Usability: A Simple Framework&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/11/9/the-dimensions-of-usability.html&quot;&gt;The Dimensions of Usability&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/10/21/performance-matters-for-voip.html&quot;&gt;Performance Matters for VoIP&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h4 style=&quot;margin:0;&quot; &gt;Web Usability Books&lt;/h4&gt;&lt;br /&gt;&lt;ul style=&quot;margin:0;&quot; &gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/11/10/dont-make-me-think.html&quot;&gt;Don&#39;t Make Me Think, by Steve Krug&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/11/11/designing-web-usability.html&quot;&gt;Designing Web Usability, by Jakob Nielsen&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/11/14/the-design-of-sites.html&quot;&gt;The Design of Sites, by Douglas Van Duyne et al&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/11/15/usability-for-the-web.html&quot;&gt;Usability For The Web, by Tom Brinck et al&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h4 style=&quot;margin:0;&quot; &gt;SLM Overview&lt;/h4&gt;&lt;br /&gt;&lt;ul style=&quot;margin:0;&quot; &gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/10/18/practical-service-level-management.html&quot;&gt;Service Level Management (SLM)&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/11/3/keeping-a-public-site-healthy.html&quot;&gt;Keeping a Public (Site) Healthy&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/10/25/performance-dj-vu-all-over-again.html&quot;&gt;Performance: Deja Vu All Over Again&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/10/27/the-web-site-availability-model.html&quot;&gt;The Web Site Availability Model&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/10/28/the-web-site-response-time-model.html&quot;&gt;The Web Site Response Time Model&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/10/31/the-value-of-reference-models.html&quot;&gt;The Value of Reference Models&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h4 style=&quot;margin:0;&quot; &gt;Managing Rich Internet Applications&lt;/h4&gt;&lt;br /&gt;&lt;ul style=&quot;margin:0;&quot; &gt;&lt;br /&gt;&lt;li&gt;White Paper Series:&lt;/li&gt;&lt;br /&gt;&lt;li&gt; &lt;a href=&quot;http://www.webperformancematters.com/journal/2006/2/28/managing-rias-1-introduction.html&quot;&gt;1. Introduction to RIAs&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; &lt;a href=&quot;http://www.webperformancematters.com/journal/2006/3/2/managing-rias-2-slm-issues.html&quot;&gt;2. SLM Issues for RIAs &lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; &lt;a href=&quot;http://www.webperformancematters.com/journal/2006/3/6/managing-rias-3-the-technologies.html&quot;&gt;3. RIA Technology&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; &lt;a href=&quot;http://www.webperformancematters.com/journal/2006/3/9/managing-rias-4-the-ria-behavior-model.html&quot;&gt;4. The RIA Behavior Model&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; &lt;a href=&quot;http://www.webperformancematters.com/journal/2006/3/17/managing-rias-5-measuring-responsiveness.html&quot;&gt;5. Measuring RIA Responsiveness: Introduction&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; &lt;a href=&quot;http://www.webperformancematters.com/journal/2006/3/25/managing-rias-6-measurement-challenges.html&quot;&gt;6. Measuring RIA Responsiveness: Complications&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; &lt;a href=&quot;http://www.webperformancematters.com/journal/2006/4/10/managing-rias-7-developing-usable-rias.html&quot;&gt;7. RIA Usability and the Site Development Process&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; &lt;a href=&quot;http://www.webperformancematters.com/journal/2006/5/22/ria-white-paper-and-wikipedia.html&quot;&gt;Update: RIA White Paper and Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2006/5/2/alistair-croll-on-ajax.html&quot;&gt;Alistair Croll on Ajax&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2006/8/15/reporting-web-application-responsiveness.html&quot;&gt;Reporting Web Application Responsiveness&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h4 style=&quot;margin:0;&quot; &gt;Web Performance Engineering: Building in Performance&lt;/h4&gt;&lt;br /&gt;&lt;ul style=&quot;margin:0;&quot; &gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2006/8/14/ten-steps-to-a-faster-web-site.html&quot;&gt;1. Ten Steps to a Faster Web Site, by Alexander Kirk&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2006/8/18/web-performance-tuning.html&quot;&gt;2. Web Performance Tuning, by Patrick Killelea&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2006/8/22/speed-up-your-site.html&quot;&gt;3. Speed Up Your Site, by Andrew B. King&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2006/8/27/101-essential-checklists.html&quot;&gt;4. Deliver First Class Web Sites: 101 Essential Checklists, by Shirley Kaiser &lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h4 style=&quot;margin:0;&quot; &gt;Setting Performance Objectives&lt;/h4&gt;&lt;br /&gt;&lt;ul style=&quot;margin:0;&quot; &gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/10/16/when-is-your-web-site-fast-enough.html&quot;&gt;When is Your Web Site Fast Enough?&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/10/22/the-miller-response-time-test.html&quot;&gt;The Miller Response-Time Test&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/10/23/wysiwyg-or-no-site-is-an-island.html&quot;&gt;WYSIWYG, or No Site is an Island&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/10/24/delight-satisfy-or-frustrate.html&quot;&gt;Delight, Satisfy, or Frustrate?&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h4 style=&quot;margin:0;&quot; &gt;Capacity Planning and Load Testing&lt;/h4&gt;&lt;br /&gt;&lt;ul style=&quot;margin:0;&quot; &gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2006/8/24/are-online-retailers-ready-for-business.html&quot;&gt;Are Online Retailers Ready for Business?&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h4 style=&quot;margin:0;&quot; &gt;Measuring Performance&lt;/h4&gt;&lt;br /&gt;&lt;ul style=&quot;margin:0;&quot; &gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2006/3/14/deep-thoughts-on-management.html&quot;&gt;Deep Thoughts on Management&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2006/12/12/yahoo-on-web-page-performance.html&quot;&gt;Yahoo! on Web Page Performance&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h4 style=&quot;margin:0;&quot; &gt;Detecting, Diagnosing, and Fixing Problems&lt;/h4&gt;&lt;br /&gt;&lt;ul style=&quot;margin:0;&quot; &gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/11/2/keeping-it-on-the-road.html&quot;&gt;Keeping it on the Road&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h4 style=&quot;margin:0;&quot; &gt;Reporting on Performance&lt;/h4&gt;&lt;br /&gt;&lt;ul style=&quot;margin:0;&quot; &gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/10/26/the-abcs-of-measurement-data.html&quot;&gt;The ABC&#39;s of Measurement Data&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/10/19/apdex-application-performance-index.html&quot;&gt;The Application Performance Index&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h4 style=&quot;margin:0;&quot; &gt;SLM Cost/Benefit Analysis&lt;/h4&gt;&lt;br /&gt;&lt;ul style=&quot;margin:0;&quot; &gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/11/4/the-business-case-for-web-performance.html&quot;&gt;The Business Case for SLM&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/11/7/slm-learning-from-dotcoms.html&quot;&gt;SLM: Learning from Dot-coms&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/11/8/armstrong-on-it-business-alignment.html&quot;&gt;Armstrong on IT-Business Alignment&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2005/11/16/climbing-the-slm-maturity-ladder.html&quot;&gt;Climbing The SLM Maturity Ladder&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h4 style=&quot;margin:0;&quot; &gt;Performance in the News&lt;/h4&gt;&lt;br /&gt;&lt;ul style=&quot;margin:0;&quot; &gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2006/5/2/insights-from-interop-2006.html&quot;&gt;Insights from Interop 2006&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webperformancematters.com/journal/2006/8/24/are-online-retailers-ready-for-business.html&quot;&gt;Are Online Retailers Ready for Business?&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/234270058039616899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/234270058039616899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/234270058039616899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/234270058039616899'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2007/03/index-of-migrated-posts.html' title='Index of Migrated Posts'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-3686851560609384681</id><published>2007-02-28T09:04:00.000+00:00</published><updated>2007-02-28T09:55:10.146+00:00</updated><title type='text'>Recent posts now migrated</title><content type='html'>I have completed the migration of these posts to my new blog, located at &lt;a href=&quot;http://www.webperformancematters.com/&quot;&gt;webperformancematters.com&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Understanding Web Usability&lt;/span&gt;&lt;br /&gt;&lt;p&gt;One of the great things about the Web has always been its democratic nature. Anyone can participate. But once you do, your contributions are wide open to public scrutiny. Good or bad, someone will evaluate your Web content.&lt;/p&gt;&lt;br /&gt;&lt;b&gt;Tags:&lt;/b&gt; &lt;a href=&quot;http://technorati.com/tag/Usability&quot; rel=&quot;tag&quot;&gt;Usability&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+design&quot; rel=&quot;tag&quot;&gt;Web design&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/worst+website&quot; rel=&quot;tag&quot;&gt;Worst website&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Ryan+Stewart&quot; rel=&quot;tag&quot;&gt;Ryan Stewart&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Rich+Internet+Application&quot; rel=&quot;tag&quot;&gt;Rich Internet Application&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/RIA&quot; rel=&quot;tag&quot;&gt;RIA&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/performance&quot; rel=&quot;tag&quot;&gt;performance&lt;/a&gt;.&lt;br /&gt;&lt;p&gt; See the new site, &lt;a href=&quot;http://www.webperformancematters.com/journal/2006/12/18/understanding-web-usability.html&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;br /&gt;Web Design and Mouse Rage Syndrome&lt;/span&gt;&lt;br /&gt;Have you ever been frustrated at a Web site that downloads with the speed of an Alaskan glacier? Or become angry when a favorite site, or your Internet connection, is down. Have you experienced any of these symptoms:&lt;ul&gt;&lt;li&gt;Faster heart rate?&lt;br /&gt;&lt;li&gt;Increased sweating? &lt;br /&gt;&lt;li&gt;Furious clicking of the mouse?&lt;br /&gt;&lt;li&gt;Simultaneous clicking and cursing the screen? &lt;br /&gt;&lt;li&gt;Bashing the mouse?&lt;/ul&gt; Come on now -- admit it! Maybe some of them, just once or twice? Because if any of this sounds familiar, you&#39;re not alone.&lt;br /&gt;&lt;b&gt;Tags:&lt;/b&gt; &lt;a href=&quot;http://technorati.com/tag/Social+Issues+Research+Centre&quot; rel=&quot;tag&quot;&gt;Social Issues Research Centre&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/SIRC&quot; rel=&quot;tag&quot;&gt;SIRC&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/YouGov&quot; rel=&quot;tag&quot;&gt;YouGov&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/mouse+rage&quot; rel=&quot;tag&quot;&gt;mouse rage&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+design&quot; rel=&quot;tag&quot;&gt;Web design&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/performance&quot; rel=&quot;tag&quot;&gt;performance&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+performance+management&quot; rel=&quot;tag&quot;&gt;Web performance management&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/health&quot; rel=&quot;tag&quot;&gt;health&lt;/a&gt;.&lt;br /&gt;&lt;p&gt; See the new site, &lt;a href=&quot;http://www.webperformancematters.com/journal/2006/12/16/web-design-and-mouse-rage-syndrome.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Yahoo! on Web Page Performance &lt;/span&gt;&lt;br /&gt;&lt;p&gt;A recent post by Tenni Theurer, who works in a performance team at Yahoo!, appeared in the &lt;a href=&quot;http://yuiblog.com/blog/2006/11/28/performance-research-part-1/&quot;&gt;&lt;b&gt;Yahoo! User Interface Blog&lt;/b&gt;&lt;/a&gt;. The post begins with the claim that ... &lt;blockquote&gt;&lt;em&gt;... most of web page performance is affected by front-end engineering, that is, the user interface design and development&lt;/em&gt;. &lt;/blockquote&gt;Theurer introduces the &lt;a href=&quot;http://en.wikipedia.org/wiki/Pareto_principle&quot;&gt;&lt;b&gt;Pareto Principle&lt;/b&gt;&lt;/a&gt;, commonly known as the 80/20 rule, which states that 80% of the consequences come from 20% of the causes. In the case of Web page download time, she argues that the backend systems which generate an HTML document -- apache, C++, databases, etc. -- should be regarded as the 80% of causes that account for only 20% of download time. The other 80% of download time is spent fetching the elements that make up the page, such as images, scripts, and stylesheets.&lt;/p&gt;&lt;br /&gt;&lt;b&gt;Tags:&lt;/b&gt; &lt;a href=&quot;http://technorati.com/tag/Yahoo&quot; rel=&quot;tag&quot;&gt;Yahoo&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Pareto+principle&quot; rel=&quot;tag&quot;&gt;Pareto principle&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/80+20+rule&quot; rel=&quot;tag&quot;&gt;80/20 Rule&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/performance&quot; rel=&quot;tag&quot;&gt;performance&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+performance+management&quot; rel=&quot;tag&quot;&gt;Web performance management&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/IBM+Page+Detailer&quot; rel=&quot;tag&quot;&gt;IBM Page Detailer&lt;/a&gt;,&lt;a href=&quot;http://technorati.com/tag/Keynote&quot; rel=&quot;tag&quot;&gt;Keynote&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Page+Size&quot; rel=&quot;tag&quot;&gt;page size&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Round+Trip+Time&quot; rel=&quot;tag&quot;&gt;round trip time&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/RTT&quot; rel=&quot;tag&quot;&gt;RTT&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/TCP&quot; rel=&quot;tag&quot;&gt;TCP&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Slow+Start&quot; rel=&quot;tag&quot;&gt;slow start&lt;/a&gt;.&lt;br /&gt;&lt;p&gt; See the new site, &lt;a href=&quot;http://www.webperformancematters.com/journal/2006/12/12/yahoo-on-web-page-performance.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;br /&gt;ITIL Crash Course &lt;/span&gt;&lt;br /&gt;&lt;p&gt;Anyone involved with IT these days knows that ITIL is a hot topic, and one that seems to get hotter every month. ITIL, the Information Technology Infrastructure Library, has evolved from work sponsored by the UK Government in the late 1980&#39;s. According to the official ITIL site, it is &quot;the most widely accepted approach to IT service management in the world&quot;.&lt;/p&gt;&lt;br /&gt;&lt;b&gt;Tags:&lt;/b&gt; &lt;a href=&quot;http://technorati.com/tag/ITIL&quot; rel=&quot;tag&quot;&gt;ITIL&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/InfoWorld&quot; rel=&quot;tag&quot;&gt;InfoWorld&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/ISO+20000&quot; rel=&quot;tag&quot;&gt;ISO 20000&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/performance&quot; rel=&quot;tag&quot;&gt;performance&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+performance+management&quot; rel=&quot;tag&quot;&gt;Web performance management&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/service+level+management&quot; rel=&quot;tag&quot;&gt;service level management&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/SLM&quot; rel=&quot;tag&quot;&gt;SLM&lt;/a&gt;.&lt;br /&gt;&lt;p&gt; See the new site, &lt;a href=&quot;http://www.webperformancematters.com/journal/2006/10/26/itil-crash-course.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;br /&gt;101 Essential Checklists &lt;/span&gt;&lt;br /&gt;&lt;p&gt;Continuing my &lt;a href=&quot;http://performancematters.blogspot.com/2006/08/web-performance-engineering-1.html&quot;&gt;&lt;b&gt;series of posts&lt;/b&gt;&lt;/a&gt; on Web performance guidelines, today I&#39;m reviewing one chapter of a new book, &lt;a href=&quot;http://www.sitepoint.com/books/checklists1/&quot;&gt;&lt;b&gt;Deliver First Class Web Sites: 101 Essential Checklists&lt;/b&gt;&lt;/a&gt;, by Shirley Kaiser of &lt;a href=&quot;http://skdesigns.com/&quot;&gt;&lt;b&gt;SKDesigns&lt;/b&gt;&lt;/a&gt;, published by Sitepoint in July 2006.&lt;/p&gt;&lt;br /&gt;&lt;b&gt;Tags:&lt;/b&gt; &lt;a href=&quot;http://technorati.com/tag/Shirley+Kaiser&quot; rel=&quot;tag&quot;&gt;Shirley Kaiser&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/SKDesigns&quot; rel=&quot;tag&quot;&gt;SKDesigns&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Sitepoint&quot; rel=&quot;tag&quot;&gt;Sitepoint&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/performance&quot; rel=&quot;tag&quot;&gt;performance&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+site+optimization&quot; rel=&quot;tag&quot;&gt;Web site optimization&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Checklist&quot; rel=&quot;tag&quot;&gt;Checklist&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/page+design&quot; rel=&quot;tag&quot;&gt;page design&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/site+design&quot; rel=&quot;tag&quot;&gt;site design&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/service+level&quot; rel=&quot;tag&quot;&gt;service level&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/SLM&quot; rel=&quot;tag&quot;&gt;SLM&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/optimization&quot; rel=&quot;tag&quot;&gt;optimization&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+optimization&quot; rel=&quot;tag&quot;&gt;Web optimization&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/tuning&quot; rel=&quot;tag&quot;&gt;tuning&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+tuning&quot; rel=&quot;tag&quot;&gt;Web tuning&lt;/a&gt;.&lt;br /&gt;&lt;p&gt; See the new site, &lt;a href=&quot;http://www.webperformancematters.com/journal/2006/8/27/101-essential-checklists.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Are Online Retailers Ready for Business? &lt;/span&gt;&lt;br /&gt;&lt;p&gt;Every year, more and more shoppers turn to the Web for their holiday shopping, with total sales in 2006 projected to be in the multi-billion dollar range. But will online retailers be up to the task? Our recent study suggests that many will not... &lt;/p&gt;&lt;br /&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://technorati.com/tag/eCommerce&quot; rel=&quot;tag&quot;&gt;ecommerce&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/online+retail&quot; rel=&quot;tag&quot;&gt;online retail&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/holiday+shopping&quot; rel=&quot;tag&quot;&gt;holiday shopping&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/performance&quot; rel=&quot;tag&quot;&gt;performance&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+performance&quot; rel=&quot;tag&quot;&gt;Web performance&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/site+outages&quot; rel=&quot;tag&quot;&gt;site outages&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/load+handling&quot; rel=&quot;tag&quot;&gt;load handling&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/load+testing&quot; rel=&quot;tag&quot;&gt;load testing&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/service+level&quot; rel=&quot;tag&quot;&gt;service level&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/dial-up&quot; rel=&quot;tag&quot;&gt;dial-up&lt;/a&gt;.&lt;br /&gt;&lt;p&gt; See the new site, &lt;a href=&quot;http://www.webperformancematters.com/journal/2006/8/24/are-online-retailers-ready-for-business.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/3686851560609384681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/3686851560609384681' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/3686851560609384681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/3686851560609384681'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2007/02/recent-posts-now-migrated.html' title='Recent posts now migrated'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-7354490355698791946</id><published>2007-02-22T22:15:00.000+00:00</published><updated>2007-02-22T22:49:04.676+00:00</updated><title type='text'>Performance Matters has moved</title><content type='html'>I have joined &lt;a href=&quot;http://www.uprightmarketing.com&quot;&gt;UpRight Marketing&lt;/a&gt; as a partner, and after a lot of site design and development work, Performance Matters is now being transformed into a new journal with its own domain, at &lt;a href=&quot;http://www.webperformancematters.com/&quot;&gt;WebPerformanceMatters.com&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;I built both sites myself using the &lt;a href=&quot;http://www.squarespace.com&quot;&gt;Squarespace&lt;/a&gt; platform, and I&#39;m now in the process of migrating all the old posts. Other than details of the progress of the migration, I won&#39;t be posting anything new here. But check out &lt;a href=&quot;http://www.webperformancematters.com/journal/2007/2/20/content-migration-and-overhaul.html&quot;&gt;this post&lt;/a&gt; on the new site for all the details of the changes I&#39;m implementing on the new platform.&lt;br /&gt;&lt;br /&gt;See you there!&lt;br /&gt;--Chris</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/7354490355698791946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/7354490355698791946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/7354490355698791946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/7354490355698791946'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2007/02/performance-matters-has-moved.html' title='Performance Matters has moved'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-1512697762634043492</id><published>2006-12-18T08:07:00.000+00:00</published><updated>2006-12-18T08:52:09.155+00:00</updated><title type='text'>Understanding Web Usability</title><content type='html'>One of the great things about the Web has always been its democratic nature. Anyone can participate. But once you do, your contributions are wide open to public scrutiny. Good or bad, someone will evaluate your Web content.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;People Recognize Poor Design&lt;/strong&gt; &lt;br /&gt;In the Web&#39;s early days, when people were adjusting to this new medium, most online critiques applied to a site&#39;s design. If you created a really ugly site, before long your handiwork would end being featured on a &lt;a href=&quot;http://www.webpagesthatsuck.com/dailysucker/&quot;&gt;&lt;strong&gt;site dedicated to bad design&lt;/strong&gt;&lt;/a&gt;, or even included on someone&#39;s &lt;a href=&quot;http://www.pcworld.com/printable/article/id,127116/printable.html&quot;&gt;&lt;strong&gt;all-time list&lt;/strong&gt;&lt;/a&gt; of bad sites. Today, the collaborative features of the Web 2.0 environment such as &lt;a href=&quot;http://www.mytechlists.com/pc-worlds-25-worst-web-sites-ever/&quot;&gt;&lt;strong&gt;blogs&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&quot;http://www.webforumz.com/worst-websites-archive/&quot;&gt;&lt;b&gt;forums&lt;/b&gt;&lt;/a&gt;, and widely used &lt;a href=&quot;http://en.wikipedia.org/wiki/Folksonomy&quot;&gt;&lt;strong&gt;folksonomies&lt;/strong&gt;&lt;/a&gt; practically guarantee that &lt;a href=&quot;http://www.drafzal.com/old/&quot;&gt;&lt;strong&gt;truly awful design&lt;/strong&gt;&lt;/a&gt; will receive the &lt;a href=&quot;http://digg.com/design/The_worst_website_ever_made&quot;&gt;&lt;strong&gt;recognition&lt;/strong&gt;&lt;/a&gt; it deserves. Such criticism can be constructive; people can learn from good &lt;a href=&quot;http://www.angelfire.com/super/badwebs/&quot;&gt;&lt;strong&gt;examples&lt;/strong&gt;&lt;/a&gt; of what NOT to do.&lt;br /&gt;&lt;br /&gt;Today, blogs and wikis extend their democratic and educational influences beyond site design to site content. This can be tough on the writer who wants to explore new ideas. But as Wikipedia, one of the best example of online collaboration, advises all contributors: &lt;blockquote&gt;&lt;em&gt;If you don&#39;t want your writing to be edited mercilessly or redistributed by others, do not submit it.&lt;/em&gt; &lt;/blockquote&gt; This is excellent advice, because the collaborative search for truth online is not subject to parliamentary or academic niceties. If someone advances a weak argument, people will be quick to point out its flaws. And an unpopular opinion can produce flaming responses. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Is Web Usability a Sham?&lt;/strong&gt;&lt;br /&gt;For example, last week Ryan Stewart, who has &lt;a href=&quot;http://blog.digitalbackcountry.com/&quot;&gt;&lt;strong&gt;his own blog&lt;/strong&gt;&lt;/a&gt;, and also writes a &lt;a href=&quot;http://zdnet.com/&quot;&gt;&lt;strong&gt;ZDNet&lt;/strong&gt;&lt;/a&gt; blog about Rich Internet Applications (RIAs), wrote that &lt;a title=&quot;Permalink&quot; href=&quot;http://blogs.zdnet.com/Stewart/?p=196&quot; rel=&quot;bookmark&quot;&gt;&lt;b&gt;Usability on the web is a sham&lt;/b&gt;&lt;/a&gt;, arguing that ... &lt;blockquote&gt;While accessibility and standards are great for the Web, the concept of usability has been overblown. &lt;em&gt;Usability&lt;/em&gt; as we define it is basically the rules for how the Web should behave while in the confines of the Web browser. But Web applications don&#39;t have to exist inside the browser and relegating them to these antiquated notions of usability is bad for progress.&lt;/blockquote&gt; To support this argument, he used the Back button as an example of a browser usability problem that RIA developers could eliminate altogether. &lt;br /&gt;&lt;br /&gt;I think the central idea behind his argument was that the RIA technologies -- because they offer the developer more options -- can be applied to deliver usability improvements in Web-based applications. But I&#39;m afraid he expressed it very poorly, first by over-generalizing in his criticisms of the concept of Web usability, and second by trying to use the Back button -- one of the most intuitive and widely-understood browser conventions -- as an example of poor usability. &lt;br /&gt;&lt;br /&gt;Naturally, his post has been generating a small firestorm of responses ranging in tone from &lt;a href=&quot;http://talkback.zdnet.com/5208-12516-0.html?forumID=1&amp;threadID=28285&amp;messageID=531013&amp;start=33&quot;&gt;&lt;strong&gt;expletive-laden outrage&lt;/strong&gt;&lt;/a&gt; to &lt;a href=&quot;http://talkback.zdnet.com/5208-12516-0.html?forumID=1&amp;threadID=28285&amp;messageID=531266&amp;start=33&quot;&gt;&lt;strong&gt;carefully-argued disagreement&lt;/strong&gt;&lt;/a&gt;. In their different ways, both those examples (along with other responses) argue that Stewart&#39;s post is full of opinions and assertions that are not supported by any evidence, and that (to put it bluntly) Stewart doesn&#39;t really know what he&#39;s talking about.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Marshaling the Right Skills&lt;/strong&gt;&lt;br /&gt;Unfortunately, this is a common problem in the field of Web design. An &lt;a href=&quot;http://performancematters.blogspot.com/2005/11/dimensions-of-usability.html&quot;&gt;&lt;strong&gt;effective online application&lt;/strong&gt;&lt;/a&gt; must be available, responsive, easy to navigate, and deliver value to its user. This demands a wide array of skills rarely found in a single individual. As a result many sites are designed and built by people who are aware of only a small subset of the issues they should be considering. And all too often, someone in the site development process -- a business manager, someone in marketing, a Web designer, or a site developer -- makes key design decisions without understanding the consequences. And the challenges are even greater when &lt;a href=&quot;http://performancematters.blogspot.com/2006/04/managing-rich-internet-applications-7.html&quot;&gt;&lt;strong&gt;developing a Rich Internet Application&lt;/strong&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Simply getting more people involved isn&#39;t the solution. Some really bad Web site designs have been the result of &lt;a href=&quot;http://www.webxpress.com/tomlinson-view/57&quot;&gt;&lt;strong&gt;design by committee&lt;/strong&gt;&lt;/a&gt;. Even if you follow a good checklist, like &lt;a href=&quot;http://www.alvit.de/blog/article/20-rules-of-smart-and-successful-web-development-and-web-design&quot;&gt;&lt;strong&gt;this one&lt;/strong&gt;&lt;/a&gt; by &lt;a href=&quot;http://www.alvit.de/vf/&quot;&gt;&lt;strong&gt;Vitaly Friedman&lt;/strong&gt;&lt;/a&gt;, you will overlook some important aspect -- often site performance. The problem is the sheer breadth of knowledge required to do a good job. For evidence, read the Wikipedia entry on &lt;a href=&quot;http://en.wikipedia.org/wiki/Web_design&quot;&gt;&lt;strong&gt;Web Design&lt;/strong&gt;&lt;/a&gt;. It&#39;s an unbalanced, poorly organized, collection of information that offers little help with the process of creating an effective site. &lt;br /&gt;&lt;br /&gt;The only answer is to get better, more knowledgeable, people involved. Start with a good overview of the process, like &lt;a href=&quot;http://performancematters.blogspot.com/2005/11/web-usability-books-4.html&quot;&gt;&lt;strong&gt;Usability for the Web: Designing Web Sites that Work&lt;/strong&gt;&lt;/a&gt; by Tom Brinck, Darren Gergle, and Scott D. Wood. As they say in the book&#39;s introduction: &lt;blockquote&gt;To ensure high usability on our own Web projects, we defined a development process that incorporates proven techniques from software and usability engineering, graphic design, project management, and other disciplines. The process had to be practical and lean. It had to allow us to work on multiple projects of varying sizes with fixed budgets. It had to help us keep track of the details that can kill usability and destroy profitability. This book is about that process.&lt;/blockquote&gt; Then find people who understand what the book is talking about to do the work -- and don&#39;t interfere!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tags:&lt;/b&gt; &lt;a href=&quot;http://technorati.com/tag/Usability&quot; rel=&quot;tag&quot;&gt;Usability&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+design&quot; rel=&quot;tag&quot;&gt;Web design&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/worst+website&quot; rel=&quot;tag&quot;&gt;Worst website&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Ryan+Stewart&quot; rel=&quot;tag&quot;&gt;Ryan Stewart&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Rich+Internet+Application&quot; rel=&quot;tag&quot;&gt;Rich Internet Application&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/RIA&quot; rel=&quot;tag&quot;&gt;RIA&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/performance&quot; rel=&quot;tag&quot;&gt;performance&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/1512697762634043492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/1512697762634043492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/1512697762634043492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/1512697762634043492'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/12/understanding-web-usability.html' title='Understanding Web Usability'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-5190036033058817225</id><published>2006-12-16T02:17:00.001+00:00</published><updated>2006-12-16T21:31:12.821+00:00</updated><title type='text'>Web Design and Mouse Rage Syndrome</title><content type='html'>Have you ever been frustrated at a Web site that downloads with the speed of an Alaskan glacier? Or become angry when a favorite site, or your Internet connection, is down. Have you experienced any of these symptoms:&lt;ul&gt;&lt;li&gt;Faster heart rate?&lt;br /&gt;&lt;li&gt;Increased sweating? &lt;br /&gt;&lt;li&gt;Furious clicking of the mouse?&lt;br /&gt;&lt;li&gt;Simultaneous clicking and cursing the screen? &lt;br /&gt;&lt;li&gt;Bashing the mouse?&lt;/ul&gt; Come on now -- admit it! Maybe some of them, just once or twice? Because if any of this sounds familiar, you&#39;re not alone. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Mouse Rage Syndrome&lt;/strong&gt;&lt;br /&gt;The consequences of poor Web site performance don&#39;t usually make news, unless there&#39;s a big outage on &lt;a href=&quot;http://en.wikipedia.org/wiki/Black_Friday_(shopping)&quot;&gt;&lt;strong&gt;Black Friday&lt;/strong&gt;&lt;/a&gt; or &lt;a href=&quot;http://en.wikipedia.org/wiki/Cyber_Monday&quot;&gt;&lt;strong&gt;Cyber Monday&lt;/strong&gt;&lt;/a&gt;. Then the story invariably focuses on the business lost by companies whose sites were overloaded or down. But what about the effects of poor performance on customers? A &lt;a href=&quot;http://www.techweb.com/showArticle.jhtml?articleID=196603628&amp;cid=RSSfeed_TechWebhttp://www.techweb.com/showArticle.jhtml?articleID=196603628&amp;cid=RSSfeed_TechWeb&quot;&gt;&lt;strong&gt;recent study&lt;/strong&gt;&lt;/a&gt; by the &lt;a href=&quot;http://www.sirc.org/&quot;&gt;&lt;strong&gt;Social Issues Research Centre&lt;/strong&gt;&lt;/a&gt; (SIRC), an independent, not-for-profit organisation based in Oxford, UK., provides this perspective. &lt;br /&gt;&lt;br /&gt;Researchers found that &lt;em&gt;badly designed and hosted websites cause stress and anger&lt;/em&gt;, and coined the term &quot;Mouse Rage Syndrome&quot; (or MRS). They concluded that &lt;em&gt;five key IT flaws&lt;/em&gt; in the way websites are designed and hosted &lt;em&gt;may lead to harmful health effects&lt;/em&gt;. &lt;br /&gt;&lt;br /&gt;Those five problems will come as no surprise to any regular user of the Web: slowly loading pages, confusing layouts, excessive pop-ups, unnecessary advertising, and site unavailability. But as I was saying in my &lt;a href=&quot;http://performancematters.blogspot.com/2006/12/yahoo-on-web-page-performance.html&quot;&gt;&lt;strong&gt;previous post&lt;/strong&gt;&lt;/a&gt;, it is not fair to blame IT for these problems, when most of them are the result of poor design choices by Web site designers and developers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Damaging Customers&#39; Health&lt;/strong&gt; &lt;br /&gt;The study combined data from a &lt;a href=&quot;http://www.yougov.com/&quot;&gt;&lt;strong&gt;YouGov&lt;/strong&gt;&lt;/a&gt; poll of 2,500 people with physiological tests on a separate sample of Internet users, who were asked to find information from a number of different websites. Tests measured physical and physiological reactions to website experiences, looking at brainwaves, heart-rate fluctuations, muscle tension and skin conductivity. According to the report:&lt;blockquote&gt;When the test participants came to the &#39;problem&#39; sites that we had deliberately chosen as comparisons for the &#39;Perfect Website&#39; evaluation exercise [a prior study], responses changed quite dramatically in most, but not all, cases. While a few managed to stay calm and simply &#39;rise above&#39; the problems presented by crazy graphics and slow-loading pages, others showed very distinct signs of stress and anxiety. &lt;br /&gt;&lt;br /&gt;Some changes in muscle tension were quite dramatic...While this was happening, the participant&#39;s faces also tensed visibly, with the teeth clenched together and the muscles around the mouth becoming taught. These are physically uncomfortable situations that reduce concentration and increase feelings of anger.&lt;/blockquote&gt; These reactions, if not &lt;a href=&quot;http://en.wikipedia.org/wiki/Anger_management&quot;&gt;&lt;strong&gt;managed&lt;/strong&gt;&lt;/a&gt;, can eventually lead to other, more serious, health problems. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Poor Designs Can Kill&lt;/strong&gt; &lt;br /&gt;According to the SIRC report, &quot;users want Google-style speed, function and accuracy from all of the websites they visit, and they want it now. Unfortunately, many websites and their servers cannot deliver this&quot;. The result is consumers seeking alternative websites in a bid to avoid undue stress and Mouse Rage. &lt;br /&gt;&lt;br /&gt;Jacques Greyling, managing director of Rackspace Managed Hosting, who commissioned the study, commented: &lt;blockquote&gt;&lt;em&gt;We believe that businesses that are selling online have a duty to their customers to ensure that the experience is as stress free as possible. The public has shown that it wants to buy online, ... (so) businesses need to provide simple and easy to navigate layouts, whilst focusing on speed and uptime.&lt;/em&gt;&lt;/blockquote&gt; If more studies confirm these findings, which will probably seem obvious to anyone who spends a lot of time online, maybe more Web designers will get the message that their poor designs are not just killing the business. They could be killing people -- really. &lt;br /&gt;&lt;br /&gt;&lt;em&gt;Performance Matters!&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tags:&lt;/b&gt; &lt;a href=&quot;http://technorati.com/tag/Social+Issues+Research+Centre&quot; rel=&quot;tag&quot;&gt;Social Issues Research Centre&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/SIRC&quot; rel=&quot;tag&quot;&gt;SIRC&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/YouGov&quot; rel=&quot;tag&quot;&gt;YouGov&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/mouse+rage&quot; rel=&quot;tag&quot;&gt;mouse rage&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+design&quot; rel=&quot;tag&quot;&gt;Web design&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/performance&quot; rel=&quot;tag&quot;&gt;performance&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+performance+management&quot; rel=&quot;tag&quot;&gt;Web performance management&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/health&quot; rel=&quot;tag&quot;&gt;health&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/5190036033058817225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/5190036033058817225' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/5190036033058817225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/5190036033058817225'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/12/web-design-and-mouse-rage-syndrome.html' title='Web Design and Mouse Rage Syndrome'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-116591742300014939</id><published>2006-12-12T08:00:00.000+00:00</published><updated>2006-12-15T02:39:20.840+00:00</updated><title type='text'>Yahoo! on Web Page Performance</title><content type='html'>A recent post by Tenni Theurer, who works in a performance team at Yahoo!, appeared in the &lt;a href=&quot;http://yuiblog.com/blog/2006/11/28/performance-research-part-1/&quot;&gt;&lt;b&gt;Yahoo! User Interface Blog&lt;/b&gt;&lt;/a&gt;. The post begins with the claim that ... &lt;blockquote&gt;&lt;em&gt;... most of web page performance is affected by front-end engineering, that is, the user interface design and development&lt;/em&gt;. &lt;/blockquote&gt;Theurer introduces the &lt;a href=&quot;http://en.wikipedia.org/wiki/Pareto_principle&quot;&gt;&lt;b&gt;Pareto Principle&lt;/b&gt;&lt;/a&gt;, commonly known as the 80/20 rule, which states that 80% of the consequences come from 20% of the causes. In the case of Web page download time, she argues that the backend systems which generate an HTML document -- apache, C++, databases, etc. -- should be regarded as the 80% of causes that account for only 20% of download time. The other 80% of download time is spent fetching the elements that make up the page, such as images, scripts, and stylesheets.&lt;br /&gt;&lt;br /&gt;She presents two graphics to illustrate this point. A table summarizing home page measurements of 8 popular Web sites -- Yahoo!, Google, MySpace, MSN, eBay, Amazon, YouTube, and CNN -- shows that retrieving HTML accounts for between 5% and 38% of their download times, and just 12% on average. The other 88% is taken up downloading and rendering other page elements.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Waterfall Charts&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;http://photos1.blogger.com/x/blogger/7699/1738/1600/31528/YahooWaterfall.png&quot;&gt;&lt;img style=&quot;FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand&quot; alt=&quot;Yahoo Waterfall Chart [click to enlarge]&quot; src=&quot;http://photos1.blogger.com/x/blogger/7699/1738/320/898645/YahooWaterfall.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; To illustrate the reason why HTML accounts for such a small percentage of all page download time, Theurer uses the diagram shown here [&lt;em&gt;click to enlarge&lt;/em&gt;]. I call this kind of data visualization a &#39;waterfall chart&#39;, because of its shape, and because it is similar to the way the &lt;a href=&quot;http://en.wikipedia.org/wiki/Waterfall_model&quot;&gt;&lt;strong&gt;waterfall model&lt;/strong&gt;&lt;/a&gt; of software development has always been always depicted graphically.&lt;br /&gt;&lt;br /&gt;Theurer says (in blog comment #22) she used the &lt;a href=&quot;http://www.alphaworks.ibm.com/tech/pagedetailer&quot;&gt;&lt;strong&gt;IBM Page Detailer&lt;/strong&gt;&lt;/a&gt; tool to get the measurement data shown in this diagram. I have used this tool, and it produces a &lt;em&gt;Chart Panel&lt;/em&gt; similar to the one above, which is a graphical representation of all of the component downloads that make up a single page.&lt;br /&gt;&lt;br /&gt;I have not seen much documentation online, but if you take the time to register with IBM and download the software, its Help file is quite informative. It explains that the ... &lt;blockquote&gt;&lt;em&gt;... IBM Page Detailer attaches to the workstation TCP/IP socket stack and monitors all of the HTTP/HTTPS protocol based communications between your Web browser and the network. IBM Page Detailer then displays web activities in a series of color-coded bars&lt;/em&gt;. &lt;/blockquote&gt;It also has quite a long section on &lt;em&gt;Results Analysis&lt;/em&gt; and other &lt;em&gt;Considerations&lt;/em&gt; regarding Web download times.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://photos1.blogger.com/x/blogger/7699/1738/1600/81736/KeynoteWaterfall.png&quot;&gt;&lt;img style=&quot;FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand&quot; alt=&quot;Keynote Waterfall Chart [click to enlarge]&quot; src=&quot;http://photos1.blogger.com/x/blogger/7699/1738/320/369516/KeynoteWaterfall.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; This kind of analysis is not new. Since 1998, &lt;a href=&quot;http://www.keynote.com/products/web_performance/index.html&quot;&gt;&lt;strong&gt;Keynote&lt;/strong&gt;&lt;/a&gt; has offered a similar &lt;em&gt;Web Content Diagnostics&lt;/em&gt; feature in its MyKeynote portal -- here&#39;s a &lt;a href=&quot;http://www.keynote.com/docs/datasheets/TxP_web_content_diag.pdf&quot;&gt;&lt;strong&gt;datasheet&lt;/strong&gt;&lt;/a&gt; describing the newest version of this service, recently released. For example, the figure on the right [&lt;em&gt;click to enlarge&lt;/em&gt;] shows a Keynote diagnostic measurement of the &lt;a href=&quot;http://searchmarketing.yahoo.com/&quot;&gt;&lt;strong&gt;Yahoo Search Marketing&lt;/strong&gt;&lt;/a&gt; page.&lt;br /&gt;&lt;br /&gt;Unlike the IBM Page Detailer, which always measures from the desktop where it is installed, Keynote&#39;s diagnostic measurements can be taken from anywhere on the company&#39;s worldwide network of 2500 measurement computers (or &quot;agents&quot;). This example comes from an agent located on the Verizon network in Houston.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The Lesson for Web Designers&lt;/strong&gt;&lt;br /&gt;Even without looking at the data in any detail, the message of these waterfall charts is evident from their general shape: &lt;blockquote&gt;&lt;em&gt;Web page download times rise with the number of bytes to be downloaded &lt;strong&gt;and&lt;/strong&gt; with the number of separate content elements comprising a page&lt;/em&gt;. &lt;/blockquote&gt;This fact is not news to anyone whose job involves monitoring or managing site performance. Even for a Web page consisting only of a single HTML file, you cannot compute download time simply as page size divided by bandwidth. That&#39;s because of the way the &lt;a href=&quot;http://en.wikipedia.org/wiki/Transmission_Control_Protocol&quot;&gt;&lt;strong&gt;TCP&lt;/strong&gt;&lt;/a&gt; &lt;a href=&quot;http://en.wikipedia.org/wiki/Slow-start&quot;&gt;&lt;strong&gt;slow-start protocol&lt;/strong&gt;&lt;/a&gt; works, sending one or two packets (typically 1.5Kb - 3KKb), then doubling, and doubling again, up to the receive window size of the client.&lt;br /&gt;&lt;br /&gt;But most Web pages these days contain many imbedded graphic objects, CSS files, and script files, all of which extend download times. Most of these files are small, requiring just a few TCP packets to transmit. But every transmission requires a separate &quot;Turn&quot;, adding another &lt;a href=&quot;http://en.wikipedia.org/wiki/Round-trip_delay_time&quot;&gt;&lt;strong&gt;round-trip delay time&lt;/strong&gt;&lt;/a&gt; (RTT) from the client (i.e. browser) to the server(s) and back. This behavior has been widely documented and is well-understood by performance specialists: &lt;ul&gt;&lt;li&gt;In a previous post here, I described the &lt;a href=&quot;http://performancematters.blogspot.com/2005/10/web-site-response-time-model.html&quot;&gt;&lt;strong&gt;Web Site Response Time Model&lt;/strong&gt;&lt;/a&gt; and linked to the CMG2000 paper (&lt;a href=&quot;http://www.keynote.com/downloads/whitepapers/ecommerce_response_time.pdf&quot;&gt;&lt;strong&gt;E-Commerce Response Time: A Reference Model&lt;/strong&gt;&lt;/a&gt;) in which I introduced it.&lt;br /&gt;&lt;li&gt;In 2001, Peter Sevcik and John Bartlett of &lt;a href=&quot;http://www.netforecast.com/&quot;&gt;&lt;strong&gt;NetForecast&lt;/strong&gt;&lt;/a&gt; published their paper on &lt;a href=&quot;http://www.apmadvisors.com/Articles/BCR%20Article%20Web%20Performance%20FNL.pdf&quot;&gt;&lt;strong&gt;Understanding Web Performance&lt;/strong&gt;&lt;/a&gt;, in which they first outlined a formula for computing Web page download times based on total bytes, the number of components, and on round-trip times between browser and server(s).&lt;br /&gt;&lt;li&gt;That formula was simplified and explained in a highly readable paper by Alberto Savoia -- &lt;a href=&quot;http://www.stickyminds.com/sitewide.asp?ObjectId=5030&amp;amp;Function=edetail&quot;&gt;&lt;strong&gt;Web Page Response Time 101&lt;/strong&gt;&lt;/a&gt; -- published in July 2001 in STQE, the magazine of software testing and quality engineering (now &lt;a href=&quot;http://www.stickyminds.com/BetterSoftware/magazine.asp&quot;&gt;&lt;strong&gt;Better Software Magazine&lt;/strong&gt;&lt;/a&gt;). &lt;/li&gt;&lt;/ul&gt;Since then, many articles and papers have reiterated this message. An entire industry segment -- &lt;a href=&quot;http://www.netforecast.com/Articles/Pocket%20Guide%20to%20ADS.pdf&quot;&gt;&lt;strong&gt;Application Delivery Systems&lt;/strong&gt;&lt;/a&gt; -- has emerged to help organizations offset delays in delivering their Web pages and satisfy customers&#39; expectations of responsiveness. All the same, as is clear from the comments posted to the Yahoo! User Interface Blog, some Web designers and developers still need to learn this lesson.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tags:&lt;/b&gt; &lt;a href=&quot;http://technorati.com/tag/Yahoo&quot; rel=&quot;tag&quot;&gt;Yahoo&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Pareto+principle&quot; rel=&quot;tag&quot;&gt;Pareto principle&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/80+20+rule&quot; rel=&quot;tag&quot;&gt;80/20 Rule&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/performance&quot; rel=&quot;tag&quot;&gt;performance&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+performance+management&quot; rel=&quot;tag&quot;&gt;Web performance management&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/IBM+Page+Detailer&quot; rel=&quot;tag&quot;&gt;IBM Page Detailer&lt;/a&gt;,&lt;a href=&quot;http://technorati.com/tag/Keynote&quot; rel=&quot;tag&quot;&gt;Keynote&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Page+Size&quot; rel=&quot;tag&quot;&gt;page size&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Round+Trip+Time&quot; rel=&quot;tag&quot;&gt;round trip time&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/RTT&quot; rel=&quot;tag&quot;&gt;RTT&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/TCP&quot; rel=&quot;tag&quot;&gt;TCP&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Slow+Start&quot; rel=&quot;tag&quot;&gt;slow start&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/116591742300014939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/116591742300014939' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/116591742300014939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/116591742300014939'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/12/yahoo-on-web-page-performance.html' title='Yahoo! on Web Page Performance'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-116192673200272761</id><published>2006-10-27T05:24:00.000+00:00</published><updated>2006-10-27T05:50:26.410+00:00</updated><title type='text'>ITIL Crash Course</title><content type='html'>&lt;a href=&quot;http://photos1.blogger.com/blogger/7699/1738/1600/InfoWorld%20cover%202006_43.jpg&quot;&gt;&lt;img style=&quot;float:right; margin:0px 0px 5px 5px; cursor:pointer; cursor:hand;&quot; src=&quot;http://photos1.blogger.com/blogger/7699/1738/320/InfoWorld%20cover%202006_43.jpg&quot; border=&quot;0&quot; alt=&quot;InfoWorld magazine cover&quot; /&gt;&lt;/a&gt; Anyone involved with IT these days knows that ITIL is a hot topic, and one that seems to get hotter every month. &lt;br /&gt;&lt;br /&gt;ITIL, the &lt;em&gt;Information Technology Infrastructure Library&lt;/em&gt;, has evolved from work sponsored by the UK Government in the late 1980&#39;s. According to the &lt;a href=&quot;http://www.itil.co.uk/&quot;&gt;&lt;strong&gt;official ITIL site&lt;/strong&gt;&lt;/a&gt;, it is &quot;the most widely accepted approach to IT service management in the world&quot;. For a lot more detail, see the &lt;a href=&quot;http://en.wikipedia.org/wiki/ITIL&quot;&gt;&lt;strong&gt;wikipedia entry for ITIL&lt;/strong&gt;&lt;/a&gt;, which describes it as &quot;a framework of best practice approaches intended to facilitate the delivery of high quality information technology (IT) services&quot;, and goes on to explain that: &lt;blockquote&gt;ITIL outlines an extensive set of management procedures that are intended to support businesses in achieving both quality and value for money in IT operations. These procedures are supplier independent and have been developed to provide guidance across the breadth of IT infrastructure, development, and operations.&lt;/blockquote&gt; If you subscribe to any technical magazine, newsletter or blog written for an IT audience, then you have probably seen more than one story on the benefits of adopting ITIL-based approaches to IT management. The latest publication to jump on the ITIL bandwagon is this week&#39;s &lt;a href=&quot;http://www.infoworld.com/print_issue/archive/latest_print_issue.html&quot;&gt;&lt;strong&gt;InfoWorld&lt;/strong&gt;&lt;/a&gt; (October 23, 2006, issue 43) -- also available &lt;a href=&quot;http://www.infoworld.com/article/06/10/20/43FEitil_1.html&quot;&gt;&lt;strong&gt;online&lt;/strong&gt;&lt;/a&gt; -- which contains an excellent 5-page article introducing ITIL. &lt;br /&gt;&lt;br /&gt;The magazine cover touts the importance of ITIL today: &lt;em&gt;To keep pace with business strategy, IT need a blueprint for delivering services. That&#39;s where ITIL, the modern-day bible of governance, comes in.&lt;/em&gt; The article itself is arranged like an interview in which the authors, Randy Steinberg and Michael Goodwin, answer ten questions. I won&#39;t list each question, because often you have to read the answers for the next question to make sense. But here&#39;s a summary.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ten questions&lt;/b&gt;&lt;br /&gt;Question 1 presents three examples to show how ...&lt;blockquote&gt;ITIL raises customer satisfaction, reduces waste in the IT organization, and lowers operating costs.&lt;/blockquote&gt; Questions 2 and 3 introduce the processes that together make up the ITIL discipline of &lt;em&gt;Service Support&lt;/em&gt;, and the related idea of a &lt;a href=&quot;http://en.wikipedia.org/wiki/Configuration_management_database&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Configuration_management_database&quot;&gt;&lt;strong&gt;Configuration Management Database (CMDB)&lt;/strong&gt;&lt;/a&gt;&lt;/a&gt; that provides the foundation for storing and retrieving all information about the IT infrastructure, and making timely management decisions. &lt;br /&gt;&lt;br /&gt;Question 4 moves to the equally important discipline &lt;em&gt;Service Delivery&lt;/em&gt;, and  includes an &lt;a href=&quot;http://www.infoworld.com/infoworld/img/43FEitil_in2.jpg&quot;&gt;&lt;strong&gt;informative diagram&lt;/strong&gt;&lt;/a&gt; showing the central role of &lt;em&gt;Service Level Management&lt;/em&gt; as the function that regulates the interface between Business and IT. [Incidentally, this highlights a perennial issue we face in high tech, where the ever-shifting meanings of common terms makes it hard for people to communicate clearly. In this instance, ITIL&#39;s definition of &lt;em&gt;Service Level Management&lt;/em&gt; covers a narrower range of activities than &lt;a href=&quot;http://performancematters.blogspot.com/2005/10/service-level-management-slm_18.html&quot;&gt;&lt;strong&gt;my previous use&lt;/strong&gt;&lt;/a&gt; of the same term here.] &lt;br /&gt;&lt;br /&gt;Question 5 introduces the other ITIL books: &lt;em&gt;Introduction to ITIL&lt;/em&gt;, &lt;em&gt;Planning to Implement Service Management&lt;/em&gt;, &lt;em&gt;ICT Infrastructure Management&lt;/em&gt;, &lt;em&gt;Applications Management&lt;/em&gt;, &lt;em&gt;The Business Perspective&lt;/em&gt;, &lt;em&gt;Security Management&lt;/em&gt;, and &lt;em&gt;Software Asset Management&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Question 6 asks, &lt;em&gt;ITIL has been around for more than 15 years. Why is it now taking hold in the United States?&lt;/em&gt;, and answers: &lt;blockquote&gt; The United States has always lagged behind Europe in the discipline of IT infrastructure management. Go to a bookstore, and you&#39;ll find precious few books on the subject. Go to the universities, and you&#39;ll visit a lot before finding one that teaches it. One reason that this is changing is the increasing impact of European- and Asian-owned companies operating in the United States, all saying, Hey, get on board! You need to be ITIL-compliant. That&#39;s how we run our shops over here.&lt;/blockquote&gt; It also refers to something I have &lt;a href=&quot;http://performancematters.blogspot.com/2005/10/delight-satisfy-or-frustrate.html&quot;&gt;&lt;strong&gt;written about&lt;/strong&gt;&lt;/a&gt; here. Whereas IT customers of the past were &quot;&lt;em&gt;internal staffers, managers, and auditors&lt;/em&gt;&quot; ...&lt;blockquote&gt; these days increasing numbers of IT customers ... are &lt;em&gt;external&lt;/em&gt; -- actual customers of the business itself, interacting via public Web sites. If systems fail, potential buyers are likely to take their business elsewhere; potential damage to corporate reputation is high.&lt;/blockquote&gt; Question 7 deals with the needs of large and small IT shops.&lt;br /&gt;&lt;br /&gt;Questions 8 and 9 address getting started and getting outside help with your ITIL implementation.&lt;br /&gt;&lt;br /&gt;Question 10 talks about ITIL&#39;s relationship to &lt;a href=&quot;http://en.wikipedia.org/wiki/ISO_20000&quot;&gt;&lt;strong&gt;ISO 20000&lt;/strong&gt;&lt;/a&gt;. I will discuss the relationship between ITIL, C&lt;small&gt;OBI&lt;/small&gt;T, and some ISO standards in a future post.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Summing up&lt;/b&gt;&lt;br /&gt;The article concludes that ... &lt;blockquote&gt;Companies that have initiated ITIL efforts are already seeing higher customer-satisfaction levels and reduced costs and labor. Although not a panacea for all IT challenges, ITIL is a fundamental conceptual change for how IT will be doing business in the 21st century. Its time has come. &lt;/blockquote&gt; From all the evidence I see, this is an accurate summary. If ITIL&#39;s time has not yet come for your organization, maybe you should expect it to arrive soon. In future posts, I&#39;ll be writing a lot more about how ITIL applies to Web Performance Management. But if you just finding out about ITIL, I recommend this InfoWorld article as a good starting point.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tags:&lt;/b&gt; &lt;a href=&quot;http://technorati.com/tag/ITIL&quot; rel=&quot;tag&quot;&gt;ITIL&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/InfoWorld&quot; rel=&quot;tag&quot;&gt;InfoWorld&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/ISO+20000&quot; rel=&quot;tag&quot;&gt;ISO 20000&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/performance&quot; rel=&quot;tag&quot;&gt;performance&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+performance+management&quot; rel=&quot;tag&quot;&gt;Web performance management&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/service+level+management&quot; rel=&quot;tag&quot;&gt;service level management&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/SLM&quot; rel=&quot;tag&quot;&gt;SLM&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/116192673200272761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/116192673200272761' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/116192673200272761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/116192673200272761'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/10/itil-crash-course.html' title='ITIL Crash Course'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-115663322663027997</id><published>2006-08-28T04:01:00.000+00:00</published><updated>2006-08-28T04:00:44.883+00:00</updated><title type='text'>Web Performance Engineering [4]</title><content type='html'>&lt;em&gt;Continuing my &lt;a href=&quot;http://performancematters.blogspot.com/2006/08/web-performance-engineering-1.html&quot;&gt;&lt;b&gt;series of posts&lt;/b&gt;&lt;/a&gt; on Web performance guidelines, today I&#39;m reviewing one chapter of a new book, &lt;a href=&quot;http://www.sitepoint.com/books/checklists1/&quot;&gt;&lt;b&gt;Deliver First Class Web Sites: 101 Essential Checklists&lt;/b&gt;&lt;/a&gt;, by Shirley Kaiser of &lt;a href=&quot;http://skdesigns.com/&quot;&gt;&lt;b&gt;SKDesigns&lt;/b&gt;&lt;/a&gt;, published by Sitepoint in July 2006.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Sitepoint is known among Web developers for its &lt;a href=&quot;http://www.sitepoint.com/books/&quot;&gt;&lt;b&gt;practical publications&lt;/b&gt;&lt;/a&gt;, and Kaiser deserves credit for including a full chapter on site performance alongside &lt;a href=&quot;http://www.sitepoint.com/books/checklists1/toc.php&quot;&gt;&lt;b&gt;all the other useful advice&lt;/b&gt;&lt;/a&gt; in this book. &lt;br /&gt;&lt;br /&gt;As its title states, this book does not cover topics in great depth. Each checklist item is stated, then discussed briefly. But Kaiser does include enough detail to justify each recommendation, and often includes examples of how to do it. Chapter 11 (&lt;em&gt;Web Site Optimization&lt;/em&gt;) is 19 pages long, presenting 41 recommendations arranged into six checklists: &lt;blockquote&gt;Creating Clean, Lean Markup&lt;br /&gt;Minimizing URLs&lt;br /&gt;Optimizing CSS&lt;br /&gt;Optimizing JavaScript&lt;br /&gt;Supporting Speedy Server Responses&lt;br /&gt;Optimizing Images, Multimedia, and Alternative Formats&lt;/blockquote&gt; However, once I started reviewing Kaiser&#39;s checklists, I soon noticed a remarkable similarity between her choice of topics and those covered in Andrew King&#39;s book, &lt;em&gt;Speed Up Your Site&lt;/em&gt; -- the subtitle of which also happens to be &lt;em&gt;Web Site Optimization&lt;/em&gt;. &lt;br /&gt;&lt;br /&gt;A bit more scrutiny, summarized in &lt;a href=&quot;http://photos1.blogger.com/blogger/7699/1738/1600/Checklist%20vs%20Speed%20Up%20Site.png&quot;&gt;&lt;b&gt;this spreadsheet&lt;/b&gt;&lt;/a&gt;, revealed similarities in the naming, wording, and organization of the checklist items too. Although Kaiser cites &lt;em&gt;Speed Up your Site&lt;/em&gt; in her first paragraph, she does not actually recommend it explicitly, or mention any collaboration with Andrew King. But she seems to have relied heavily on that one source as the main inspiration for her &lt;em&gt;Web Site Optimization&lt;/em&gt; chapter.&lt;br /&gt;&lt;br /&gt;To give Kaiser her due, rather than simply parroting all of King&#39;s recommendations, she has ignored the more extreme ones. All the same, her material still shares most of King&#39;s limitations and omissions, many of which I listed earlier when I &lt;a href=&quot;http://performancematters.blogspot.com/2006/08/web-performance-engineering-3.html&quot;&gt;&lt;b&gt;reviewed his book&lt;/b&gt;&lt;/a&gt;, and which I plan to cover in future posts in this series. &lt;br /&gt;&lt;br /&gt;In conclusion, if you&#39;d like a handy summary of the material in King (except for his excellent discussion of the Psychology of Performance), Kaiser&#39;s book has it, plus about 300 more pages of useful checklists on other topics. I recommend it, because I don&#39;t think you can go far wrong with any book from Sitepoint. If you want to read more about the same topics, you can find &lt;em&gt;Speed Up your Site&lt;/em&gt; on sale on Amazon these days under half price. But don&#39;t assume that either book will give you a well-rounded picture of &lt;em&gt;Web Site Optimization&lt;/em&gt; issues and techniques. &lt;br /&gt;&lt;br /&gt;For more ideas about that, continue reading &lt;em&gt;Performance Matters&lt;/em&gt;, and I&#39;ll do my best to fill in the holes.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tags:&lt;/b&gt; &lt;a href=&quot;http://technorati.com/tag/Shirley+Kaiser&quot; rel=&quot;tag&quot;&gt;Shirley Kaiser&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/SKDesigns&quot; rel=&quot;tag&quot;&gt;SKDesigns&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Sitepoint&quot; rel=&quot;tag&quot;&gt;Sitepoint&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/performance&quot; rel=&quot;tag&quot;&gt;performance&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+site+optimization&quot; rel=&quot;tag&quot;&gt;Web site optimization&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Checklist&quot; rel=&quot;tag&quot;&gt;Checklist&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/page+design&quot; rel=&quot;tag&quot;&gt;page design&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/site+design&quot; rel=&quot;tag&quot;&gt;site design&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/service+level&quot; rel=&quot;tag&quot;&gt;service level&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/SLM&quot; rel=&quot;tag&quot;&gt;SLM&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/optimization&quot; rel=&quot;tag&quot;&gt;optimization&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+optimization&quot; rel=&quot;tag&quot;&gt;Web optimization&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/tuning&quot; rel=&quot;tag&quot;&gt;tuning&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+tuning&quot; rel=&quot;tag&quot;&gt;Web tuning&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/115663322663027997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/115663322663027997' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/115663322663027997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/115663322663027997'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/08/web-performance-engineering-4.html' title='Web Performance Engineering [4]'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-115623348953426761</id><published>2006-08-22T07:01:00.000+00:00</published><updated>2006-08-22T23:25:52.676+00:00</updated><title type='text'>Web Performance Engineering [3]</title><content type='html'>&lt;em&gt;Continuing &lt;a href=&quot;http://performancematters.blogspot.com/2006/08/web-performance-engineering-1.html&quot;&gt;&lt;b&gt;my series&lt;/b&gt;&lt;/a&gt; on Web performance guidelines, today I am reviewing another book -- &lt;a href=&quot;http://www.websiteoptimization.com/speed/&quot;&gt;&lt;b&gt;Speed Up Your Site&lt;/b&gt;&lt;/a&gt;, by Andrew B. King, published by New Riders in 2003.&lt;/em&gt; &lt;br /&gt;&lt;br /&gt;A while back, when I was reviewing &lt;a href=&quot;http://performancematters.blogspot.com/2005/11/web-usability-books-4.html &quot;&gt;&lt;b&gt;Web Usability Books&lt;/b&gt;&lt;/a&gt;, I promised to cover &lt;em&gt;Speed Up Your Site&lt;/em&gt;, but never got around to doing so -- for reasons I will explain. A full &lt;a href=&quot;http://www.websiteoptimization.com/speed/toc/&quot;&gt;&lt;b&gt;table of contents&lt;/b&gt;&lt;/a&gt; listing all 19 chapters is available online; in summary, the book has six parts: &lt;blockquote&gt;Part I - The Psychology of Performance (38 pages)&lt;br /&gt;Part II - Optimizing Markup: HTML and XHTML (99 pages) &lt;br /&gt;Part III - DHTML Optimization: CSS and JavaScript (111 pages)&lt;br /&gt;Part IV - Graphics and Multimedia Optimization (85 pages)&lt;br /&gt;Part V - Search Engine Optimization (39 pages)&lt;br /&gt;Part VI - Advanced Optimization Techniques (79 pages) &lt;/blockquote&gt; Part of my difficulty in reviewing this book was that I have mixed feelings about it. Naturally, I am always pleased to see an entire book devoted to performance issues. Also, Part I is particularly good. Containing 77 references, it is a very well-researched survey of &lt;a href=&quot;http://performancematters.blogspot.com/2005/10/miller-response-time-test.html&quot;&gt;&lt;b&gt;an important subject&lt;/b&gt;&lt;/a&gt; rarely covered in books about Usability. On the other hand, I am not nearly as impressed with the rest of its advice and guidelines, for two reasons: their correctness, and their completeness.&lt;br /&gt; &lt;br /&gt;First correctness. Regarding the actual content, my issue is not that &lt;em&gt;Speed Up Your Site&lt;/em&gt; contains factual errors. As far as I can tell, its content is accurate. But some of its recommendations -- although they may indeed improve performance -- are so unnatural that they are not really the correct way to tackle the problem. This concern is summarized by &lt;a href=&quot;http://www.amazon.com/gp/pdp/profile/A22J15XA2EQDRI/ref=cm_cr_auth/102-8710606-1594548?ie=UTF8&quot;&gt;&lt;b&gt;Alexander Bunkenburg&lt;/b&gt;&lt;/a&gt; in &lt;a href=&quot;http://www.amazon.com/gp/cdp/member-reviews/A22J15XA2EQDRI/ref=cm_pdp_profile_reviews/102-8710606-1594548?ie=UTF8&quot;&gt;&lt;b&gt;this review&lt;/b&gt;&lt;/a&gt; on Amazon.com: &lt;blockquote&gt;This book concentrates almost exclusively on sending fewer bytes from the server to the browser. It gives a large collection of tricks how to write shorter html, xhtml, css, and JavaScript. Some of these tricks are useful. Others however go against standards, and some seriously go against maintainability. I&#39;d be reluctant to give this book to my team. One may be tempted into shaving off bytes, spending a big effort and yet producing unmaintainable code.&lt;/blockquote&gt; The problems that can result from deliberately violating standards are highlighted by &lt;a href=&quot;http://www.amazon.com/gp/pdp/profile/A2L7OS23U5ZBMS/ref=cm_cr_auth/102-8710606-1594548?ie=UTF8&quot;&gt;&lt;b&gt;David Rose&lt;/b&gt;&lt;/a&gt; in another &lt;a href=&quot;http://www.amazon.com/gp/cdp/member-reviews/A2L7OS23U5ZBMS/ref=cm_pdp_profile_reviews/102-8710606-1594548?ie=UTF8&quot;&gt;&lt;b&gt; Amazon review&lt;/b&gt;&lt;/a&gt;: &lt;blockquote&gt;In today&#39;s world, where &quot;standards based&quot; coding is becoming more prevalent and adherence to the W3C standards for HTML coding is being recommended, this book just grated on me. While there is a great deal of great information, there are also a large number of &quot;gotchas&quot; to watch out for as well.&lt;br /&gt;&lt;br /&gt;The book proposes to use HTML tags without their corresponding closing tags, not to use required elements whenever possible, avoid using quotes in HTML tags, and many other ways of creating &quot;non-valid&quot; code. This will &quot;optimize&quot; your code a bit more by reducing the characters in it, but it will also create problems for you in the future. &lt;br /&gt;&lt;br /&gt;In summary, while the book does give a lot of good information, it often steers you away from standard code. If you are unsure what is considered &quot;standard&quot; and required for creating valid XHTML/CSS, you are best served skipping this book as it will teach you to create invalid code.&lt;/blockquote&gt; Bunkenburg&#39;s review also touches on my second area of concern -- completeness. Any book about speeding up Web site performance should (in my view) at least mention all the important topics, to let the reader know what options exist. Some important topics that receive little or no coverage in &lt;em&gt;Speed Up Your Site&lt;/em&gt; are: &lt;ul&gt; &lt;li&gt;&lt;b&gt;Page Types&lt;/b&gt;: All pages are not created equal, and users&#39; tolerance for delays changes depending on where they are in their interaction with a site. So a single page design approach cannot be applied to all pages.&lt;br /&gt;&lt;li&gt;&lt;b&gt;Maximize content reuse&lt;/b&gt;: A common mistake as sites grow is to use many different names (URLs) for the same thing, reducing the efficiency of browser caching. &lt;br /&gt;&lt;li&gt;&lt;b&gt;Ratio of HTML base to content&lt;/b&gt;: There is a significant difference between the way browsers handle the base (or index) portion of the page, and referenced content elements, which can affect page download time.&lt;br /&gt;&lt;li&gt;&lt;b&gt;Image resizing&lt;/b&gt;: For efficient page rendering, it helps to specify HTML HEIGHT and WIDTH tags for all embedded images. And for download speed, avoid resizing images in the browser. &lt;br /&gt;&lt;li&gt;&lt;b&gt;Performance of SSL&lt;/b&gt;: All online business sites use encryption, and pages that use SSL encryption incur significant overheads. This is an issue that demands a separate section in any book about site performance.&lt;br /&gt;&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Content_Delivery_Network&quot;&gt;Content Delivery Networks&lt;/a&gt; (CDNs)&lt;/b&gt;: &lt;a href=&quot;http://www.akamai.com/en/html/about/company_history.html&quot;&gt;&lt;b&gt;Akamai&lt;/b&gt;&lt;/a&gt; went public in 1999, and was widely used by 2002. Mirror Image, Cable and Wireless (formerly Digital Island), and Speedera also offered CDN services in 2002. How can any book about speeding up your site not even mention this technology? &lt;/ul&gt; In fairness to King, any discussion of the book&#39;s coverage should point out the following disclaimer, which appears in its Introduction: &lt;blockquote&gt;Although the primary emphasis is on optimizing client-side technologies, this book also covers server-side techniques and compression to squeeze the maximum performance out of your site. These are all techniques that most designers and authors can control. Instead of focusing on esoteric server-side tuning limited to system administrators, this book focuses on optimizing the content that you deliver. For a server-oriented look at performance, see &lt;em&gt;Web Performance Tuning&lt;/em&gt;, by Patrick Killelea.&lt;/blockquote&gt; But most of the omissions I listed are not related to server-side tuning, and of the two that are (SSL and CDNs), only SSL is discussed by Patrick Killelea, and his only recommendation is to use an SSL accelerator card. And in 2002, CDN technology could hardly be considered &quot;esoteric&quot;, especially in a book which, to quote its author, is &quot;not for beginners&quot;. &lt;br /&gt;&lt;br /&gt;There is a lot more to be said on most the above topics, and in future posts I will expand upon them.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tags:&lt;/b&gt; &lt;a href=&quot;http://technorati.com/tag/Andrew+King&quot; rel=&quot;tag&quot;&gt;Andrew King&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Speed+up+your+site&quot; rel=&quot;tag&quot;&gt;Speed up your site&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/performance&quot; rel=&quot;tag&quot;&gt;performance&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+site+optimization&quot; rel=&quot;tag&quot;&gt;Web site optimization&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/page+design&quot; rel=&quot;tag&quot;&gt;page design&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/site+design&quot; rel=&quot;tag&quot;&gt;site design&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/service+level&quot; rel=&quot;tag&quot;&gt;service level&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/SLM&quot; rel=&quot;tag&quot;&gt;SLM&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/optimization&quot; rel=&quot;tag&quot;&gt;optimization&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+optimization&quot; rel=&quot;tag&quot;&gt;Web optimization&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/tuning&quot; rel=&quot;tag&quot;&gt;tuning&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+tuning&quot; rel=&quot;tag&quot;&gt;Web tuning&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/115623348953426761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/115623348953426761' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/115623348953426761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/115623348953426761'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/08/web-performance-engineering-3.html' title='Web Performance Engineering [3]'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-115576409557439867</id><published>2006-08-18T07:01:00.000+00:00</published><updated>2006-08-18T15:47:21.536+00:00</updated><title type='text'>Web Performance Engineering [2]</title><content type='html'>&lt;em&gt;Today I&#39;m going to look at another list of &lt;a href=&quot;http://www.oreillynet.com/pub/a/javascript/2002/06/27/web_tuning.html&quot;&gt;&lt;b&gt;Top Ten Web Performance Tuning Tips&lt;/b&gt;&lt;/a&gt;, following up on &lt;a href=&quot;http://performancematters.blogspot.com/2006/08/web-performance-engineering-1.html&quot;&gt;&lt;b&gt;my promise&lt;/b&gt;&lt;/a&gt; to review Web site and application performance advice.&lt;/em&gt; &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://photos1.blogger.com/blogger/7699/1738/1600/WebPTCover.gif&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 5px 10px;cursor:pointer; cursor:hand;&quot; src=&quot;http://photos1.blogger.com/blogger/7699/1738/200/WebPTCover.gif&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; Today&#39;s list of tuning tips was created by &lt;a href=&quot;http://www.oreillynet.com/pub/au/563&quot;&gt;&lt;b&gt;Patrick Killelea&lt;/b&gt;&lt;/a&gt;, the author  of &lt;a href=&quot;http://www.oreilly.com/catalog/webpt2/&quot;&gt;&lt;b&gt;Web Performance Tuning&lt;/b&gt;&lt;/a&gt;, first published by O&#39;Reilly in 1998, then revised in 2002. When the second edition came out, Patrick also updated his 1998 top ten list, presumably to reflect changes in the rapidly maturing Internet and Web environment. But O&#39;Reilly still publishes &lt;a href=&quot;http://www.oreillynet.com/pub/a/oreilly/web/news/webperf_1098.html&quot;&gt;&lt;b&gt;the 1998 list&lt;/b&gt;&lt;/a&gt; alongside the 2002 list without any further explanation, even though just four recommendations appear on both lists! &lt;br /&gt;&lt;br /&gt;I see this as evidence that publishers are a lot more interested in selling a book than they are in the usefulness of its content. So let&#39;s blame O&#39;Reilly and give Patrick the benefit of the doubt here, and focus on his latest list only. Abbreviating his recommendations, they are: &lt;blockquote&gt; 1. Check for compliance with standards&lt;br /&gt;2. Minimize use of JavaScript and style sheets&lt;br /&gt;3. Turn off the Web server&#39;s reverse DNS lookups&lt;br /&gt;4. Try out a free analysis tool (to find bottlenecks)&lt;br /&gt;5. Use simple servlets or CGI&lt;br /&gt;6. Get more memory&lt;br /&gt;7. Index your database tables well&lt;br /&gt;8. Make fewer database queries&lt;br /&gt;9. Look for packet loss and retransmission&lt;br /&gt;10. Monitor your Web site&#39;s performance &lt;/blockquote&gt;  When someone publishes a top ten list, I expect it to include the ten most important and useful recommendations -- especially when its author has written the most comprehensive book available on the subject. In this case, even allowing for the maturing of the Web since 2002, I have no idea how Patrick could have come up with this list. I have three problems with it -- what&#39;s in it, what&#39;s not in it, and its order. Today I will tackle mainly the first area; here are some brief thoughts about each of his recommendations: &lt;ol&gt; &lt;blockquote&gt;&lt;li&gt;&lt;b&gt;Check for standards compliance by using Weblint or other HTML checking tools.&lt;/b&gt;&lt;br&gt;Content that conforms to the HTML 4.0 standard will load faster and work in every browser because the browser then knows what to expect. Note that Microsoft-based tools create content that does not even use the standard ASCII character set, but instead uses many proprietary Microsoft characters that will display in Netscape as question marks and can slow down rendering.&lt;/blockquote&gt; Complying with standards is always a good thing of course, but it&#39;s rarely a performance issue. And how can a browser compatibility problem be rated the top &lt;em&gt;performance&lt;/em&gt; guideline? In the 458-page book it merits just 37 words, headed &lt;em&gt;Watch out for Composition Tools with a Bias&lt;/em&gt;.  Beware of biased guidelines, I say.&lt;br /&gt;&lt;blockquote&gt;&lt;li&gt;&lt;b&gt;Minimize the use of JavaScript and style sheets.&lt;/b&gt;&lt;br&gt;JavaScript is a major source of incompatibility, browser hangs, and pop-up advertising. Style sheets require separate downloads before the page can be displayed. There are some nice features to both JavaScript and style sheets, but at a big cost. Life is better without them.&lt;/blockquote&gt; Wrongheaded, even in 2002. Today this advice is ridiculous -- JavaScript and CSS are core features of most Web sites. How can O&#39;Reilly even keep this on their site?&lt;br /&gt;&lt;blockquote&gt;&lt;li&gt;&lt;b&gt;Turn off reverse DNS lookups in the Web server.&lt;/b&gt;&lt;br&gt;If left on, reverse DNS will log a client&#39;s machine name rather than IP address, but at a large performance cost. It is better left off. You can always run log analysis tools which look up the names later.&lt;/blockquote&gt; Outdated, even in 2002. This was good advice &lt;a href=&quot;http://www.webmonkey.com/webmonkey/97/49/index3a_page3.html?tw=backend&quot;&gt;&lt;b&gt;in 1997&lt;/b&gt;&lt;/a&gt;: &lt;em&gt;Prior to Apache 1.3, HostnameLookups defaulted to On. This adds latency to every request because it requires a DNS lookup to finish before the request is completed. In Apache 1.3, this setting defaults to Off.&lt;/em&gt; This should still appear on a much longer checklist, because security concerns might prompt someone to turn on HostnameLookups. But it doesn&#39;t belong at #3 in the top ten. &lt;blockquote&gt;&lt;li&gt;&lt;b&gt;Try out a free analysis tool.&lt;/b&gt;&lt;br&gt;I&#39;ve provided a free analysis tool at &lt;a href=&quot;http://patrick.net/&quot;&gt;&lt;b&gt;my Web site&lt;/b&gt;&lt;/a&gt; that can tell you whether or not your bottleneck is in DNS, or because of connection time or content size, or is on the server side. Work on improving the slowest part first.&lt;/blockquote&gt; The core idea here -- improving the slowest part first -- is a great recommendation; it should have been at the top of the list. It&#39;s in the book too, on page 163. On the other hand, the free tool has now been replaced (check the link) by a graph of local house prices. After some digging, I found that Patrick does still have &lt;a href=&quot;http://patrick.net/software/&quot;&gt;&lt;b&gt;a page about his book&lt;/b&gt;&lt;/a&gt;, which also contains tons of links to software tools, so it would take a while to figure which one he meant. But this kind of Web research doesn&#39;t have to be a treasure hunt -- how hard would it be rewrite the guideline and get O&#39;Reilly to update their site?  &lt;br /&gt;&lt;blockquote&gt;&lt;li&gt;&lt;b&gt;Use simple servlets or CGI.&lt;/b&gt;&lt;br&gt;Use simple servlets, CGI, or your Web server&#39;s API rather than any distributed object schemes like CORBA or EJB. Distributed object schemes are intended to improve a programmer&#39;s code-writing productivity, but they do so at an unacceptable cost in performance for end-users.&lt;/blockquote&gt; This is reasonable advice, although the examples need updating -- CGI is legacy technology now, and newer application services like ASP.NET and low level APIs like ISAPI, NSAPI, Apache extensions, etc. are faster. But the central idea is this: When a site handles a lot of business transactions, back-end communication overheads add up fast, and in the worst examples, become the bottleneck that forces you to spread the load across more servers. So anything you can do to minimize the resources consumed per transaction will cut service times and increase server capacity. And probably save money in the process, too -- money that could be spent on the next item.  &lt;br /&gt;&lt;blockquote&gt;&lt;li&gt;&lt;b&gt;Get more memory.&lt;/b&gt;&lt;br&gt;Your Web server, middleware, and database all will probably do better with more memory, if they still use their hard disks frequently. Hard disks are literally about a million times slower than memory, so you should buy more memory until the disks are phased out.&lt;/blockquote&gt; Absolutely! You&#39;ll never be able to throw away your disks, but a key goal of tuning should be to find ways to use them less. Prioritize your hardware resources from fastest to slowest -- memory, processor, disks, LAN, Internet -- and try to reduce use of the slower ones by moving work to the faster ones.&lt;br /&gt;&lt;blockquote&gt;&lt;li&gt;&lt;b&gt;Index your database tables well.&lt;/b&gt;&lt;br&gt;Spectacular improvements are possible if you are inadvertently doing full-table scans on every hit of a particular URL. Indexes allow you to go directly to the data you need.&lt;/blockquote&gt; As opposed to indexing them badly, I suppose. This tuning guideline certainly does not apply to the Web exclusively, it&#39;s important whenever databases are used. But it&#39;s probably worth repeating in this context, in case anyone creating Web applications thinks that databases use magic to find things. By the way, you can also get &lt;em&gt;spectacular improvements&lt;/em&gt; by replacing incompetent programmers and improving their poor designs. But I&#39;d strongly recommend not hiring them in the first place.&lt;br /&gt;&lt;blockquote&gt;&lt;li&gt;&lt;b&gt;Make fewer database queries.&lt;/b&gt;&lt;br&gt;If you can cache content in your middleware or servlets, do it. Making connections to a database and using those database connections is typically a bottleneck for performance.&lt;/blockquote&gt; Right! And if you can send less content to the browser, do that too. In fact, &lt;em&gt;doing less work&lt;/em&gt; is always a sure way to improve performance. That&#39;s a general rule everyone should know, so general that I would not even include it in this list. I consider it part of a tuning framework -- a systematic way to approach &lt;em&gt;any&lt;/em&gt; tuning project, not just speeding up Web applications.&lt;br /&gt;&lt;blockquote&gt;&lt;li&gt;&lt;b&gt;Look for packet loss and retransmission.&lt;/b&gt;&lt;br&gt;There are many network snooping and monitoring tools to help you do this. Intermittent slowness is often due to packets being lost or corrupted. This is because a time-out period needs to pass before the packet is retransmitted.&lt;/blockquote&gt; This is useful advice, as far as it goes -- noisy connections can ruin your response times. But the guideline should really suggest what to do about the problem, if you have it, and that&#39;s a subject for a future post. And I&#39;m not sure if it will make my top ten list either, I&#39;ll have to wait and see what else I come up with.&lt;br /&gt;&lt;blockquote&gt;&lt;li&gt;&lt;b&gt;Set up monitoring and automated graphing of your Web site&#39;s performance.&lt;/b&gt;&lt;br&gt;This information is free online in Chapter 4 of the second edition of Web Performance Tuning.&lt;/blockquote&gt; Indeed! Measurements usually beat guesswork and clairvoyance. You&#39;ve probably heard the popular saying that &lt;em&gt;you can&#39;t manage what you don&#39;t measure&lt;/em&gt;, and I&#39;ve already spent more than enough time &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/deep-thoughts-on-management.html&quot;&gt;&lt;b&gt;researching it&lt;/b&gt;&lt;/a&gt;. All the same, it&#39;s not really a tuning guideline. I&#39;d call it a performance management principle, so I don&#39;t think it actually belongs in this list at all. &lt;/ol&gt; So, to sum up my audit of Patrick&#39;s list of ten guidelines, I vote to reject two altogether (#1 and #2), downgrade one (#3) to a priority well outside my top ten, accept four (#4, #5, #6, and #7), restate two (#8 and #10) as general principles that don&#39;t belong on this list, and reserve judgment on one (#9). &lt;br /&gt;&lt;br /&gt;That opens up 5 or 6 slots for the things that Patrick missed -- but what should they be? I will tackle that subject in a follow-up post.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://technorati.com/tag/Killelea&quot; rel=&quot;tag&quot;&gt;Killelea&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Patrick+Killelea&quot; rel=&quot;tag&quot;&gt;Patrick Killelea&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/O&#39;Reilly&quot; rel=&quot;tag&quot;&gt;O&#39;Reilly&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/performance&quot; rel=&quot;tag&quot;&gt;performance&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+performance&quot; rel=&quot;tag&quot;&gt;Web performance&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/page+design&quot; rel=&quot;tag&quot;&gt;page design&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/site+design&quot; rel=&quot;tag&quot;&gt;site design&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/service+level&quot; rel=&quot;tag&quot;&gt;service level&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/SLM&quot; rel=&quot;tag&quot;&gt;SLM&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/optimization&quot; rel=&quot;tag&quot;&gt;optimization&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+optimization&quot; rel=&quot;tag&quot;&gt;Web optimization&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/tuning&quot; rel=&quot;tag&quot;&gt;tuning&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+tuning&quot; rel=&quot;tag&quot;&gt;Web tuning&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/115576409557439867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/115576409557439867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/115576409557439867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/115576409557439867'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/08/web-performance-engineering-2.html' title='Web Performance Engineering [2]'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-115579571202330146</id><published>2006-08-17T05:35:00.000+00:00</published><updated>2006-08-18T20:21:35.706+00:00</updated><title type='text'>Baseball and the Price of Gas</title><content type='html'>This is only tangentially related to the usual subjects I cover in this blog, but it certainly relates to the way I approach research and blogging. I am always doing research online, and during summer evenings and weekends that activity is often accompanied by the day&#39;s radio broadcast of the &lt;a href=&quot;http://oakland.athletics.mlb.com/&quot;&gt;&lt;b&gt;Oakland A&#39;s&lt;/b&gt;&lt;/a&gt; baseball game -- the best baseball team here in the San Francisco Bay Area, by any objective standard.&lt;br /&gt;&lt;br /&gt;Tonight was no different, and A&#39;s broadcaster Robert Buan caught my attention when he opened the post-game show. He pointed out that in winning tonight, the A&#39;s have secured their biggest lead in their division since September 30, 1992. As a fan of the team, this is interesting; to everyone else it&#39;s probably instantly forgettable. But more intriguing was what he actually said -- in the very first sentence of the program. He opened his show with this statement: &lt;br /&gt;&lt;br /&gt;&lt;em&gt;According to a reliable authority, wikipedia.com, the last time the A&#39;s had a lead of six and a half games in the American League West, gas was selling for $1.38.&lt;/em&gt; &lt;br /&gt;&lt;br /&gt;I couldn&#39;t help reflecting on how much the Web is changing the way &lt;em&gt;everyone&lt;/em&gt; approaches information and research!</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/115579571202330146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/115579571202330146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/115579571202330146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/115579571202330146'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/08/baseball-and-price-of-gas.html' title='Baseball and the Price of Gas'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-115560554959082647</id><published>2006-08-15T17:45:00.000+00:00</published><updated>2006-08-22T09:05:01.856+00:00</updated><title type='text'>Reporting Web Application Responsiveness</title><content type='html'>In a previous post, I discussed some complications of &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-6.html&quot;&gt;&lt;strong&gt;measuring Rich Internet Applications&lt;/strong&gt;&lt;/a&gt; (RIAs). In particular, I concluded that … &lt;blockquote&gt;… to report useful measurements of the user experience of response times, instead of relying on the definition of physical Web pages to drive the subdivision of application response times, we must break the application into what we might call &lt;em&gt;logical pages&lt;/em&gt;. To do this, a measurement tool must recognize meaningful application &lt;em&gt;milestones&lt;/em&gt; or &lt;em&gt;markers&lt;/em&gt; that signal logical boundaries of interest for reporting, and thus subdivide the application so that we can identify and report response times by logical page.&lt;/blockquote&gt; Today I am going to look &lt;em&gt;inside&lt;/em&gt; the logical page, and consider what happens when the application responds to a user action. I have previously written about the stages of this process &lt;a href=&quot;http://performancematters.blogspot.com/2005/10/web-site-response-time-model.html&quot;&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt;, and in &lt;a href=&quot;http://www.keynote.com/downloads/whitepapers/ecommerce_response_time.pdf&quot;&gt;&lt;strong&gt;this paper&lt;/strong&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Two Standard Service Level Metrics&lt;/strong&gt;&lt;br /&gt;Because Web pages are constructed using many separately downloaded components, low level monitoring tools can collect a ton of data about the communications activity triggered by a user interface action. And for diagnostic and tuning purposes, it is always useful to measure each separate component of the download process. But for most service level monitoring, this low level data can usually be summarized in just two important metrics: &lt;em&gt;initial response time&lt;/em&gt; and &lt;em&gt;page download time&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;From the perspective of a typical user, these metrics represent two distinct events in the page download experience. After &#39;clicking&#39; on a page, the first measures the apparent pause until the site begins to respond, while the second measures the time for that response to download. &lt;br /&gt;&lt;br /&gt;The elapsed time between these two events can be large enough to affect the way pages are designed. Because pages containing many images take a while to download over slower connections, such pages are normally laid out so that the most popular links are displayed early in the page download process, allowing a user to navigate to another part of the site without having to wait for the all the page content to complete.&lt;br /&gt;&lt;br /&gt;But while &lt;em&gt;initial response time&lt;/em&gt; and &lt;em&gt;page download time&lt;/em&gt; provide a good indication of the user’s experience of a &lt;em&gt;traditional&lt;/em&gt; Web application, they may be less useful for some &lt;em&gt;RIAs&lt;/em&gt;. In these applications, the time to complete a page download might include additional asynchronous activity that does not affect the user’s experience of the current page, such as fetching additional content (like executable script files, application data, images, or even streams) for future use within the application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;An Additional Metric for RIAs&lt;/strong&gt;&lt;br /&gt;This suggests that, while the two existing metrics are still useful, a standard scheme for measuring and reporting RIA responsiveness probably needs to also include a metric that represents the time from user interface action until an intermediate event, one that we might call &lt;em&gt;page display complete&lt;/em&gt;. This metric would reflect the time it takes to download everything needed to complete the display of the current page.&lt;br /&gt; &lt;br /&gt;Even that definition is ambiguous, because it may not be obvious when some pages are &#39;completely displayed&#39;. I see two issues here. First, what about parts of the page outside the display window, that won’t be visible until the user scrolls? Let’s deal with that by assuming the user has a screen of unlimited size, so that the entire page could be visible without scrolling. &lt;br /&gt;&lt;br /&gt;Second, what if a page includes a streamed video, or a series of images that are displayed in sequence, each replacing the previous one? On reflection, I conclude that the &lt;em&gt;&#39;page display complete&#39;&lt;/em&gt; event should occur when the complete display is &lt;em&gt;first&lt;/em&gt; visible -- in my examples, when the video &lt;em&gt;begins&lt;/em&gt; playing, or the &lt;em&gt;first&lt;/em&gt; image is displayed. That&#39;s because measuring to the &lt;em&gt;last&lt;/em&gt; view of the display would make this metric a lot less useful as a measure of a user&#39;s experience of responsiveness. And nowhere between those two extremes offers any possibility of generality across applications.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Summarizing What’s Needed&lt;/strong&gt;&lt;br /&gt;So now I have defined three distinct metrics that seem to have fairly universal applicability when measuring the responsiveness of RIAs: &lt;blockquote&gt;&lt;strong&gt;Initial response time&lt;/strong&gt;&lt;br /&gt;The elapsed time from a user interface action (a mouse click, or any other user action that triggers a download process) until the browser places the page in a state that permits a user to perform another action (technically, the user is &lt;em&gt;unblocked&lt;/em&gt;). We could also say that this is the time until the new page first becomes &lt;em&gt;usable&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Page display time&lt;/strong&gt;&lt;br /&gt;The elapsed time from a user interface action until the complete resulting page is first displayed, or could be first displayed if the screen were large enough.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Page download time&lt;/strong&gt;&lt;br /&gt;The elapsed time from a user interface action until the complete resulting page and all associated content elements have been downloaded. This time includes all secondary or background downloads triggered by the user&#39;s action, whether or not they are required for the current page display.&lt;/blockquote&gt; These definitions provide only &lt;em&gt;a rough statement of requirements&lt;/em&gt; for RIA measurement -- none is technically precise. In practice, any attempt to implement any one of these requirements could present problems for some applications, browsers, or measurement tools, and I will write about some of those complications in a future post. But I think it is useful to identify these generally applicable goals for measuring and reporting on the responsiveness of Rich Internet Applications.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://technorati.com/tag/RIA&quot; rel=&quot;tag&quot;&gt;RIA&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Rich+Internet+Application&quot; rel=&quot;tag&quot;&gt;Rich Internet Application&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/measurement&quot; rel=&quot;tag&quot;&gt;measurement&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/service+level&quot; rel=&quot;tag&quot;&gt;service level&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/SLM&quot; rel=&quot;tag&quot;&gt;SLM&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/page+download&quot; rel=&quot;tag&quot;&gt;page download&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+application&quot; rel=&quot;tag&quot;&gt;Web application&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Webapp&quot; rel=&quot;tag&quot;&gt;Webapp&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/115560554959082647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/115560554959082647' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/115560554959082647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/115560554959082647'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/08/reporting-web-application.html' title='Reporting Web Application Responsiveness'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-115560113273899239</id><published>2006-08-15T00:12:00.000+00:00</published><updated>2006-12-14T02:09:16.976+00:00</updated><title type='text'>Web Performance Engineering [1]</title><content type='html'>&lt;em&gt;This post is the first in a new series on how to build Web pages, sites and applications that perform well -- by design. I will be combining my own observations with online research and recommendations on best practices contributed by my colleague Ben Rushlo. Ben makes his living measuring Web site performance and giving companies advice on how to improve the performance of their sites and applications.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Despite the crucial contribution of performance to online application effectiveness, good advice on the subject is surprisingly scarce on the Web, and even scarcer in books about Web design. Although you do sometimes find small sections (rarely chapters) of such books devoted to performance, their content is usually weak and almost never a systematic treatment of the issues. I won&#39;t bore you with proof, but I do mention one example below.&lt;br /&gt;&lt;br /&gt;On the other hand, the exceptions are certainly worth noting. Recently I found an excellent discussion of &lt;a href=&quot;http://alexander.kirk.at/2006/02/02/10-steps-to-a-faster-web-site/&quot;&gt;&lt;b&gt;10 Realistic Steps to a Faster Web Site&lt;/b&gt;&lt;/a&gt;, posted in February 2006 by Alexander Kirk, a Web application programmer in Vienna, Austria. I mention his profession because in my experience, a lot of advice about performance written by programmers completely ignores the central rule of all performance optimization -- &lt;em&gt;to speed anything up, remove the biggest bottleneck&lt;/em&gt;. &lt;br /&gt;&lt;br /&gt;Applying just this one rule repeatedly (think about it) will always produce the best results. And in the world of distributed systems, the biggest bottlenecks will almost always be related to the way an application uses a network, not to the way a computer (client or server) processes some program code. In other words, the application&#39;s logic is usually far more important than the way a programmer coded it. &lt;br /&gt;&lt;br /&gt;Kirk obviously understands this. After &lt;a href=&quot;http://alexander.kirk.at/2006/01/03/49/&quot;&gt;&lt;b&gt;complaining&lt;/b&gt;&lt;/a&gt; about an example of &lt;a href=&quot;http://bravenewword.typepad.com/brave_new_word/2005/11/web_developers_.html&quot;&gt;&lt;b&gt;misguided performance advice&lt;/b&gt;&lt;/a&gt; (read the comments), he presents his view of a &lt;a href=&quot;http://alexander.kirk.at/2006/02/02/10-steps-to-a-faster-web-site/&quot;&gt;&lt;b&gt;systematic approach&lt;/b&gt;&lt;/a&gt; to Web application performance analysis. I will not attempt to summarize it beyond simply listing the outline, which is: &lt;blockquote&gt;1. Determine the bottleneck&lt;br /&gt;1.1. File Size&lt;br /&gt;1.2. Latency&lt;br /&gt;2. Reducing the file size&lt;br /&gt;3. Check what’s causing a high latency&lt;br /&gt;3.1. Is it the network latency?&lt;br /&gt;3.2. Does it take too long to generate the page?&lt;br /&gt;3.3. Is it the rendering performance?&lt;br /&gt;4. Determine the lagging component(s)&lt;br /&gt;5. Enable a Compiler Cache&lt;br /&gt;6. Look at the DB Queries&lt;br /&gt;7. Send the correct Modification Data&lt;br /&gt;8. Consider Component Caching (advanced)&lt;br /&gt;9. Reducing the Server Load&lt;br /&gt;9.1. Use a Reverse Proxy (needs access to the server)&lt;br /&gt;9.2. Take a lightweight HTTP Server (needs access to the server)&lt;br /&gt;10. Server Scaling (extreme technique)&lt;/blockquote&gt; Kirk&#39;s discussion does omit a few topics (subjects for future posts in this series) that I think are important, but this is an excellent starting point. While his wording implies a &lt;em&gt;reactive&lt;/em&gt; approach to his subject matter (writing about &lt;em&gt;tuning&lt;/em&gt; or &lt;em&gt;improving&lt;/em&gt; the performance an existing site), most of his guidelines relate to best practices in site design and engineering. So there is no reason why they should not be implemented &lt;em&gt;proactively&lt;/em&gt;, without waiting for problems to surface.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://technorati.com/tag/Web+performance&quot; rel=&quot;tag&quot;&gt;Web performance&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/page+design&quot; rel=&quot;tag&quot;&gt;page design&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/site+design&quot; rel=&quot;tag&quot;&gt;site design&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/service+level&quot; rel=&quot;tag&quot;&gt;service level&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/SLM&quot; rel=&quot;tag&quot;&gt;SLM&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/optimization&quot; rel=&quot;tag&quot;&gt;optimization&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+optimization&quot; rel=&quot;tag&quot;&gt;Web optimization&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/115560113273899239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/115560113273899239' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/115560113273899239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/115560113273899239'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/08/web-performance-engineering-1.html' title='Web Performance Engineering [1]'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-115363590713099217</id><published>2006-07-23T06:23:00.000+00:00</published><updated>2006-08-12T01:02:47.623+00:00</updated><title type='text'>Rich Internet Applications: an update</title><content type='html'>&lt;a href=&quot;http://photos1.blogger.com/blogger/7699/1738/1600/RIA%20WP%20image.gif&quot;&gt;&lt;img style=&quot;FLOAT: right; MARGIN: 0px 0px 5px 5px; CURSOR: hand&quot; alt=&quot;RIA White Paper&quot; src=&quot;http://photos1.blogger.com/blogger/7699/1738/200/RIA%20WP%20image.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Blogging has taken a backseat to other activities for a couple of months, so I have some &lt;em&gt;Performance Matters&lt;/em&gt; to report.&lt;br /&gt;&lt;br /&gt;Following publication of the &lt;a href=&quot;http://performancematters.blogspot.com/2006/04/managing-rich-internet-applications-7.html&quot;&gt;&lt;strong&gt;seventh&lt;/strong&gt;&lt;/a&gt; in my earlier series of posts about managing Rich Internet Applications (RIAs), I reworked most of that material into a single paper. After some delays to reformat the content and redraw the diagrams, it is now available an an &lt;em&gt;Industry Brief&lt;/em&gt;, which you can download from the &lt;a href=&quot;http://www.keynote.com/resources/resource_library.html&quot;&gt;&lt;strong&gt;Keynote resource library&lt;/strong&gt;&lt;/a&gt;. The title is &lt;em&gt;Rich Internet Applications: Design, Measurement, and Management Challenges&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Although I referenced Wikipedia when introducing the subject of RIAs, and retained those references in the paper, I did not feel that the current contents of Wikipedia did a very good job of explaining RIAs. In my &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-2.html&quot;&gt;&lt;strong&gt;second post&lt;/strong&gt;&lt;/a&gt; I described how I had met &lt;a href=&quot;http://tinyurl.com/nshnd&quot;&gt;&lt;b&gt;Aleksandar Šušnjar&lt;/b&gt;&lt;/a&gt; online after reading &lt;a href=&quot;http://tinyurl.com/o3gwt&quot;&gt;&lt;b&gt;his contributions&lt;/b&gt;&lt;/a&gt; to the discussion of RIAs in Wikipedia. I wrote that Aleks had: &lt;blockquote&gt;... shared insights gained from his experience building a product first released in 2002 ... In delivering desktop capabilities via the Web, it clearly predated much of today&#39;s thinking about the purpose of RIAs and how to build them. &lt;br&gt;&lt;br&gt; Naturally, Aleks also discovered some potential pitfalls an RIA designer might run into, which I will be mentioning in later posts. Regrettably, many of his insightful contributions to Wikipedia (which can still be found in its history pages) were subsequently removed by other contributors who lacked either his intimate knowledge of the technology or his historical perspective. Rather than waging Wikipedia edit wars, which for a hot topic can continue interminably, he has simply posted &lt;a href=&quot;http://tinyurl.com/lcfk4&quot;&gt;&lt;b&gt;his own page about RIA and AJAX&lt;/b&gt;&lt;/a&gt;.&lt;/blockquote&gt; Despite Aleks&#39; experiences, having made the effort to understand and summarize the SLM challenges posed by RIAs as coherently as I could, I felt it was time to try my hand at editing Wikipedia. So I have tackled the Wikipedia RIA page; I suspect that this entry may not be quite as &quot;hot&quot; as the Ajax entry, where Aleks was posting. So today (at least) you can find my handiwork throughout the section that &lt;a href=&quot;http://en.wikipedia.org/wiki/Rich_Internet_Application#Comparison_to_standard_web_applications&quot;&gt;&lt;strong&gt;compares RIAs with traditional Web applications&lt;/strong&gt;&lt;/a&gt;, including (not surprisingly) the entire section on &lt;a href=&quot;http://en.wikipedia.org/wiki/Rich_Internet_Application#Management_complications&quot;&gt;&lt;strong&gt;management complications&lt;/strong&gt;&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Tomorrow may be another story. After all, the Wikipedia editor carries the clear warning: &lt;strong&gt;If you don&#39;t want your writing to be edited mercilessly or redistributed by others, do not submit it&lt;/strong&gt;. So please feel free to improve on my efforts -- I know what to expect!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://technorati.com/tag/RIA&quot; rel=&quot;tag&quot;&gt;RIA&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Rich+Internet+Application&quot; rel=&quot;tag&quot;&gt;Rich Internet Application&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/management&quot; rel=&quot;tag&quot;&gt;management&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/wikipedia&quot; rel=&quot;tag&quot;&gt;wikipedia&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/service+level&quot; rel=&quot;tag&quot;&gt;service level&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/SLM&quot; rel=&quot;tag&quot;&gt;SLM&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Web+application&quot; rel=&quot;tag&quot;&gt;Web application&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Webapp&quot; rel=&quot;tag&quot;&gt;Webapp&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/115363590713099217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/115363590713099217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/115363590713099217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/115363590713099217'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/07/rich-internet-applications-update.html' title='Rich Internet Applications: an update'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-114659843692463973</id><published>2006-05-02T19:32:00.000+00:00</published><updated>2006-07-07T21:32:24.396+00:00</updated><title type='text'>Insights from Interop 2006</title><content type='html'>In my last post I promised that if I get any new insights worth sharing this week while I&#39;m at &lt;a href=&quot;http://www.interop.com/&quot;&gt;&lt;b&gt;Interop 2006&lt;/b&gt;&lt;/a&gt;, I&#39;ll write about them. Well, here&#39;s the first installment, which consistes of just three items. I&#39;m supposed to be at the Keynote booth on the show floor soon, so this will be short, because it&#39;s quite a hike to get there. &lt;br /&gt;&lt;br /&gt;I&#39;m staying at the Luxor, a hotel cleverly designed to resemble an Egyptian pyramid. Egyptian motifs abound. To reach the Conference Center in the Mandalay Bay hotel, which is next door, you can take a cab, a shuttle bus, or ride on a tram. But I usually walk. I hike about half a mile through a network of corridors cleverly disguised as places to spend money -- two casinos, a shopping mall, theaters and entertainment centers, restaurants, etc. I know I need to exercise more, so this a token effort.&lt;br /&gt;&lt;br /&gt;Back to the insights. Yesterday afternoon I attended the Application Performance Day. Peter Sevcik of &lt;a href=&quot;http://www.netforecast.com/&quot;&gt;&lt;b&gt;NetForecast&lt;/b&gt;&lt;/a&gt; presented a very thorough analysis of &lt;em&gt;Performance Improvement Solutions&lt;/em&gt;, covering QoS, Compression, CDN&#39;s and other Acceleration technologies. He also provided a sheet of references, some of which I will publish when I have more time. Two insightful comments I wrote down were: &lt;ul&gt; &lt;li&gt;&lt;em&gt;Fast delivery of sites results in slow delivery of pages.&lt;/em&gt; We all know that when the development process does not include time to think about performance, the results are not optimal. I thought Peter&#39;s simple rule captured this issue in a memorable way. &lt;li&gt;&lt;em&gt;Most developers build applications in a LAN-based environment, and don&#39;t insert a WAN simulator to test their performance.&lt;/em&gt; Another well-known problem nicely summarized. If you don&#39;t actually test your application in the production environment, or something that resembles it, you will surely run into performance problems in the real world.&lt;/ul&gt; Which brings me to my third item. Last night I dreamt I was one of a small group of people lugging a grand piano from the Luxor to the conference center. But instead of taking the inside route, we were outside on the street. And every time we came to a gap in the sidewalk, several of us had to lift the piano over the kerbs. This was becoming hard work, and so at one point Steve Jobs, who owned the piano, wanted to leave it where it was. But John Chambers (CEO of Cisco Systems), who seemed to be supervising the move, said &quot;No Steve -- we can&#39;t just leave it here, we have to deliver it.&quot; &lt;br /&gt;&lt;br /&gt;Now I&#39;m not sure what lessons (if any) I should draw from this dream. It certainly seems to be a metaphor for many of the discussions going on here about how to deliver large payloads to remote destinations via less than ideal routes!  Maybe John Chambers actually offered some more concrete suggestions during his Interop keynote speech this morning; I was still in my hotel room moving the piano at that time. &lt;br /&gt;&lt;br /&gt;Now I&#39;m going to mingle with the crowds and find out if Interop can make me smarter today.</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/114659843692463973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/114659843692463973' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114659843692463973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114659843692463973'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/05/insights-from-interop-2006.html' title='Insights from Interop 2006'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-114656192729064964</id><published>2006-05-02T09:24:00.000+00:00</published><updated>2006-05-02T09:44:19.116+00:00</updated><title type='text'>Alistair Croll on Ajax</title><content type='html'>Because of my particular interest in software performance &lt;a href=&quot;http://en.wikipedia.org/wiki/Optimization_(computer_science)&quot;&gt;&lt;b&gt;optimization&lt;/b&gt;&lt;/a&gt; and &lt;a href=&quot;http://performancematters.blogspot.com/2005/10/service-level-management-slm_18.html&quot;&gt;&lt;b&gt;SLM&lt;/b&gt;&lt;/a&gt;, I often search the Web to see what people are writing about performance. And even though there are always new things to find, it seems to be getting harder to locate them. &lt;br /&gt;&lt;br /&gt;One reason is that until recently, anyone writing about the &lt;em&gt;performance&lt;/em&gt; of computer systems or applications was discussing SLM topics like speed, availability, optimization, capacity planning, or load testing. But in the last few years, as the Web has made information systems and business systems synonymous, the term &lt;em&gt;performance&lt;/em&gt; has gradually taken on a much broader meaning. Now to locate the interesting links, I have to include technical keywords that are designed to filter out unwanted information about business success.&lt;br /&gt;&lt;br /&gt;So when I do find something worth reading, I assume it&#39;s a good idea to make a note of it, to save someone else the trouble. I have already included the most useful references in my previous posts about the performance of &lt;a href=&quot;http://performancematters.blogspot.com/2006/04/managing-rich-internet-applications-7.html&quot;&gt;&lt;b&gt;Rich Internet Applications (RIAs)&lt;/b&gt;&lt;/a&gt;, but yesterday I found this excellent blog post by Alistair Croll of Coradiant on &lt;a href=&quot;http://www.bitcurrent.com/?p=105&quot;&gt;&lt;b&gt;the impact of AJAX on web operations&lt;/b&gt;&lt;/a&gt;. From there, I also located his related presentation on &lt;a href=&quot;http://www.bitcurrent.com/documents/AJAX%20and%20networks.zip&quot;&gt;&lt;b&gt;Ajax and Networks&lt;/b&gt;&lt;/a&gt; to Interop in December 2005. &lt;br /&gt;&lt;br /&gt;Finding this material was a complete coincidence, in that I happen to be attending &lt;a href=&quot;http://www.interop.com/&quot;&gt;&lt;b&gt;Interop 2006&lt;/b&gt;&lt;/a&gt; in Las Vegas this week, yet I found that link independently. But it was a good very thing to know about, because on Wednesday I am speaking at the &lt;a href=&quot;http://www.interop.com/lasvegas/event-highlights/free-sessions.php&quot;&gt;&lt;b&gt;WebOps Summit&lt;/b&gt;&lt;/a&gt; (scroll down to Wednesday for details), which is chaired by none other than ... Alistair Croll. And I have actually devoted the last third of my talk on &lt;em&gt;Best Practices&lt;/em&gt; to the emerging RIA measurement issues I discussed &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-6.html&quot;&gt;&lt;b&gt;here&lt;/b&gt;&lt;/a&gt;. Even though I have been researching and writing about the performance implications of Ajax and RIA&#39;s in general, and scheduling this Interop presentation with Alistair, I had still missed this connection.&lt;br /&gt;&lt;br /&gt;This illustrates just how hard it is these days to stay on top of &lt;em&gt;any&lt;/em&gt; topic being discussed online. So I hope this post will help &lt;em&gt;you&lt;/em&gt; in that regard. And if I make any new connections worth sharing this week, I&#39;ll be writing about them when I get a chance. The cover of the conference guides say &lt;em&gt;Interop Makes You Smart&lt;/em&gt;, so I&#39;m hoping that works on me. Those marketing slogans are always true, aren&#39;t they?</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/114656192729064964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/114656192729064964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114656192729064964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114656192729064964'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/05/alistair-croll-on-ajax.html' title='Alistair Croll on Ajax'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-114522570111772705</id><published>2006-04-16T22:13:00.000+00:00</published><updated>2006-04-17T03:42:08.066+00:00</updated><title type='text'>Software Engineering Matters</title><content type='html'>&lt;a href=&quot;http://photos1.blogger.com/blogger/7699/1738/1600/Pisa.jpg&quot;&gt;&lt;img style=&quot;float:left; margin:3px 10px 0 0; cursor:pointer; cursor:hand;&quot; src=&quot;http://photos1.blogger.com/blogger/7699/1738/320/Pisa.jpg&quot; border=&quot;0&quot; alt=&quot;Inadequate attention to engineering creates problems later&quot; /&gt;&lt;/a&gt; With the obvious exception of a few bloggers like Markos Moulitsas Zúniga, whose blog &lt;a href=&quot;http://www.dailykos.com/&quot;&gt;&lt;b&gt;Daily Kos&lt;/b&gt;&lt;/a&gt; receives over a million &lt;a href=&quot;http://truthlaidbear.com/TrafficRanking.php&quot;&gt;&lt;b&gt;visits per day&lt;/b&gt;&lt;/a&gt;, I think most bloggers are happy just to know that &lt;em&gt;someone&lt;/em&gt; cares enough to read what they write. In my own case, having spent my career working on software performance, I learned long ago that only a small fraction of the population is actually interested in &lt;em&gt;Performance Matters&lt;/em&gt;. So I don&#39;t expect a lot of feedback.&lt;br /&gt;&lt;br /&gt;All the same it&#39;s nice to hear from a reader occasionally, and yesterday was one of those days -- I received a comment from &lt;a href=&quot;http://damith.net/&quot;&gt;&lt;b&gt;Damith C. Rajapakse&lt;/b&gt;&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Curious about why a post on &lt;em&gt;Waterfall Methods&lt;/em&gt; would be the one to generate a response, I did some digging. For readers who would like to hear about &lt;em&gt;interesting stuff for the serious software engineer&lt;/em&gt;, Damith&#39;s blog -- &lt;a href=&quot;http://damith.blogspot.com/&quot;&gt;&lt;b&gt;Another Day in Mythical Man Month&lt;/b&gt;&lt;/a&gt; -- is worth a look. In particular, his recent post on &lt;a href=&quot;http://damith.blogspot.com/2006/02/maintaining-future-web-applications.html&quot;&gt;&lt;b&gt;maintaining future web applications&lt;/b&gt;&lt;/a&gt; (subtitled &#39;it&#39;s time to brace ourselves&#39;) is very relevant to my current focus on Rich Internet Applications. Damith notes that while ... &lt;blockquote&gt;rapid development of Web apps is receiving the lion’s share of attention, maintainability of Web apps (is) hardly receiving a thought.&lt;/blockquote&gt; He warns about three trends that are likely to make Web applications hard to maintain: &lt;ul&gt;&lt;li&gt;The rush towards visual programming &lt;li&gt;Overuse of frameworks &lt;li&gt;Overdoing that &#39;AJAX &#39; thing&lt;/ul&gt; While it&#39;s good just to know that someone is reading what I write, it&#39;s even better when they have something useful to contribute to the discussion. And in this case I agree completely with Damith&#39;s perspective on the issues. Ten years ago, on the very first page of the introduction to my book about client/server performance, I wrote: &lt;blockquote&gt;In today&#39;s world of visual programming, rapid development, and out-of-the-box solutions ... performance is one area of software design that is frequently misunderstood, forgotten, ignored, or postponed, often with disastrous results.&lt;/blockquote&gt; The same can be said of maintainability -- which, like performance, is always less interesting to software developers than creating new application function. That is why your software development process must ensure that characteristics like performance and maintainability are designed and engineered into applications from the beginning. In other words, it is important to realize that good &lt;a href=&quot;http://en.wikipedia.org/wiki/Software_engineering&quot;&gt;&lt;b&gt;Software Engineering&lt;/b&gt;&lt;/a&gt; involves a lot &lt;a href=&quot;http://www.cs.utexas.edu/~sahilt/research/SEMyths.html&quot;&gt;&lt;b&gt;more than just programming&lt;/b&gt;&lt;/a&gt; and testing your code. According to  Wikipedia, it is ... &lt;blockquote&gt;... the practice of creating and maintaining software applications by applying technologies and practices from engineering, computer science, project management, application domains and other fields... Like traditional engineering disciplines, it deals with issues of cost and reliability ... &lt;/blockquote&gt; As I have noted previously, the complexity of Rich Internet Applications makes it essential to actually practice rigorous software engineering, and not just crank out code.</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/114522570111772705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/114522570111772705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114522570111772705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114522570111772705'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/04/software-engineering-matters.html' title='Software Engineering Matters'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-114516468334374248</id><published>2006-04-16T05:17:00.000+00:00</published><updated>2006-04-16T18:51:53.706+00:00</updated><title type='text'>Waterfall Methods: Past and Ever-Present</title><content type='html'>&lt;a href=&quot;http://photos1.blogger.com/blogger/7699/1738/1600/Waterfall%202006.jpg&quot;&gt;&lt;img style=&quot;float:left; margin:3px 10px 0 0; cursor:pointer; cursor:hand;&quot; src=&quot;http://photos1.blogger.com/blogger/7699/1738/400/Waterfall%202006.jpg&quot; border=&quot;0&quot; alt=&quot;Waterfall 2006 Conference&quot; /&gt;&lt;/a&gt;In my previous post, I commented that adopting a &lt;a href=&quot;http://en.wikipedia.org/wiki/Waterfall_model&quot;&gt;&lt;b&gt;waterfall development methodology&lt;/b&gt;&lt;/a&gt; was not going to work well when developing Rich Internet Applications, because more agile methods were needed. While writing the post, I did a bit of research into the literature about Waterfall methods, a concept I clearly recall encountering for the first time in 1978 or &#39;79 soon after I joined IBM&#39;s DB2 development team in the &lt;a href=&quot;http://www.research.ibm.com/journal/sj/171/ibmsj1701C.pdf&quot;&gt;&lt;b&gt;Santa Teresa Lab&lt;/b&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;My own introduction to the Waterfall method was in a talk about its limitations. So it was interesting to read &lt;a href=&quot;http://tarmo.fi/blog/2005/09/09/dont-draw-diagrams-of-wrong-practices-or-why-people-still-believe-in-the-waterfall-model/&quot;&gt;&lt;b&gt;Tarmo’s psycho and techno blog&lt;/b&gt;&lt;/a&gt; explaining that the very first description of the model by Winston W. Royce in 1970 was also as a counterexample. This point of view is amplified by Conrad Weisert, who claims that in fact &lt;a href=&quot;http://www.idinews.com/waterfall.html&quot;&gt;&lt;b&gt;there&#39;s no such thing&lt;/b&gt;&lt;/a&gt; as a Waterfall Model!&lt;br /&gt;&lt;br /&gt;But despite the fact that (maybe) it should not exist, the Waterfall model has taken root. This is evident from the fact that it merits a place in &lt;a href=&quot;http://www.ncycles.com/e_whi_Methodologies.htm&quot;&gt;&lt;b&gt;methodology comparisons&lt;/b&gt;&lt;/a&gt; and &lt;a href=&quot;http://www.business-esolutions.com/islm.htm&quot;&gt;&lt;b&gt;analyses&lt;/b&gt;&lt;/a&gt;. What&#39;s more, despite the many rumors of its demise, especially in the face of today&#39;s need for more agile methods, researchers have discovered that Waterfall methods &lt;a href=&quot;http://www.acmqueue.com/modules.php?name=Content&amp;pa=showpage&amp;pid=110&quot;&gt;&lt;b&gt;refuse to die&lt;/b&gt;&lt;/a&gt;: &lt;blockquote&gt; ... in a survey of almost 200 practitioners, accounting for several thousands of projects over the past five years, the dominant process model reported was the Waterfall, with more than a third claiming its use.&lt;/blockquote&gt; Indeed, perhaps the ultimate tribute to the sheer persistence of the Waterfall approach in everyday development practice is the fact that the agile development community recently promoted the &lt;a href=&quot;http://www.waterfall2006.com/&quot;&gt;&lt;b&gt;Waterfall 2006 Conference&lt;/b&gt;&lt;/a&gt;. Even if you couldn&#39;t attend, I recommend reviewing the agenda and the session descriptions carefully, just to see what you missed. I don&#39;t know if or when more documentation will be published, but I&#39;m sure it will be worth waiting for.</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/114516468334374248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/114516468334374248' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114516468334374248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114516468334374248'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/04/waterfall-methods-past-and-ever.html' title='Waterfall Methods: Past and Ever-Present'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-114465312162535236</id><published>2006-04-10T07:11:00.000+00:00</published><updated>2006-04-12T06:58:11.220+00:00</updated><title type='text'>Managing Rich Internet Applications [7]</title><content type='html'>&lt;em&gt;This is the seventh post in a series devoted to the challenges of Service Level Management (SLM) for Rich Internet Applications (RIAs). In these applications, some processing is transferred to the Web client while some remains on the application server. Previous posts &lt;a href=&quot;http://performancematters.blogspot.com/2006/02/managing-rich-internet-applications-1.html&quot;&gt;&lt;b&gt;introduced the subject&lt;/b&gt;&lt;/a&gt; and the &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-2.html&quot;&gt;&lt;b&gt;SLM topics&lt;/b&gt;&lt;/a&gt; I plan to address, reviewed &lt;b&gt;&lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-3_06.html&quot;&gt;RIA technologies&lt;/a&gt;&lt;/b&gt;, introduced &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-4.html&quot;&gt;&lt;b&gt;The RIA Behavior Model&lt;/b&gt;&lt;/a&gt;, and &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-5.html&quot;&gt;&lt;b&gt;introduced&lt;/b&gt;&lt;/a&gt; and discussed &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-6.html&quot;&gt;&lt;b&gt;RIA measurement challenges&lt;/b&gt;&lt;/a&gt;&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;RIA Usability and the Site Development Process&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Having discussed the measurement challenges posed by RIAs, I intend next to consider the demands that RIA development may make of SLM processes that have been designed and fine-tuned to manage traditional Web applications. I covered some of this ground in a Webinar on &lt;a href=&quot;http://www.keynote.com/news_events/webinars/060222.html&quot;&gt;&lt;b&gt;How to Overcome the Challenges of Rich Internet Applications&lt;/b&gt;&lt;/a&gt;. So in this post I will lay out the general framework of that material, using the illustrative figures I created for the Webinar.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://photos1.blogger.com/blogger/7699/1738/1600/Usability_as_ARCU.0.jpg&quot;&gt;&lt;img style=&quot;float:right; margin:3px 0 3px 10px;cursor:pointer; cursor:hand;&quot; src=&quot;http://photos1.blogger.com/blogger/7699/1738/320/Usability_as_ARCU.0.jpg&quot; border=&quot;0&quot; alt=&quot;Typical customer&#39;s experience of usability: availability, responsiveness, clarity, and utility.&quot; /&gt;&lt;/a&gt; In previous posts I have &lt;a href=&quot;http://performancematters.blogspot.com/2005/10/web-usability-simple-framework.html&quot;&gt;&lt;b&gt;introduced&lt;/b&gt;&lt;/a&gt; and &lt;a href=&quot;http://performancematters.blogspot.com/2005/11/dimensions-of-usability.html&quot;&gt;&lt;b&gt;discussed&lt;/b&gt;&lt;/a&gt; a simple four-part framework for thinking about Web Site Usability. I divided usability into four dimensions, each of which is essential to the ultimate success of any site -- &lt;em&gt;Availability&lt;/em&gt;, &lt;em&gt;Responsiveness&lt;/em&gt;, &lt;em&gt;Clarity&lt;/em&gt;, and &lt;em&gt;Utility&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;The graphic presents the four essential qualities in the order of their significance, at least for all first-time visitors to a site. &lt;br /&gt;&lt;br /&gt;Interestingly, companies developing Web sites or eBusiness applications tend to approach these four aspects in exactly the reverse order, as shown in the next figure.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://photos1.blogger.com/blogger/7699/1738/1600/Usability_as_UCRA.0.jpg&quot;&gt;&lt;img style=&quot;float:right; margin: 3px 0 3px 10px; text-align:left;cursor:pointer; cursor:hand;&quot; src=&quot;http://photos1.blogger.com/blogger/7699/1738/320/Usability_as_UCRA.0.jpg&quot; border=&quot;0&quot; alt=&quot;Typical usability concerns during site development: utility, clarity, responsiveness, and availability&quot; /&gt;&lt;/a&gt; A business goal leads to a design process, which in turn results in an application being built and then rolled out into production. And at each point along the way, people do their best to make the outcome a success. But is that enough? &lt;br /&gt;&lt;br /&gt;Well, if you take this approach you may get lucky.  But to be safe you really have to take a more systematic approach to &lt;a href=&quot;http://performancematters.blogspot.com/2005/10/service-level-management-slm_18.html&quot;&gt;&lt;b&gt;Service Level Management&lt;/b&gt;&lt;/a&gt;, like &lt;a href=&quot;http://performancematters.blogspot.com/2005/10/performance-dj-vu-all-over-again.html&quot;&gt;&lt;b&gt;ITSO&lt;/b&gt;&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;[&lt;em&gt;On this subject, it is hard for me to be brief, because 10 years ago I actually wrote a &lt;a href=&quot;http://www.amazon.com/gp/product/0471162698/002-4402859-7230460?v=glance&amp;n=283155&quot;&gt;&lt;b&gt;750-page book&lt;/b&gt;&lt;/a&gt; about it. But here goes!&lt;/em&gt;] I have always believed that you cannot separate issues of software performance from the software development life cycle (SDLC). The best way to ensure acceptable performance is to follow the discipline of Software Perfrmance Engineering -- to build in the desired level of performance, just as a mechanical engineer would. The next figure attempts to sum up this idea. &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://photos1.blogger.com/blogger/7699/1738/1600/Usability_in_SDLC%20%5B1%5D.jpg&quot;&gt;&lt;img style=&quot;float:right; margin:3px 0 3px 10px;cursor:pointer; cursor:hand;&quot; src=&quot;http://photos1.blogger.com/blogger/7699/1738/320/Usability_in_SDLC%20%5B1%5D.jpg&quot; border=&quot;0&quot; alt=&quot;Building usability into a site throughought the software development life cycle.&quot; /&gt;&lt;/a&gt;  I think everyone can agree that there is an application development life cycle – applications have to be designed, developed, tested, and deployed. People may argue about the details, but for the purposes of this discussion we can set aside those religious debates about methodologies. All I care about here is that each stage of your development process -– whatever it is -- must include a deliberate focus on performance (or SLM), alongside other aspects of site usability. &lt;br /&gt;&lt;br /&gt;If you want an application to achieve certain levels of service, don’t expect that to just happen on its own.  You have to agree on your objectives, then design, develop, and test your application with those objectives firmly in mind, and measure and manage the application to make sure you are actually achieving your objectives. Of course, there’s nothing particularly radical or new about this idea, but the added complexity of RIA’s increases the risk of failure if we don’t actually follow these well-established best practices.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The RIA Development Process&lt;/b&gt;&lt;br /&gt;If you want to implement a really usable Rich Internet Application, you’re probably going to need to beef up your site development processes to get everyone on the same page. That&#39;s because up to now the Web Usability (with a capital &#39;U&#39;) profession has concentrated on the dimension I call &lt;em&gt;Clarity&lt;/em&gt;. &lt;br /&gt;&lt;br /&gt;Their exclusive focus on Web page design and Information Architecture was possible only because the traditional structure of a Web applications was so constrained by the limitations of the Web browser technology they had at their disposal. When all Web applications implemented the same simple thin-client model, they did not have to worry too much about application complexity.&lt;br /&gt;&lt;br /&gt;But as we evolve to building RIAs with a separate client-side engine, the site development process must deal with the kinds of complex issues that arise during the design of &lt;em&gt;distributed applications&lt;/em&gt;. In the past, Web designers have not had to deal with anything as technical as this. They certainly can’t buy a book on &#39;Web Usability&#39; and read about these kinds of issues.&lt;br /&gt;&lt;br /&gt;Confirming this perspective, I recently  heard &lt;a href=&quot;http://www.zimbra.com/about/management_team.html&quot;&gt;&lt;b&gt;Scott Dietzen, President and CTO of Zimbra&lt;/b&gt;&lt;/a&gt; speaking about Ajax at an &lt;a href=&quot;http://www.vlab.org/Htdocs/204.cfm?eventID=61&quot;&gt;&lt;b&gt;MIT/Stanford VLAB&lt;/b&gt;&lt;/a&gt; meeting. To illustrate his statements that &#39;Ajax is still hard&#39; and &#39;You can&#39;t crank out a good Ajax application quickly&#39; he revealed that Zimbra has had to interview 40 JavaScript developers for every one they have hired. This is telling evidence of the difference between traditional Web applications and RIAs.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://photos1.blogger.com/blogger/7699/1738/1600/Usability_and_Departments.jpg&quot;&gt;&lt;img style=&quot;float:right; margin: 3px 0 3px 10px; cursor:pointer; cursor:hand;&quot; src=&quot;http://photos1.blogger.com/blogger/7699/1738/320/Usability_and_Departments.jpg&quot; border=&quot;0&quot; alt=&quot;The politics of application development.&quot; /&gt;&lt;/a&gt; And you really do have to work hard to get everyone on the same page, because typically the people in the various participating departments usually don’t have a clear picture of just how much it takes to build a successful Web application. &lt;br /&gt;&lt;br /&gt;As illustrated here, they naturally focus first on their own problems and challenges. The graphic is meant to be a bit tongue in cheek, but it does reflect the political realities of application development. &lt;br /&gt;&lt;br /&gt;Several groups contribute to the success of any site, and each group thinks that their contribution is the most important! Apart maybe from those who work in IT, who tend to complain that they could deliver much better service levels if only the developers would hand them more robust and stable applications to manage. &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://photos1.blogger.com/blogger/7699/1738/1600/Usability_as_Equals_2.jpg&quot;&gt;&lt;img style=&quot;float:right; margin:3px 0 3px 10px; cursor:pointer; cursor:hand;&quot; src=&quot;http://photos1.blogger.com/blogger/7699/1738/200/Usability_as_Equals_2.jpg&quot; border=&quot;0&quot; alt=&quot;The four dimensions of usability are equally essential.&quot; /&gt;&lt;/a&gt;These attitudes are not just the result of people having an inflated sense of their own importance. Most people honestly don’t understand just how much work the other players have to do. &lt;br /&gt;&lt;br /&gt;This is already true today, and with the added compexity introduced by Rich Internet Applications everyone will have even more to think about. This is likely to increase their isolation from the other participants, unless the development process requires close cooperation.&lt;br /&gt;&lt;br /&gt;So the first lessons your development processes must drive home are that &lt;em&gt;all participants play an equally vital role in delivering a usable application&lt;/em&gt;, because &lt;em&gt;all four dimensions of usability are equally vital to the success of the application&lt;/em&gt;. &lt;br /&gt;&lt;br /&gt;&lt;b style=&quot;float:left&quot;&gt;The Importance of Being Agile&lt;/b&gt;&lt;br /&gt;Building successful RIAs will also require more communication. We’ve been talking about the importance of SLM within the life cycle. But the problem with describing the software life cycle using a list activities like the one in the third illustration above (introducing the development life cycle) is that such lists tend to imply a step-by-step process –- a &lt;a href=&quot;http://en.wikipedia.org/wiki/Waterfall_model&quot;&gt;&lt;b&gt;waterfall methodology&lt;/b&gt;&lt;/a&gt; –- in which we must complete one activity before moving on to the next. That approach to the development process is certainly not going to be an effective way to develop Rich Internet Applications.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://photos1.blogger.com/blogger/7699/1738/1600/RIA%20Reference%20Model%20v2.2.png&quot;&gt;&lt;img style=&quot;float:right; margin:3px 0 3px 10px; cursor:pointer; cursor:hand;&quot; src=&quot;http://photos1.blogger.com/blogger/7699/1738/400/RIA%20Reference%20Model%20v2.1.jpg&quot; border=&quot;0&quot; alt=&quot;The RIA Behavior Reference Model&quot;&gt;&lt;/a&gt; Previously I introduced the &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-4.html&quot;&gt;&lt;b&gt;RIA Behavior Model&lt;/b&gt;&lt;/a&gt; shown here. Consider in particular the grey boxes along the top, representing the application&#39;s &lt;em&gt;design&lt;/em&gt; and &lt;em&gt;usage environment&lt;/em&gt;, or &lt;em&gt;context&lt;/em&gt;. As I wrote at the time: &lt;blockquote&gt;A user&#39;s satisfaction with any application depends on ... how well the &lt;em&gt;application design&lt;/em&gt; matches &lt;em&gt;their&lt;/em&gt; needs at the time, &lt;em&gt;their&lt;/em&gt; way of thinking, and &lt;em&gt;their&lt;/em&gt; behavior when they are using it.&lt;br /&gt;&lt;br /&gt;Their experience of response time depends on the combined behaviors of the client and server components of the application, which in turn depend on the &lt;em&gt;application design&lt;/em&gt;, the underlying server &lt;em&gt;infrastructure design&lt;/em&gt;, and of course the user&#39;s Internet &lt;em&gt;connection speed&lt;/em&gt;. The most effective RIA will be one whose creators took into account these factors at each stage of its development life cycle, and who created the necessary management processes to ensure its success when in production.&lt;/blockquote&gt; Now imagine trying to focus on any one of the four aspects of usability without paying attention to the others. It can&#39;t be done. Application &lt;em&gt;utility&lt;/em&gt; is tied to &lt;em&gt;user behavior&lt;/em&gt;, which is driven by the &lt;em&gt;clarity&lt;/em&gt; of the site, the design of the client-side engine, and the &lt;em&gt;responsiveness&lt;/em&gt; of interactions between the client engine and the server components. And the design and implementation of those components will ultimately also determine application &lt;em&gt;availability&lt;/em&gt;. &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://photos1.blogger.com/blogger/7699/1738/1600/Usability_as_Agile.jpg&quot;&gt;&lt;img style=&quot;float:right; margin:3px 0 3px 10px; cursor:pointer; cursor:hand;&quot; src=&quot;http://photos1.blogger.com/blogger/7699/1738/320/Usability_as_Agile.jpg&quot; border=&quot;0&quot; alt=&quot;Keeping all four dimensions of usability in focus throughout the life cycle.&quot; /&gt;&lt;/a&gt; Since the four dimensions of usability are so intertwined, I conclude that to ensure a successful outcome, we must adopt a development process that keeps all four usability goals in focus, all the way through the life cycle. This approach is called &lt;a href=&quot;http://en.wikipedia.org/wiki/Agile_software_development&quot;&gt;&lt;b&gt;agile software development&lt;/b&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Agile methods use an iterative approach to design, development and testing that keeps all the different participants (&#39;stakeholders&#39;) involved -- marketing or business owners, Web designers, application developers, and the IT staff who understand what it takes to manage a site in production. They all have to communicate and share their different areas of expertise throughout the process. &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://photos1.blogger.com/blogger/7699/1738/1600/Customer_Centered_Design.jpg&quot;&gt;&lt;img style=&quot;float:right; margin:3px 0 3px 10px; cursor:pointer; cursor:hand;&quot; src=&quot;http://photos1.blogger.com/blogger/7699/1738/320/Customer_Centered_Design.jpg&quot; border=&quot;0&quot; alt=&quot;An example of a customer-centered design methodology&quot; /&gt;&lt;/a&gt; In the Web design literature, methods similar to this have sometimes been referred to as &lt;em&gt;customer-centered design&lt;/em&gt;. For example, that terminology is used in &lt;a href=&quot;http://performancematters.blogspot.com/2005/11/web-usability-books-3.html&quot;&gt;&lt;b&gt;The Design of Sites&lt;/b&gt;&lt;/a&gt; by Doug van Duyne et al (see &lt;a href=&quot;http://www.awprofessional.com/articles/article.asp?p=29037&amp;rl=1&quot;&gt;&lt;b&gt;Chapter 1&lt;/b&gt;&lt;/a&gt;). However, &lt;a href=&quot;http://www.hp.com/hpbooks/prentice/ptr_0130479624.html&quot;&gt;&lt;b&gt;Customer-Centered Design: A New Approach To Web Usability&lt;/b&gt;&lt;/a&gt; by Kreta Chandler and Karen Hyatt, while interesting (see &lt;a href=&quot;http://www.phptr.com/articles/article.asp?p=30343&quot;&gt;&lt;b&gt;Chapter 1&lt;/b&gt;&lt;/a&gt;), does not have much to say about the development process.&lt;br /&gt;&lt;br /&gt;My graphic here is based on Chapter 5 of &#39;The Design of Sites&#39;, entitled &#39;Processes for Developing Customer-Centered Sites&#39;. That book, having been published in 2003, is not about RIAs. Nor does it mention agile development per se, which is hardly surprising considering that the &lt;a href=&quot;http://www.agilemanifesto.org/principles.html&quot;&gt;&lt;b&gt;agile manifesto&lt;/b&gt;&lt;/a&gt; was crafted during the time when van Duyne et al were writing their manuscript.&lt;br /&gt;&lt;br /&gt;However, it does suggest the kind of iterative approach to the development process that I believe is essential when developing RIAs. Chapter 5 concludes: &lt;blockquote&gt;The principles and techniques of customer-centered design and iterative prototyping are embedded in every stage. Many firms have similar processes, though the stages and deliverables might have slightly different names.&lt;/blockquote&gt; Another book I have recommended previously, &lt;a href=&quot;http://performancematters.blogspot.com/2005/11/web-usability-books-4.html&quot;&gt;&lt;b&gt;Usability for the Web&lt;/b&gt;&lt;/a&gt; by Tom Brinck, Darren Gergle, and Scott D. Wood, is structured around the major stages of an iterative development process. In Chapter 1 they write:&lt;blockquote&gt;At each stage we want to cycle between refining our design and evaluating our latest refinement, iterating until we&#39;ve achieved a level of usability that we&#39;re satisfied with before continuing to the next stage. Evaluation at each stage allows us to incorporate user and client feedback loops to optimize the design. &lt;br /&gt;&lt;br /&gt;At each evaluation, we determine whether our design is adequate for continuing on. We do this by establishing &lt;em&gt;benchmarks&lt;/em&gt;, or target usability goals.&lt;/blockquote&gt; These ideas did not emerge for the first time with the advent of the Rich Internet Application -- they are merely descriptions of good development practices. But the added complexity of the RIA model makes it essential that we actually put these kinds of methods into practice.</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/114465312162535236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/114465312162535236' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114465312162535236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114465312162535236'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/04/managing-rich-internet-applications-7.html' title='Managing Rich Internet Applications [7]'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-114331411343047828</id><published>2006-03-25T19:14:00.000+00:00</published><updated>2006-12-14T05:33:57.750+00:00</updated><title type='text'>Managing Rich Internet Applications [6]</title><content type='html'>&lt;em&gt;This is the sixth post in a series devoted to the challenges of Service Level Management (SLM) for Rich Internet Applications (RIAs). In these applications, some processing is transferred to the Web client while some remains on the application server. Previous posts &lt;a href=&quot;http://performancematters.blogspot.com/2006/02/managing-rich-internet-applications-1.html&quot;&gt;&lt;b&gt;introduced the subject&lt;/b&gt;&lt;/a&gt; and the &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-2.html&quot;&gt;&lt;b&gt;SLM topics&lt;/b&gt;&lt;/a&gt; I plan to address, reviewed &lt;b&gt;&lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-3_06.html&quot;&gt;RIA technologies&lt;/a&gt;&lt;/b&gt;, introduced &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-4.html&quot;&gt;&lt;b&gt;The RIA Behavior Model&lt;/b&gt;&lt;/a&gt;&lt;/em&gt;, and introduced the &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-5.html&quot;&gt;&lt;b&gt;application measurement&lt;/b&gt;&lt;/a&gt; topic.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Measuring RIA Responsiveness: Complications&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To explain the challenges of measuring Rich Internet Applications, I will begin by reviewing three significant complications introduced by RIAs. From this discussion, I will draw conclusions about how measuring RIAs will differ from measuring traditional Web applications. &lt;a name=&quot;Variety&quot;&gt; &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;First Complication: &lt;em&gt;Variety of Possible Behaviors&lt;/em&gt;&lt;/b&gt;&lt;br /&gt;To make meaningful statements about an application&#39;s performance, you must first define what you need to measure. Typically you must measure common application usage patterns (or &#39;scenarios&#39;), or patterns that are important by reason of their business value. When an application uses only a standard browser, its behavior is simple, known, and predictable, limiting the number of interesting usage scenarios to be measured.&lt;br /&gt;&lt;br /&gt;Adding a client-side engine separates user interface actions from server requests and responses, giving application designers many more options. It allows developers to build an application that uses creative, clever ways to transfer display elements and portions of the processing to the client. The custom application behaviors encoded in the client-side engine make the result more complex and its usage less predictable than a traditional browser-based application. This increases the number of possible usage patterns, complicating the task of determining the important scenarios and measuring their performance.&lt;br /&gt;&lt;br /&gt;Having many more design and implementation options also creates new opportunities for developers to make performance-related mistakes. They can (accidentally or deliberately) implement &quot;chatty&quot; client/server communication styles, which under some workload conditions may perform poorly. Even with thorough testing, some of these problems may remain undiscovered until after the application is deployed. A systematic SLM process must include measurement capabilities that provide a way to identify, investigate, and fix these types of problems. &lt;a name=&quot;Concurrency&quot;&gt; &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Second Complication: &lt;em&gt;Concurrent Activity&lt;/em&gt;&lt;/b&gt;&lt;br /&gt;There are two reasons why it takes a while to download a Web page comprised of 50 separate content elements, no matter how fast your connection. First &lt;a href=&quot;http://en.wikipedia.org/wiki/Http&quot;&gt;&lt;b&gt;HTTP&lt;/b&gt;&lt;/a&gt; limits the rate at which clients can request objects from servers, then &lt;a href=&quot;http://en.wikipedia.org/wiki/Transmission_Control_Protocol&quot;&gt;&lt;b&gt;TCP&lt;/b&gt;&lt;/a&gt; limits the rate at which the data packets can deliver those objects from server to client. In particular, although the HTTP 1.1 standard allows clients to establish persistent connections with servers, &lt;a href=&quot;http://www.faqs.org/rfcs/rfc2616.html&quot;&gt;&lt;b&gt;RFC2616&lt;/b&gt;&lt;/a&gt; defining the standard restricts the number of parallel connections the client (usually a browser) can use: &lt;blockquote&gt;&lt;em&gt;[Section 8.1.4]&lt;/em&gt; Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy. ... These guidelines are intended to improve HTTP response times and avoid congestion. &lt;/blockquote&gt; Avoiding bottlenecks is a desirable goal in all computer systems, and so the Internet protocols are designed to protect shared network and server resources, no matter how selfishly their users might behave. But flow controls may not always be needed. Consider the metering lights that permit only two cars onto the highway every 30 seconds. During the rush hour they can smooth the flow of traffic and reduce freeway congestion, but if left on at other times, they would delay drivers for no reason. Similarly, when there is plenty of available bandwidth and no server congestion, the limit of two connections per domain is just a governor that restricts the potential rate of data transfer from server to client. &lt;br /&gt;&lt;br /&gt;Nonetheless, modern browsers (including IE) do adhere to this guideline. And it is safest to do so, because DoS logic in some proxy servers might reject connections that do not obey the RFC2616 standard. For a lively discussion of IE behavior and the meaning of &#39;SHOULD&#39; in the RFC, see this &lt;a href=&quot;http://blogs.msdn.com/ie/archive/2005/04/11/407189.aspx&quot;&gt;&lt;b&gt;msdn blog&lt;/b&gt;&lt;/a&gt;, which also points out a relatively simple technique any Web site designer can use to circumvent this limitation, if they feel it is important enough:&lt;blockquote&gt;Savvy web developers can take this connection limit into account and deliver their data from multiple domains, since the browser will open up to two connections per domain.&lt;/blockquote&gt; Although this solution may be fast enough for many applications, most Ajax developers are looking for clever ways to make the client even more responsive. And because Ajax offers almost unlimited application design possibilities, today there is little agreement on the best ways to achieve that goal. This debate was well summarized by Jep Castelein in &lt;a href=&quot;http://richui.blogspot.com/2005/09/ajax-latency-problems-myth-or-reality.html&quot;&gt;&lt;b&gt;AJAX Latency problems: myth or reality?&lt;/b&gt;&lt;/a&gt;, a discussion that includes the important reminder that &#39;IE will have a maximum of 2 simultaneous connections &lt;em&gt;(per domain, actually -- C.L.)&lt;/em&gt;, whether you use XMLHttpRequest or not&#39;. In other words, Ajax implementations are not above the law of HTTP. &lt;br /&gt;&lt;br /&gt;Even so, a primary objective of many RIA designs is to work around the two-connection obstacle to improve responsiveness for the user. The resulting implementations will use many different techniques to communicate with one or more servers. As one data point, consider the opinion of &lt;a href=&quot;http://www.allinthehead.com/about/&quot;&gt;&lt;b&gt;Drew McClellan&lt;/b&gt;&lt;/a&gt;, who surely qualifies as &lt;a href=&quot;http://www.webstandards.org/about/members/drewm/&quot;&gt;&lt;b&gt;an expert&lt;/b&gt;&lt;/a&gt; in developing Web applications. In his tutorial about JavaScript and the XMLHttpRequest object -- &lt;a href=&quot;http://www.xml.com/pub/a/2005/02/09/xml-http-request.html&quot;&gt;&lt;b&gt;Very Dynamic Web Interfaces&lt;/b&gt;&lt;/a&gt; -- Drew concludes that &lt;em&gt;the real challenge here is not figuring out how to make the code work but thinking of interesting ways in which it can be utilized&lt;/em&gt;. &lt;br /&gt;&lt;br /&gt;Such freedom to improvise inevitably complicates measurement -- especially when requests originating from what appear to be separate units of work on a client are really all part of a single logical application. It is easy to sit on a server and measure the traffic, or the demands placed on various server-side resources. And this kind of measurement has its uses, especially when load testing or investigating bottlenecks. But the biggest challenge when measuring applications is correlating those seemingly separate pieces of information with a particular application activity, task, or phase. The more complex the client/server relationship, especially when it involves concurrent interactions, the trickier it becomes for measurement and analysis tools to perform that correlation properly. &lt;a name=&quot;Comet&quot;&gt; &lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Third Complication: &lt;em&gt;Asynchronous and Synchronous Communications&lt;/em&gt;&lt;/b&gt;&lt;br /&gt;An earlier post discussed &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-3_06.html&quot;&gt;&lt;b&gt;RIA technologies&lt;/b&gt;&lt;/a&gt;. It described how Flash and Ajax use client-side engines that can be programmed to communicate asynchronously with server(s), independent of a user&#39;s actions. This notion is captured in name &#39;Ajax&#39;, in which the initial &#39;A&#39; stands for &#39;Asynchronous&#39;, and &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-3_06.html#Figure2&quot;&gt;&lt;b&gt;Figure 2&lt;/b&gt;&lt;/a&gt; in that post was taken from Jesse James Garrett&#39;s &lt;a href=&quot;http://adaptivepath.com/publications/essays/archives/000385.php&quot;&gt;&lt;b&gt;seminal article on Ajax&lt;/b&gt;&lt;/a&gt;. Although Garrett&#39;s figure does show how an engine enables asynchronous application behaviors, and differs from a traditional Web app, it does not illustrate the full range of possibilities, which I discussed further in &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-4.html#Engine&quot;&gt;&lt;b&gt;RIA post #4&lt;/b&gt;&lt;/a&gt;. In general, a user action within a Rich Internet Application can trigger zero, one, or many server requests.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://photos1.blogger.com/blogger/7699/1738/1600/Ajax%20and%20Comet.jpg&quot;&gt;&lt;img style=&quot;float:left; margin:3px 10px 0 0;cursor:pointer; cursor:hand;&quot; src=&quot;http://photos1.blogger.com/blogger/7699/1738/200/Ajax%20and%20Comet.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; Also, most discussions of RIA architecture or technology focus on how asynchronous &lt;em&gt;application behaviors&lt;/em&gt; can improve usability. But they don&#39;t question the fact that &lt;em&gt;communication&lt;/em&gt; between browser and server is still synchronous. That is, communication is always initiated by the browser (or the client-side engine operating as an extension of the browser), and follows the standard synchronous HTTP request and response protocol. But in a recent blog post and presentation, Alex Russell of &lt;a href=&quot;http://dojotoolkit.org/&quot;&gt;&lt;b&gt;dojo&lt;/b&gt;&lt;/a&gt; proposed the name &lt;a href=&quot;http://alex.dojotoolkit.org/?p=545&quot;&gt;&lt;b&gt;Comet&lt;/b&gt;&lt;/a&gt; for a collection of clever techniques that exploit HTTP persistent connections to implement a &#39;push&#39; model of communication. &lt;br /&gt;&lt;br /&gt;He used an adaptation of Garrett&#39;s original Ajax figure to show how Comet extends the Ajax model; this smaller version comes from &lt;a href=&quot;http://blog.brains4all.com/brainblog/archives/2006/03/comet.html&quot;&gt;&lt;b&gt;brainblog&lt;/b&gt;&lt;/a&gt;: &lt;br /&gt;&lt;img style=&quot;display:block; text-align:center; margin:10px 0 0 0; cursor:pointer; cursor:hand; width:489px&quot; src=&quot;http://blog.brains4all.com/brainblog/archives/Comet.png&quot; border=&quot;0&quot; alt=&quot;The Comet Communication Model&quot;&gt; &lt;br /&gt;Using the Comet techniques, a server uses long-lived persistent connections to send updates to many clients, without even receiving a request (a &#39;poll&#39;) from the client. According to Russell: &lt;blockquote&gt;As is illustrated above, Comet applications can deliver data to the client at any time, not only in response to user input. The data is delivered over a single, previously-opened connection. This approach reduces the latency for data delivery significantly.&lt;br /&gt;&lt;br /&gt;The architecture relies on a view of data which is event driven on both sides of the HTTP connection. Engineers familiar with SOA or message oriented middleware will find this diagram to be amazingly familiar. The only substantive change is that the endpoint is the browser.&lt;br /&gt;&lt;br /&gt;While Comet is similar to Ajax in that it&#39;s asynchronous, applications that implement the Comet style can communicate state changes with almost negligible latency. This makes it suitable for many types of monitoring and multi-user collaboration applications which would otherwise be difficult or impossible to handle in a browser without plugins. &lt;/blockquote&gt; Like Ajax, Comet is not a new technology, but a new name for some clever ways to implement an &lt;a href=&quot;http://www.wired.com/wired/archive/5.03/ff_push.html&quot;&gt;&lt;b&gt;old&lt;/b&gt;&lt;/a&gt; communication style using standard Web protocols. But as happened with Ajax in 2005, the new name has triggered a lot of interest among developers -- for evidence, just search on &#39;Ajax&#39;, &#39;Comet&#39;, and &#39;Web&#39; (the last term should eliminate most links to &lt;a href=&quot;http://en.wikipedia.org/wiki/Ajax_the_Great&quot;&gt;&lt;b&gt;Greek legends&lt;/b&gt;&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Ajax_Amsterdam&quot;&gt;&lt;b&gt;soccer legends&lt;/b&gt;&lt;/a&gt;, and legendary cleaning products). Especially useful are Russell&#39;s slides from his talk (&lt;a href=&quot;http://alex.dojotoolkit.org/wp-content/LowLatencyData.pdf&quot;&gt;&lt;b&gt;Comet: Low Latency Data For Browsers&lt;/b&gt;&lt;/a&gt;) at the recent O&#39;Reilly &lt;a href=&quot;http://conferences.oreillynet.com/etech/&quot;&gt;&lt;b&gt;ETech Conference&lt;/b&gt;&lt;/a&gt;, and Phil Windley&#39;s excellent &lt;a href=&quot;http://www.windley.com/archives/2006/03/alex_russell_on.shtml&quot;&gt;&lt;b&gt;write-up&lt;/b&gt;&lt;/a&gt; of the talk.&lt;br /&gt;&lt;br /&gt;The complexity of a push architecture is justified only for applications that manage highly volatile shared data. But when it &lt;em&gt;is&lt;/em&gt; implemented, it creates an entirely new set of measurement challenges. If information pushed to the client does help the user to work faster, its benefits will be reflected in normal measurements of application responsiveness. But you can&#39;t use normal responsiveness metrics to evaluate a server-initiated activity that simply updates information a user is already working with. &lt;br /&gt;&lt;br /&gt;New metrics must be devised. Depending on the application, we may need to measure the currency or staleness of information available to the user, or maybe the percentage of times a user&#39;s action is invalidated by a newly received context update from the server. This kind of &quot;hiccup&quot; metric is conceptually similar to the frequency of rebuffering incidents, one measure of streaming quality. Server capacity will also be a major issue requiring careful design and load testing. These are new SLM challenges facing anyone who decides to implement the Comet approach. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Measuring RIA Responsiveness: Conclusions&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;While discussing the three major complications introduced by RIAs, I have already noted some consequences: measurements may become harder to specify, more difficult to correlate, and may even require the invention of new metrics. But I have been saving the punch-line until the end. I will now discuss my three most important and far-reaching conclusions about measuring RIAs, each of which involves a significant change from the way Web applications are measured today. These changes deal with the issues of &lt;em&gt;what&lt;/em&gt;, &lt;em&gt;where&lt;/em&gt;, and &lt;em&gt;how&lt;/em&gt; to measure. &lt;a name=&quot;Milestones&quot;&gt; &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;RIAs: What to Measure?&lt;/b&gt;&lt;br /&gt;The short answer? Not individual Web pages. First and foremost, because the asynchronous aspects of the RIA model undermine two fundamental assumptions about Web applications and what to measure: &lt;ul&gt;&lt;li&gt;We can no longer think of a Web application as comprising a series of Web pages. &lt;li&gt;We can no longer assume that the time it takes to complete a Web page download corresponds to something a user perceives as important. &lt;/ul&gt; In fact, when a client-side engine can be programmed to continually download new content, or a server-side engine can keep pushing new content to the browser over a connectionn that never closes, some page downloads may never complete.&lt;br /&gt;&lt;br /&gt;Therefore to report useful measurements of the user experience of response times, instead of relying on the definition of physical Web pages to drive the subdivision of application response times, we must break the application into what we might call &lt;em&gt;&#39;logical pages&#39;&lt;/em&gt;. To do this, a measurement tool must recognize meaningful application &lt;em&gt;milestones&lt;/em&gt; or &lt;em&gt;markers&lt;/em&gt; that signal logical boundaries of interest for reporting, and thus subdivide the application so that we can identify and report response times by logical page. &lt;br /&gt;&lt;br /&gt;Because (as I noted earlier) it is usually hard to correlate seemingly separate pieces of measurement data after the fact, I conclude that these milestones will have to be identified before measurement takes place. They could be key events or downloads that always occur naturally within the application. Or they could require proactive instrumentation, for example using little downloadable content elements that developers deliberately imbed at logical boundaries in the application&#39;s flow, to enable its subsequent measurement.&lt;br /&gt;&lt;br /&gt;The former method places the burden on those setting up measurements to first identify application-specific milestones. The latter frees the measurement tool from the need to know anything about the application, but places the burden on application developers to instrument their code by inserting markers at key points. &lt;a name=&quot;Comparing&quot;&gt; &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Comparing Apples and Oranges?&lt;/b&gt;&lt;br /&gt;Second, when setting out to measure a RIA, you must think carefully about the purpose of the measurement, especially if the RIA is replacing a traditional Web application, or being compared with one. You must not let the traditional Web approach to a business task determine what measurements are taken. Aleks Šušnjar (see &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-2.html&quot;&gt;&lt;b&gt;post [2]&lt;/b&gt;&lt;/a&gt; in this series) provided the following insights: &lt;blockquote&gt;We can&#39;t compare apples and oranges by measuring either an apple or an orange. We need to approach measurement as if we were comparing two applications built by different developers -- one a traditional Webapp and the other a client/server app with a completely different UI. &lt;br /&gt;&lt;br /&gt;In this situation, we cannot measure only at the level of single Web pages or server interactions. Finding that &lt;em&gt;it takes so many milliseconds to get a server response for request-type X&lt;/em&gt; is meaningless if that client/server interaction does not occur in both versions of the application. &lt;br /&gt;&lt;br /&gt;In my experience, a typical example concerned how long it took to upload or download a document. But those metrics were sometimes irrelevant, depending on the application context. So to make really useful performance comparisons, we had to approach the problem at a higher level -- for example, &#39;how long does it take to move a document from folder A to folder B?&#39; In a traditional Web app that task would likely require multiple clicks on separate pages, whereas with an RIA/Ajax implementation, we could do it with a single drag and drop. &lt;br /&gt;&lt;br /&gt;So to make valid comparisons, we had to measure and compare the net effect of two rather different aspects of performance -- one concerning only the computer (how many operations of type X can a machine perform per hour), the other involving human performance (how many documents can an employee move per hour). But both affected the overall conclusion. Generalizing, I would say that: &lt;ul&gt; &lt;li&gt;The server that has to generate additional HTML for multiple responses in a traditional Web app will likely use many more processor cycles than the one supporting an RIA/Ajax implementation, where all the user interactions are handled on the client and the server just has to provide a service at the end. &lt;li&gt;If the designer takes care to avoid &#39;chatty&#39; client/server communications, network utilization will probably also be significantly lower in the second case, further improving server performance. &lt;li&gt;Finally, if the client-side interface is well designed, a RIA should allow users to think and work faster. &lt;/ul&gt; In the final analysis, all these components of application performance must be weighed.&lt;/blockquote&gt; Aleks&#39; insights come from his own experience developing a Rich Internet Application -- for more details see &lt;a href=&quot;http://tinyurl.com/lcfk4&quot;&gt;&lt;b&gt;his Wikipedia page&lt;/b&gt;&lt;/a&gt; about RIA and AJAX. &lt;a name=&quot;Passive&quot;&gt; &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;RIAs: Where to Measure?&lt;/b&gt;&lt;br /&gt;You might think that to measure a user&#39;s experience of responsiveness, you would have to use a tool that collects measurements from the user&#39;s workstation, or at least from a measurement computer that is programmed to generate synthetic actions that imitate the behavior of a typical user. Surprisingly, this is not actually the case for traditional Web applications. &lt;br /&gt;&lt;br /&gt;While synthetic measurements require computers to mimic both a user&#39;s actions and their geographical location, software that collects passive measurements of real user actions can in fact reside either on the client machine or on a machine that is close to the server, usually just behind the firewall -- just so long as that machine can observe the flow of network traffic at the TCP and HTTP levels. Because of the synchronous and predictable nature of these protocols, a measurement tool that can read and interpret the flow of packets can actually deduce the user&#39;s experience of response time by tracking HTTP message traffic and the lower-level timings of TCP data packets and (crucially) TCP acknowledgements. &lt;br /&gt;&lt;br /&gt;Such a tool is called a packet sniffer, or protocol analyzer. Packet sniffing has a bad name in some quarters, being associated with malicious snooping by hackers. But in the right hands, it is a legitimate analysis technique used by some Web measurement tools to deduce client-side performance without actually installing any components, hardware or software, anywhere near the users.&lt;br /&gt;&lt;br /&gt;Unfortunately for these tools, the growth of RIAs will make it progressively more difficult to exploit this clever approach. The RIA Behavior Reference Model (&lt;a href=&quot;http://photos1.blogger.com/blogger/7699/1738/1600/RIA%20Reference%20Model%20v2.2.png&quot;&gt;&lt;b&gt;this figure&lt;/b&gt;&lt;/a&gt;) I introduced previously makes it clear that RIAs -- even without the further complications introduced by a Comet push architecture severely limit the power of the packet sniffing approach. That&#39;s because we can no longer characterize response time as the time to complete the synchronous round trip of:  &lt;br /&gt;&lt;br /&gt;Click(C) =&gt; Browser(B) =&gt; Request(Q) =&gt; Server(S) =&gt; Response(R) =&gt; Display(D)&lt;br /&gt;&lt;br /&gt;Instead the client-side engine in the RIA architecture breaks apart this cycle into two separate cycles operating asynchronously:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The user-client cycle:&lt;/b&gt; Click(C) =&gt; Engine(E) =&gt; Display(D) &lt;em&gt;-- [CED, for short]&lt;/em&gt;&lt;br /&gt;&lt;b&gt;The client-server cycle:&lt;/b&gt; Request(Q) =&gt; Server(S) =&gt; Response(R) &lt;em&gt;-- [QSR, for short]&lt;/em&gt;&lt;br /&gt;   &lt;br /&gt;Another way of describing these cycles might be as &#39;foreground&#39; (CED) and &#39;background&#39; (QSR). Both cycles are important, because neither stands alone; it is their relationship that defines application behavior. But that relationship depends only on the application design, which cannot (in general) be inferred by a measurement tool, especially one that can observe only one of the two cycles.&lt;br /&gt;&lt;br /&gt;I conclude therefore that to measure RIAs, tools will have to reside on the client machine, where they can see both the level of responsiveness experienced by the browser (the QSR cycle) and the user&#39;s experience of responsiveness (the CED cycle). Granted, QSR cycles can still be monitored by the traditional packet sniffing methods, but tracking them will permit only limited inferences to be made about the CED cycle, which is separately managed by the client-side engine. &lt;br /&gt;&lt;br /&gt;One might imagine that tracking the times of certain previously identified &#39;marker&#39; objects within the QSR stream could solve this problem, especially since I already concluded (above) that marker objects will be needed to delimit the logical pages of RIAs. But in order to be able to draw conclusions about CED times by seeing those markers in the QSR stream, a measurement tool must impose a lot of constraints on the design of the client-side engine. An engine that implemented truly asynchronous behaviors (such as anticipatory buffering) would make it difficult or impossible to assess the user&#39;s actual experience without a measurement presence on the client side to observe the CED cycle. &lt;br /&gt;&lt;br /&gt;Either that, or the marker objects would themselves need to be active scripts that triggered timing events that were somehow transmitted to the server (in a manner similar to &lt;a href=&quot;http://www.opengroup.org/management/arm/&quot;&gt;&lt;b&gt;ARM&lt;/b&gt;&lt;/a&gt;), rather than simply being passive milestones. But once again, this approach is tantamount to placing a measurement capability on the client. (Indeed, in the context of RIAs, dynamically distributing little measurement scripts that function as extensions to the client-side engine would be a natural approach). I therefore conclude that an approach comprising only passive listening on the server side will be insufficient to measure RIA responsiveness. &lt;a name=&quot;UserActions&quot;&gt; &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;RIAs: How to Measure?&lt;/b&gt;&lt;br /&gt;We have seen that RIAs will affect &lt;em&gt;where&lt;/em&gt; a &lt;em&gt;passive&lt;/em&gt; measurement tool can be used. &lt;em&gt;Active&lt;/em&gt; measurement tools, because their modus operandi is to simulate the user&#39;s behavior, are not affected by this issue -- since they mimic the client, they naturally reside there. For these measurement tools, the issue raised by RIAs is &lt;em&gt;how closely a user&#39;s behavior needs to be emulated&lt;/em&gt;. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;User Actions:&lt;/b&gt; First, note that RIAs can generate back-end traffic in response to any user action, and not only when the user clicks. For example, the &lt;a href=&quot;http://maps.google.com/&quot;&gt;&lt;b&gt;Google maps&lt;/b&gt;&lt;/a&gt; application can trigger preloading of adjacent map segments based on the direction of a user&#39;s cursor movement within the map display. Therefore to measure RIA responsiveness, an active measurement tool must simulate the &lt;em&gt;user&#39;s&lt;/em&gt; actions, not the &lt;em&gt;engine&#39;s&lt;/em&gt; actions. This further explains &lt;em&gt;why&lt;/em&gt; active tools &lt;em&gt;must&lt;/em&gt; reside at the client.&lt;br /&gt;&lt;br /&gt;In other words, using the terminology introduced earlier, active measurement tools must drive the CED cycle, not the QSR cycle. The former involves driving the client-side engine to obtain its backend behavior; the latter would require the tool user to supply a complete script of the engine&#39;s behavior to the active measurement tool. The latter involves more work and is inherently more difficult and mistake prone, and therefore much less useful. &lt;a name=&quot;ThinkTime&quot;&gt; &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Think Times:&lt;/b&gt; Second, an active measurement tool must properly reflect then fact that a client-side engine may be doing useful work in the background, while a user is reading the previous response or deciding what to do next. It may, for example, be prefetching content in anticipation of the user&#39;s next action. Therefore the time a user devotes to these activities -- jointly represented as &#39;think time&#39; in the RIA Behavior Model -- may affect their perception of the application&#39;s responsiveness. &lt;br /&gt;&lt;br /&gt;For passive measurements of real user traffic, this is not a problem, because their measurement data always includes the effects of the users&#39; actual think times. But for traditional Web apps, synthetic measurement tools have not needed to simulate think times by pausing between simulated actions, because introducing such delays would not have altered the result. When measuring an RIA however, setting think time to zero (as is typically done today) could have the effect of eliminating or minimizing potential background preloading activity, thus maximizing the perceived response times of later user actions. &lt;br /&gt;&lt;br /&gt;And because the engine&#39;s behavior during think time varies by application, a measurement tool cannot simply measure content download times then introduce simulated think times during the reporting phase. Combining individual component measurements after the fact to produce a realistic estimate of user experience would be like trying to construct a &lt;a href=&quot;http://en.wikipedia.org/wiki/PERT&quot;&gt;&lt;b&gt;PERT chart&lt;/b&gt;&lt;/a&gt; for a volatile project when you are not sure you know all the tasks and also cannot be sure about all their interdependencies -- in other words, impossible.&lt;br /&gt;&lt;br /&gt;While people familiar with the project could probably construct the chart and draw conclusions about the project&#39;s duration, a general-purpose tool cannot. But in software performance and analysis work, the most difficult and error-prone aspect is combining low level measurements to draw conclusions about user-related metrics like transaction response time. So most users of application measurement tools want to be told the bottom line, namely the user experience, not just the underlying component times. &lt;br /&gt;&lt;br /&gt;Therefore I conclude that to reflect a user&#39;s experience, an active measurement tool will have to simulate user think times &lt;em&gt;during the measurement process&lt;/em&gt;. Using realistic think times (as the best load testing tools already do today) will produce the most realistic measure of the response times a user perceives during a particular application use case.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;br /&gt;Since this has been a long post I will now summarize my conclusions, with links back to the discussion behind each: &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;#Variety&quot;&gt;&lt;b&gt;The variety&lt;/b&gt;&lt;/a&gt; of possible RIA behaviors creates new opportunities for developers to make performance-related mistakes, requiring more systematic approaches to measurement. &lt;li&gt;&lt;a href=&quot;#Concurrency&quot;&gt;&lt;b&gt;Concurrent&lt;/b&gt;&lt;/a&gt; client/server interactions make it difficult for measurement and analysis tools to correlate seemingly separate pieces of data with a particular application activity. &lt;li&gt;&lt;a href=&quot;#Comet&quot;&gt;&lt;b&gt;RIA push models&lt;/b&gt;&lt;/a&gt; (like &#39;Comet&#39;) will require the invention of new metrics to measure effectiveness. &lt;li&gt;&lt;a href=&quot;#Milestones&quot;&gt;&lt;b&gt; Milestones&lt;/b&gt;&lt;/a&gt; must be specified in advance to allow measurement tools to group RIA measurements into &#39;logical pages&#39; or tasks. &lt;li&gt;&lt;a href=&quot;#Comparing&quot;&gt;&lt;b&gt;To compare&lt;/b&gt;&lt;/a&gt; the performance of a RIA with a traditional Webapp, you must measure equally important activities within each. &lt;li&gt;&lt;a href=&quot;#Passive&quot;&gt;&lt;b&gt;Passive monitoring &lt;/b&gt;&lt;/a&gt;of server requests will be insufficient to determine a user&#39;s perception of RIA responsiveness. &lt;li&gt;Active measurement tools must &lt;a href=&quot;#UserActions&quot;&gt;&lt;b&gt;simulate user actions&lt;/b&gt;&lt;/a&gt;, not just engine actions, to measure RIA responsiveness. &lt;li&gt;Active measurement tools must &lt;a href=&quot;#ThinkTime&quot;&gt;&lt;b&gt;simulate user think times&lt;/b&gt;&lt;/a&gt; during the measurement process, to reflect a user&#39;s experience accurately. &lt;/ul&gt; &lt;b&gt;Next ...&lt;/b&gt;&lt;br /&gt;This completes (for now) my analysis of the challenges of measuring RIAs; any further ideas will have to wait until future posts. Next I will consider how the introduction of RIAs may affect SLM processes that were designed and fine-tuned to manage traditional Web applications.&lt;em&gt;&lt;/em&gt;</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/114331411343047828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/114331411343047828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114331411343047828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114331411343047828'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-6.html' title='Managing Rich Internet Applications [6]'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-114258460453407623</id><published>2006-03-17T08:32:00.000+00:00</published><updated>2006-03-17T20:29:42.806+00:00</updated><title type='text'>Managing Rich Internet Applications [5]</title><content type='html'>&lt;em&gt;This is the fifth post in a series devoted to the challenges of Service Level Management (SLM) for Rich Internet Applications (RIAs). In these applications, some processing is transferred to the Web client while some remains on the application server. Previous posts &lt;a href=&quot;http://performancematters.blogspot.com/2006/02/managing-rich-internet-applications-1.html&quot;&gt;&lt;b&gt;introduced the subject&lt;/b&gt;&lt;/a&gt; and the &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-2.html&quot;&gt;&lt;b&gt;SLM topics&lt;/b&gt;&lt;/a&gt; I plan to address, reviewed &lt;b&gt;&lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-3_06.html&quot;&gt;RIA technologies&lt;/a&gt;&lt;/b&gt;, and introduced &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-4.html&quot;&gt;&lt;b&gt;The RIA Behavior Model&lt;/b&gt;&lt;/a&gt;&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Measuring RIA Responsiveness: Introduction&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Having been sidetracked by my &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/deep-thoughts-on-management.html&quot;&gt;&lt;b&gt;interesting but futile search&lt;/b&gt;&lt;/a&gt; for the origin of the saying &lt;em&gt;&#39;you can&#39;t manage what you can&#39;t measure&#39;&lt;/em&gt;, I am now almost ready to examine some of the challenges of measuring Rich Internet Applications. But first I must spell out the motivations for measuring an application, and explain why the choice of an &lt;em&gt;active&lt;/em&gt; or &lt;em&gt;passive&lt;/em&gt; measurement methodology is of only secondary importance to this discussion.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Why Measure Applications?&lt;/b&gt;&lt;br /&gt;Reasons for measuring application performance fall into two classes, one client-centric, the other server-centric. They are: &lt;oL&gt;&lt;li&gt;MEASUREMENT: Determining how quickly the users can achieve their goals: &lt;ul&gt;&lt;br /&gt;&lt;li&gt;(a) Verifying that the application meets its service level objectives&lt;br /&gt;&lt;li&gt;(b) Detecting abnormal application behavior (typically, slow response) &lt;br /&gt;&lt;li&gt;(c) Identifying bottlenecks in application components &lt;br /&gt;&lt;li&gt;(d) Comparing builds, versions, or releases of an application &lt;br /&gt;&lt;li&gt;(e) Comparing two applications (e.g. our app vs. competitor&#39;s version) &lt;/ul&gt;&lt;br /&gt;&lt;li&gt;LOAD TESTING: Determining how a system behaves under increasing load:&lt;br /&gt;&lt;ul&gt; &lt;br /&gt;&lt;li&gt;(a) Verifying that the system will be able to handle the projected traffic &lt;br /&gt;&lt;li&gt;(b) Determining how many users a given server environment can handle &lt;br /&gt;&lt;li&gt;(c) Predicting bottleneck components as workload levels grow&lt;br /&gt;&lt;li&gt;(d) Comparing builds, versions, or releases of an application &lt;br /&gt;&lt;li&gt;(e) Identifying components that fail after extended use &lt;/ul&gt; &lt;/ol&gt;As I have indicated, activities in the first class are conventionally called &#39;measurement&#39;, while those in the second are referred to as &#39;load testing&#39;, or simply &#39;testing&#39;. So although both classes require us to address many common measurement problems, I will simplify my description of these problems by using the conventional terminology to distinguish the two classes of activties.  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Active vs. Passive Measurement&lt;/b&gt;&lt;br /&gt;A few years ago I edited a version of the &lt;em&gt;Network Measurement FAQ&lt;/em&gt; originally produced by a &lt;a href=&quot;http://www.caida.org/home/&quot;&gt;&lt;b&gt;CAIDA&lt;/b&gt;&lt;/a&gt; working group, for publication by &lt;a href=&quot;http://www.cmg.org/&quot;&gt;&lt;b&gt;CMG&lt;/b&gt;&lt;/a&gt;. The online FAQ seems to have gone into hiding, but you can still download the CMG paper, &lt;a href=&quot;http://www.avoka.com/resources/keynote/Fundamentals_of_Internet_Measurement_A_Tutorial.pdf&quot;&gt;&lt;b&gt;Fundamentals of Internet Measurement: A Tutorial&lt;/b&gt;&lt;/a&gt;. Although it is about network measurement, a couple of paragraphs introduce the concepts of active and passive measurements:&lt;blockquote&gt; &lt;b&gt;Passive measurements&lt;/b&gt; are carried out by observing normal network traffic, so they do not perturb the network. They are commonly used to measure traffic flows, i.e. counting the number of packets and bytes travelling through routers or links between specified sources and destinations. &lt;br&gt;&lt;br&gt; &lt;b&gt;Active measurements&lt;/b&gt;, on the other hand, are performed by sending test traffic into the network. For example, one might measure a network&#39;s maximum carrying capacity by sending packets through it and increasing the sending rate until the network is saturated. Clearly one needs to be aware that active measurements impose extra traffic onto a network and can distort its behavior in the process, thereby affecting measurement results. &lt;/blockquote&gt; When measuring Web applications, similar definitions and concerns apply, except at the level of application traffic and the server infrastuctures that deliver applications. While load testing requires an active measurement approach, application responsiveness can be measured using either active or passive methods. &lt;br /&gt;&lt;br /&gt;However, no matter which is used, the passive and active measurement approaches differ only in the way application traffic is &lt;em&gt;generated&lt;/em&gt; -- both still require mechanisms to &lt;em&gt;measure&lt;/em&gt; that traffic. Passive measurements must capture the behavior and experience of &lt;em&gt;real&lt;/em&gt; application users, while active measurements must do the same for &lt;em&gt;synthetic&lt;/em&gt; users, that is, computers mimicing the behavior of real users.&lt;br /&gt;&lt;br /&gt;This is fortunate, because to discuss the pros and cons of real and synthetic monitoring would require a major blog post. In fact I gave a short presentation on that topic at Interop last year, which would provide the structure required. But for now I will simply note that both real and synthetic application users have to be measured, and RIAs present many common measurement challenges, which I will be describing in my next post.</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/114258460453407623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/114258460453407623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114258460453407623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114258460453407623'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-5.html' title='Managing Rich Internet Applications [5]'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-114237306326873370</id><published>2006-03-14T21:48:00.000+00:00</published><updated>2006-12-06T22:56:42.583+00:00</updated><title type='text'>Deep Thoughts on Management</title><content type='html'>Since I am writing a series of posts about &lt;em&gt;managing&lt;/em&gt; Rich Internet Applications, and working on a post about the difficulties of &lt;em&gt;measuring&lt;/em&gt; them, I thought I should begin with the popular management aphorism that &lt;em&gt;you can&#39;t manage what you can&#39;t measure&lt;/em&gt;. Well, was that ever a diversion! Everyone is familiar with this saying, but interestingly, despite a ton of digging on the Web, the precise origin of this saying remains obscure (at least, to me). &lt;br /&gt;&lt;br /&gt;Perhaps because of my training in statistics, I had always assumed it was just a simplification of a famous statement by &lt;a href=&quot;http://en.wikipedia.org/wiki/William_Thomson,_1st_Baron_Kelvin&quot;&gt;&lt;b&gt;Lord Kelvin&lt;/b&gt;&lt;/a&gt;, often &lt;a href=&quot;http://ourworld.compuserve.com/homepages/Rainer_Wuerlaender/statquot.htm#citation&quot;&gt;&lt;b&gt;cited&lt;/b&gt;&lt;/a&gt; by statisticians: &lt;blockquote&gt;When you can measure what you are speaking about and express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, your knowledge is of a meager and unsatisfactory kind. It may be the beginning of knowledge, but you have scarcely advanced to the stage of science.&lt;/blockquote&gt; Unfortunately, there does not seem to be a lot of support for my assumption. Instead, my Web searches have revealed that the statement &lt;em&gt;&#39;you can&#39;t manage what you can&#39;t measure&#39;&lt;/em&gt; is most often attributed either to the pioneer of quality control, &lt;a href=&quot;http://en.wikipedia.org/wiki/W._Edwards_Deming&quot;&gt;&lt;b&gt;W. Edwards Deming&lt;/b&gt;&lt;/a&gt;, or to &#39;the father of modern management&#39;, &lt;a href=&quot;http://www.peter-drucker.com/&quot;&gt;&lt;b&gt;Peter Drucker&lt;/b&gt;&lt;/a&gt;. Moreover, neither of these popular attributions seems to be correct.&lt;br /&gt;&lt;br /&gt;In Deming&#39;s case, one of his most well-known statements is almost the exact &lt;em&gt;opposite&lt;/em&gt;, namely that management must take account of many things that &lt;em&gt;cannot be&lt;/em&gt; measured, and that running a company on visible figures alone was one of the &lt;a href=&quot;http://curiouscat.com/management/sevendeadlydiseases.cfm&quot;&gt;&lt;b&gt;seven deadly diseases of management&lt;/b&gt;&lt;/a&gt;. All the same, I&#39;m sure Deming, given his interest in quality control, would have also agreed that things which &lt;em&gt;can be&lt;/em&gt; measured &lt;em&gt;should be&lt;/em&gt; measured, And all SLM processes are &lt;a href=&quot;http://performancematters.blogspot.com/2005/10/abcs-of-measurement-data.html&quot;&gt;&lt;b&gt;based on measurements&lt;/b&gt;&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Attribution to Peter Drucker also seems to be a misconception, since it does not appear either in the &lt;a href=&quot;http://en.wikiquote.org/wiki/Peter_Drucker&quot;&gt;&lt;b&gt;wikiquote list&lt;/b&gt;&lt;/a&gt; of quotes from Drucker, or in other &lt;a href=&quot;http://www.brainyquote.com/quotes/authors/p/peter_f_drucker.html&quot;&gt;&lt;b&gt;extensive lists&lt;/b&gt;&lt;/a&gt; of his well-known sayings. But doing this research reminded me of the many insightful statements Drucker actually &lt;em&gt;did&lt;/em&gt; make, including: &lt;ul&gt; &lt;li&gt;Management is doing things right; leadership is doing the right things. &lt;li&gt;There is nothing so useless as doing efficiently that which should not be done at all. &lt;li&gt;A manager&#39;s task is to make the strengths of people effective and their weakness irrelevant--and that applies fully as much to the manager&#39;s boss as it applies to the manager&#39;s subordinates. &lt;li&gt;Management is so much more than exercising rank and privilege, ... it is much more than &quot;making deals.&quot; Management affects people and their lives. &lt;li&gt;Rank does not confer privilege or give power. It imposes responsibility. &lt;li&gt;Executives owe it to the organization and to their fellow workers not to tolerate nonperforming individuals in important jobs. &lt;li&gt;Most of what we call management consists of making it difficult for people to get their work done. &lt;li&gt; The most efficient way to produce anything is to bring together under one management as many as possible of the activities needed to turn out the product. &lt;li&gt;Increasingly, politics is not about &quot;who gets what, when, how&quot; but about values, each of them considered to be absolute. Politics is about &quot;the right to life&quot;...It is about the environment. It is about gaining equality for groups alleged to be oppressed...None of these issues is economic. All are fundamentally moral. &lt;li&gt;What&#39;s absolutely unforgivable is the financial benefit top management people get for laying off people. There is no excuse for it. No justification. This is morally and socially unforgivable, and we will pay a heavy price for it. &lt;li&gt;Unless commitment is made, there are only promises and hopes... but no plans. &lt;li&gt;The best way to predict the future is to create it. &lt;/ul&gt;This post is an example of what happens when I do research on the Web -- I find a lot of interesting information I was not even looking for. So this post became a diversion about the management insights of Edward Deming and Peter Drucker, and in my next one I will get back to the subject of measuring RIAs.</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/114237306326873370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/114237306326873370' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114237306326873370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114237306326873370'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/03/deep-thoughts-on-management.html' title='Deep Thoughts on Management'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-114196931886424009</id><published>2006-03-10T05:25:00.000+00:00</published><updated>2006-03-24T23:24:29.376+00:00</updated><title type='text'>Managing Rich Internet Applications [4]</title><content type='html'>&lt;em&gt;This is the fourth post in a series devoted to the challenges of Service Level Management (SLM) for Rich Internet Applications (RIAs). In these applications, some processing is transferred to the Web client while some remains on the application server. Previous posts &lt;a href=&quot;http://performancematters.blogspot.com/2006/02/managing-rich-internet-applications-1.html&quot;&gt;&lt;b&gt;introduced&lt;/b&gt;&lt;/a&gt; the subject, listed &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-2.html&quot;&gt;&lt;b&gt;topics&lt;/b&gt;&lt;/a&gt; I plan to address, and reviewed &lt;b&gt;&lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-3_06.html&quot;&gt;RIA technologies&lt;/a&gt;&lt;/b&gt;.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The RIA Behavior Model&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In an earlier post I discussed the idea of using a &lt;a href=&quot;http://performancematters.blogspot.com/2005/10/value-of-reference-models.html&quot;&gt;&lt;b&gt;reference model&lt;/b&gt;&lt;/a&gt; to establish a shared &lt;em&gt;frame of reference&lt;/em&gt;, or &lt;em&gt;conceptual framework&lt;/em&gt;, to structure subsequent discussions of a subject. Today I introduce a new reference model -- The RIA Behavior Model -- illustrated by the diagram below. &lt;br /&gt;&lt;br /&gt;I intend this model to represent the principal elements of the behavior of RIAs, elements that must be considered in any discussion of RIA performance and management. Note however that I am not attempting to address the complex human forces that &lt;em&gt;determine&lt;/em&gt; perceptual, cognitive, and motor behaviors. I am merely seeking to represent a few generalized &lt;em&gt;behavioral outcomes&lt;/em&gt; that are relevant in the context of an interaction between a human user and a Rich Internet Application.  &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://photos1.blogger.com/blogger/7699/1738/1600/RIA%20Reference%20Model%20v2.2.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;http://photos1.blogger.com/blogger/7699/1738/400/RIA%20Reference%20Model%20v2.1.jpg&quot; border=&quot;0&quot; alt=&quot;RIA Reference Model&quot;&gt;&lt;/a&gt;&lt;br /&gt;As you can see, this model embraces more concepts than the two figures created by Jesse Garrett &lt;a href=&quot;http://adaptivepath.com/publications/essays/archives/000385.php&quot;&gt;&lt;b&gt;to introduce Ajax&lt;/b&gt;&lt;/a&gt;, which I included in my previous post. Those figures are ideal for explaining the differences between traditional Web applications and RIAs. But to discuss how the combination of a Rich Internet Application and a user will actually &lt;b&gt;behave&lt;/b&gt;, I have included several more elements that interact to determine behavior, which I will now describe. &lt;br /&gt;&lt;br /&gt;At the highest level, the model comprises three major aspects (indicated by the color coding in the figure), each of which influences application performance: &lt;ol&gt;&lt;li&gt;The application&#39;s design and usage environment, or context (upper row, grey) &lt;li&gt;The user&#39;s expectations and behavior (lower left, blue) &lt;li&gt;The application&#39;s behavior when used (lower right, yellow) &lt;/ol&gt; &lt;b&gt;Browser/Server Interaction&lt;/b&gt;&lt;br /&gt;If we consider a Web browser to be the simplest form of &lt;em&gt;client engine&lt;/em&gt;, then the solid black arrows trace the flow of a traditional Web page download. The user &lt;em&gt;clicks&lt;/em&gt; on a link in their browser, the browser sends &lt;em&gt;requests&lt;/em&gt; to one or more &lt;em&gt;servers&lt;/em&gt;. Servers &lt;em&gt;respond to client requests&lt;/em&gt;, and when there is enough of the requested &lt;em&gt;content on the client&lt;/em&gt; (in the browser cache), the browser renders it (&#39;paints&#39; the screen), and the user can &lt;em&gt;view&lt;/em&gt; it. The &lt;em&gt;user&#39;s experience of response time&lt;/em&gt; is the elapsed time of the entire process, &#39;from click to paint&#39;.&lt;br /&gt;&lt;br /&gt;Even a single Web page download will normally involve many round trips between client (browser) and server, because most Web pages are an assemblage of content elements such as CSS files, script files, and embedded images, each of which is separately downloaded by the browser. &lt;br /&gt;&lt;br /&gt;In the traditional synchronous Web application, illustrated in the upper half of Garrett&#39;s &lt;em&gt;Figure 2&lt;/em&gt;, this process is repeated several times. Because applications usually require an exchange of information, at least one of the &lt;em&gt;requests&lt;/em&gt; the browser sends to the server will normally be an HTTP POST (as opposed to the much more common HTTP GET request), to upload some data a user has entered into a form. Consider, for example, shopping at amazon.com as a return visitor. At minimum, even if the application recognizes you from a cookie, you must enter your password again to confirm your identity. But after that, the site already has all your personal information, and you can complete your transaction just by clicking on the right buttons on each page as it is presented to you.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Server-Side Elements&lt;/b&gt;&lt;br /&gt;We are all familiar with this kind of Web application and its behavior. But unless you are responsible for site management or performance, you may be less aware of some of the other server-side elements of the model. Servers must field requests concurrently from many &lt;em&gt;users&lt;/em&gt;. No matter how powerful the server, every concurrent user consumes their small share of the server&#39;s resources: &lt;em&gt;memory&lt;/em&gt;, &lt;em&gt;processor&lt;/em&gt;, and &lt;em&gt;database&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Web servers can respond rapidly to stateless requests for information from many concurrent users, making catalog browsing a relatively fast and efficient activity. But when a user&#39;s action (such as clicking the &#39;add item to shopping cart&#39; button) requires the server to update something, more of those server resources are consumed. So the number of concurrent transactions -- server interactions that update a customer&#39;s stored information -- plays a vital role in determining server performance. &lt;br /&gt;&lt;br /&gt;In the model, the grey arrows and the boxes labeled &lt;em&gt;Users&lt;/em&gt; and &lt;em&gt;Transactions&lt;/em&gt; represent the fact that server performance is strongly influenced by these two concurrency factors. Servers typically perform uniformly well up to a certain concurrency level, but above that level (&#39;the knee of the curve&#39;) transaction performance quickly degrades, as one of the underlying resources becomes a bottleneck. Because of this characteristic, seemingly small design changes in an application or in the infrastructure serving the application may, if they extend the duration of transactions, have a significant effect on the user&#39;s experience of response time. &lt;a name=&quot;Engine&quot;&gt; &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Adding a Client-Side Engine&lt;/b&gt;&lt;br /&gt;Adding a client-side engine does not prevent an application from implementing the traditional synchronous design described above. But RIAs aim to improve the user&#39;s experience, and a client-side engine allows the application designer to consider many additional possibilities, such as:&lt;ul&gt;&lt;li&gt;Prefetching of content to client &lt;li&gt;Lazy loading of content &lt;li&gt;Just In Time fetching of content &lt;li&gt;Client-side validation of user input &lt;li&gt;Client-side only responses to user input &lt;li&gt;Batching of server inputs on the client &lt;li&gt;Offloading of server function to client machines&lt;/ul&gt; If any of these techniques are employed, the resulting application will inevitably be more complex than the traditional synchronous application. The challenge of SLM is to ensure that a more complex design actually does produce a more responsive user experience, because -- despite the optimistic claims being made for Ajax and Flash -- there are no guarantees.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Improving the User Experience&lt;/b&gt;&lt;br /&gt;For example, a common method of accelerating client-side response is to anticipate the user&#39;s next action(s) and program the engine to &lt;em&gt;preload&lt;/em&gt; (or &lt;em&gt;prefetch&lt;/em&gt;) some content &#39;in the background&#39;, while the user is thinking. Depending on their think time, when the user clicks, part or all of the desired response can be already available on the client. This technique has long been used in client/server systems to improve client responsiveness; a version (called &lt;a href=&quot;http://www.mozilla.org/projects/netlib/Link_Prefetching_FAQ.html&quot;&gt;&lt;b&gt;Link Prefetching&lt;/b&gt;&lt;/a&gt;) is implemented by Mozilla browsers.&lt;br /&gt;&lt;br /&gt;Preloading will certainly create a more responsive experience -- if the user actually follows the anticipated path through the application. But what if they don&#39;t? Then the client engine has made extra server requests that turned out to be unnecessary, and it still has to react to the user&#39;s input with yet more server requests. So the design has placed extra load on the servers, for no benefit. &lt;br /&gt;&lt;br /&gt;The extra load serving these &#39;background&#39; requests, on behalf of what may be hundreds or even thousands of clients running the preloading application, can slow down a server&#39;s responses to requests that users are actually waiting for. Slower responses lengthen transaction times, which drives up the number of concurrent users, clogging up the servers even more, and further slowing down responses. It&#39;s a vicious circle.&lt;br /&gt;&lt;br /&gt;Even if the application serves some users quickly, those whose usage patterns do not match the profile the application designer had in mind will probably not receive such good service, and (in the worst case) may &lt;em&gt;abandon&lt;/em&gt; transactions before completing them. Apart from the lost opportunity to serve a customer, abandonment usually also wastes scarce server resources, because the allocations earmarked for now-abandoned transactions languish unused until finally freed by some type of timeout mechanism.&lt;br /&gt;&lt;br /&gt;People who design and test back-end systems already know that behavioral variables like &lt;em&gt;user think-time distributions&lt;/em&gt; and &lt;em&gt;abandonment rates per page&lt;/em&gt; have a significant influence on the capacity and responsiveness of servers under load. Today, RIAs (as indicated by the dotted lines in the diagram) give application designers the flexibility to create application designs that attempt to take account of such behavioral variables. But a consequence is that RIAs also magnify the risk of failure should the designer miscalculate: a simple design applied well beats a clever design misapplied.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Application Environment&lt;/b&gt;&lt;br /&gt;This brings us to the crucial importance of the design and usage environment, represented by the grey boxes in the model. A user&#39;s satisfaction with any application depends on their &lt;em&gt;usage context and environment&lt;/em&gt;; in other words, how well the &lt;em&gt;application design&lt;/em&gt; matches &lt;em&gt;their&lt;/em&gt; needs at the time, &lt;em&gt;their&lt;/em&gt; way of thinking, and &lt;em&gt;their&lt;/em&gt; behavior when they are using it. &lt;br /&gt;&lt;br /&gt;Their experience of response time depends on the combined behaviors of the client and server components of the application, which in turn depend on the &lt;em&gt;application design&lt;/em&gt;, the underlying server &lt;em&gt;infrastructure design&lt;/em&gt;, and of course the user&#39;s Internet &lt;em&gt;connection speed&lt;/em&gt;. The most effective RIA will be one whose creators took into account these factors at each stage of its development life cycle, and who created the necessary management processes to ensure its success when in production. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Future Posts&lt;/b&gt;&lt;br /&gt;Using &lt;em&gt;The RIA Behavior Model&lt;/em&gt; as one starting point, future posts will discuss how to build robust and responsive RIAs, and explore some of the technical and management challenges they pose, especially in the area of response time measurement. If I can organize my thoughts sufficiently to keep the writer&#39;s block at bay, I expect my next post to focus on that topic.</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/114196931886424009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/114196931886424009' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114196931886424009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114196931886424009'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-4.html' title='Managing Rich Internet Applications [4]'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-114170740627857037</id><published>2006-03-07T04:56:00.000+00:00</published><updated>2006-03-24T23:00:37.056+00:00</updated><title type='text'>Managing Rich Internet Applications [3]</title><content type='html'>&lt;em&gt;This is the third post in a series devoted to the challenges of Service Level Management (SLM) for Rich Internet Applications (RIAs). In these applications, some processing is transferred to the Web client while some remains on the application server. Previous posts &lt;a href=&quot;http://performancematters.blogspot.com/2006/02/managing-rich-internet-applications-1.html&quot;&gt;&lt;b&gt;introduced&lt;/b&gt;&lt;/a&gt; the subject, and listed the &lt;a href=&quot;http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-2.html&quot;&gt;&lt;b&gt;topics&lt;/b&gt;&lt;/a&gt; I plan to address.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;RIA Technologies&lt;/b&gt;&lt;br /&gt;Before diving into the management issues posed by Rich Internet Applications, I will introduce the two principal technologies used to implement RIAs -- Ajax and Flash -- and provide a few links I have found useful. &lt;br /&gt;&lt;br /&gt;I am going to begin with &lt;a href=&quot;http://en.wikipedia.org/wiki/Ajax_%28programming%29&quot;&gt;&lt;b&gt;Ajax&lt;/b&gt;&lt;/a&gt;, because the &lt;a href=&quot;http://adaptivepath.com/publications/essays/archives/000385.php&quot;&gt;&lt;b&gt;seminal article&lt;/b&gt;&lt;/a&gt; defining the term &quot;Ajax,&quot; Jesse James Garrett provides such a clear introduction to the subject. After explaining that ... &lt;blockquote&gt;Ajax isn’t a technology. It’s really several technologies, each flourishing in its own right, coming together in powerful new ways. Ajax incorporates:&lt;ul&gt;&lt;li&gt;standards-based presentation using XHTML and CSS;&lt;br /&gt;&lt;li&gt;dynamic display and interaction using the Document Object Model; &lt;br /&gt;&lt;li&gt;data interchange and manipulation using XML and XSLT; &lt;br /&gt;&lt;li&gt;asynchronous data retrieval using XMLHttpRequest; &lt;br /&gt;&lt;li&gt;and JavaScript binding everything together.&lt;/ul&gt;&lt;/blockquote&gt;... he uses two figures that reveal the essential differences between a classic Web application and one implemented using Ajax: &lt;a name=&quot;Figure1&quot;&gt; &lt;/a&gt; &lt;blockquote&gt;The classic web application model works like this: Most user actions in the interface trigger an HTTP request back to a web server. The server does some processing — retrieving data, crunching numbers, talking to various legacy systems — and then returns an HTML page to the client... This approach makes a lot of technical sense, but it doesn’t make for a great user experience. While the server is doing its thing, what’s the user doing? That’s right, waiting. And at every step in a task, the user waits some more. &lt;br&gt; &lt;br&gt;Obviously, if we were designing the Web from scratch for applications, we wouldn’t make users wait around. Once an interface is loaded, why should the user interaction come to a halt every time the application needs something from the server? In fact, why should the user see the application go to the server at all?&lt;/blockquote&gt; Figure 1 illustrates how Ajax is different: &lt;blockquote&gt; &lt;img style=&quot;display:block; margin:10px 0 0 0; text-align:center;cursor:pointer; cursor:hand;width: 475px;&quot; src=&quot;http://adaptivepath.com/images/publications/essays/ajax-fig1_small.png&quot; border=&quot;0&quot; alt=&quot;Traditional and Ajax Application Models&quot;&gt; &lt;br /&gt;&lt;em&gt;Figure 1: The traditional model for web applications (left) compared to the Ajax model (right).&lt;/em&gt; &lt;/blockquote&gt; While this diagram refers to Ajax technology, its structure describes RIAs in general. Garrett explains that the RIA model: &lt;blockquote&gt;... eliminates the start-stop-start-stop nature of interaction on the Web by introducing an intermediary — an Ajax engine — between the user and the server. ... At the start of the session, the browser loads an Ajax engine — written in JavaScript and usually tucked away in a hidden frame. This engine is responsible for both rendering the interface the user sees and communicating with the server on the user’s behalf&quot;.&lt;/blockquote&gt; &lt;a name=&quot;Figure2&quot;&gt; &lt;/a&gt; Figure 2 (below) illustrates how the addition of a client-side engine ... &quot;allows the user’s interaction with the application to happen asynchronously — independent of communication with the server&quot;. &lt;blockquote&gt; &lt;img style=&quot;display:block; text-align:center; margin:10px 0 0 0; cursor:pointer; cursor:hand; width:475px;&quot; src=&quot;http://adaptivepath.com/images/publications/essays/ajax-fig2_small.png&quot; border=&quot;0&quot; alt=&quot;Synchronous and Asynchronous Client/Server Communications&quot;&gt;&lt;br /&gt;&lt;em&gt;Figure 2: The synchronous interaction pattern of a traditional web application (top) compared with the asynchronous pattern of an Ajax application (bottom)&lt;/em&gt; &lt;/blockquote&gt; In the best case, a client-side engine can mean that users spend less time waiting for the server to respond. Like all writers making the case for Ajax and RIAs, Garrett assumes that this architecture guarantees a more responsive user experience -- but the reality is more complicated. In practice, an RIA&#39;s responsiveness will depend on several factors that I will be exploring in this series of posts.&lt;br /&gt;&lt;br /&gt;For more detailed discussion of the history of RIAs and Ajax, I recommend Aleksandar Šušnjar&#39;s Wikipedia page about &lt;a href=&quot;http://tinyurl.com/lcfk4&quot;&gt;&lt;b&gt;RIA and AJAX&lt;/b&gt;&lt;/a&gt;. For more technical details, see these &lt;a href=&quot;http://www.sitepoint.com/&quot;&gt;&lt;b&gt;Sitepoint&lt;/b&gt;&lt;/a&gt; articles:&lt;ul&gt; &lt;li&gt;&lt;a href=&quot;http://www.sitepoint.com/article/take-command-ajax&quot;&gt;&lt;em&gt;Take Command with AJAX&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.sitepoint.com/article/remote-scripting-ajax&quot;&gt;&lt;em&gt;AJAX: Usable Interactivity with Remote Scripting&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.sitepoint.com/article/painless-javascript-prototype&quot;&gt;&lt;em&gt;Painless JavaScript Using Prototype&lt;/em&gt;&lt;/a&gt;&lt;/ul&gt; &lt;b&gt;What about Flash?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You may feel I should have started with &lt;a href=&quot;http://en.wikipedia.org/wiki/Macromedia_Flash&quot;&gt;&lt;b&gt;Flash&lt;/b&gt;&lt;/a&gt;, because it came first, but opinion is divided on that point. It is true that Macromedia announced their Flash MX product line in 2002 (see &lt;a href=&quot;http://www.macromedia.com/devnet/studio/whitepapers/rich_internet_apps.pdf&quot;&gt;&lt;b&gt;Developing Rich Internet Applications with Macromedia MX&lt;/b&gt;&lt;/a&gt; for a good summary), whereas the term Ajax was coined only in February 2005. However, the underlying RIA techniques have been in use for much longer. For example, on his Wikipedia page Aleks cites the pioneering work of the now defunct company, Desktop.com. In 1999, &lt;a href=&quot;http://davenet.scripting.com/1999/10/04/sunIsOk&quot;&gt;&lt;b&gt;Dave Winer&lt;/b&gt;&lt;/a&gt;  wrote in his blog:&lt;blockquote&gt;Want a vision of where the Web is headed? Check out Desktop.Com. Launched in beta a couple of weeks ago, this stunning site changed my point of view on what can be accomplished with JavaScript, ActiveX and whatever other kinds of mysterious code-doo-dads they&#39;re using... Desktop.Com says the Web is a desktop, just like the desktops on the Mac and Windows. Icons down the left edge of the browser window, menus at the top of the window, double-click to open a directory, double-click to edit a file.&lt;em&gt; -- Dave Winer&lt;/em&gt; &lt;/blockquote&gt; If you need to compare Ajax and Flash, here are four links you may find interesting:&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.ajaxinfo.com/default~viewart~8.htm&quot;&gt;&lt;em&gt;Weighing the alternatives&lt;br /&gt;&lt;/em&gt;&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;http://www.jonathanboutelle.com/mt/archives/2005/03/flash_rias_vs_j.html&quot;&gt;&lt;em&gt;Flash RIAs vs. Javascript RIAs&lt;/em&gt;&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;http://dotone.login.ae/article/ajax-vs-flash-round-1-arena-web20-fight&quot;&gt;&lt;em&gt;Ajax vs Flash, Round 1&lt;/em&gt;&lt;/a&gt; and &lt;a href=&quot;http://dotone.login.ae/article/ajax-vs-flash-round-2-arena-web20-fight&quot;&gt;&lt;em&gt;Round 2&lt;/em&gt;&lt;/a&gt;&lt;/ul&gt; Any search engine will turn up plenty more material on this subject, and I will return to it when discussing aspects of RIA measurement and management.&lt;br /&gt;&lt;br /&gt;You can download many reports and papers about Flash and RIAs from the Adobe (formerly Macromedia) Web site -- for example, &lt;a href=&quot;http://www.macromedia.com/software/flashremoting/whitepapers/&quot;&gt;&lt;b&gt;these&lt;/b&gt;&lt;/a&gt;. Not included in that list is one of the most readable introductions to &lt;a href=&quot;http://www.macromedia.com/platform/whitepapers/idc_impact_of_rias.pdf&quot;&gt;&lt;b&gt;Rich Internet Applications&lt;/b&gt;&lt;/a&gt;, a 2003 paper sponsored by Macromedia and Intel and written by &lt;a href=&quot;http://www.superconference.info/sc2005_joshua_duhl.html&quot;&gt;&lt;b&gt;Joshua Duhl of IDC&lt;/b&gt;&lt;/a&gt;, an excellent writer who I once worked with (in the early 90&#39;s) at ONTOS, a Boston-based Object DB company.  Another former colleague from Boston, &lt;a href=&quot;http://www.supplyworks.com/company/team.asp&quot;&gt;&lt;b&gt;Alan Sarasohn&lt;/b&gt;&lt;/a&gt;, used to claim that the computer industry is run by just 300 people, but they keep moving around. I&#39;m starting to believe him!</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/114170740627857037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/114170740627857037' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114170740627857037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114170740627857037'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-3_06.html' title='Managing Rich Internet Applications [3]'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17912762.post-114128769508790283</id><published>2006-03-02T08:20:00.000+00:00</published><updated>2006-03-06T23:52:58.293+00:00</updated><title type='text'>Managing Rich Internet Applications [2]</title><content type='html'>&lt;em&gt;This is the second post in a series devoted to the challenges of Service Level Management (SLM) for Rich Internet Applications (RIAs). In these applications, some processing is transferred to the Web client while some remains on the application server&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;In the &lt;a href=&quot;http://performancematters.blogspot.com/2006/02/managing-rich-internet-applications-1.html&quot;&gt;first post&lt;/a&gt; in this series, I introduced the concept of a Rich Internet Application, and asserted that anyone planning to deploy RIA technology &lt;em&gt;must be prepared to invest more in design, development, testing and management to make it successful&lt;/em&gt;. By that I meant that deploying an RIA successfully will demand more resources -- skills, tools, process, time, and (of course) money -- than would be required to deploy a more traditional version of a Web-based application in which all application logic is executed on the server.&lt;br /&gt;&lt;br /&gt;I have reached this conclusion after studying this subject for the last three months, in the light of my prior experience in the field of software performance management. Factors leading to this conclusion include: &lt;ul&gt;&lt;li&gt;the nature of much of the technology being promoted for building RIAs today (primitive) &lt;li&gt;the stage of evolution of this new application architecture (early) &lt;li&gt;the toolsets available to support RIA developers (incomplete), and &lt;li&gt;the experiences of others developing RIAs (hard work).&lt;/li&gt;&lt;/ul&gt;This comment by &lt;a href=&quot;http://www.baselinemag.com/article2/0,1540,1887817,00.asp&quot;&gt;&lt;b&gt;Todd Spangler in Baseline Magazine&lt;/b&gt;&lt;/a&gt; neatly sums up the situation today: &lt;blockquote&gt;Creating an Ajax application from scratch is like having to build a brick wall but first having to figure out how to create the bricks.&lt;/blockquote&gt;This reminds me of the days when I used to program in IBM Assembler -- funny how life in the world of computing seems to repeat itself every few years! (And I&#39;ll have more to say about that later). But while this is all fascinating stuff, it is not my primary focus; it is just the starting point for the SLM topics I want to discuss. So although I will devote some space to reviewing the state of RIA technology, I will try to keep those posts concise and provide useful links. If you want more, a few searches will turn up tons of reference material.&lt;br /&gt;&lt;br /&gt;The questions I plan to explore in more depth in this series are: &lt;ul&gt;&lt;li&gt;Why are RIAs so much more difficult to design, develop, and manage? &lt;li&gt;How do you measure an RIA user&#39;s experience of response time? &lt;li&gt;How do you test whether an RIA will perform acceptably in the production environment? &lt;li&gt;How do you break apart the time it takes to complete a business transaction using an RIA into meaningful components? &lt;li&gt;How do you monitor the performance of an RIA in the production environment, and alert when its behavior is abnormal? &lt;li&gt;What kinds of development and systems management processes will maximize the chances of implementing an RIA successfully?&lt;/li&gt;&lt;/ul&gt;Before I get into any of these details, I&#39;d like to acknowledge the contributions of two people who have helped shed light on these issues. This first is Victor Pavlov, a principal engineer and colleague at Keynote, who &lt;a href=&quot;http://www.sitepoint.com/article/xmlxslt-driven-website-net&quot;&gt;&lt;b&gt;knows Web technology&lt;/b&gt;&lt;/a&gt; inside out, and can figure out how to measure anything. I am lucky that when I am noodling on a tricky question, I can sometimes run into Victor at the coffee machine.&lt;br /&gt;&lt;br /&gt;The second is &lt;a href=&quot;http://tinyurl.com/nshnd&quot;&gt;&lt;b&gt;Aleksandar Šušnjar&lt;/b&gt;&lt;/a&gt;, who I met online after reading &lt;a href=&quot;http://tinyurl.com/o3gwt&quot;&gt;&lt;b&gt;his contributions&lt;/b&gt;&lt;/a&gt; to the discussion of RIAs in Wikipedia, where he shared insights gained from his experience building a product first released in 2002 by his company, Hummingbird. This product, DM Webtop (later renamed DM Web Server) is a component of their &lt;a href=&quot;http://mimage.hummingbird.com/alt_content/binary/pdf/collateral/ds/he04/dm_datasheet.pdf&quot;&gt;&lt;b&gt;Enterprise Document Management&lt;/b&gt;&lt;/a&gt; suite. In delivering desktop capabilities via the Web, it clearly predated much of today&#39;s thinking about the purpose of RIAs and how to build them.&lt;br /&gt;&lt;br /&gt;Naturally, Aleks also discovered some potential pitfalls an RIA designer might run into, which I will be mentioning in later posts. Regrettably, many of his insightful contributions to Wikipedia (which can still be found in its history pages) were subsequently removed by other contributors who lacked either his intimate knowledge of the technology or his historical perspective. Rather than waging Wikipedia edit wars, which for a hot topic can continue interminably, he has simply posted &lt;a href=&quot;http://tinyurl.com/lcfk4&quot;&gt;&lt;b&gt;his own page about RIA and AJAX&lt;/b&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I am not surprised by these events, because I have found that the computing world tends to attract people who have little sense of history. This explains why it is forever reinventing the wheel, repeating yesterday&#39;s mistakes, and tripping over previously solved problems. Rich Internet Applications are a case in point. Mainframe (thin client) computing was replaced by the client/server (fat client) model, which in turn was displaced by the Web-based (thin client) applications. Now the emergence of RIAs signals a return to the fat client model again. The only difference between the client/server and RIA models is that instead of &lt;a href=&quot;http://en.wikipedia.org/wiki/Sneakernet&quot;&gt;&lt;b&gt;Sneakernets&lt;/b&gt;&lt;/a&gt; and static installation protocols, Internet and Web technologies now provide an almost universally available platform for distributing function to client desktops dynamically. But many of the over-optimistic claims being made for RIA technology today mirror those popular 15-20 years ago, when everyone was jumping on the client/server bandwagon and predicting the imminent demise of the mainframe -- which, by the way, never happened.&lt;br /&gt;&lt;br /&gt;So I&#39;ll end by reminding you of the famous saying of philosopher &lt;a href=&quot;http://en.wikipedia.org/wiki/George_Santayana&quot;&gt;&lt;b&gt;George Santayana&lt;/b&gt;&lt;/a&gt;: &lt;em&gt;Those who cannot remember the past are condemned to repeat it&lt;/em&gt;. One of my goals in this series of posts about RIAs is to keep you from that fate, so I&#39;m glad to be collaborating with people like Victor and Aleks whose common sense is grounded in a strong sense of history!</content><link rel='replies' type='application/atom+xml' href='http://performancematters.blogspot.com/feeds/114128769508790283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/17912762/114128769508790283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114128769508790283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17912762/posts/default/114128769508790283'/><link rel='alternate' type='text/html' href='http://performancematters.blogspot.com/2006/03/managing-rich-internet-applications-2.html' title='Managing Rich Internet Applications [2]'/><author><name>Chris Loosley</name><uri>http://www.blogger.com/profile/04900264140519802564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/7699/1738/200/CRLphoto.jpg'/></author><thr:total>0</thr:total></entry></feed>