Amazon Storefront – Will a visual store make a difference?

On the way to my MBA class today I was listening to a podcast on how law is being affected by new internet business models.

As I was listening, I considered book sales as a service that is still provided offline with obvious value to customers – that little flip-through service, coupled with librarians and salespeople. The next thought that came to mind was – would a visual interface + audio (TTS) coupled with Amazon APIs work?

With the affiliate rates they provide, this could actually be a viable product, no?

Think about amazonstorefront.com (yea, something snappier would be nice). You log in and are automatically presented with a virtual salesperson who greets you. “You’re looking for?” would be the only prompt and you’d be able to type a name of a book. Use Amazon’s correction services and suggestions, and couple them with a good Text-to-speech service, and you can have a nice (yet simple enough) interaction. Once you’ve found the book, you can use Amazon’s ability to flip through to let users HAVE that experience…

Thoughts?

Published in: on August 14, 2009 at 5:56 am Leave a Comment

How HTML resource packaging would considerably reduce bandwidth requirements for mobile

In my previous blog entry, I discussed the value of HTML packaging and focused mainly on how it would effect browser performance. I’d like to add some additional thoughts about how I believe Mobile providers can enjoy both reduced bandwidth costs and performance increase for their customers by doing so.

As described in my previous entry, packaging would significantly reduce the size of any resource files (JavaScript, CSS) that would not initially be compressed by GZip. However, additional compression may be achieved by having the mobile provider’s proxy perform some extra steps that would be valuable for the mobile user:

1. Compress CSS and JavaScript – while this requires some intelligence, software packages already exist and provide this service.
2. Pre-process all imagery (in HTML and that in the CSS) and adapt it to the customer’s mobile device and packaged as well (potentially switching formats, and definitely reducing size and/or color depth).
3. Packaging would decrease the overhead of HTML requests (yes, minor, but this is mostly for performance, not for bandwidth)

Finally, the mobile provider would add the appropriate new tag ( — Kudos to Alexander Limi for this one) with reference to the newly created package to the returned HTML file. This would prompt the browser on the mobile client’s side to grab it before looking for the web resources (which, in this case, may be all that’s required).

All it really requires is a great browser software developer (Opera?) to pick this up and implement…

Anyone?

Published in: on July 9, 2009 at 3:26 pm Leave a Comment
Tags: , , ,

Packaging resources in HTML files

One of the most annoying problems I’ve had to deal with (other than cross-browser compatibility) with web-based product development has been page load time optimization. When we first completed the development of our homepage it was full of references to an additional 60 resources which included Javascript, CSS, and image files. All and all it took it about 7-8 seconds to load on screen (on a good day), and we were pretty unhappy. 7 seconds, I was told by our SEO expert, was your average window closing time – basically that’s how fast a user closes the window if he or she fails to see anything interesting or, in our case, anything at all.

I don’t quite know what brought me to thinking about this yesterday, but somehow packaging came to mind. A significant draw on the load time had to do with the browser having only a limited amount of threads used to download resources (this is IE6 and 7, and FireFox 3, so it may have improved at this point), each requiring a full cycle of HTTP requests. With Javascript and CSS files, there was also a matter of compression (for those of us who refuse to use mod_gzip, etc.). All we really had to do here was to set up an incrementally deflating resource package that the browser would load from the server – which would include all of this junk, and you’d basically be looking at a couple of HTTP requests at best, both of which could be run in parallel.

A package file could be designed to contain the following:

  1. The index file – containing the list of URLs which this package file resolves (what files are in here and need not be loaded directly)
  2. Javascript files – in order of loading
  3. CSS files – in order of loading
  4. Imagery

Now, with a simple tag like <resource src=”…” />which would be easily added to your whole site, you could basically resolve most of the requests to it. Once the browser encounters this tag under <head> it would start loading it (during its loading process) and could cache all files unpackaged like it does when it grabs files today. Existing tags (like img, link and script) could be resolved by pretty much matching the URL with the index file. A simple application could build the package file for you, and one could use LZH for the incremental compression. It’s really as simple as that!

Now, why is this good for the world? here’s several ideas:

  • Browsers could load all resources in one quick request. One DNS resolution, one socket open, one HTTP request. Easy.
  • Files would always be compressed – No need for special settings on server side, like mod_gzip or mod_deflate.
  • Servers and proxies would have a significantly lower load, and could easily cache one file here.
  • Even if the server doesn’t support it (read: no resource tag) – the Mobile industry could reduce their bandwidth costs – Mobile browsers could gather all resource URL requests into one, which they would request from their mobile provider (already saving some bandwidth). The provider would grab the original set of resources, compress them on the fly, and send them over the air. Images could be adapted to mobile device size, and all script and css files would be reduced in size!
  • Resource packages can be built specifically for a client – the identifying server could then grab other versions of the package (you could have one for mobile and one for normal browser, for instance) and return those, instead!
  • No need to change your existing codebase — and this is a big one! All your existing HTML are belong to you!

Some questions and answers:

  • Do we only have one resource file? – No, you can have multiple, but don’t hit the same brick wall again.
  • What do I do with external imagery or dynamic sites? – You can have several package files for the “basics” (your site template or frequently used resources) and have everything else loaded normally. If the browser supports it, there’s really no reason why not to!
  • Do we need to store all resources in the file? — No, you can have some of them in there and some of them accessed directly by your browser.

Thoughts? Ideas?

For quick reference, here’s a bunch of links that discuss the issue with multiple HTTP requests and optimization:

  • 14 rules for fast web pages – http://www.skrenta.com/2007/05/14_rules_for_fast_web_pages_by_1.html
  • Optimizing Page Load Time – http://www.die.net/musings/page_load_time/
  • Combine Images to Save HTTP Requests - http://www.websiteoptimization.com/speed/tweak/combine/
  • – Yaron

    Published in: on July 3, 2009 at 12:08 am Comments (4)