theendofunlimitedbandwidth 101130124830-phpapp01 (1)

90
http://www.flickr.com/photos/beggs/34117133 unlimited bandwidth towards a more network efficient user experience in an age of network austerity the so-called end of

Upload: jaqs-stultz

Post on 18-Nov-2014

573 views

Category:

Documents


5 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/beggs/34117133

unlimited bandwidth towards a more network efficient user experience in an age of network austerity

the so-called end of

Page 2: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

I am NOT a network guru...DISCLAIMER

http://www.flickr.com/photos/andreasivarsson/4893862500

I might be completely wrong!

Page 3: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/32615508@N02/3047982712

not simply design for smaller screens... designing for mobile devices is

Page 4: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/wwworks/2943810776

efficiency is not optional... designing for network

Page 5: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

why?

Page 6: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/msimdottv/3326696626

an unexpected txt recently... you may have received

Page 7: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

Your unlimited data promotion ends onthe date of your next bill. Which is when yournew 500MB a month data allowance starts...

SMS received from my operator, you may have received something similar...http://shop.o2.co.uk/new-iphone/tariffs.html

Page 8: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

iPhone 4 - What you get for 500MBhttp://shop.o2.co.uk/new-iphone/DataAllow500.html

Your 500MB data allowance will enable you to (approximately):

send 500,000 emails, without attachments

or send 1,000 emails, with photos attached

or visit 5,000 sites, like Twitter or favourite blogs

or visit 1,500 rich content sites like bbc.co.uk...

or download 50 (low-quality) music tracks

or watch 60 YouTube videos, about 4.5 minutes long

according to

Page 9: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

Expect monthly average monthly data usage to be around 325MB by end of 2010...

US Mobile Data Market Update Q3 2010http://www.chetansharma.com/blog/2010/11/07/us-mobile-data-market-update-q3-2010/

Page 10: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/wonderferret/215802064

that’s lovely and all, but...

Page 11: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

...iPhone reports I’ve exceeded my monthly bandwidth cap by 4GB. Bugger. (how do I figure out what drained that bandwidth?)

@iamdanw via Twitterhttp://twitter.com/iamdanw/status/3232692573310976

Page 12: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/maxwellgs/4267311036

let’s try a little experiment...

Page 13: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

Step 1Select ‘Wi-Fi’ in ‘Settings’...

Step 2Switch ‘Wi-Fi’ to ‘OFF’ position.

turn your Wi-Fi off temporarily

Remember to turn on Wi-Fi back on once you’re done!And be sure to always use Wi-Fi networks for data intensive activities.

Page 14: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

Remember to turn on Wi-Fi back on once you’re done!And be sure to always use Wi-Fi networks for data intensive activities.

Step 3Tap ‘General’ in ‘Settings’...

reset your usage statistics

Step 4Tap ‘Usage’ in ‘General’...

Step 5Tap ‘Reset Statistics’ in ‘Usage’.

0 bytes

Page 15: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

How To Change The User Agent In Safarihttp://www.youtube.com/watch?v=ZSJ_KLEsX4M

Charles HTTP ProxySafari Web Browser iPhone Simulator

|| +

change user-agent to ‘Mobile Safari’ via Developer tools

or for the geeks among us...very cautious

||

WireShark

Page 16: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

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

now use your iPhone...briefly

Page 17: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

repeat as desired

reset data use data use datarecord results +

reset datarecord results +

reset data

7.1MB 42.3MB0MB0MB

reset, record, repeat...

keep in mind that tablets such as the iPad may consume significantly more data...

Page 18: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

0MBStart of the monthly 500MB data allowance...

a new month...0KB

here’s my data usage...

Page 19: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

51MBListen to 3 songs on Spotify, view links, check Twitter and Facebook twice, watch a 5 minute video on YouTube and check Google Maps...

comedy sketch40.6 MB over 05:28

“Pearl Jam”23MB over 00:20

refresh + tweet973KB over 00:20

Page 20: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

101MBCheck Google Maps for meeting location, watch new Samsung video, browse, tweet, Facebook, funny animal video and listen to new Muse track.

find meeting...2.1MB over 00:05

read TechCrunch2.7MB over 00:15

refresh + update status803KB over 00:10

a funny video3.2 MB over 02:13

Page 21: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

315MBListen to a few more tracks on Spotify, another couple of videos on YouTube, chat via Twitter, Facebook, a few emails + photos, maps and surf...

read email...6.7MB over 00:45

find lunch...1.8MB over 00:05

conference talks113 MB over 00:20

new Muse album78MB over 01:30

upload photos...3.4MB over 00:12

updates... 1.6MB over 00:10

refresh + tweet3.1MB over 00:10

Page 22: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/adactio/274644831

and that’s before lunch...

Page 23: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

Step 6Select ‘Wi-Fi’ in ‘Settings’...

Step 7Switch ‘Wi-Fi’ to ‘ON’ position.

please turn your Wi-Fi back on

Remember to turn on Wi-Fi back on once you’re done!And be sure to always use Wi-Fi networks for data intensive activities.

networks will vary...

Page 24: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

Generalisation of Parkinson’s Lawhttp://en.wikipedia.org/wiki/Parkinson's_Law

the demand upon a resource tends to expand to match the supply of the resource

http://www.flickr.com/photos/mikebaird/3898808431

Page 25: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

...significant shift in 2010 as (globally) off-deck revenues surpass on-deck revenues for the first time...

Paraphrased from US Mobile Data Market Update Q3 2010http://www.chetansharma.com/blog/2010/11/07/us-mobile-data-market-update-q3-2010/

“the Internet!

operator portals

Page 26: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

so the demand is obviously there, but let’s look at the supply...

http://www.flickr.com/photos/johanl/4397800453

Page 27: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

Comparison of wireless data standardshttp://www.itu.int/ITU-D/ict/material/FactsFigures2010.pdf

0

1.25

2.5

3.75

5

GRPS EvDO EDGE UMTS HSPA+ LTE WiMAX WiFi LTE-Advanced

net

wo

rk s

pee

d in

Mb

ps

network technology

AverageTheoretical

2G 3G 4G

90% estimated worldwide2G penetration in 2010...

5 MBps

Page 28: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

Morgan Stanley Internet Trends, April 12, 2010http://www.morganstanley.com/institutional/techresearch/pdfs/Internet_Trends_041210.pdf

0

37.5

75

112.5

150

GRPS EvDO EDGE UMTS HSPA+ LTE WiMAX WiFi LTE-Advanced

net

wo

rk s

pee

d in

Mb

ps

network technology

AverageTheoretical

2G 3G 4G

21% projected worldwide3G penetration in 2010...

150 MBps

Page 29: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

0

250

500

750

1000

GRPS EvDO EDGE UMTS HSPA+ LTE WiMAX WiFi LTE-Advanced

net

wo

rk s

pee

d in

Mb

ps

network technology

AverageTheoretical

Comparison of wireless data standardshttp://en.wikipedia.org/wiki/Comparison_of_wireless_data_standards

2G 3G 4G

0% actual worldwide4G penetration in 2010...1,000 MBps

Page 30: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

0

250

500

750

1000

GRPS EvDO EDGE UMTS HSPA+ LTE WiMAX WiFi LTE-Advanced

net

wo

rk s

pee

d in

Mb

ps

network technology

AverageTheoretical

2G 3G 4G

T-Mobile 4G Service Now Available in More Markets and on New Devices - 02/11/2010http://press.t-mobile.com/articles/americas-largest-4g-network

Consumers do not understand the technical alphabet soupof technologies involved in 4G, but for our purposes we define WiMAX, LTE and HSPA+ as 4G technologies...

“4G

marketing redacted

Page 31: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/flissphil/6341843/

...fact is that there are no IMT-Advanced–or 4G– systems available or deployed at this stage.

The Dirty Secret of Today’s 4G: It’s not 4Ghttp://gizmodo.com/5680755/the-dirty-secret-of-todays-4g-its-not-4g

Page 32: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

don’t panic

http://www.flickr.com/photos/alexnormand/2916476207

Page 33: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)
Page 34: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

...the idea of buying service from wholesalers and thereby offloading data traffic as an excellent method for handling [the problem of mobile operators struggling to manage surging network traffic]...

Reality Check: Wholesale ... more exciting than you thinkhttp://www.rcrwireless.com/article/20101102/REALITY_CHECK/101109990

Page 35: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/pinkmoose/2461093066

bandwidth as a commodity...

Page 36: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

oddly familiar...

not so long ago...

Page 37: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

Enron Open Bandwidth Commodity Trading Servicehttp://www.internetnews.com/xSP/article.php/253861/Enron-Opens-Bandwidth-Commodity-Trading-Service.htm

yes, that

Page 38: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

anyway...

Page 39: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.mobypicture.com/user/andrewgrill/view/7998275/sizes/full

“unlimited 500 MB internet” - how do they get away with saying this?

the mobile industry oxymoron

@andrewgrill via Twitterhttp://twitter.com/#!/AndrewGrill/status/3462590709633024

Page 40: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/chadmagiera/3035522407

I want my unlimited data smartphone users:

http://news.cnet.com/8301-30686_3-20023471-266.html

Page 41: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

...a large number of light users, people consuming less than 200MB of data per month, prefer unlimited plans... even if their usage patterns suggest that they would save money by getting a plan that's capped.

Smartphone users: I want my unlimited datahttp://news.cnet.com/8301-30686_3-20023471-266.html

Page 42: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/schillergarcia/2836059154

but not as fast as many would like... greater bandwidth is coming,

Page 44: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/flickr_faris/361848995

based on data consumption... ...via free content, with operating cost

Page 45: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

in the meantime...

Page 46: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

designing for mobile devices isn’t simplya matter of taking screen size into account...

Page 47: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

...design for network efficiency*

*you also need to design for context, but that’s another discussion...

Page 48: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/edo-finelight/4514878784

design strategies... a few network efficient

Page 49: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

filter

