To Be Future Friendly
Is To Be
Device Agnostic

whoami

@joemccann

joemccann Github

Creator of Dillinger.io

Partner at The Node Firm

I Blog Here on subPrint.com

Mobile Architect at Bazaarvoice

Open Source Advocate and Contributor

Past 12 Years of Websites...

Client Sends Request →

Full Response Comes Back ←

Geocities

AJAX

Google Maps in 2005

MVC Frameworks à la Ruby on Rails

Basecamp

Realtime Frameworks via WebSockets

Socketio

Where Are We Now?

The Desktop Web is Thriving

Google Docs/Drive

Angry Birds

Ok Go Music Video

Awesome

What About Mobile?

Mobile Web is not nearly as robust as the desktop

However...

Soon it will be...

Core Mobile Group

Boot 2 Gecko

Beyond HTML5 (Read This!)

However...

Mobile is not just
the web.



Let me say that again.

Mobile is not just
the web.



Tablets

"Casual Computing"

85% of US tablet owners use their tablets while watching TV

Forrester Research


Smart TVs



Digital Signage



In-Store Kiosks



Smart Appliances



Wearables

Accessories that provide additional value to devices and a better user experience can help to improve levels of satisfaction and brand loyalty, as well as provide additional revenue sources.

Strategy Analytics


Items Not Invented Yet!

Your software should not be bound solely  to the browser.

It should favor the browser, but be flexible for any type   of client.






It should be...

Client-Agnostic

But How?

Service Oriented Architecture

(SOA)

SOA Recipe

  • Loosely Coupled Software Components (Services)
Services are autonomous, stateless, with fully documented interfaces, and separate from the cross-cutting concerns of the implementation.

This makes testing much  easier.

SOA Recipe

  • Loosely Coupled Software Components (Services)
  • RESTful (or REST-like)
  • API for Every Feature
  • Use JSON, not XML
It should be noted that a client may not always have a UI. It may be another process or another service requesting information.

The onus is on the requesting client
to consume and display (or use) that
response data in a meaningful fashion.

Exposing Services

  • Choose a platform that is conducive to
    simple, RESTful APIs
  • node.js
  • Make sure your interfaces do not change.
    Easier said than done.
  • Send JSON

Consuming Services

  • Will Be Client-specific
    (Native Android app vs Mobile Web Site)
  • Expect and Consume JSON
  • Cache data locally

You can still use the web and JavaScript to do the client side stuff!

JavaScript (still) Everywhere

DON'T SHIP THE UI

If you do, you will fail going forward.

The desktop web environment
assumes a fixed, static context.

At a desk, QWERTY keyboard.

In reality, this is a shrinking market.


Asymco

Final Thought



You, your code and your business need to support an ever-changing landscape of internet-capable devices.

 Be future friendly.
Be device agnostic.