Top Banner
http://www.flickr.com/photos/newsbiepix/4113886275 why responsive design actually begins on the server... Adaptation http://creativecommons.org/licenses/by/2.0
145
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Adaptation

http://www.flickr.com/photos/newsbiepix/4113886275

why responsive design actually begins on the server...

Adaptation

http://creativecommons.org/licenses/by/2.0

Page 2: Adaptation

http://www.flickr.com/photos/scobleizer/4694051328

a good story...the tech media loves

TechCrunch

Page 3: Adaptation

bleeding edge...and life on the

http://www.flickr.com/photos/scobleizer/3553486766

200 million iOS devices

Page 4: Adaptation

http://www.flickr.com/photos/scobleizer/4694051328

1/3of the US has a smartphone

*please note

*current statistics range

from 25% to 50% – we'll use 1/3 for simplicity...

*

Page 5: Adaptation

http://www.flickr.com/photos/scobleizer/4694051328

1/3of the US has a smartphone

does not have a smartphone?!...um, so 2/3 of the US

Page 6: Adaptation

http://www.flickr.com/photos/abasketofpups/2662225972

1/2of the US has a smartphone

feel free to use this math*...or if you're a fanboy

1/2does not...

and

*the exact percentage isn't

terribly important for the

purposes of this presentation...

Page 7: Adaptation

http://www.flickr.com/photos/scobleizer/4694051328

will save us all!

Page 8: Adaptation

http://www.flickr.com/photos/scobleizer/4694051328

on few high-end devices...but it's really only kinda useable

will save us all!

Page 9: Adaptation

promises we can't keep?...and are we making

http://www.flickr.com/photos/whatleydude/3547624583

the "tech industry"

the "bleeding edge" must have Android device of

2009 is now a door stop...

htc MagicAndroid 1.6

Page 10: Adaptation

the bleeding edge...

Page 11: Adaptation

2007

the iPhoneoriginal

Page 12: Adaptation

2008

iPhone 3G

2007

iPhone

Page 13: Adaptation

2008

iPhone 3GS

2007 2009

3GiPhone

Page 14: Adaptation

20082007 2009

3GiPhone

iPhone 4

2010

3GS

Page 15: Adaptation

2008 2009

3GiPhone

iPhone 5...2010

3GS

2011

4

Page 16: Adaptation

side effect n.

a peripheral or secondary effect, especially an undesirable one...

http://www.thefreedictionary.com/side+effect

Page 17: Adaptation

2007

the iPhoneoriginal

era begins...the smartphone

Page 18: Adaptation

20082007

webtouch iPhone 3G

iPhone

and the real web...brings touch, gestures

Page 19: Adaptation

20082007 2009

3GiPhone

androidapps

iPhone 3GS

the rise of Android...native apps and

Page 20: Adaptation

20082007 2009

3GiPhoneiPhone 4

2010

3GS

htcg-five

samsungweb os

and the further rise of Android...whither feature phones,

Page 21: Adaptation

2008 2009

3GiPhone

iPhone 5...

2010

3GS

2011

4

htcLG

samsungmotorola

blackberrykindle

nook with great expectations... devices go mainstream

Page 22: Adaptation

iPhone

big grey area...we're now in that

Page 23: Adaptation

iPhone

or from a different perspective...

Page 24: Adaptation

the bleeding edge...

Page 25: Adaptation

opportunity

the bleeding edge...

'ish via China+

Page 26: Adaptation

http://www.flickr.com/photos/clairity/1449248189

the forest for the trees...but we still can't see

Page 27: Adaptation

http://www.flickr.com/photos/centralasian/3239065547

have a smartphone...of the US does not

*or 1/2 if you're a fanboy...

2/3*

Page 28: Adaptation

iPhone

http://www.flickr.com/photos/fpat/3692425154

asked a simple question...last year we

Page 29: Adaptation

http://www.flickr.com/photos/sketch22/1127556671

I asked this a year ago,i'm not sure anything's changed!!

mobile webwelcome to the

of an iPhone the cost of entry?on a mobile device, is the purchase

if you want to use the web

Page 30: Adaptation

to come from mobile devicesby 2015 50% of web traffic is expected

http://www.netmagazine.com/news/uk-sees-huge-mobile-web-traffic-growth-111340

to infinity and beyond...

well over

Page 31: Adaptation

iPhone

let me rephrase the question...

Page 32: Adaptation

http://www.flickr.com/photos/dantaylor/2161663267

of an iPhone be mandatory...?on a mobile device, will the purchase

in 2015, if you want to use the web

still the only device where

the Webactually works

this is rhetorical, and absurd...

Page 33: Adaptation

http://www.flickr.com/photos/bytemarks/4732726333

purchase every shiny new device released... many of us cannot afford to

gotta get 'em all...

or even want

Page 34: Adaptation

http://www.flickr.com/photos/wagnertc/3217859975

recent events...especially in the light of

Page 35: Adaptation

http://www.flickr.com/photos/chiacomo/3805139360

Page 36: Adaptation

http://www.flickr.com/photos/bobolink/4706580997

pressing concerns...most folks have much more

Page 37: Adaptation

http://www.flickr.com/photos/ilamont/4329364198

higher priorities...and far

Page 38: Adaptation

different purchasing decisions...which often result in very

http://www.flickr.com/photos/timstock/535259176

Page 39: Adaptation

iPhone

however...

Page 40: Adaptation

...*free is also becoming a popular option!

now available for less than $200*....as lots of Android devices are

http://www.flickr.com/photos/cambodia4kidsorg/5253151186

or very close to it...

Page 41: Adaptation

the next billion now include WebKitand some feature phones aimed at

http://www.flickr.com/photos/yoggy0/5380738918

and a touch screen...

Nokia C3 Touch & TypeSeries 40 device

ooh, touch...

Page 42: Adaptation

http://www.flickr.com/photos/tanj/4432327487

a smartphone*...every phone is now (essentially)

or soon will be

*actual definitions of 'smartphone' will vary - but to

normal folks they are all magic...

Page 43: Adaptation

http://www.flickr.com/photos/free_programmer/4371778263

(often) a real, update-able operating system

large, colourtouch sensitive screen

a modern web browser (not WAP)

camera, video, music player, etc.3G connectivity

QWERTY keyboard and/or trackball

to expect from a smartphone...loaded with everything we've come

Page 44: Adaptation

http://www.flickr.com/photos/nechbi/3841765925

is created equal...but not every smartphone

less vibrant screens

lower spec RAMand/or CPU/GPU

less responsive touch screens

few or no OEM OS updates

limited or no data plan bundled

Page 45: Adaptation

and (often) "undesirables"...this inequality creates diversity

http://www.flickr.com/photos/handwrite/3460075040

UNDESIRABLE

Page 46: Adaptation

being the IE6 of mobile development for me.""Android WebKit is the closest thing to

- @dalmaer via http://functionsource.com/post/a-day-in-the-life-of-android-webkit-dealings

http://www.flickr.com/photos/blank22763/4089926742

Page 47: Adaptation

iPhone

this thinking creates...

Page 48: Adaptation

for a privileged few...an optimal experience for

http://www.flickr.com/photos/carbonnyc/5140154965

Page 49: Adaptation

http://www.flickr.com/photos/dumbledad/3400708183

for many more...and a missed opportunity

the "bleeding edge" must have Android device of

2009

is once again a door stop...

linkedin HTML5 webapp disappointment

Page 50: Adaptation

http://www.flickr.com/photos/herval/2050815997

please upgrade now...your smartphone is obsolete,

2 year old, state-of-the-art

Page 51: Adaptation

iPhone

um...

Page 52: Adaptation

http://www.flickr.com/photos/aaronpk/5328338679

are not "higher priorities"...for most folks these

Page 53: Adaptation

http://www.flickr.com/photos/slemmon/3971197662

the real world...welcome to

Page 54: Adaptation

http://www.flickr.com/photos/kalleboo/3536493996

adapt as required...where we learn to

Page 55: Adaptation

can change your life...where simply learning to knit

http://www.flickr.com/photos/bosstweed/152159981

craftivism

Page 56: Adaptation

is beating paying for ebooks...where borrowing books for free

http://www.flickr.com/photos/ccacnorthlib/3553821229/Times Are Tough, Libraries Are Thrivinghttp://www.nytimes.com/2009/03/15/nyregion/long-island/15libraryli.html

from your local library

Page 57: Adaptation

are replacing cable services...where Hulu, iTunes and sports bars

http://www.businessinsider.com/2008/3/hulu-household-why-i-got-rid-of-cable

expensive

Page 58: Adaptation

http://www.flickr.com/photos/kdnewton/2691125617

to pick up those clippers...and which led @grigs

Page 59: Adaptation

iPhone

but...

Page 60: Adaptation

to expect more from their devices...the iPhone inspired everyone

http://www.flickr.com/photos/tom_ruaat/5540148158

Page 61: Adaptation

those undesirable devices?""...yeah, but people don't actually use

http://www.flickr.com/photos/misterian/4084280385

Page 62: Adaptation

iPhone

yup

Page 63: Adaptation

http://www.flickr.com/photos/zoetnet/4669800101/

offered them anything yet?...have you actually

check your logs, chances are

you'll find them in the long tail...

Page 64: Adaptation

most certainly have...a few companies

0.facebook

twitter indonesia

http://www.flickr.com/photos/nseika/5848996146

OperaMini

small

Page 65: Adaptation

to adapting to new circumstances...us humans are amazing when it comes

http://www.flickr.com/photos/thenationalguard/3251277781

...do we still really need the dogs?

Page 66: Adaptation

on similar principles...the web was actually built

http://www.flickr.com/photos/tanaka/3212373419

Page 67: Adaptation

iPhone

"The primary design principle underlying the Web's usefulness and growth is universality.

The Web should be usable by people with disabilities.It must work with any form of information, be it a document or a point of data, and information of any quality–from a silly tweet to a scholarly paper.

And it should be accessible from any kind of hardware than can connect to the internet: stationary or mobile, small screen or large."

Tim Berners-Lee

Long Live the Webhttp://www.scientificamerican.com/article.cfm?id=long-live-the-web

http://www.flickr.com/photos/lonelyfox/2939757714

as seen before @bdconf...

Page 68: Adaptation

http://www.flickr.com/photos/blakespot/2343395804

mental models started back here...unfortunately, our current

Page 69: Adaptation

dominated by devices like these...which did not prepare us for a world

http://www.flickr.com/photos/whiteafrican/2594981758

The Era of mobile dominance is beginning

paul rouget taiwan africa

Page 70: Adaptation

http://www.flickr.com/photos/jedibfa/5146867827

“The best, most solid way out of a crisis in a changing market is through experiment and adaptation.”Richard BransonBusiness Stripped Bare – Adventures of a Global Entrepreneur

Page 71: Adaptation

http://www.flickr.com/photos/y_i/2330044065

<diversion>

Page 72: Adaptation

and servers...a tale of clients

http://www.flickr.com/photos/richardberg/2135409739

short

Page 73: Adaptation

http://www.flickr.com/photos/_ppo/2393063853

to a server...a client makes a requestpastrami on rye...

Page 74: Adaptation

http://www.flickr.com/photos/_ppo/2393063853

similar requests...other unique clients make

brisket...

corned beef...

turkeygrilled cheese

Rueben...chilli dog...

yet not identical

Page 75: Adaptation

http://www.flickr.com/photos/mrgarin/3476714113

request is required...a method to track each client

Rueben...

chilli dog...

Page 76: Adaptation

http://www.flickr.com/photos/_ppo/2393063853

is received...as each client request

corned beef...

turkey

grilled cheeseRueben...

Rueben...

brisket...chilli dog...

Rueben...pastrami on rye...

no pickle...extra pickle...

Page 77: Adaptation

