Skip to content

Instantly share code, notes, and snippets.

@sspencer
Forked from lloyd/uploading 'cast.txt
Created February 19, 2010 18:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sspencer/309044 to your computer and use it in GitHub Desktop.
Save sspencer/309044 to your computer and use it in GitHub Desktop.
I'm Lloyd Hilaiel from BrowserPlus. `[show the yahoo cow, moo]`
This screencast explores the question, *how do we make uploading from the Browser, better?* `[textual question
showing on screen]`
What does better mean?
* Better means *easier* for the user to select the content they wish to upload `[easier floats in lower left
portion of screen]`
* Better also means the selected content should transfer *faster*. `[faster floats in lower
right portion of screen]` and `[easier animates to takes up whole screen and push off other text]`
Lots of people have been building features to support **easier** uploads:
[fast flipping through screenshots of:
facebook uploader, ffx 3.6 image uploader, gears logo, plupload, and landing on Y! mail]
We've organically agreed that there are six key elements to a good upload experience: `[zoom into attachment area]`
1. Drag and Drop `[show DnD onto yahoo mail]`
2. Multi-file selection `[yahoo mail, selection of multiple files]`
3. Folder Selection
4. Content Type filtering
5. Inline Image Editing
6. Rich Visual Feedback
These six ideas compose *easy* - a smoother user experience, but it only answers half the question.
## What about faster? ##
It turns out that making content go faster is *complicated* and varies based on a numbe of factors:
1. Bandwidth
2. Content-Type
3. Number of files
4. Processor Speed
5. User's intentions
So building a faster upload can be *difficult*. Our approach in BrowserPlus has been to expose tools that can
be combined in different ways to attack the problem at the web application level. These tools include:
1. combination - BrowserPlus today supports combining multiple files into one using either tar or zip
2. compression - different services available in production now provide gzip, bzip2, and LZMA compression, each
having different compression characteristics at different costs
3. content specific optimization - today we support high-quality image down-sampling
4. parallelism - upload multiple files at once
## Pulling it all together ##
In order to see a number of different tactics and their relative performance, we put together this
uploading demo:
[show demo during upload]
Here you can viscerally see the different tradeoffs associated with different tactics in different environments.
Some interesting conclusions emerge, like:
1. Over a very fat pipe gzip compression is generally the best choice
2. parallelism alone can half the time it takes to upload several small files
3. LZMA compression can half that again when files are amenable to compression.
Ultimately,to speed uploads you need to send fewer bits. And BrowserPlus gives you a loaded tool chest
offering image resizing, file archiving and three different types of compression - GZIP, BZIP2 and LZMA.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment