87
Human APIs expanding the mobile web RiaWorld 2010 Nikolai Onken uxebu Wednesday, November 17, 2010

Human APIs

Embed Size (px)

DESCRIPTION

These are the slides from my talk at the RiaWorld 2010, a mostly hands on session showcasing how to access hardware from within the browser.

Citation preview

Page 1: Human APIs

Human APIsexpanding the mobile web

RiaWorld 2010

Nikolai Onkenuxebu

Wednesday, November 17, 2010

Page 2: Human APIs

Wednesday, November 17, 2010

Page 3: Human APIs

@nonken

Wednesday, November 17, 2010

Page 4: Human APIs

Wednesday, November 17, 2010

Page 5: Human APIs

We open the mobile web.

Wednesday, November 17, 2010

Page 6: Human APIs

Wednesday, November 17, 2010

Page 7: Human APIs

JavaScript AJAX

CSS

dojoBrowser

OpenSourceWeb2.0

FrontEnd

Usability UserExperience

mobile

TouchScroll

Wednesday, November 17, 2010

Page 8: Human APIs

The Plan

• A little bit of history

• Lets build a mobile app

Wednesday, November 17, 2010

Page 9: Human APIs

http://news.bbc.co.uk/2/hi/technology/8552410.stm

Remember Risk?

Wednesday, November 17, 2010

Page 10: Human APIs

http://news.bbc.co.uk/2/hi/technology/8552410.stm

Remember Risk?

Wednesday, November 17, 2010

Page 11: Human APIs

Dec, 20091,802 millions

26.6 %

Wednesday, November 17, 2010

Page 12: Human APIs

The mobile web

Jan. 2008 Mar. 20100

5000000000

10000000000

15000000000

20000000000

AdMob Requests

Wednesday, November 17, 2010

Page 13: Human APIs

The mobile web

Jan. 2008 Mar. 20100

5000000000

10000000000

15000000000

20000000000

AdMob Requests

Wednesday, November 17, 2010

Page 14: Human APIs

The mobile web

Jan. 2008 Mar. 20100

5000000000

10000000000

15000000000

20000000000

AdMob Requests

Wednesday, November 17, 2010

Page 15: Human APIs

The reality

• Internet is growing (fast)

•Mobile is growing (fast)

•Mobile internet is growing (fast!)

Wednesday, November 17, 2010

Page 16: Human APIs

The browser is the central piece

Wednesday, November 17, 2010

Page 17: Human APIs

The browser is the interface to the

internet

Wednesday, November 17, 2010

Page 18: Human APIs

71% of all modern phones have a

browser

Tomi Ahonen

Wednesday, November 17, 2010

Page 19: Human APIs

IPv6

2128

Wednesday, November 17, 2010

Page 20: Human APIs

There will be a lot of things we should talk to :)

(using a browser)

Wednesday, November 17, 2010

Page 21: Human APIs

Wednesday, November 17, 2010

Page 22: Human APIs

Is JavaScript good enough?

Wednesday, November 17, 2010

Page 23: Human APIs

Flash with JavaScript?

Wednesday, November 17, 2010

Page 24: Human APIs

http://github.com/tobeytailor/gordon

Wednesday, November 17, 2010

Page 25: Human APIs

HTML5 Appsor web apps as we know them

Wednesday, November 17, 2010

Page 26: Human APIs

Wednesday, November 17, 2010

Page 27: Human APIs

Wednesday, November 17, 2010

Page 28: Human APIs

New HTML Elements

Wednesday, November 17, 2010

Page 29: Human APIs

<input type="speech" grammar="grammar-nav-en.grxml" onchange="handleSpeechInput">

http://bit.ly/audio-api

Wednesday, November 17, 2010

Page 30: Human APIs

High performance graphics

WebGL

Wednesday, November 17, 2010

Page 31: Human APIs

Wednesday, November 17, 2010

Page 32: Human APIs

Wednesday, November 17, 2010

Page 33: Human APIs

Media

Wednesday, November 17, 2010

Page 34: Human APIs

Wednesday, November 17, 2010

Page 35: Human APIs

Wednesday, November 17, 2010

Page 36: Human APIs

What more do we need?

Wednesday, November 17, 2010

Page 37: Human APIs

JavaScript HTTP

Wednesday, November 17, 2010

Page 38: Human APIs

JavaScript HTTP

Accelerometer

Camera

...Wednesday, November 17, 2010

Page 39: Human APIs

JavaScript HTTP

Accelerometer

Camera

...

Bluetooth

RFID

Wednesday, November 17, 2010

Page 40: Human APIs

JavaScript

CSS

HTML

HTTP

Accelerometer

Camera

...

Bluetooth

RFID

Wednesday, November 17, 2010

Page 41: Human APIs

JavaScript

CSS

HTML

HTTP

Accelerometer

Camera

...

Bluetooth

RFID

Wednesday, November 17, 2010

Page 42: Human APIs

The Hype

Wednesday, November 17, 2010

Page 43: Human APIs

o

The Hype

Wednesday, November 17, 2010

Page 44: Human APIs

oThe cloud

The Hype

Wednesday, November 17, 2010

Page 45: Human APIs

oThe cloud Location, etc.

The Hype

Wednesday, November 17, 2010

Page 46: Human APIs

oThe cloud Location, etc.

The Potential

Wednesday, November 17, 2010

Page 47: Human APIs

oThe cloud Location, etc.

Hardware