tracking (ticketing, bills, etc)analytics (what works, what doesn't)preparation (vs just-in-time)tacit knowledge

http://www.flickr.com/photos/_ppo/2393063853

320, hold the pickle...

150, pastrami...

to each client...the server tailors each request

210 to go...one more 320...

Page 78: Adaptation

http://www.flickr.com/photos/the_junes/2134127618

what they need...ensuring they get exactly

Page 79: Adaptation

http://www.flickr.com/photos/86624586@N00/10176570

might not want...rather than everything they

Page 80: Adaptation

http://www.flickr.com/photos/alper/3257406961

<diversion/>

Page 81: Adaptation

http://www.flickr.com/photos/mikeycordedda/5328343979

have to do with mobile?...but what does this

Page 82: Adaptation

http://www.flickr.com/photos/maladjusted/2341398753

working client and server can...accomplish great things together

Page 83: Adaptation

client

Page 84: Adaptation

client

http://domain.org

a request to a server...a client makes

yet unknown

Page 85: Adaptation

server

http://domain.org

Page 86: Adaptation

serverhttp://domain.org

clouds are hip these days...

Page 87: Adaptation

for it's profile cookie...server then asks the client

server

...profile please?

http://domain.org

Page 88: Adaptation

yeah, you're going to need a profile...

cookie the server creates one for it...if a client doesn't have a profile

http://domain.orgserver

Page 89: Adaptation

let's start with the 'default' profile...

that covers the very basic experience...begin with a baseline profile

or default*

http://domain.orgserver

default profile

{    width:{        screen:240,        document:240    }}

*defining a 'default' baseline profile depends on your project requirements...

notice that this makes the assumption that basic = default (in other words "mobile first")

Page 90: Adaptation

...oh yes, user-agent please?

http://domain.orgserver

(trust me, it's more useful than you think)then...grab the client user agent string

Mozilla/5.0  (Linux;  U;  Android  2.1-­‐update1;  en-­‐gb;  Nexus  One  Build/ERE27)  AppleWebKit/530.17  (KHTML,  like  Gecko)  Version/4.0  Mobile  Safari/530.17

eww....

Page 91: Adaptation

hey DeviceAtlas, wanna check this UA for me?

http://domain.orgserver

Mozilla/5.0  (Linux;  U;  Android  2.1-­‐update1;  en-­‐gb;  Nexus  One  Build/ERE27)  AppleWebKit/530.17  (KHTML,  like  Gecko)  Version/4.0  Mobile  Safari/530.17

a device database such as DeviceAtlas...query the user agent string against

...or WURFL

Page 92: Adaptation

Mozilla/5.0  (Linux;  U;  Android  2.1-­‐update1;  en-­‐gb;  Nexus  One  Build/ERE27)  AppleWebKit/530.17  (KHTML,  like  Gecko)  Version/4.0  Mobile  Safari/530.17

DeviceAtlas profile

{  width:480,  height:480,  color-­‐depth:8,  touch:true,  cookie:true,  ...}

http://deviceatlas.com

...found it, here it comes!

Page 93: Adaptation

http://domain.orgserver

default profile

{    width:{        screen:240,        document:240    }}

DeviceAtlas profile

{  width:480,  height:480,  color-­‐depth:8,  touch:true,  cookie:true,  ...}

any tacit knowledge you have collected...now query the user agent string against

...hmm, I think I've seen this before?

may

Page 94: Adaptation

{"profiles":{        "bot":  {           "match":"#bot|borg|google|yahoo|slurp|msnbot|msrbot|openbot|archiver|netresearch|lycos|scooter|altavista|teoma|gigabot|baiduspider|blitzbot|oegp|charlotte|furlbot|http%20client|polybot|htdig|ichiro|mogimogi|larbin|pompos|scrubby|searchsight|seekbot|semanticdiscovery|silk|snappy|speedy|spider|voila|vortex|voyager|zao|zeal#i",           "profile":{"bot":"1"}        },        "default":  {           "match":"#no-­‐match-­‐found#i",           "profile":{"width":"240"}        },        "desktop":  {           "match":"#windows|macintosh|linux#i",           "profile":{"width":"800"}        },        "iphone":  {           "match":"#iphone#i",           "profile":{"ios":"1",  "width":"320",  "svg":true,  "canvas":true}        },        "ipad":  {           "match":"#ipad#i",           "profile":{"ios":"1",  "width":"768",  "svg":true,  "canvas":true}        },      "android":  {           "match":"#android#i",           "profile":{"droid":"1",  "width":"320",  "flash":true,  "canvas":true,  "video":true}        },        "symbian^3":  {           "match":"#symbian/3#i",           "profile":{"sym3":"1",  "width":"360"}        },        "symbian9.4":  {           "match":"#symbianos/9.4#i",           "profile":{"sym94":"1",  "width":"360"}        },        "symbian9.3":  {           "match":"#symbianos/9.3#i",           "profile":{"sym93":"1",  "width":"360"}        },        "n73":  {           "match":"#N73#i",           "profile":{"sym91":"1",  "width":"240"}        },        "series602.x":  {           "match":"#series60/2.8|{series60/2.9}#i",           "profile":{"s60":"1",  "width":"240"}        },        "maemo":  {           "match":"#maemo#i",           "profile":{"maemo":"1"}        },            "webos":  {           "match":"#webos#i",           "profile":{"web0s":"1"}        },        "blackberry":  {           "match":"#blackberry#i",           "profile":{"bb":"1"}        },        "windowsphone":  {           "match":"#windows  phone  os#i",           "profile":{"winpho":"1"}        },        "windowsmobile":  {           "match":"#windows  mobile#i",           "profile":{"winmo":"1",  "width":"240"}        },        "s40ovi":  {           "match":"#S40OviBrowser#i",           "profile":{"s40ovi":"1",  "width":"240"}        },        "s40QWERTY":  {           "match":"#NokiaC3#i",           "profile":{"s40QWERTY":"1",  "width":"320"}        },        "MeeGo":  {           "match":"#MeeGo#i",           "profile":{"meego":"1",  "width":"320"}        },        "ipadoperamini":  {           "match":"#ipad  opera  mini#i",           "profile":{"omini":"1",  "width":"768"}        }}}

UA string fragments...partial profiles are matched via

tacit data

Tacit (or known) profile

Page 95: Adaptation

http://domain.orgserver

default profile

{    width:{        screen:240,        document:240    }}

DeviceAtlas profile

{  width:480,  height:480,  color-­‐depth:8,  touch:true,  cookie:true,  ...}

over time from other device profiles...this tacit knowledge is gathered

Tacit (or known) profile

{  width:320,  droid:1,  canvas:true,  flash:true,  video:true,  ...}

tacit data

yeah, I've seen this before...

...or through knowledge gained during testing

Page 96: Adaptation

http://domain.orgserver

returned from queries into the client profile...merge the baseline data, with the data

Client profile

{    width:{        screen:320,        document:320    },    xhr:true,    canvas:true,    flash:false,    video:true,    formats:{    h264:probably,    ogg:false,    webm:false    },    offline:true}

Page 97: Adaptation

http://domain.orgserver

which will be returned to the client...write the profile cookie to the doc header

response

cookie

document

Client profile

{    width:{        screen:320,        document:320    },    xhr:true,    canvas:true,    flash:false,    video:true,    formats:{    h264:probably,    ogg:false,    webm:false    },    offline:true}

Page 98: Adaptation

and can continue...

for this client

http://domain.orgserver

responseprofile

Client profile

{    width:{        screen:320,        document:320    },    xhr:true,    canvas:true,    flash:false,    video:true,    formats:{    h264:probably,    ogg:false,    webm:false    },    offline:true}

server now has a usable profile

Page 99: Adaptation

http://domain.orgserver

response

filter

based on the properties in the client profile...the server now begins to filter the content

and adapt

media queries are not a means of adapting content contained within the DOM on the client...

using Javascript to modify significant portions of the

DOM will impact performance on mobile devices...

Page 100: Adaptation

http://domain.orgserver

response

but adapting <img>'s is most common...adaptation 'rules' will vary from site to site,

or app

Adaptation Rulesensure all images are appropriately sized for client display

replace any images that contain fine details or text

replace Flash media with an appropriate alternative where not supported

remove unnecessarymarkup, scripts, etc.

Page 101: Adaptation

http://domain.orgserver

response

structures also require adaptation<video>, <table> and other DOM

Adaptation Rulesensure all images are appropriately sized for client display

replace any images that contain fine details or text

replace Flash media with an appropriate alternative where not supported

remove unnecessarymarkup, scripts, etc.

adapt large tables asrequired, link to data

serve appropriate video format, codec and size

adapt DOM components including scripts and styles

may

Page 102: Adaptation

http://domain.orgserver

response

Adaptation Rulesensure all images are appropriately sized for client display

replace any images that contain fine details or text

replace Flash media with an appropriate alternative where not supported

remove unnecessarymarkup, scripts, etc.

adapt large tables asrequired, link to data

serve appropriate video format, codec and size

adapt DOM components including scripts and styles

new resourcesyou will often require

Resource Bundlesalternate content

appropriate for context

alternate DOM templates, components & fragments

alternate sized, formatted + encoded video as required

alternate images for required breakpoints

alternate scripts + stylesfor required client profiles

Page 103: Adaptation

{"/index.html":{   "title":"Nokia  Browser",   "meta":{     "keywords":"nokia,browser,web,series  40,Symbian,MeeGo,mobile  web",     "description":"nokia,browser,web,series40,symbian,meego,everywhere"   },   "images":{     "img-­‐home-­‐feature":{       "0-­‐320":"/resources/images/home-­‐[email protected]",       "320-­‐655":"/resources/images/home-­‐[email protected]",       "655-­‐9999":"/resources/images/home-­‐feature.png"     },     "img-­‐smartphones":{       "0-­‐320":"/resources/images/[email protected]",       "320-­‐640":"/resources/images/smartphones.png",       "640-­‐9999":"/resources/images/smartphones.png"     },     "img-­‐mobilephones":{       "0-­‐320":"/resources/images/[email protected]",       "320-­‐640":"/resources/images/mobilephones.png",       "640-­‐9999":"/resources/images/mobilephones.png"     },     "img-­‐twitter":{       "0-­‐320":"resources/images/share-­‐twitter.png",       "320-­‐730":"resources/images/share-­‐twitter.png",       "730-­‐9999":"resources/images/share-­‐twitter-­‐small.png"     },     "img-­‐facebook":{       "0-­‐320":"resources/images/share-­‐facebook.png",       "320-­‐730":"resources/images/share-­‐facebook.png",       "730-­‐9999":"resources/images/share-­‐facebook-­‐small.png"     }   }},"/update-­‐browser.html":{   "title":"Update  your  Nokia  Browser",   "meta":{     "keywords":"nokia,browser,web,series40,symbian,meego,everywhere",     "description":"Updates  are  now  available  for  most  Nokia  devices  including  Series  40  mobile  phones,  Series  60  and  Symbian^3  smartphone  devices."   },   "images":{     "img-­‐twitter":{       "0-­‐320":"resources/images/share-­‐twitter.png",       "320-­‐730":"resources/images/share-­‐twitter.png",       "730-­‐9999":"resources/images/share-­‐twitter-­‐small.png"     },     "img-­‐facebook":{       "0-­‐320":"resources/images/share-­‐facebook.png",       "320-­‐730":"resources/images/share-­‐facebook.png",       "730-­‐9999":"resources/images/share-­‐facebook-­‐small.png"     }   }},"/smartphones.html":{   "title":"Nokia  Browsers  for  Smartphones",   "meta":{     "keywords":"nokia,  browser,  smartphone,  Series  60,  S60,  Symbian",     "description":"This  is  the  description  for  the  test/test.html  page"   },   "images":{     "img-­‐choose-­‐s60":{       "0-­‐320":"resources/images/smartphones/choose-­‐[email protected]",       "320-­‐640":"resources/images/smartphones/choose-­‐[email protected]",       "640-­‐9999":"resources/images/smartphones/choose-­‐s60.png"     },     "img-­‐choose-­‐meego":{       "0-­‐320":"resources/images/smartphones/choose-­‐[email protected]",       "320-­‐640":"resources/images/smartphones/choose-­‐[email protected]",       "604-­‐9999":"resources/images/smartphones/choose-­‐meego.png"     },     "img-­‐twitter":{       "0-­‐320":"resources/images/share-­‐twitter.png",       "320-­‐730":"resources/images/share-­‐twitter.png",       "730-­‐9999":"resources/images/share-­‐twitter-­‐small.png"     },     "img-­‐facebook":{       "0-­‐320":"resources/images/share-­‐facebook.png",       "320-­‐730":"resources/images/share-­‐facebook.png",       "730-­‐9999":"resources/images/share-­‐facebook-­‐small.png"     }   }},"/meego-­‐browser.html":{   "title":"Nokia  Browser  for  MeeGo  smartphones",   "meta":{     "keywords":"nokia,  browser,  smartphone,  MeeGo",     "description":"Discover  seamlessly  smooth  browsing  and  the  latest  technologies  with  Nokia  Browser  for  MeeGo  smartphone  devices."   },   "images":{     "swipe":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐640":"resources/images/meego/[email protected]",       "640-­‐9999":"resources/images/meego/swipe.jpg"     },     "pinch-­‐zoom":{       "0-­‐320":"resources/images/meego/pinch-­‐[email protected]",       "320-­‐720":"resources/images/meego/pinch-­‐[email protected]",       "720-­‐9999":"resources/images/meego/pinch-­‐zoom.png"     },     "typing":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐720":"resources/images/meego/[email protected]",       "720-­‐9999":"resources/images/meego/typing.png"     },     "stay-­‐safe":{       "0-­‐320":"resources/images/meego/stay-­‐[email protected]",       "320-­‐720":"resources/images/meego/stay-­‐[email protected]",       "720-­‐9999":"resources/images/meego/stay-­‐safe.png"     },     "location":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐640":"resources/images/meego/[email protected]",       "640-­‐9999":"resources/images/meego/location.png"     },     "surf-­‐more":{       "0-­‐320":"resources/images/meego/surf-­‐[email protected]",       "320-­‐640":"resources/images/meego/surf-­‐[email protected]",       "640-­‐9999":"resources/images/meego/surf-­‐more.png"     },     "technologies":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐640":"resources/images/meego/[email protected]",       "640-­‐9999":"resources/images/meego/technologies.png"     },     "top-­‐sites":{       "0-­‐320":"resources/images/meego/top-­‐[email protected]",       "320-­‐720":"resources/images/meego/top-­‐[email protected]",       "720-­‐9999":"resources/images/meego/top-­‐sites.png"     },     "download":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐720":"resources/images/meego/[email protected]",       "720-­‐9999":"resources/images/meego/download.png"     },     "update":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐720":"resources/images/meego/[email protected]",       "720-­‐9999":"resources/images/meego/update.png"     },     "img-­‐twitter":{       "0-­‐320":"resources/images/share-­‐twitter.png",       "320-­‐730":"resources/images/share-­‐twitter.png",       "730-­‐9999":"resources/images/share-­‐twitter-­‐small.png"     },     "img-­‐facebook":{       "0-­‐320":"resources/images/share-­‐facebook.png",       "320-­‐730":"resources/images/share-­‐facebook.png",       "730-­‐9999":"resources/images/share-­‐facebook-­‐small.png"     }   }},"/meego-­‐copy1.html":{   "title":"Nokia  Browser  for  MeeGo  smartphones",   "meta":{     "keywords":"nokia,  browser,  smartphone,  MeeGo",     "description":"Discover  seamlessly  smooth  browsing  and  the  latest  technologies  with  Nokia  Browser  for  MeeGo  smartphone  devices."   },   "images":{     "swipe":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐640":"resources/images/meego/[email protected]",       "640-­‐9999":"resources/images/meego/swipe.jpg"     },     "pinch-­‐zoom":{       "0-­‐320":"resources/images/meego/pinch-­‐[email protected]",       "320-­‐720":"resources/images/meego/pinch-­‐[email protected]",       "720-­‐9999":"resources/images/meego/pinch-­‐zoom.png"     },     "typing":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐720":"resources/images/meego/[email protected]",       "720-­‐9999":"resources/images/meego/typing.png"     },     "stay-­‐safe":{       "0-­‐320":"resources/images/meego/stay-­‐[email protected]",       "320-­‐720":"resources/images/meego/stay-­‐[email protected]",       "720-­‐9999":"resources/images/meego/stay-­‐safe.png"     },     "location":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐640":"resources/images/meego/[email protected]",       "640-­‐9999":"resources/images/meego/location.png"     },     "surf-­‐more":{       "0-­‐320":"resources/images/meego/surf-­‐[email protected]",       "320-­‐640":"resources/images/meego/surf-­‐[email protected]",       "640-­‐9999":"resources/images/meego/surf-­‐more.png"     },     "technologies":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐640":"resources/images/meego/[email protected]",       "640-­‐9999":"resources/images/meego/technologies.png"     },     "top-­‐sites":{       "0-­‐320":"resources/images/meego/top-­‐[email protected]",       "320-­‐720":"resources/images/meego/top-­‐[email protected]",       "720-­‐9999":"resources/images/meego/top-­‐sites.png"     },     "download":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐720":"resources/images/meego/[email protected]",       "720-­‐9999":"resources/images/meego/download.png"     },     "update":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐720":"resources/images/meego/[email protected]",       "720-­‐9999":"resources/images/meego/update.png"     }   }},"/meego-­‐copy2.html":{   "title":"Nokia  Browser  for  MeeGo  smartphones",   "meta":{     "keywords":"nokia,  browser,  smartphone,  MeeGo",     "description":"Discover  seamlessly  smooth  browsing  and  the  latest  technologies  with  Nokia  Browser  for  MeeGo  smartphone  devices."   },   "images":{     "swipe":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐640":"resources/images/meego/[email protected]",       "640-­‐9999":"resources/images/meego/swipe.jpg"     },     "pinch-­‐zoom":{       "0-­‐320":"resources/images/meego/pinch-­‐[email protected]",       "320-­‐720":"resources/images/meego/pinch-­‐[email protected]",       "720-­‐9999":"resources/images/meego/pinch-­‐zoom.png"     },     "typing":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐720":"resources/images/meego/[email protected]",       "720-­‐9999":"resources/images/meego/typing.png"     },     "stay-­‐safe":{       "0-­‐320":"resources/images/meego/stay-­‐[email protected]",       "320-­‐720":"resources/images/meego/stay-­‐[email protected]",       "720-­‐9999":"resources/images/meego/stay-­‐safe.png"     },     "swipe-­‐more":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐640":"resources/images/meego/[email protected]",       "640-­‐9999":"resources/images/meego/swipe.jpg"     },     "pinch-­‐zoom-­‐more":{       "0-­‐320":"resources/images/meego/pinch-­‐[email protected]",       "320-­‐720":"resources/images/meego/pinch-­‐[email protected]",       "720-­‐9999":"resources/images/meego/pinch-­‐zoom.png"     },     "typing-­‐more":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐720":"resources/images/meego/[email protected]",       "720-­‐9999":"resources/images/meego/typing.png"     },     "stay-­‐safe-­‐more":{       "0-­‐320":"resources/images/meego/stay-­‐[email protected]",       "320-­‐720":"resources/images/meego/stay-­‐[email protected]",       "720-­‐9999":"resources/images/meego/stay-­‐safe.png"     },     "location":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐640":"resources/images/meego/[email protected]",       "640-­‐9999":"resources/images/meego/location.png"     },     "location2":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐640":"resources/images/meego/[email protected]",       "640-­‐9999":"resources/images/meego/location.png"     },     "technologies":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐640":"resources/images/meego/[email protected]",       "640-­‐9999":"resources/images/meego/technologies.png"     }   }},"/meego-­‐copy3.html":{   "title":"Nokia  Browser  for  MeeGo  smartphones",   "meta":{     "keywords":"nokia,  browser,  smartphone,  MeeGo",     "description":"Discover  seamlessly  smooth  browsing  and  the  latest  technologies  with  Nokia  Browser  for  MeeGo  smartphone  devices."   },   "images":{     "swipe":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐640":"resources/images/meego/[email protected]",       "640-­‐9999":"resources/images/meego/swipe.jpg"     },     "pinch-­‐zoom":{       "0-­‐320":"resources/images/meego/pinch-­‐[email protected]",       "320-­‐720":"resources/images/meego/pinch-­‐[email protected]",       "720-­‐9999":"resources/images/meego/pinch-­‐zoom.png"     },     "typing":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐720":"resources/images/meego/[email protected]",       "720-­‐9999":"resources/images/meego/typing.png"     },     "stay-­‐safe":{       "0-­‐320":"resources/images/meego/stay-­‐[email protected]",       "320-­‐720":"resources/images/meego/stay-­‐[email protected]",       "720-­‐9999":"resources/images/meego/stay-­‐safe.png"     },     "location":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐640":"resources/images/meego/[email protected]",       "640-­‐9999":"resources/images/meego/location.png"     },     "surf-­‐more":{       "0-­‐320":"resources/images/meego/surf-­‐[email protected]",       "320-­‐640":"resources/images/meego/surf-­‐[email protected]",       "640-­‐9999":"resources/images/meego/surf-­‐more.png"     },     "surf-­‐more2":{       "0-­‐320":"resources/images/meego/surf-­‐[email protected]",       "320-­‐640":"resources/images/meego/surf-­‐[email protected]",       "640-­‐9999":"resources/images/meego/surf-­‐more.png"     },     "technologies2":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐640":"resources/images/meego/[email protected]",       "640-­‐9999":"resources/images/meego/technologies.png"     },     "top-­‐sites2":{       "0-­‐320":"resources/images/meego/top-­‐[email protected]",       "320-­‐720":"resources/images/meego/top-­‐[email protected]",       "720-­‐9999":"resources/images/meego/top-­‐sites.png"     },     "download2":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐720":"resources/images/meego/[email protected]",       "720-­‐9999":"resources/images/meego/download.png"     },     "update2":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐720":"resources/images/meego/[email protected]",       "720-­‐9999":"resources/images/meego/update.png"     },     "technologies":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐640":"resources/images/meego/[email protected]",       "640-­‐9999":"resources/images/meego/technologies.png"     },     "top-­‐sites":{       "0-­‐320":"resources/images/meego/top-­‐[email protected]",       "320-­‐720":"resources/images/meego/top-­‐[email protected]",       "720-­‐9999":"resources/images/meego/top-­‐sites.png"     },     "download":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐720":"resources/images/meego/[email protected]",       "720-­‐9999":"resources/images/meego/download.png"     },     "update":{       "0-­‐320":"resources/images/meego/[email protected]",       "320-­‐720":"resources/images/meego/[email protected]",       "720-­‐9999":"resources/images/meego/update.png"     }   }},"/7-­‐3-­‐browser.html":{   "title":"Nokia  Browser  7.3  for  Symbian",   "meta":{     "keywords":"nokia,browser,web,series40,symbian,meego,everywhere",     "description":"Updates  are  now  available  for  most  Nokia  devices  including  Series  40  mobile  phones,  Series  60  and  Symbian^3  smartphone  devices."   },   "images":{     "img-­‐tap":{       "0-­‐320":"resources/images/symbian/[email protected]",       "320-­‐640":"resources/images/symbian/[email protected]",       "640-­‐9999":"resources/images/symbian/tap.png"     },     "img-­‐pinch-­‐zoom":{       "0-­‐320":"resources/images/symbian/pinch-­‐[email protected]",       "320-­‐720":"resources/images/symbian/pinch-­‐[email protected]",       "720-­‐9999":"resources/images/symbian/pinch-­‐zoom.png"     },     "img-­‐type":{       "0-­‐320":"resources/images/symbian/[email protected]",       "320-­‐720":"resources/images/symbian/[email protected]",       "720-­‐9999":"resources/images/symbian/type.png"     },     "img-­‐multitask":{       "0-­‐320":"resources/images/symbian/[email protected]",       "320-­‐720":"resources/images/symbian/[email protected]",       "720-­‐9999":"resources/images/symbian/multitask.png"     },     "img-­‐technology":{       "0-­‐320":"resources/images/symbian/[email protected]",       "320-­‐640":"resources/images/symbian/[email protected]",       "640-­‐9999":"resources/images/symbian/technology.png"     },     "img-­‐full-­‐screen":{       "0-­‐320":"resources/images/symbian/full-­‐[email protected]",       "320-­‐640":"resources/images/symbian/full-­‐[email protected]",       "640-­‐9999":"resources/images/symbian/full-­‐screen.png"     },     "img-­‐safety":{       "0-­‐320":"resources/images/symbian/[email protected]",       "320-­‐720":"resources/images/symbian/[email protected]",       "720-­‐9999":"resources/images/symbian/safety.png"     },     "img-­‐keyboard":{       "0-­‐320":"resources/images/symbian/[email protected]",       "320-­‐720":"resources/images/symbian/[email protected]",       "720-­‐9999":"resources/images/symbian/keyboard.png"     },     "img-­‐update":{       "0-­‐320":"resources/images/symbian/[email protected]",       "320-­‐720":"resources/images/symbian/[email protected]",       "720-­‐9999":"resources/images/symbian/update.png"     },     "img-­‐twitter":{       "0-­‐320":"resources/images/share-­‐twitter.png",       "320-­‐730":"resources/images/share-­‐twitter.png",       "730-­‐9999":"resources/images/share-­‐twitter-­‐small.png"     },     "img-­‐facebook":{       "0-­‐320":"resources/images/share-­‐facebook.png",       "320-­‐730":"resources/images/share-­‐facebook.png",       "730-­‐9999":"resources/images/share-­‐facebook-­‐small.png"     }   }},"/s40-­‐browser.html":{   "title":"Nokia  Browser  for  Series  40  mobile  phones",   "meta":{     "keywords":"nokia,  browser,  featurephone,  Series  40,  S40",     "description":"The  new  Nokia  Browser  makes  it  easier,  faster  and  more  affordable  than  ever  before  to  access  the  Internet  on  your  Series  40  mobile  phone."   },   "images":{     "img-­‐surf-­‐the-­‐web":{       "0-­‐320":"resources/images/s40/surf-­‐the-­‐[email protected]",       "320-­‐640":"resources/images/s40/surf-­‐the-­‐[email protected]",       "640-­‐9999":"resources/images/s40/surf-­‐the-­‐web.jpg"     },     "img-­‐quick-­‐access":{       "0-­‐320":"resources/images/s40/quick-­‐[email protected]",       "320-­‐720":"resources/images/s40/quick-­‐[email protected]",       "720-­‐9999":"resources/images/s40/quick-­‐access.png"     },     "img-­‐always-­‐in-­‐control":{       "0-­‐320":"resources/images/s40/always-­‐in-­‐[email protected]",       "320-­‐720":"resources/images/s40/always-­‐in-­‐[email protected]",       "720-­‐9999":"resources/images/s40/always-­‐in-­‐control.png"     },     "img-­‐popular-­‐sites":{       "0-­‐320":"resources/images/s40/popular-­‐[email protected]",       "320-­‐720":"resources/images/s40/popular-­‐[email protected]",       "720-­‐9999":"resources/images/s40/popular-­‐sites.png"     },     "img-­‐world-­‐of-­‐apps":{       "0-­‐320":"resources/images/s40/world-­‐of-­‐[email protected]",       "320-­‐640":"resources/images/s40/world-­‐of-­‐[email protected]",       "640-­‐9999":"resources/images/s40/world-­‐of-­‐apps.jpg"     },     "img-­‐easy-­‐to-­‐use":{       "0-­‐320":"resources/images/s40/easy-­‐to-­‐[email protected]",       "320-­‐640":"resources/images/s40/easy-­‐to-­‐[email protected]",       "640-­‐9999":"resources/images/s40/easy-­‐to-­‐use.png"     },     "img-­‐any-­‐device":{       "0-­‐320":"resources/images/s40/any-­‐[email protected]",       "320-­‐640":"resources/images/s40/any-­‐[email protected]",       "640-­‐9999":"resources/images/s40/any-­‐device.png"     },     "img-­‐your-­‐view":{       "0-­‐320":"resources/images/s40/your-­‐[email protected]",       "320-­‐720":"resources/images/s40/your-­‐[email protected]",       "720-­‐9999":"resources/images/s40/your-­‐view.png"     },     "img-­‐auto-­‐update":{       "0-­‐320":"resources/images/s40/auto-­‐[email protected]",       "320-­‐720":"resources/images/s40/auto-­‐[email protected]",       "720-­‐9999":"resources/images/s40/auto-­‐update.png"     },     "img-­‐do-­‐more":{       "0-­‐320":"resources/images/s40/do-­‐[email protected]",       "320-­‐720":"resources/images/s40/do-­‐[email protected]",       "720-­‐9999":"resources/images/s40/do-­‐more.png"     },     "img-­‐twitter":{       "0-­‐320":"resources/images/share-­‐twitter.png",       "320-­‐730":"resources/images/share-­‐twitter.png",       "730-­‐9999":"resources/images/share-­‐twitter-­‐small.png"     },     "img-­‐facebook":{       "0-­‐320":"resources/images/share-­‐facebook.png",       "320-­‐730":"resources/images/share-­‐facebook.png",       "730-­‐9999":"resources/images/share-­‐facebook-­‐small.png"     }   }}}

