Human APIs

Post on 07-Nov-2014

1,021 views 1 download

Tags:

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.

transcript

Human APIsexpanding the mobile web

RiaWorld 2010

Nikolai Onkenuxebu

Wednesday, November 17, 2010

Wednesday, November 17, 2010

@nonken

Wednesday, November 17, 2010

Wednesday, November 17, 2010

We open the mobile web.

Wednesday, November 17, 2010

Wednesday, November 17, 2010

JavaScript AJAX

CSS

dojoBrowser

OpenSourceWeb2.0

FrontEnd

Usability UserExperience

mobile

TouchScroll

Wednesday, November 17, 2010

The Plan

• A little bit of history

• Lets build a mobile app

Wednesday, November 17, 2010

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

Remember Risk?

Wednesday, November 17, 2010

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

Remember Risk?

Wednesday, November 17, 2010

Dec, 20091,802 millions

26.6 %

Wednesday, November 17, 2010

The mobile web

Jan. 2008 Mar. 20100

5000000000

10000000000

15000000000

20000000000

AdMob Requests

Wednesday, November 17, 2010

The mobile web

Jan. 2008 Mar. 20100

5000000000

10000000000

15000000000

20000000000

AdMob Requests

Wednesday, November 17, 2010

The mobile web

Jan. 2008 Mar. 20100

5000000000

10000000000

15000000000

20000000000

AdMob Requests

Wednesday, November 17, 2010

The reality

• Internet is growing (fast)

•Mobile is growing (fast)

•Mobile internet is growing (fast!)

Wednesday, November 17, 2010

The browser is the central piece

Wednesday, November 17, 2010

The browser is the interface to the

internet

Wednesday, November 17, 2010

71% of all modern phones have a

browser

Tomi Ahonen

Wednesday, November 17, 2010

IPv6

2128

Wednesday, November 17, 2010

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

(using a browser)

Wednesday, November 17, 2010

Wednesday, November 17, 2010

Is JavaScript good enough?

Wednesday, November 17, 2010

Flash with JavaScript?

Wednesday, November 17, 2010

http://github.com/tobeytailor/gordon

Wednesday, November 17, 2010

HTML5 Appsor web apps as we know them

Wednesday, November 17, 2010

Wednesday, November 17, 2010

Wednesday, November 17, 2010

New HTML Elements

Wednesday, November 17, 2010

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

http://bit.ly/audio-api

Wednesday, November 17, 2010

High performance graphics

WebGL

Wednesday, November 17, 2010

Wednesday, November 17, 2010

Wednesday, November 17, 2010

Media

Wednesday, November 17, 2010

Wednesday, November 17, 2010

Wednesday, November 17, 2010

What more do we need?

Wednesday, November 17, 2010

JavaScript HTTP

Wednesday, November 17, 2010

JavaScript HTTP

Accelerometer

Camera

...Wednesday, November 17, 2010

JavaScript HTTP

Accelerometer

Camera

...

Bluetooth

RFID

Wednesday, November 17, 2010

JavaScript

CSS

HTML

HTTP

Accelerometer

Camera

...

Bluetooth

RFID

Wednesday, November 17, 2010

JavaScript

CSS

HTML

HTTP

Accelerometer

Camera

...

Bluetooth

RFID

Wednesday, November 17, 2010

The Hype

Wednesday, November 17, 2010

o

The Hype

Wednesday, November 17, 2010

oThe cloud

The Hype

Wednesday, November 17, 2010

oThe cloud Location, etc.

The Hype

Wednesday, November 17, 2010

oThe cloud Location, etc.

The Potential

Wednesday, November 17, 2010

oThe cloud Location, etc.

Hardware

The Potential

Wednesday, November 17, 2010

Use cases

Wednesday, November 17, 2010

Transportation

Wednesday, November 17, 2010

Wednesday, November 17, 2010

Wednesday, November 17, 2010

Home automation

Wednesday, November 17, 2010

http://digitalstrom.org

Wednesday, November 17, 2010

http://home-pad.com

Wednesday, November 17, 2010

Health

Wednesday, November 17, 2010

3311 Health/Fitness Apps in Apple app store

Wednesday, November 17, 2010

HumanAPI

Wednesday, November 17, 2010

HumanAPI

Wednesday, November 17, 2010

How can we do this?

Wednesday, November 17, 2010

Mobile SDKs

Wednesday, November 17, 2010

Mobile SDKs

Objective-C

Wednesday, November 17, 2010

Mobile SDKs

Objective-C Java

Wednesday, November 17, 2010

Mobile SDKs

Objective-C Java ...

Wednesday, November 17, 2010

How the magic happens

Wednesday, November 17, 2010

Low level APIs

Camera Accelerometer Push Notifications

How the magic happens

Wednesday, November 17, 2010

Low level APIs

Camera Accelerometer Push Notifications

Chromeless Browser

How the magic happens

Wednesday, November 17, 2010

Low level APIs

Camera Accelerometer Push Notifications

Chromeless Browser

How the magic happens

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

Wednesday, November 17, 2010

PhoneGap

Wednesday, November 17, 2010

Low level APIs

Camera Accelerometer Push Notifications...

Chromeless Browser

PhoneGap

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

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

Low level APIs

Camera Accelerometer Push Notifications...

Chromeless Browser

PhoneGap

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

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

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

Android

Wednesday, November 17, 2010

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

Lowlevel APIs

The browser

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

For anything else :)

Wednesday, November 17, 2010

Enough talking, lets see some hardware

Wednesday, November 17, 2010

ArduinoJS

Wednesday, November 17, 2010

ArduinoJS Stack

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

• Node-Serial (Chris Williams)

• Node

• Websockets (Socket.io)

http://github.com/nonken/arduinojs

Wednesday, November 17, 2010

Node

ArduinoJS

Websockets

Arduino

Browser

Serial connection

Light Motors Robots

One

API

to

rule

the

m a

ll

Wednesday, November 17, 2010

Node

ArduinoJS

Websockets

Arduino

Browser

Serial connection

Light Motors Robots

One

API

to

rule

the

m a

ll

Wednesday, November 17, 2010

available APIs

• digitalWrite(pin, val)

• digitalRead(pin, val)

• analogWrite(pin, val)

• analogRead(pin, val)

http://github.com/nonken/arduinojs

Wednesday, November 17, 2010

Try it out

• 10.0.2.1:8888

Wednesday, November 17, 2010

Wednesday, November 17, 2010

Only the beginning

Wednesday, November 17, 2010

Serverside JS

Wednesday, November 17, 2010

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

Raphaël can do this!

Wednesday, November 17, 2010

Getting started

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

•PhoneGap - http://phonegap.com

•http://blog.uxebu.com

•http://www.humanapi.org

Wednesday, November 17, 2010

Thank you

@nonken

Wednesday, November 17, 2010