surviving the zombie apocalpyse of connected devices - copenhagen ruby brigade

53
Gustaf Nilsson Kotte (HTML Hypermedia APIs and Adaptive Web Design)

Upload: gustaf-nilsson-kotte

Post on 03-Jul-2015

828 views

Category:

Technology


0 download

DESCRIPTION

The number of different types of connected devices is increasing. We have already built ourselves a large amount of code duplication between client applications (both native apps and web apps) and it's only getting worse. Also, cheap low-profile devices are getting bigger market shares and users will still expect a good experience when using our software. To solve the problem of code duplication on the clients, we need to pull as much code as we can from the clients back to the server. A good way to achieve this is to build a Hypermedia API and to use HTML as the media type for the API. A nice side-effect of this is that we can show the received HTML directly to the user, which will be good enough for a majority part of a client application. The problem of low-profile devices is best solved by using Progressive Enhancement, which will allow us developers to provide the best experience that the device is capable of delivering. Finally, combining HTML Hypermedia APIs and Progressive Enhancement will allow us to have a single endpoint for our web and our API. Links --- http://amundsen.com/hypermedia/hfactor/ http://www.amundsen.com/blog/archives/765 http://codeartisan.blogspot.se/2012/07/using-html-as-media-type-for-your-api.html http://microformats.org/ http://roy.gbiv.com/untangled/2009/it-is-okay-to-use-post http://www.netbiscuits.com/mobile-metrics-report-2011 http://www.lukew.com/ff/entry.asp?1390 http://24ways.org/2010/speed-up-your-site-with-delayed-content http://24ways.org/2011/conditional-loading-for-responsive-designs http://filamentgroup.com/lab/ajax_includes_modular_content/ http://www.webmonkey.com/2012/03/video-progressive-enhancement-2-0/ http://easy-readers.net/books/adaptive-web-design/ http://roca-style.org/ http://www.jayway.com/2012/08/01/combining-html-hypermedia-apis-and-adaptive-web-design/ Image resources --- “This is not the web” images by Brad Frost http://bradfrostweb.com/ Juggling Monkey http://media.smashingmagazine.com/wp-content/uploads/2012/07/juggling-monkey.jpg Mike Amundsen http://b.vimeocdn.com/ts/185/530/185530962_640.jpg Back to the Future http://www.thenoobnews.com/uploads/2012/01/Marty-doc-remote.jpg Trash can http://www.clker.com/clipart-15146.html Money bags https://doodleaday.files.wordpress.com/2012/03/doodle-1016-money-bags.jpg Exit sign http://www.ski.org/Rehab/WCrandall/EgressIIIWeb/images/egressfig7.gif Scale http://wishfit.files.wordpress.com/2012/02/scale.gif Escalator http://www.orientlighting.com/Upload/Editor/201121822854289.jpg Elevator http://aes-shreveport.com/http://aes-shreveport.com/wp-content/uploads/2010/03/elevator1.jpg Hipster Pabst Blue Ribbon http://www.nbclosangeles.com/blogs/press-here/Start-Up-Recruits-with-10000-and-Lifetime-Pabst-Blue-Ribbon-123126508.html Unity http://www.unitylakeorion.org/wp-content/uploads/unity.jpg Razor http://4.bp.blogspot.com/-U

TRANSCRIPT

Page 1: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

Gustaf Nilsson Kotte

(HTML Hypermedia APIs and Adaptive Web Design)

Page 2: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

@gustaf_nk

Page 3: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 4: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

Platform fragmentation

HTML Hypermedia APIs

Capability fragmentation

Adaptive Web Design

The API and the web can be the same thing!

Page 5: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 6: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 7: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 8: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 9: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 10: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

iOS Android WP7 Win8 Web SPAsSmartTVs

API

Store

?

Page 11: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 12: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 13: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 14: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

iOS Android WP7 Win8 Web SPAsSmartTVs

API

Store

?

Page 15: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 16: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

LO: Support for out-bound navigational links (HTTP GET)<a href="http://www.example.org/search" title="view search page">Search</a>

LN: Support for non-idempotent updates (HTTP POST)<form method="post" action="http://www.example.org/my-keywords"/>

<label>Keywords:</label>

<input name="keywords" type="text" value="" />

<input type="submit" />

</form>

Page 17: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 18: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 19: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 20: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

Primaryuse cases

Secondaryuse cases

Secondaryuse cases

API

Render HTML viewsHTML forms

NativeConsume API

Page 21: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

<div class="message-block"><div id="messages"><ul class="single">

<li><span class="message-text">Message text</span><span class="single">@</span><a rel="message" href="..." title="message"><span class="date-time">2012-01-01</span>

</a><span class="single">by</span><a rel="user" href="..." title="A title"><span class="user-text">User text</span>

</a></li><!-- ... ->

</ul></div>

</div>

<!–– Example: Access the user-texts property: $("#messages .message-text") -->

Page 22: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

”Building Hypermedia APIs

with HTML5 and Node”, Mike Amundsen

”Designing Hypermedia APIs”, Steve Klabnik

Page 23: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