Page 50: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam pharetra dignissim consectetur. Donec ut nisl nisi, et pretium sem. Proin libero libero, mollis in vestibulum sed, interdum at nibh. Curabitur vel lectus sit amet leo blandit tincidunt quis sed nulla. Etiam scelerisque metus eget augue placerat vel elementum sem mattis. Pellentesque sapien mauris, laoreet sed malesuada ac, rhoncus in ipsum. Fusce ultrices consectetur odio ac tincidunt. Donec pharetra auctor lacus sit amet pulvinar. Nullam a urna turpis, sit amet vulputate mi. Donec eu suscipit purus. Mauris tincidunt scelerisque tellus, vel semper sapien hendrerit sed.

Ut magna augue, gravida ac luctus vel, posuere in neque. Nullam vel lacus mi. Nulla et ante massa. In hac habitasse platea dictumst. Nam gravida tempor metus, ut viverra arcu feugiat vitae. Duis placerat, urna vel blandit cursus, metus purus condimentum velit, eu faucibus nisi nunc ac turpis. Nulla id enim elit. Pellentesque nec arcu et quam venenatis viverra. Sed magna neque, blandit eget lacinia vel, sollicitudin at lacus. Quisque eleifend dui eget tortor ornare quis fermentum sem auctor. Etiam vitae rhoncus velit. Aenean nulla nulla, suscipit non ullamcorper vel, eleifend ut dui. Morbi eu tortor in massa consectetur porttitor laoreet fringilla nisl. Vestibulum laoreet lobortis lacus non scelerisque. Ut bibendum rhoncus felis ut auctor. Integer porttitor viverra elementum. Vivamus sit amet ipsum ac velit feugiat tristique. Praesent nec velit ipsum. Maecenas in orci nulla, eu interdum mauris.

Integer porta lacinia tempor. Curabitur sit amet nibh a sapien scelerisque accumsan. Curabitur feugiat suscipit imperdiet. Fusce orci ipsum, malesuada non cursus sit amet, laoreet ut purus. Praesent eget ligula urna. Donec mattis est eu tortor pulvinar mollis dictum elit malesuada. Aliquam varius nisl euismod massa accumsan quis accumsan erat viverra. Nunc ac velit velit. Sed lobortis, eros vel blandit luctus, nunc velit malesuada lacus, eget tincidunt neque nisl et neque. Aenean sagittis tellus purus, a aliquet augue. In hac habitasse platea dictumst. Vestibulum sed ipsum a ipsum fringilla congue eget at eros.

Etiam feugiat, mi vel elementum tempor, massa dolor varius augue, id tempus tortor elit sed justo. In pulvinar, sapien in feugiat elementum, velit diam vehicula ligula, a semper felis lorem id justo. Aliquam erat volutpat. Sed varius tempor nibh et fringilla. Donec id suscipit leo. Nullam quis nisl lacus, vitae placerat massa. Aenean at massa dui, eu scelerisque sapien. Mauris vel neque et mi porttitor dapibus. Fusce quis libero eget justo facilisis scelerisque. Mauris eu dolor at purus volutpat suscipit. Cras libero nisi, placerat eget rhoncus et, auctor et magna. Vivamus quis vehicula ante. Nulla laoreet egestas gravida. Vestibulum tortor massa, feugiat ut sodales id, mattis id risus. Nulla egestas rutrum lacus at pretium. Nunc blandit dapibus libero, a facilisis tellus convallis vel. Integer auctor eros dapibus massa dapibus quis tempus quam pretium. Mauris ultricies leo eget odio convallis eget consectetur purus pharetra. Nulla facilisi.

Duis nec velit ut ante suscipit auctor. Etiam leo tellus, eleifend a fermentum vel, luctus et libero. Proin urna felis, venenatis porttitor sollicitudin id, pellentesque vel lorem. In blandit mattis fringilla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla ligula dolor, viverra vitae tincidunt at, congue eget arcu. Pellentesque id interdum lacus. Suspendisse in lectus et nibh consectetur luctus vitae non magna. Ut interdum, est aliquam ultrices tempor, elit lorem mollis turpis, sed faucibus nisl enim sit amet sem. Vestibulum dapibus quam a lectus accumsan vitae posuere urna volutpat. Donec commodo fermentum arcu quis pulvinar. Nam eget eros ac turpis lobortis fermentum. Sed ultrices tristique nibh a aliquet. Cras tristique auctor elementum. Sed placerat, libero ac suscipit tincidunt, enim elit pharetra ligula, sit amet ultrices risus est ac diam.

Nullam erat ligula, sagittis nec auctor imperdiet, scelerisque nec dolor. Mauris tincidunt risus at turpis facilisis congue. Curabitur purus ante, mollis ut bibendum sed, tincidunt quis nulla. Nam non ligula at eros dapibus porta. Fusce sapien justo, tempor ut viverra quis, consequat sit amet nisi. Integer iaculis, metus quis venenatis rhoncus, dolor erat venenatis lacus, et posuere odio diam eu orci. In hac habitasse platea dictumst. Morbi vulputate scelerisque diam. In gravida porttitor hendrerit. Curabitur nec augue ac dolor mattis dictum. Suspendisse accumsan facilisis tortor tincidunt feugiat. Etiam ante urna, auctor id fermentum a, varius vitae enim. Curabitur a bibendum tellus. Curabitur pellentesque, felis ut molestie iaculis, sapien lectus cursus orci, sit amet accumsan dolor augue ac dui. Nulla cursus ipsum eget nisl aliquam ut mollis nibh dictum.