Resource Bundlesalternate content

appropriate for context

alternate DOM templates, components & fragments

alternate sized, formatted + encoded video as required

alternate images for required breakpoints

alternate scripts + stylesfor required client profiles

any number of ways...which can be defined in

Page 104: Adaptation

http://domain.orgserver

response

or even dynamically generated...these resources can be static, cached

images

datavideo

which would make them even more responsive

Page 105: Adaptation

http://domain.orgserver

response

performed on the server...all content adaptation is

before the page is downloaded

Page 106: Adaptation

are then bundled as references...

http://domain.orgserver

response

alternate resources that may later be required on the client

Page 107: Adaptation

http://domain.orgserver

response

is also included in the response to the client...an additional profile <script>

feature detection

{}

Page 108: Adaptation

{}

Page 109: Adaptation
Page 110: Adaptation

http://domain.orgserver

Page 111: Adaptation

client

Page 112: Adaptation

and updates its profile cookie accordingly... the client executes its profile <script>

feature detectionClient profile

{    width:{        screen:480,        document:480    },    xhr:true,    canvas:true,    flash:true,    video:true,    formats:{    h264:probably,    ogg:true,    webm:false    },    offline:true}

Page 113: Adaptation
Page 114: Adaptation

the script fires again... on an orientation change

or screen resize

