adaptation: why responsive design actually begins on the server

Post on 08-Sep-2014

60 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

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

why responsive design actually begins on the server...

Adaptation

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

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

a good story...the tech media loves

TechCrunch

bleeding edge...and life on the

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

200 million iOS devices

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...

*

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

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...

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

will save us all!

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

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

will save us all!

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

the bleeding edge...

2007

the iPhoneoriginal

2008

iPhone 3G

2007

iPhone

2008

iPhone 3GS

2007 2009

3GiPhone

20082007 2009

3GiPhone

iPhone 4

2010

3GS

2008 2009

3GiPhone

iPhone 5...2010

3GS

2011

4

side effect n.

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

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

2007

the iPhoneoriginal

era begins...the smartphone

20082007

webtouch iPhone 3G

iPhone

and the real web...brings touch, gestures

20082007 2009

3GiPhone

androidapps

iPhone 3GS

the rise of Android...native apps and

20082007 2009

3GiPhoneiPhone 4

2010

3GS

htcg-five

samsungweb os

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

2008 2009

3GiPhone

iPhone 5...

2010

3GS

2011

4

htcLG

samsungmotorola

blackberrykindle

nook with great expectations... devices go mainstream

iPhone

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

iPhone

or from a different perspective...

the bleeding edge...

opportunity

the bleeding edge...

'ish via China+

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

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

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*

iPhone

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

asked a simple question...last year we

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

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

iPhone

let me rephrase the question...

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...

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

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

recent events...especially in the light of

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

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

pressing concerns...most folks have much more

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

higher priorities...and far

different purchasing decisions...which often result in very

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

iPhone

however...

...*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...

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...

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...

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

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

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

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

UNDESIRABLE

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

iPhone

this thinking creates...

for a privileged few...an optimal experience for

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

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

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

please upgrade now...your smartphone is obsolete,

2 year old, state-of-the-art

iPhone

um...

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

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

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

the real world...welcome to

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

adapt as required...where we learn to

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

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

craftivism

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

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

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

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

iPhone

but...

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

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

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

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

iPhone

yup

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...

most certainly have...a few companies

0.facebook

twitter indonesia

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

OperaMini

small

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?

on similar principles...the web was actually built

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

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...

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

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

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

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

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

<diversion>

and servers...a tale of clients

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

short

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

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

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

similar requests...other unique clients make

brisket...

corned beef...

turkeygrilled cheese

Rueben...chilli dog...

yet not identical

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

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

Rueben...

chilli dog...

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...

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...

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

what they need...ensuring they get exactly

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

might not want...rather than everything they

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

<diversion/>

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

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

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

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

client

client

http://domain.org

a request to a server...a client makes

yet unknown

server

http://domain.org

serverhttp://domain.org

clouds are hip these days...

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

server

...profile please?

http://domain.org

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

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")

...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....

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

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!

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

{"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

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

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}

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}

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

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...

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.

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

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