Donec ut mauris sem. Suspendisse potenti. Nullam scelerisque ultrices mattis. Mauris ultrices magna orci, vitae adipiscing enim. Aliquam aliquam, nibh in mattis ornare, nisl risus sodales orci, nec molestie sem metus sed leo. Sed placerat diam eu lectus laoreet eu dictum nisi bibendum. In ullamcorper varius vestibulum. Sed congue varius orci vitae semper. Aenean risus justo, egestas eu pellentesque at, accumsan ac mi. Sed semper velit lacinia diam commodo ullamcorper. In quis tortor felis, non eleifend odio. Mauris quis sem mi, in placerat lacus. Phasellus at nisl quis magna adipiscing convallis. Aenean ut massa mauris, sit amet imperdiet dui. Aliquam dictum gravida egestas. Etiam interdum, risus sit amet dignissim cursus, sem dui porta sapien, tempus egestas quam velit vitae tellus. Vivamus a purus nec felis porttitor vehicula. Donec nec diam sem. In eget justo et mauris porta placerat vitae id purus.

Sed nisi quam, scelerisque non pretium sit amet, malesuada elementum augue. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam fermentum venenatis ornare. Etiam id erat nisl, tincidunt scelerisque sapien. Praesent ut faucibus lectus. Sed sit amet diam metus. Etiam pellentesque bibendum dui, eu volutpat tortor scelerisque et. Aliquam ut eros leo, sed ultricies lacus. Proin posuere sagittis magna, ac tristique sapien ultrices id. In gravida bibendum justo, eget rutrum risus commodo eu. Donec turpis arcu, laoreet pharetra egestas nec, tincidunt in leo. Vestibulum pulvinar nibh eget magna fringilla dictum. Cras et velit et lectus porttitor lobortis. Sed consectetur, eros sit amet tempor placerat, dui mi porttitor diam, in suscipit eros nisl quis lacus. Cras sed urna mi. Vestibulum at felis vitae.

edit ruthlessly...

Page 51: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam pharetra dignissim consectetur. Donec ut nisl nisi, et pretium sem. Proin libero libero, mollis in vestibulum sed, interdum at nibh. Curabitur vel lectus sit amet leo blandit tincidunt quis sed nulla. Etiam scelerisque metus eget augue placerat vel elementum sem mattis. Pellentesque sapien mauris, laoreet sed malesuada ac, rhoncus in ipsum. Fusce ultrices consectetur odio ac tincidunt. Donec pharetra auctor lacus sit amet pulvinar. Nullam a urna turpis, sit amet vulputate mi. Donec eu suscipit purus. Mauris tincidunt scelerisque tellus, vel semper sapien hendrerit sed.

Ut magna augue, gravida ac luctus vel, posuere in neque. Nullam vel lacus mi. Nulla et ante massa. In hac habitasse platea dictumst. Nam gravida tempor metus, ut viverra arcu feugiat vitae. Duis placerat, urna vel blandit cursus, metus purus condimentum velit, eu faucibus nisi nunc ac turpis. Nulla id enim elit. Pellentesque nec arcu et quam venenatis viverra. Sed magna neque, blandit eget lacinia vel, sollicitudin at lacus. Quisque eleifend dui eget tortor ornare quis fermentum sem auctor. Etiam vitae rhoncus velit. Aenean nulla nulla, suscipit non ullamcorper vel, eleifend ut dui. Morbi eu tortor in massa consectetur porttitor laoreet fringilla nisl. Vestibulum laoreet lobortis lacus non scelerisque. Ut bibendum rhoncus felis ut auctor. Integer porttitor viverra elementum. Vivamus sit amet ipsum ac velit feugiat tristique. Praesent nec velit ipsum. Maecenas in orci nulla, eu interdum mauris.

Integer porta lacinia tempor. Curabitur sit amet nibh a sapien scelerisque accumsan. Curabitur feugiat suscipit imperdiet. Fusce orci ipsum, malesuada non cursus sit amet, laoreet ut purus. Praesent eget ligula urna. Donec mattis est eu tortor pulvinar mollis dictum elit malesuada. Aliquam varius nisl euismod massa accumsan quis accumsan erat viverra. Nunc ac velit velit. Sed lobortis, eros vel blandit luctus, nunc velit malesuada lacus, eget tincidunt neque nisl et neque. Aenean sagittis tellus purus, a aliquet augue. In hac habitasse platea dictumst. Vestibulum sed ipsum a ipsum fringilla congue eget at eros.

