Repaying Guy Kawasaki — Truemors Site Optimization Analysis

I owe Guy Kawasaki a lot even though I’ve never met him. A month ago, I watched a video where he talked about starting a business to make meaning versus making money. That video came at just the right time for me and led me on a new path in my life.

So I’m very pleased to attempt to repay the debt. Tonight on Twitter, someone commented on Guy Kawasaki’s new adventure Truemors and the fact that the site was slow. Guy replied that they were working on it. I sent Guy Kawasaki a quick note that I thought they needed to turn on gzip, but I was reading my YSlow plugin incorrectly.

So instead of trying to provide feedback via Twitter, I thought I’d write up the things that I think will have the greatest impact for Truemors.

First, let’s look at where the greatest time is spent. Here is a graph showing the download time for Truemors:

truemors-download-small.png
Click image to see full size

The thing to notice about the image is that the html downloads in 2445 milliseconds on my home broadband connection. The total download time is 12,949 milliseconds. This means that the server processing and html download only account for 18% of the total download time.

This is consistent with Yahoo’s 80/20 rule and indicates that the biggest benefit will come from optimizing front-end content.

  • Reduce the Number of HTTP Requests — This appears to be the place with the biggest opportunity for improvement because the Truemors home page makes 79 http requests on an empty cache.

    Keep in mind that browsers will only make two http connections to the same domain at a time. It is because of this two connection limit that most web browsing never reaches the full broadband speeds available.

    To reduce the number of http requests, I would look first at consolidating the javascript files. There are currently 20 javascript files. Javascript files also contain the added determent that the browser will not start transfering any other files until the javascript completes. This effectively reduces the browser to serial downloads for the duration of the javascript downloads. Truemors download graph shows this happening.

    It appears that reducing the number of javascript files will have the largest impact on site speed.

  • Move Javascript to the FooterBrowsers will not render any content below javascript until the javascript has loaded. When a page downloads, one of the things that makes it feel faster is if the page starts rendering first. Because of the number of javascripts in the html head on Truemors, the page remains blank and then snaps into place after a wait. This is a tell-tale sign that progressive rendering is getting blocked by javascript processing.
  • Add expires headers to encourage caching — On the second time the Truemors home page is viewed, it still will download 125k of files and make 64 http requests. Adding expires headers will ensure that files aren’t download unnecessarily and the browser knows that it doesn’t need to check for new files.
  • Test using YSlow and Speed Up Your Site — The YSlow Firefox plugin and the Web Page Analyzer provide free tools for testing the speed.

These are the items that I believe would make the biggest difference. Looking at the Truemors example, I can see one of the disadvantages of my favorite blogging software, WordPress, and its plugin architecture.

All of the plugins are putting their own javascript, images and sometimes even css into the page. These plugins aren’t part of a cohesive vision for the page and add the code to the page where ever they like. It is clear to me that doing things like combining javascript files may require more work because the plugins are responsible for adding them to the page.

I hope Guy Kawasaki and his partners find this information useful. I owe Guy a lot for inspiring me. This post is a small token of my gratitude. Thanks for the video.

Great iPhone Development Resources

I’ve been collecting a series of iPhone development articles that may be of interest.

First, Craig Hockenberry has written some great stuff on Furbo.org as well as articles for A List Apart. It seems like it is likely worth subscribing to his Furbo.org site if you are interested in iPhone development. Some of the articles of interest are:

  • Benchmarking in Your Pants An exhaustive testing that shows javascript executes 80 times slower on an iPhone and why this would be much faster with a native SDK instead of a Safari-based SDK
  • Part I and Part II of his A List Apart series called “Put Your Content in My Pocket.” These articles focus on the basics of building content for iPhones.
  • One Line of Code How to make your site look better on an iPhone with only one line of code.
  • Hacking Quicker How to speed up ssh and other services to make hacking the iPhone faster
  • What the iPhone Specs Don’t Tell You Things like the CPU speed

As you can tell, Craig has a ton of great information. He’s been a one-man iPhone publishing house. Some other good resources are:

Speed of a Site and Usability

Jared Spool and Christine Perfetti discuss a study on how web page speed impacts usability on their latest Usability Tools Podcast. Because this study conflicts with some of the research that I cited during my recent presentation to DevGroup NW on ways to speed up your site, I was anxious to listen to the podcast and review the research.

Basically, the UIE study found that speed did not have the impact on usability that everyone in the human factors field believed. This conflicts with the research cited in Andy King’s Speed Up Your Site book which found that the speed of systems had a high impact on usability.

Here is a quick summary of the findings:

  • The major finding is that the a strong correlation between perceived download time and whether users successfully completed their tasks on a site. In other words, if someone completes their task on a site successfully, they will feel the site was faster than it truly was. If they can’t succeed, they will perceive it as being slower.
  • The secondary finding was that the speed of the page had no correlation with whether or not someone would could complete their task successfully. So making a site faster doesn’t necessarily make it easier to use.
  • In the podcast, Jared described a Gesalt theory from the 40s that time is perceived as going more slowly when your in pain and more quickly when things are pleasurable. Frustrating websites have the same impact on perception. When the website is enjoyable, you perceive it to be faster.

At some point, I’d like to examine the UIE results and try to reconcile them with the other research that has been done in this area, but given the respect I have for Jared Spool’s work, I’m going to accept the UIE study as definitive.