Page 115: Adaptation

are downloaded...and if needed, additional resources

images

Client profile

{    width:{        screen:800,        document:800    },    xhr:true,    canvas:true,    flash:true,    video:true,    formats:{    h264:probably,    ogg:true,    webm:false    },    offline:true}

updated

based on the pre-bundled references

Page 116: Adaptation

http://domain.org/fava-beans/chianti

a new request to a server...a client makesknown

Page 117: Adaptation

for it's profile cookie...server then asks the client

server

...profile please?

http://domain.org

Page 118: Adaptation

http://domain.orgserver

represents the requesting client...which now accurately

...ah, wonderful you've filled in the rest!

Client profile

{    width:{        screen:800,        document:800    },    xhr:true,    canvas:true,    flash:true,    video:true,    formats:{    h264:probably,    ogg:true,    webm:false    },    offline:true}

Page 119: Adaptation

http://domain.orgserver

profile properties for later dB integration...server captures the client-tested

tacit data

Page 120: Adaptation

http://domain.orgserver

responselet me get that for you...

based on the client profile...server then begins to filter content

and adapt

Page 121: Adaptation

then bundled as references...any resources required are

on the client

http://domain.orgserver

response

Page 122: Adaptation

{}

Page 123: Adaptation
Page 124: Adaptation