Etiam feugiat, mi vel elementum tempor, massa dolor varius augue, id tempus tortor elit sed justo. In pulvinar, sapien in feugiat elementum, velit diam vehicula ligula, a semper felis lorem id justo. Aliquam erat volutpat. Sed varius tempor nibh et fringilla. Donec id suscipit leo. Nullam quis nisl lacus, vitae placerat massa. Aenean at massa dui, eu scelerisque sapien. Mauris vel neque et mi porttitor dapibus. Fusce quis libero eget justo facilisis scelerisque. Mauris eu dolor at purus volutpat suscipit. Cras libero nisi, placerat eget rhoncus et, auctor et magna. Vivamus quis vehicula ante. Nulla laoreet egestas gravida. Vestibulum tortor massa, feugiat ut sodales id, mattis id risus. Nulla egestas rutrum lacus at pretium. Nunc blandit dapibus libero, a facilisis tellus convallis vel. Integer auctor eros dapibus massa dapibus quis tempus quam pretium. Mauris ultricies leo eget odio convallis eget consectetur purus pharetra. Nulla facilisi.

Duis nec velit ut ante suscipit auctor. Etiam leo tellus, eleifend a fermentum vel, luctus et libero. Proin urna felis, venenatis porttitor sollicitudin id, pellentesque vel lorem. In blandit mattis fringilla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla ligula dolor, viverra vitae tincidunt at, congue eget arcu. Pellentesque id interdum lacus. Suspendisse in lectus et nibh consectetur luctus vitae non magna. Ut interdum, est aliquam ultrices tempor, elit lorem mollis turpis, sed faucibus nisl enim sit amet sem. Vestibulum dapibus quam a lectus accumsan vitae posuere urna volutpat. Donec commodo fermentum arcu quis pulvinar. Nam eget eros ac turpis lobortis fermentum. Sed ultrices tristique nibh a aliquet. Cras tristique auctor elementum. Sed placerat, libero ac suscipit tincidunt, enim elit pharetra ligula, sit amet ultrices risus est ac diam.

Nullam erat ligula, sagittis nec auctor imperdiet, scelerisque nec dolor. Mauris tincidunt risus at turpis facilisis congue. Curabitur purus ante, mollis ut bibendum sed, tincidunt quis nulla. Nam non ligula at eros dapibus porta. Fusce sapien justo, tempor ut viverra quis, consequat sit amet nisi. Integer iaculis, metus quis venenatis rhoncus, dolor erat venenatis lacus, et posuere odio diam eu orci. In hac habitasse platea dictumst. Morbi vulputate scelerisque diam. In gravida porttitor hendrerit. Curabitur nec augue ac dolor mattis dictum. Suspendisse accumsan facilisis tortor tincidunt feugiat. Etiam ante urna, auctor id fermentum a, varius vitae enim. Curabitur a bibendum tellus. Curabitur pellentesque, felis ut molestie iaculis, sapien lectus cursus orci, sit amet accumsan dolor augue ac dui. Nulla cursus ipsum eget nisl aliquam ut mollis nibh dictum.

Donec ut mauris sem. Suspendisse potenti. Nullam scelerisque ultrices mattis. Mauris ultrices magna orci, vitae adipiscing enim. Aliquam aliquam, nibh in mattis ornare, nisl risus sodales orci, nec molestie sem metus sed leo. Sed placerat diam eu lectus laoreet eu dictum nisi bibendum. In ullamcorper varius vestibulum. Sed congue varius orci vitae semper. Aenean risus justo, egestas eu pellentesque at, accumsan ac mi. Sed semper velit lacinia diam commodo ullamcorper. In quis tortor felis, non eleifend odio. Mauris quis sem mi, in placerat lacus. Phasellus at nisl quis magna adipiscing convallis. Aenean ut massa mauris, sit amet imperdiet dui. Aliquam dictum gravida egestas. Etiam interdum, risus sit amet dignissim cursus, sem dui porta sapien, tempus egestas quam velit vitae tellus. Vivamus a purus nec felis porttitor vehicula. Donec nec diam sem. In eget justo et mauris porta placerat vitae id purus.

Sed nisi quam, scelerisque non pretium sit amet, malesuada elementum augue. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam fermentum venenatis ornare. Etiam id erat nisl, tincidunt scelerisque sapien. Praesent ut faucibus lectus. Sed sit amet diam metus. Etiam pellentesque bibendum dui, eu volutpat tortor scelerisque et. Aliquam ut eros leo, sed ultricies lacus. Proin posuere sagittis magna, ac tristique sapien ultrices id. In gravida bibendum justo, eget rutrum risus commodo eu. Donec turpis arcu, laoreet pharetra egestas nec, tincidunt in leo. Vestibulum pulvinar nibh eget magna fringilla dictum. Cras et velit et lectus porttitor lobortis. Sed consectetur, eros sit amet tempor placerat, dui mi porttitor diam, in suscipit eros nisl quis lacus. Cras sed urna mi. Vestibulum at felis vitae.

then edit a few more times....