Here are my thoughts on the study and what it means for those looking to speed up their sites:

  • Perception matters more than reality. This was one of my main points of emphasis during the presentation. During the presentation, I focused on how you can build the page to make it seem to load faster. The UIE study says that having a usable site has a big impact on speed perception so looking at the ease of use of the site should be a top priority (if it wasn’t already).
  • The study focuses on web pages, not applications. As far as I can tell from the study and the podcast, the study focused on web pages and sites, not web-based applications. I believe one of the reasons that Yahoo has spent so much time focusing on speed is because of they want people to do work—repetitive tasks—in their applications. I propose that people have less tolerance for delays in their applications than they will for web sites they visit.
  • Other studies still show speed impacting credibility and shopping cart abandonment rates I can’t believe all of the research on these topics is inaccurate. The latest was from Jupiter Research showing 4 second download thresholds for ecommerce sites.
  • The cost-savings for speeding up your site are still worth it. During the podcast, Jared acknowledged that speeding up a site can save money on bandwidth.
  • You shouldn’t have to choose between speed and usability. This is the place where I felt the conclusions of the conclusions of the study were off-base. The study says, “what we’re seeing leads us to wonder if it’s worth the resources to make web pages load like lightning.” And during the podcast, Jared gave the example of companies spending hundreds of thousands of dollars to optimize their websites for speed while ignoring core usability issues.

    Speeding up your site doesn’t require hundreds of thousands of dollars or lots of resources. That was the main point of my presentation last week. Some of the things that speed up sites the most are brain-dead simple (e.g., turn on gzip and shrink page sizes 70 to 80%). This shouldn’t be an either you spend the money optimizing the site or you send the money on usability testing question.

Those organizations that are spending hundreds of thousands of dollars on speeding up their sites are probably looking in the wrong spots for the speed improvements. They are probably spending their time with expensive efforts to increase their server and database speed while ignoring the reality of Yahoo’s 80/20 Rule that the majority of the savings come from frontend design decisions.

So yes, web sites should be designed to be usable and have utility. These efforts are crucial and deserve priority. But very simple changes—mainly gzip and reducing the number of http requests—can have a huge impact on speed. There is no reason to chose between usability and speed.

Facebook: The First Level 2 Platform

A quick follow up to my previous post on platforms. In Marc Andreessen’s article on The three kinds of platforms you meet on the Internet, he writes:

  • In the Internet realm, the first Level 2 platform that I’m aware of is the Facebook platform.

Marc defines a Level 2 platform as a platform that lets “developers build new functions that can be injected, or ‘plug in’, to the core system and its user interface.”

Is Facebook really the first to do this? Does anyone have an example of a company that was doing this before Facebook?

What does it mean to build an API?

Dave Winer recently wrote a post asking the question, “Should every app be a platform?” My one word answer when bookmarking Dave’s post in my delicious account was a resounding “Yes!”

Not everyone sees the benefit of building your application as a platform. People often fear the loss of control, the idea that they may lose potential revenue or the fear of being fettered to support APIs that prevent you from making unforeseen changes.

Even if you can get agreement on the benefits of opening a platform, the definition of what it means to be a platform varies greatly. That’s why I highly encourage you to read The three kinds of platforms you meet on the Internet by Marc Andreessen.

Marc’s post is lengthy, but well worth the time. It gives you language to use when describing the different types of platform and an honest assessment of the challenges in building each type.

As more people move from trying to build holistic web sites hosted on a single server and move towards a vision of a web presence that combines information stored in multiple places on multiple servers, the focus on platforms will grow. We need to communicate clearly about that types of platforms we are both delivering and looking for others to deliver to us or we will likely be disappointed in the platforms we choose and disappoint those who choose to build on the platforms we develop.

Speed Matters: Presentation Files and Resources

Speed Matters: Presentation and Resources

We had an exceptional audience tonight at DevGroup NW for my presentation on how to speed up web pages. There were a lot of good questions and an engaged audience. Thank you to everyone who showed up. Here is my presentation from tonight as well as some of the resources I mentioned.

The great irony is that I used so many images in my presentation that I can’t compress the pdf files to the degree that I would like. Sorry for the large file size. If it is any consolation, you’ll likely get to fully use your broadband connection unlike when you download web pages and are limited by current connections to a fraction of your connection speed. :-)

Books on Site Performance

Articles & Resources

Measuring Site Speed

Minimizers and Compressors

Statistics & Studies

Thanks to all of the Flickr users who posted their images with Creative Commons licenses. This presentation wouldn’t have been nearly as interesting without their photographs.

Co-Scripter Tool is Amazing

I’m very excited about using the IBM CoScripter to simplify my life when it comes to repeated web forms. This reminds me of the applescript record option or the new Automater application.

The basics are that you hit record while filing out a series of web forms. It records your activity as a repeatable script that can be rerun. The script can also be shared with others.

For more details:

Thanks to Selena for pointing this out.

It’s a Mobile Web. We Just Don’t Realize It.

After Apple’s iPod and iPhone announcements, Dave Winer wrote of Steve Jobs, “It’s Steve’s world, we just live in it.”

I think Dave has very interesting take on Apple’s announcement. I encourage you to go read it. When I read Dave’s short summary on Twitter, a variation on his turn of phrase came to mind:

It’s a Mobile Web. We Just Don’t Realize It.

I’m astonished that the press coverage so far has focused almost exclusively on the iPhone price drops and the upset customers. When the coverage extends past the price drop, people seem content to handicap whether or not the iPod Touch will sell enough to meet Apple’s forecast.

No one seems to be talking about the fact that we now have another major platform for the mobile web. Additional news such as the likely Google and Yahoo phones, Microsoft’s recent comments about a Zune phone, and Nokia venturing into mobile web services have me convinced that the tipping point for the mobile web in the U.S. is right around the corner.

2008 is shaping up to be the year of the mobile web. The year when companies finally get serious about their mobile strategy.

With 2.7 billion mobile devices in the world and so many new mobile web devices hitting the market, the mobile web has arrived, but most of us just don’t realize it.