The Potential

Wednesday, November 17, 2010

Page 48: Human APIs

Use cases

Wednesday, November 17, 2010

Page 49: Human APIs

Transportation

Wednesday, November 17, 2010

Page 50: Human APIs

Wednesday, November 17, 2010

Page 51: Human APIs

Wednesday, November 17, 2010

Page 52: Human APIs

Home automation

Wednesday, November 17, 2010

Page 53: Human APIs

http://digitalstrom.org

Wednesday, November 17, 2010

Page 54: Human APIs

http://home-pad.com

Wednesday, November 17, 2010

Page 55: Human APIs

Health

Wednesday, November 17, 2010

Page 56: Human APIs

3311 Health/Fitness Apps in Apple app store

Wednesday, November 17, 2010

Page 57: Human APIs

HumanAPI

Wednesday, November 17, 2010

Page 58: Human APIs

HumanAPI

Wednesday, November 17, 2010

Page 59: Human APIs

How can we do this?

Wednesday, November 17, 2010

Page 60: Human APIs

Mobile SDKs

Wednesday, November 17, 2010

Page 61: Human APIs

Mobile SDKs

Objective-C

Wednesday, November 17, 2010

Page 62: Human APIs

Mobile SDKs

Objective-C Java

Wednesday, November 17, 2010

Page 63: Human APIs

Mobile SDKs

Objective-C Java ...

Wednesday, November 17, 2010

Page 64: Human APIs

How the magic happens

Wednesday, November 17, 2010

Page 65: Human APIs

Low level APIs

Camera Accelerometer Push Notifications

How the magic happens

Wednesday, November 17, 2010

Page 66: Human APIs

Low level APIs

Camera Accelerometer Push Notifications

Chromeless Browser

How the magic happens

Wednesday, November 17, 2010

Page 67: Human APIs

Low level APIs

Camera Accelerometer Push Notifications

Chromeless Browser

How the magic happens

browserInstance.eval(“alert(1);”)

Wednesday, November 17, 2010

Page 68: Human APIs

PhoneGap

Wednesday, November 17, 2010

Page 69: Human APIs

Low level APIs

Camera Accelerometer Push Notifications...

Chromeless Browser

PhoneGap

browser.eval(“document.geolocation...”)

Android, iPhone, iPad, Nokia S60, BlackberryWednesday, November 17, 2010

Page 70: Human APIs

Low level APIs

Camera Accelerometer Push Notifications...

Chromeless Browser

PhoneGap

browser.eval(“document.geolocation...”)

Android, iPhone, iPad, Nokia S60, BlackberryWednesday, November 17, 2010

Page 71: Human APIs

mAppView.loadUrl("javascript:navigator.compass.setHeading(" + heading + ")");

Android

Wednesday, November 17, 2010

Page 72: Human APIs

jsCallBack = [[NSString alloc] initWithFormat:@"navigator. accelerometer._onAccelUpdate(%f,%f,%f);", acceleration.x, acceleration.y, acceleration.z];

[webView stringByEvaluatingJavaScriptFromString:jsCallBack];

iPhone/iPad

Wednesday, November 17, 2010

Page 73: Human APIs

Lowlevel APIs

The browser

For things you can’t do in the browser (yet)

For anything else :)

Wednesday, November 17, 2010

Page 74: Human APIs

Enough talking, lets see some hardware

Wednesday, November 17, 2010

Page 75: Human APIs

ArduinoJS

Wednesday, November 17, 2010

Page 76: Human APIs

ArduinoJS Stack

• Arduino (http://arduino.cc/)

• Node-Serial (Chris Williams)

• Node

• Websockets (Socket.io)

http://github.com/nonken/arduinojs

Wednesday, November 17, 2010

Page 77: Human APIs

Node

ArduinoJS

Websockets

Arduino

Browser

Serial connection

Light Motors Robots

One

API

to

rule

the

m a

ll

Wednesday, November 17, 2010

Page 78: Human APIs

Node

ArduinoJS

Websockets

Arduino

Browser

Serial connection

Light Motors Robots

One

API

to

rule

the

m a

ll

Wednesday, November 17, 2010

Page 79: Human APIs

available APIs

• digitalWrite(pin, val)

• digitalRead(pin, val)

• analogWrite(pin, val)

• analogRead(pin, val)

http://github.com/nonken/arduinojs

Wednesday, November 17, 2010

Page 80: Human APIs

Try it out

• 10.0.2.1:8888

Wednesday, November 17, 2010

Page 81: Human APIs

Wednesday, November 17, 2010

Page 82: Human APIs

Only the beginning

Wednesday, November 17, 2010

Page 83: Human APIs

Serverside JS

Wednesday, November 17, 2010

Page 84: Human APIs

http://groups.google.com/group/nodejs/browse_thread/thread/ee11c077e5f89f7a?hl=en

$(".living-room").delegate(".motion-sensor", "onmotion", function(){   $(".living-room .lights").css("intensity", 0.75) });

Your house == DOM

Wednesday, November 17, 2010

Page 85: Human APIs

Raphaël can do this!

Wednesday, November 17, 2010

Page 86: Human APIs

Getting started

•ArduinoJS - http://github.com/nonken/arduinojs

•PhoneGap - http://phonegap.com

•http://blog.uxebu.com

•http://www.humanapi.org

Wednesday, November 17, 2010

Page 87: Human APIs

Thank you

@nonken

Wednesday, November 17, 2010