Page 52: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam pharetra dignissim consectetur. Donec ut nisl nisi, et pretium sem. Proin libero libero, mollis in vestibulum sed, interdum at nibh. Curabitur vel lectus sit amet leo blandit tincidunt quis sed nulla. Etiam scelerisque metus eget augue placerat vel elementum sem mattis. Pellentesque sapien mauris, laoreet sed malesuada ac, rhoncus in ipsum. Fusce ultrices consectetur odio ac tincidunt. Donec pharetra auctor lacus sit amet pulvinar. Nullam a urna turpis, sit amet vulputate mi. Donec eu suscipit purus. Mauris tincidunt scelerisque tellus, vel semper sapien hendrerit sed.

Curabitur feugiat suscipit imperdiet. Fusce orci ipsum, malesuada non cursus sit amet, laoreet ut purus. Praesent eget ligula urna. Donec mattis est eu tortor pulvinar mollis dictum elit malesuada. Aliquam varius nisl euismod massa accumsan quis accumsan erat viverra. Nunc ac velit velit. Sed lobortis, eros vel blandit luctus, nunc velit malesuada lacus, eget tincidunt neque nisl et neque.

Donec id suscipit leo.

Nulla laoreet egestas gravida. Vestibulum tortor massa, feugiat ut sodales id, mattis id risus. Nulla egestas rutrum lacus at pretium. Nunc blandit dapibus libero, a facilisis tellus convallis vel. Integer auctor eros dapibus massa dapibus quis tempus quam pretium.

Mauris tincidunt risus at turpis facilisis congue. Curabitur purus ante, mollis ut bibendum sed, tincidunt quis nulla. Nam non ligula at eros dapibus porta. Fusce sapien justo, tempor ut viverra quis, consequat sit amet nisi. Integer iaculis, metus quis venenatis rhoncus, dolor erat venenatis lacus, et posuere odio diam eu orci.

Sed semper velit lacinia diam commodo ullamcorper. Phasellus at nisl quis magna adipiscing convallis. Aenean ut massa mauris, sit amet imperdiet dui.

Sed nisi quam, scelerisque non pretium sit amet, malesuada elementum augue. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam fermentum venenatis ornare. Etiam id erat nisl, tincidunt scelerisque sapien.

think small...

Page 53: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

<div class="body"> <div class="header"> <div class= "h1"> <span>Hello World!</span> </div> </div> <div class="body">HTML <span class="emphasis">can actually be</span>meaningful. </div> </div>

<div> soup...

soup is best served in a bowl...

this includes markup...

we see this much more than you’d think...

unnecessary markup will increase the amount of data you transfer, and may impact performance

recreating existing <tags> is not cool

Page 54: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

<h1>Hello World!</h1><p>HTML<em>can actually be</em>meaningful.</p>

keep markup short, semantic and meaningful – less data transfer and better performance

contains

71%less filler

well structured & meaningful

Page 55: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

basic comparison of The New York Times and The Guardian websites on the iPhone...

“full web” “mobile web”vs.

Page 56: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

requires pinch + zoom

each page requiresan almost full refresh

more clicks to find relevant content

Page 57: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

no pinch + zoom

fewer clicks

much less bandwidth required

Page 58: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

996.3 KB 81.2 KB

mobile optimised sites are far more network efficient

Page 59: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

filter compress

Page 60: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/ulybug/152518872

large.jpg35.73 KB

media for each device appropriately resize and compress

Page 61: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/ulybug/152518872

media for each device appropriately resize and compress

medium.jpg10.69 KB

Page 62: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/ulybug/152518872

media for each device appropriately resize and compress

small.jpg4.57 KB

Page 63: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/ulybug/152518872

large.jpg35.73 KB

medium.jpg10.69 KB

small.jpg4.57 KB

media for each device appropriately resize and compress

Page 64: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