http://domain.orgserver

Page 125: Adaptation

client

...ta da!

Page 126: Adaptation

required...and repeat as

Page 127: Adaptation
Page 128: Adaptation
Page 129: Adaptation

http://www.flickr.com/photos/digitalsextant/3624030270

zombie apocalypse...all in preparation for the coming

@scottjenson zombie frog

Page 130: Adaptation

http://www.flickr.com/photos/sarahreido/3120877348

approach...benefits of this

Page 131: Adaptation

http://www.flickr.com/photos/jane_garratt/5377694159

ceçi n'est plus un iphone

not the device...focus on the features,

known

OperaMini

Page 132: Adaptation

http://html5test.com/

are rarely binary...accepts that features

browser

just because it's 'supported', doesn't mean it works as intended (or works at all)...

Page 133: Adaptation

http://www.flickr.com/photos/mujitra/2559447601

fine tune the profiles...tacit data enables you to

tweaks for "important" devices (e.g. client-specific requests, business goal-specific, partners, high-traffic edge cases etc.)

create custom properties needed for your specific project

override false positives

Page 134: Adaptation

http://twitter.com/#!/stephanierieger/status/113604185857069056

much easier...which makes edge cases

handling

Page 135: Adaptation

http://www.flickr.com/photos/mackarus/4289960218