Platform fragmentation

HTML Hypermedia APIs

Capability fragmentation

Adaptive Web Design

The API and the web can be the same thing!

Page 24: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 25: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 26: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 27: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

3 iOS devices – 40%

3112 other devices– 60%

Page 28: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 29: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 30: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 31: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 32: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 33: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 34: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 35: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 36: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 37: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

Responsive Web Design + Server Side Components

Page 38: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 39: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

”Adaptive Web Design”, Aaron Gustafson

“Progressive Enhancement 2.0”, Nicolas Zakas

“Resource-Oriented Client Architecture”, http://roca-style.org

Page 40: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

Platform fragmentation

HTML Hypermedia APIs

Capability fragmentation

Adaptive Web Design

The API and the web can be the same thing!

Page 41: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 42: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

<div class="message-block"><div id="messages"><ul class="single">

<li><span class="message-text">Message text</span><span class="single">@</span><a rel="message" href="..." title="message"><span class="date-time">2012-01-01</span>

</a><span class="single">by</span><a rel="user" href="..." title="A title"><span class="user-text">User text</span>

</a></li><!-- ... ->

</ul></div>

</div>

Page 43: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

<div class="message-block"><div id="messages"><ul class="single">

<li><span class="message-text">Message text</span><span class="single">@</span><a rel="message" href="..." title="message"><span class="date-time">2012-01-01</span>

</a><span class="single">by</span><a rel="user" href="..." title="A title"><span class="user-text">User text</span>

</a></li><!-- ... ->

</ul></div>

</div>

Page 44: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 45: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 46: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

ProgressiveEnhancement

SPA

Page 47: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

Primaryuse cases

Secondaryuse cases

Secondaryuse cases

API

Render HTML viewsHTML forms

NativeConsume API

Page 48: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

HTML Hypermedia

API

Store

Page 49: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 50: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

Platform fragmentation

HTML Hypermedia APIs

Capability fragmentation

Adaptive Web Design

The API and the web can be the same thing!

Page 51: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade
Page 52: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

(@gustaf_nk)

Page 53: Surviving the zombie apocalpyse of connected devices - Copenhagen Ruby Brigade

“This is not the web” images by Brad Frost

http://bradfrostweb.com/

Trash can, http://www.clker.com/clipart-15146.html

Money bags, https://doodleaday.files.wordpress.com/2012/03/doodle-1016-money-bags.jpg

Exit sign, http://www.ski.org/Rehab/WCrandall/EgressIIIWeb/images/egressfig7.gif

Scale, http://wishfit.files.wordpress.com/2012/02/scale.gif

Escalator, http://www.orientlighting.com/Upload/Editor/201121822854289.jpg

Elevator, http://aes-shreveport.com/http://aes-shreveport.com/wp-content/uploads/2010/03/elevator1.jpg

MacBook Pro, http://store.storeimages.cdn-apple.com/2911/as-images.apple.com/is/image/AppleInc/mbp2012-step0-macbookpro-lh?wid=341&hei=218&fmt=png-alpha&qlt=95

Ferrari NetBook, http://www.conceivablytech.com/wp-content/uploads/2010/04/ferrari12.jpg

Hypermedia avatar, https://si0.twimg.com/profile_images/1480823070/twitter.jpg

Storytelling, http://yarnstorytellers.files.wordpress.com/2012/05/kidsstorytelling.jpg

Back to the Future, http://www.thenoobnews.com/uploads/2012/01/Marty-doc-remote.jpg

Ooya, http://cf.shacknews.com/images/20120727/ouya_22884.nphd.jpg

Samsung SmartTV,

http://4.bp.blogspot.com/-DJYVeNjOxVA/T14mh5NVA5I/AAAAAAAAABU/Re1oXspmx1o/s1600/Samsung.jpg

Mike Amundsen, http://b.vimeocdn.com/ts/185/530/185530962_640.jpg

Hipster Pabst Blue Ribbon, http://www.nbclosangeles.com/blogs/press-here/Start-Up-Recruits-with-10000-and-Lifetime-Pabst-Blue-Ribbon-123126508.html

Juggling monkey, http://media.smashingmagazine.com/wp-content/uploads/2012/07/juggling-monkey.jpg

Unity, http://www.unitylakeorion.org/wp-content/uploads/unity.jpg

Kindle, http://www.blogcdn.com/www.engadget.com/media/2011/09/amazon-official-kindle-touch.jpg

iPad in sofa, http://www.itouch-magazine.eu/wp-content/uploads/2010/05/iPad-Lapdesk-Render-3-1024x797.jpg

laptop on train, http://medmondtech.files.wordpress.com/2011/06/080910090104-laptop-train-travel-man.jpg

Razor, http://4.bp.blogspot.com/-UJsfWWvWgbk/Tb2RS3iFDoI/AAAAAAAAD0k/4XCA3sgsP3A/s1600/Occams-Razor_1896-l.jpg

Zombie, http://www.everystockphoto.com/photo.php?imageId=9964446&searchId=0eda241fc65ccf35d9743309ac395215&npos=338