/*! * jQuery JavaScript Library v1.4.4 * http://jquery.com/ * * Copyright 2010, John Resig * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * Includes Sizzle.js * http://sizzlejs.com/ * Copyright 2010, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * * Date: Thu Nov 11 19:04:53 2010 -0500 */(function( window, undefined ) {

// Use the correct document accordingly with window argument (sandbox)var document = window.document;var jQuery = (function() {

// Define a local copy of jQueryvar jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' return new jQuery.fn.init( selector, context ); },

// Map over jQuery in case of overwrite _jQuery = window.jQuery,

// Map over the $ in case of overwrite _$ = window.$,

// A central reference to the root jQuery(document) rootjQuery,

// A simple way to check for HTML strings or ID strings // (both of which we optimize for) quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,

// Is it a simple selector isSimple = /^.[^:#\[\.,]*$/,

// Check if a string has a non-whitespace character in it rnotwhite = /\S/, rwhite = /\s/,

// Used for trimming whitespace trimLeft = /^\s+/, trimRight = /\s+$/,

about formatting & style... devices don’t care

Page 65: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

(function(E,B){function ka(a,b,d){if(d===B&&a.nodeType===1){d=a.getAttribute("data-"+b);if(typeof d==="string"){try{d=d==="true"?true:d==="false" false:d==="null"?null:!c.isNaN(d)?parseFloat(d):Ja.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=B}return d}function U(){return false}function ca(){return true}function la(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ka(a){var b,d,e,f,h,l,k,o,x,r,A,C=[];f=[];h=c.dat(this,this.nodeType?"events":"__events__");if(typeof h==="function")h=h.events;if(!(a.liveFired===this||!h||!h.live||a.button&&a.type==="click")){if(a.namespace)A=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var J=h.live.slice(0);for(k=0;k<J.length;k++){h=J[k];h.origType.replace(X,"")===a.type?f.push(h.selector):J.splice(k--,1)}f=c(a.target).closest(f,a.currentTarget);o=0;for(x=f.length;o<x;o++){r=f[o];for(k=0;k<J.length;k++){h=J[k];if(r.selector===h.selector&&(!A||A.test(h.namespace))){l=r.elem;e=null;if(h.preType==="mouseenter"||h.preType==="mouseleave"){a.type=h.preType;e=c(a.relatedTarget).closest(h.selector)[0]}if(!e||e!==l)C.push({elem:l,handleObj:h,level:r.level})}}}o=0;for(x=C.length;o<x;o++){f=C[o];if(d&&f.level>d break;a.currentTarget=f.elem;a.data=f.handleObj.data;a.handleObj=f.handleObj; A=f.handleObj.origHandler.apply(f.elem,arguments);if(A===false||a.isPropagationStopped()){d=f.level;if(A===false)b=false;if(a.isImmediatePropagationStopped())break}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(La,"`").replace(Ma,"&")}function ma(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Na.test(b))return c.filter(b,e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function na(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this,e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var l in e[h])c.event.add(this,h,e[h][l],e[h][l].data)}}})}function Oa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||""); b.parentNode&&b.parentNode.removeChild(b)}function oa(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?Pa:Qa,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a,"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function da(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Ra.test(a)?e(a,h):da(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?e(a,""):c.each(b,function(f,h){da(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(pa.concat.apply([],pa.slice(0,b)),function(){d[this]=a});return d}function qa(a){if(!ea[a]){var b=c("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";ea[a]=d}return ea[a]}function fa(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var t=E.document,c=function(){function a(){if(!b.isReady){try{t.documentElement.doScroll("left")}catch(j){setTimeout(a,1);return}b.ready()}}var b=function(j,s){return new b.fn.init(j,s)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,l=/\S/,k=/^\s+/,o=/\s+$/,x=/\W/,r=/\d/,A=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,C=/^[\],:{}\s]*$/,J=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,I=/(?:^|:|,)(?:\s*\[)+/g,L=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,i=/(msie) ([\w.]+)/,n=/(mozilla)(?:.*? rv:([\w.))?/,m=navigator.userAgent,p=false,q=[],u,y=Object.prototype.toString,F=Object.prototype.hasOwnProperty,M=Array.prototype.push,N=Array.prototype.slice,O=String.prototype.trim,D=Array.prototype.indexOf,R={};b.fn=b.prototype={init:function(j,s){var v,z,H;if(!j)return this;if(j.nodeType){this.context=this[0]=j;this.length=1;return this}if(j==="body"&&!s&&t.body){this.context=t;this[0]=t.body;this.selector="body";this.length=1;return this}if(typeof j==="string")if((v=h.exec(j))&&(v[1]||!s))if(v[1]){H=s?s.ownerDocument||s:t;if(z=A.exec(j))if(b.isPlainObject(s)){j=[t.createElement(z[1])];b.fn.attr.call(j,s,true)}else j=[H.createElement(z[1])];else{z=b.buildFragment([v[1]],[H]);j=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this,j)}else{if((z=t.getElementById(v[2]))&&z.parentNode){if(z.id!==v[2])return f.find(j);this.length=1;this[0]=z}this.context=t;this.selector=j;return this}else if(!s&&!x.test(j)){this.selector=j;this.context=t;j=t.getElementsByTagName(j);return b.merge(this,j)}else return!s||s.jquery?(s||f).find(j):b(s).find(j);else if(b.isFunction(j))return f.ready(j);if(j.selector!==B){this.selector=j.selector;this.context=j.context}return b.makeArray(j,this)},selector:"",jquery:"1.4.4",length:0,size:function(){return this.length},toArray:function(){return N.call(this,0)},get:function(j){return j==null?this.toArray():j<0?this.slice(j)[0]:this[j]},pushStack:function(j,s,v){var z=b();b.isArray(j)?M.apply(z,j):b.merge(z,j);z.prevObject= this;z.context=this.context;if(s==="find")z.selector=this.selector+(this.selector?" ":"")+v;else if(s)z.selector=this.selector+"."+s+"("+v+")";return z},each:function(j,s){return b.each(this,j,s)},ready:function(j){b.bindReady();if(b.isReady)j.call(t,b);else q&&q.push(j);return this},eq:function(j){return j===-1?this.slice(j):this.slice(j,+j+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(j){return this.pushStack(b.map(this,function(s,v){return j.call(s,v,s)}))},end:function(){return this.prevObject||b(null)},push:M,sort:[].sort,splice:[].splice};b.fn.init.prototype=b. fn;b.extend=b.fn.extend=function(){var j,s,v,z,H,G=arguments[0]||{},K=1,Q=arguments.length,ga=false;if(typeof G==="boolean"){ga=G;G=arguments[1]||{};K=2}if(typeof G!=="object"&&!b.isFunction(G))G={};if(Q===K){G=this;--K}for(;K<Q;K++)if((j=arguments[K])!=null)for(s in j){v=G[s];z=j[s];if(G!==z)if(ga&&z&&(b.isPlainObject(z)||(H=b.isArray(z)))){if(H){H=false;v=v&&b.isArray(v)?v:[]}else v=v&&b.isPlainObject(v)?v:{};G[s]=b.extend(ga,v,z)}else if(z!==B)G[s]=z}return G};b.extend({noConflict:function(j){E.$=e;if(j)E.jQuery=d;return b},isReady:false,readyWait:1,ready:function(j){j===true&&b.readyWait--;if(!b.readyWait||j!==true&&!b.isReady){if(!t.body)return setTimeout(b.ready,1);b.isReady=true;if(!(j!==true&&--b.readyWait>0))if(q){var s=0,v=q;for(q=null;j=v[s++];)j.call(t,b);b.fn.trigger&&b(t).trigger("ready").unbind("ready")}}},bindReady:function(){if(!p){p=true;if(t.readyState==="complete")return setTimeout(b.ready,1);if(t.addEventListener){t.addEventListener("DOMContentLoaded",u,false); E.addEventListener("load",b.ready,false)}else if(t.attachEvent){t.attachEvent("onreadystatechange",u);E.attachEvent("onload",b.ready);var j=false;

and JSON/XML data... minify all styles, scripts

Page 66: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

data formats do matter...

XML JSON

94 KB 76 KB

same data, 20% lighter...

Page 67: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

XML

18.5 KB 14 KB

JSON

make a huge difference... and compression can

80% smallerwhen compressed

Page 68: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/spine/436111793

but unpacking requires time...

Page 69: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

XMLCSS JSHTML JSON

?not always a good

idea for everything...

can impact browser performance uncompressing data

use strategically

...thanks to @ for the reminder!

Page 70: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

...seriously?

7.1MB of audio data compressed to 1.2MB using PNG formathttp://audioscene.org/scene-files/yury/pngencoding/sample.html

creative + efficient ways... reuse existing data formats in

Page 71: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

bbc.co.ukproxy server

free + unlimited bandwidth

rendered + optimised on proxy server...

OBML* HTML

*OBML (Opera Binary Markup Language) is highly optimised for mobile networks + devices.

off-load to the server...proxy browser

limited + costlybandwidth

Page 72: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

sparklineshttp://insideanalytics.blogspot.com/2006/09/busy-but-good-dashboard.html

can significantly reduce data transfer ...a little information design

1 year of data <1KB

Page 73: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

filter compress cache

Page 74: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/fabricio/1576392520

eventually gets expensive... moving the same bits around

Page 75: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/seattlemunicipalarchives/3762792170

they can be reused in the future... conveniently store bits so

Page 76: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

CSS

HTML

jQuery

JSON

local cache network data

0 KBJS

via headers, manifests, etc. new data requests

7.5 KB

every HTTP request adds up

cache as much as possible...

0 KB

0 KB

0 KB

0 KB

18 KB

14 KB

these are only downloaded once...

must be requested from the network

Page 77: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

filter compress cache communicate

Page 78: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

Settings > BandwidthSettings to enable/disable (non-roaming) data access, as well as provide a means of limiting data use.

Settings > Bandwidth > Usage ProfileSetting to determine how applications accessing the Internet via operator networks should use data services.

global seings could be used by other applications to determine how they use the network...

doesn’t currently exist – just an idea...

Page 79: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

On more teeny button...Add an extra button that launches a ‘Usage Profile’...

Usage ProfilesApplications could provide users with ‘usage profiles’ where their data consumption within each application is easily and instantly communicated.

doesn’t currently exist – just an idea...

Page 80: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

Loading...Mobile browsers currently provide a means of displaying download progress.

Loading revisited...It wouldn’t be a huge stretch to add a simple status bar that displays the total KB (or MB’s!) being downloaded.

communicate

doesn’t currently exist – just an idea...

Page 81: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

...equivalent efficiency ratings for data?

point of differentiation

doesn’t currently exist – just an idea...

Page 82: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

filter compress cache communicate

Page 83: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

oh, and don’t forget...

Page 84: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

filter compress cache communicateoff-load

Page 85: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/yodelanecdotal/4092671973

activities and services to Wi-Fi... off-load high bandwidth

Page 86: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

No Wi-Fi Network AvailableApplication simply chews up 3G data allowance without warning.

Option to defer activity due to lack of Wi-FiApplication alerts the user to the lack of Wi-Fi connectivity and prompts them to continue.

doesn’t currently exist – just an idea...

Page 87: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

filter compress cache communicateoff-load

Page 88: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

http://www.flickr.com/photos/lingaraj/2415084235

efficiency is essential... design for network

Page 89: Theendofunlimitedbandwidth 101130124830-phpapp01 (1)

luxury it currently is...

http://www.flickr.com/photos/campuspartymexico/4102296282

mobile data shouldn’t be the

– @timberners_lee