{"/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-­‐feature@240.png",       "320-­‐655":"/resources/images/home-­‐feature@320.png",       "655-­‐9999":"/resources/images/home-­‐feature.png"     },     "img-­‐smartphones":{       "0-­‐320":"/resources/images/smartphones@320.png",       "320-­‐640":"/resources/images/smartphones.png",       "640-­‐9999":"/resources/images/smartphones.png"     },     "img-­‐mobilephones":{       "0-­‐320":"/resources/images/mobilephones@320.png",       "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-­‐s60@240.png",       "320-­‐640":"resources/images/smartphones/choose-­‐s60@320.png",       "640-­‐9999":"resources/images/smartphones/choose-­‐s60.png"     },     "img-­‐choose-­‐meego":{       "0-­‐320":"resources/images/smartphones/choose-­‐meego@240.png",       "320-­‐640":"resources/images/smartphones/choose-­‐meego@320.png",       "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/swipe@240.jpg",       "320-­‐640":"resources/images/meego/swipe@320.jpg",       "640-­‐9999":"resources/images/meego/swipe.jpg"     },     "pinch-­‐zoom":{       "0-­‐320":"resources/images/meego/pinch-­‐zoom@240.png",       "320-­‐720":"resources/images/meego/pinch-­‐zoom@320.png",       "720-­‐9999":"resources/images/meego/pinch-­‐zoom.png"     },     "typing":{       "0-­‐320":"resources/images/meego/typing@240.png",       "320-­‐720":"resources/images/meego/typing@320.png",       "720-­‐9999":"resources/images/meego/typing.png"     },     "stay-­‐safe":{       "0-­‐320":"resources/images/meego/stay-­‐safe@240.png",       "320-­‐720":"resources/images/meego/stay-­‐safe@320.png",       "720-­‐9999":"resources/images/meego/stay-­‐safe.png"     },     "location":{       "0-­‐320":"resources/images/meego/location@240.jpg",       "320-­‐640":"resources/images/meego/location@320.jpg",       "640-­‐9999":"resources/images/meego/location.png"     },     "surf-­‐more":{       "0-­‐320":"resources/images/meego/surf-­‐more@240.png",       "320-­‐640":"resources/images/meego/surf-­‐more@320.png",       "640-­‐9999":"resources/images/meego/surf-­‐more.png"     },     "technologies":{       "0-­‐320":"resources/images/meego/technologies@240.jpg",       "320-­‐640":"resources/images/meego/technologies@320.jpg",       "640-­‐9999":"resources/images/meego/technologies.png"     },     "top-­‐sites":{       "0-­‐320":"resources/images/meego/top-­‐sites@240.png",       "320-­‐720":"resources/images/meego/top-­‐sites@320.png",       "720-­‐9999":"resources/images/meego/top-­‐sites.png"     },     "download":{       "0-­‐320":"resources/images/meego/download@240.png",       "320-­‐720":"resources/images/meego/download@320.png",       "720-­‐9999":"resources/images/meego/download.png"     },     "update":{       "0-­‐320":"resources/images/meego/update@240.png",       "320-­‐720":"resources/images/meego/update@320.png",       "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/swipe@240.jpg",       "320-­‐640":"resources/images/meego/swipe@320.jpg",       "640-­‐9999":"resources/images/meego/swipe.jpg"     },     "pinch-­‐zoom":{       "0-­‐320":"resources/images/meego/pinch-­‐zoom@240.png",       "320-­‐720":"resources/images/meego/pinch-­‐zoom@320.png",       "720-­‐9999":"resources/images/meego/pinch-­‐zoom.png"     },     "typing":{       "0-­‐320":"resources/images/meego/typing@240.png",       "320-­‐720":"resources/images/meego/typing@320.png",       "720-­‐9999":"resources/images/meego/typing.png"     },     "stay-­‐safe":{       "0-­‐320":"resources/images/meego/stay-­‐safe@240.png",       "320-­‐720":"resources/images/meego/stay-­‐safe@320.png",       "720-­‐9999":"resources/images/meego/stay-­‐safe.png"     },     "location":{       "0-­‐320":"resources/images/meego/location@240.jpg",       "320-­‐640":"resources/images/meego/location@320.jpg",       "640-­‐9999":"resources/images/meego/location.png"     },     "surf-­‐more":{       "0-­‐320":"resources/images/meego/surf-­‐more@240.png",       "320-­‐640":"resources/images/meego/surf-­‐more@320.png",       "640-­‐9999":"resources/images/meego/surf-­‐more.png"     },     "technologies":{       "0-­‐320":"resources/images/meego/technologies@240.jpg",       "320-­‐640":"resources/images/meego/technologies@320.jpg",       "640-­‐9999":"resources/images/meego/technologies.png"     },     "top-­‐sites":{       "0-­‐320":"resources/images/meego/top-­‐sites@240.png",       "320-­‐720":"resources/images/meego/top-­‐sites@320.png",       "720-­‐9999":"resources/images/meego/top-­‐sites.png"     },     "download":{       "0-­‐320":"resources/images/meego/download@240.png",       "320-­‐720":"resources/images/meego/download@320.png",       "720-­‐9999":"resources/images/meego/download.png"     },     "update":{       "0-­‐320":"resources/images/meego/update@240.png",       "320-­‐720":"resources/images/meego/update@320.png",       "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/swipe@240.jpg",       "320-­‐640":"resources/images/meego/swipe@320.jpg",       "640-­‐9999":"resources/images/meego/swipe.jpg"     },     "pinch-­‐zoom":{       "0-­‐320":"resources/images/meego/pinch-­‐zoom@240.png",       "320-­‐720":"resources/images/meego/pinch-­‐zoom@320.png",       "720-­‐9999":"resources/images/meego/pinch-­‐zoom.png"     },     "typing":{       "0-­‐320":"resources/images/meego/typing@240.png",       "320-­‐720":"resources/images/meego/typing@320.png",       "720-­‐9999":"resources/images/meego/typing.png"     },     "stay-­‐safe":{       "0-­‐320":"resources/images/meego/stay-­‐safe@240.png",       "320-­‐720":"resources/images/meego/stay-­‐safe@320.png",       "720-­‐9999":"resources/images/meego/stay-­‐safe.png"     },     "swipe-­‐more":{       "0-­‐320":"resources/images/meego/swipe@240.jpg",       "320-­‐640":"resources/images/meego/swipe@320.jpg",       "640-­‐9999":"resources/images/meego/swipe.jpg"     },     "pinch-­‐zoom-­‐more":{       "0-­‐320":"resources/images/meego/pinch-­‐zoom@240.png",       "320-­‐720":"resources/images/meego/pinch-­‐zoom@320.png",       "720-­‐9999":"resources/images/meego/pinch-­‐zoom.png"     },     "typing-­‐more":{       "0-­‐320":"resources/images/meego/typing@240.png",       "320-­‐720":"resources/images/meego/typing@320.png",       "720-­‐9999":"resources/images/meego/typing.png"     },     "stay-­‐safe-­‐more":{       "0-­‐320":"resources/images/meego/stay-­‐safe@240.png",       "320-­‐720":"resources/images/meego/stay-­‐safe@320.png",       "720-­‐9999":"resources/images/meego/stay-­‐safe.png"     },     "location":{       "0-­‐320":"resources/images/meego/location@240.jpg",       "320-­‐640":"resources/images/meego/location@320.jpg",       "640-­‐9999":"resources/images/meego/location.png"     },     "location2":{       "0-­‐320":"resources/images/meego/location@240.jpg",       "320-­‐640":"resources/images/meego/location@320.jpg",       "640-­‐9999":"resources/images/meego/location.png"     },     "technologies":{       "0-­‐320":"resources/images/meego/technologies@240.jpg",       "320-­‐640":"resources/images/meego/technologies@320.jpg",       "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/swipe@240.jpg",       "320-­‐640":"resources/images/meego/swipe@320.jpg",       "640-­‐9999":"resources/images/meego/swipe.jpg"     },     "pinch-­‐zoom":{       "0-­‐320":"resources/images/meego/pinch-­‐zoom@240.png",       "320-­‐720":"resources/images/meego/pinch-­‐zoom@320.png",       "720-­‐9999":"resources/images/meego/pinch-­‐zoom.png"     },     "typing":{       "0-­‐320":"resources/images/meego/typing@240.png",       "320-­‐720":"resources/images/meego/typing@320.png",       "720-­‐9999":"resources/images/meego/typing.png"     },     "stay-­‐safe":{       "0-­‐320":"resources/images/meego/stay-­‐safe@240.png",       "320-­‐720":"resources/images/meego/stay-­‐safe@320.png",       "720-­‐9999":"resources/images/meego/stay-­‐safe.png"     },     "location":{       "0-­‐320":"resources/images/meego/location@240.jpg",       "320-­‐640":"resources/images/meego/location@320.jpg",       "640-­‐9999":"resources/images/meego/location.png"     },     "surf-­‐more":{       "0-­‐320":"resources/images/meego/surf-­‐more@240.png",       "320-­‐640":"resources/images/meego/surf-­‐more@320.png",       "640-­‐9999":"resources/images/meego/surf-­‐more.png"     },     "surf-­‐more2":{       "0-­‐320":"resources/images/meego/surf-­‐more@240.png",       "320-­‐640":"resources/images/meego/surf-­‐more@320.png",       "640-­‐9999":"resources/images/meego/surf-­‐more.png"     },     "technologies2":{       "0-­‐320":"resources/images/meego/technologies@240.jpg",       "320-­‐640":"resources/images/meego/technologies@320.jpg",       "640-­‐9999":"resources/images/meego/technologies.png"     },     "top-­‐sites2":{       "0-­‐320":"resources/images/meego/top-­‐sites@240.png",       "320-­‐720":"resources/images/meego/top-­‐sites@320.png",       "720-­‐9999":"resources/images/meego/top-­‐sites.png"     },     "download2":{       "0-­‐320":"resources/images/meego/download@240.png",       "320-­‐720":"resources/images/meego/download@320.png",       "720-­‐9999":"resources/images/meego/download.png"     },     "update2":{       "0-­‐320":"resources/images/meego/update@240.png",       "320-­‐720":"resources/images/meego/update@320.png",       "720-­‐9999":"resources/images/meego/update.png"     },     "technologies":{       "0-­‐320":"resources/images/meego/technologies@240.jpg",       "320-­‐640":"resources/images/meego/technologies@320.jpg",       "640-­‐9999":"resources/images/meego/technologies.png"     },     "top-­‐sites":{       "0-­‐320":"resources/images/meego/top-­‐sites@240.png",       "320-­‐720":"resources/images/meego/top-­‐sites@320.png",       "720-­‐9999":"resources/images/meego/top-­‐sites.png"     },     "download":{       "0-­‐320":"resources/images/meego/download@240.png",       "320-­‐720":"resources/images/meego/download@320.png",       "720-­‐9999":"resources/images/meego/download.png"     },     "update":{       "0-­‐320":"resources/images/meego/update@240.png",       "320-­‐720":"resources/images/meego/update@320.png",       "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/tap@240.jpg",       "320-­‐640":"resources/images/symbian/tap@320.jpg",       "640-­‐9999":"resources/images/symbian/tap.png"     },     "img-­‐pinch-­‐zoom":{       "0-­‐320":"resources/images/symbian/pinch-­‐zoom@240.png",       "320-­‐720":"resources/images/symbian/pinch-­‐zoom@320.png",       "720-­‐9999":"resources/images/symbian/pinch-­‐zoom.png"     },     "img-­‐type":{       "0-­‐320":"resources/images/symbian/type@240.png",       "320-­‐720":"resources/images/symbian/type@320.png",       "720-­‐9999":"resources/images/symbian/type.png"     },     "img-­‐multitask":{       "0-­‐320":"resources/images/symbian/multitask@240.png",       "320-­‐720":"resources/images/symbian/multitask@320.png",       "720-­‐9999":"resources/images/symbian/multitask.png"     },     "img-­‐technology":{       "0-­‐320":"resources/images/symbian/technology@240.jpg",       "320-­‐640":"resources/images/symbian/technology@320.jpg",       "640-­‐9999":"resources/images/symbian/technology.png"     },     "img-­‐full-­‐screen":{       "0-­‐320":"resources/images/symbian/full-­‐screen@240.jpg",       "320-­‐640":"resources/images/symbian/full-­‐screen@320.jpg",       "640-­‐9999":"resources/images/symbian/full-­‐screen.png"     },     "img-­‐safety":{       "0-­‐320":"resources/images/symbian/safety@240.png",       "320-­‐720":"resources/images/symbian/safety@320.png",       "720-­‐9999":"resources/images/symbian/safety.png"     },     "img-­‐keyboard":{       "0-­‐320":"resources/images/symbian/keyboard@240.png",       "320-­‐720":"resources/images/symbian/keyboard@320.png",       "720-­‐9999":"resources/images/symbian/keyboard.png"     },     "img-­‐update":{       "0-­‐320":"resources/images/symbian/update@240.png",       "320-­‐720":"resources/images/symbian/update@320.png",       "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-­‐web@240.jpg",       "320-­‐640":"resources/images/s40/surf-­‐the-­‐web@320.jpg",       "640-­‐9999":"resources/images/s40/surf-­‐the-­‐web.jpg"     },     "img-­‐quick-­‐access":{       "0-­‐320":"resources/images/s40/quick-­‐access@240.png",       "320-­‐720":"resources/images/s40/quick-­‐access@320.png",       "720-­‐9999":"resources/images/s40/quick-­‐access.png"     },     "img-­‐always-­‐in-­‐control":{       "0-­‐320":"resources/images/s40/always-­‐in-­‐control@240.png",       "320-­‐720":"resources/images/s40/always-­‐in-­‐control@320.png",       "720-­‐9999":"resources/images/s40/always-­‐in-­‐control.png"     },     "img-­‐popular-­‐sites":{       "0-­‐320":"resources/images/s40/popular-­‐sites@240.png",       "320-­‐720":"resources/images/s40/popular-­‐sites@320.png",       "720-­‐9999":"resources/images/s40/popular-­‐sites.png"     },     "img-­‐world-­‐of-­‐apps":{       "0-­‐320":"resources/images/s40/world-­‐of-­‐apps@240.jpg",       "320-­‐640":"resources/images/s40/world-­‐of-­‐apps@320.jpg",       "640-­‐9999":"resources/images/s40/world-­‐of-­‐apps.jpg"     },     "img-­‐easy-­‐to-­‐use":{       "0-­‐320":"resources/images/s40/easy-­‐to-­‐use@240.jpg",       "320-­‐640":"resources/images/s40/easy-­‐to-­‐use@320.jpg",       "640-­‐9999":"resources/images/s40/easy-­‐to-­‐use.png"     },     "img-­‐any-­‐device":{       "0-­‐320":"resources/images/s40/any-­‐device@240.png",       "320-­‐640":"resources/images/s40/any-­‐device@320.png",       "640-­‐9999":"resources/images/s40/any-­‐device.png"     },     "img-­‐your-­‐view":{       "0-­‐320":"resources/images/s40/your-­‐view@240.png",       "320-­‐720":"resources/images/s40/your-­‐view@320.png",       "720-­‐9999":"resources/images/s40/your-­‐view.png"     },     "img-­‐auto-­‐update":{       "0-­‐320":"resources/images/s40/auto-­‐update@240.png",       "320-­‐720":"resources/images/s40/auto-­‐update@320.png",       "720-­‐9999":"resources/images/s40/auto-­‐update.png"     },     "img-­‐do-­‐more":{       "0-­‐320":"resources/images/s40/do-­‐more@240.png",       "320-­‐720":"resources/images/s40/do-­‐more@320.png",       "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

http://domain.orgserver

response

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

images

datavideo

which would make them even more responsive

http://domain.orgserver

response

performed on the server...all content adaptation is

before the page is downloaded

are then bundled as references...

http://domain.orgserver

response

alternate resources that may later be required on the client

http://domain.orgserver

response

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

feature detection

{}

{}

http://domain.orgserver

client

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}

the script fires again... on an orientation change

or screen resize

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

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

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

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

server

...profile please?

http://domain.org

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}

http://domain.orgserver

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

tacit data

http://domain.orgserver

responselet me get that for you...

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

and adapt

then bundled as references...any resources required are

on the client

http://domain.orgserver

response

{}

http://domain.orgserver

client

...ta da!

required...and repeat as

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

zombie apocalypse...all in preparation for the coming

@scottjenson zombie frog

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

approach...benefits of this

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

ceçi n'est plus un iphone

not the device...focus on the features,

known

OperaMini

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)...

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

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

much easier...which makes edge cases

handling

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

on the server...all heavy lifting occurs

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

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

folks and their

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

"unknown unknowns"...embrace the future of

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

for tomorrow...a few thoughts

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

was an after thought

the <img> tag...

<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...

<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...

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

content negotiation...

rethinking (and extending)

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

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

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

Chinese Proverb

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

hello@yiibu.com

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

top related