on the server...all heavy lifting occurs

Page 136: Adaptation

http://www.flickr.com/photos/mackarus/3022623866

can be unreliable...where client-side-only approachessupports a broader range of devices

folks and their

Page 137: Adaptation

http://www.flickr.com/photos/jgoforth/87176920

"unknown unknowns"...embrace the future of

Page 138: Adaptation

http://www.flickr.com/photos/slemmon/3971195778

for tomorrow...a few thoughts

Page 139: Adaptation

http://diveintomark.org/archives/2009/11/02/why-do-we-have-an-img-element

was an after thought

the <img> tag...

Page 140: Adaptation

<image  alt="butterfly"><source  src="butterfly-­‐small.png"  width="100"  height="80"  /><source  src="butterfly.png"  width="200"  height="160"  /><source  src="butterfly-­‐large.svg"  width="400"  height="400"  media="min-­‐device-­‐width:320px"  />

</image>

to rethink it?

...perhaps it's finally time

this of course does not exist, and is simply wishful thinking...

Page 141: Adaptation

<html>...

@media  all  (max-­‐device-­‐width:320px)  {    <img  src="butterfly-­‐small.png"  width="100"  height="80"  />}

@media  all  (min-­‐device-­‐width:320px)  {    <img  src="butterfly.png"  width="200"  height="160"  />}

@media  all  (min-­‐device-­‐width:320px)  and  (svg:true)  {    <img  src="butterfly.svg"  width="400"  height="400"  />}

...</html>

ie: conditional content

...media queries for the DOM?

this of course does not exist, and is only the simplest form of an idea...

Page 142: Adaptation

http://en.wikipedia.org/wiki/Content_negotiation

content negotiation...

rethinking (and extending)

Page 143: Adaptation

http://en.wikipedia.org/wiki/User_agent

revisit UA strings...

and maybe even go back and

for some thoughts...see Andrea Trasatti's "Sorting User Agent Strings Out"

Andrea Trasatti sorting user agent strings out

Page 144: Adaptation

http://www.flickr.com/photos/theowl84/3045227001

as the water moulds itself to the pitcher.""The wise adapt themselves to circumstances,

Chinese Proverb

Page 145: Adaptation

http://www.flickr.com/photos/kwl/4171367373

[email protected]

thank you

hi

http://www.exljbris.com/museo.htmlMuseo

the font we use is

please say

@yiibu

http://www.slideshare.net/yiibu/adaptation

available on

http://creativecommons.org/licenses/by/2.0

licensed under

many thanks to the amazing photographers on

http://www.flickr.com/creativecommons/by-2.0