© 2016 IBM Corporation
The
Cuddly, Throwable
Application Server
@holly_cummins
?
@holly_cummins
@holly_cummins
@holly_cummins
@holly_cummins
@holly_cummins
What is the Bluemix Garage?
(It’s not actually a Garage.)
@holly_cummins
@holly_cummins
http://ibm.biz/
bluemixgaragelondon
@holly_cummins
“Computers in the
future may weigh no
more than 1.5 tons.”
- Popular Mechanics,
1949
@holly_cummins
“I think there is a world
market for maybe five
computers.”
	
 	
 	
 	
— Thomas Watson, chairman of
IBM
1943
@holly_cummins
Then:
HARDware
@holly_cummins
Now:
Everyware
@holly_cummins
Next:
Connected-ware
@holly_cummins
Why care about the Internet
of Things?
@holly_cummins
Why care about the Internet
of Things?
This could really
benefit my business
@holly_cummins
Why care about the Internet
of Things?
This could really
benefit my business
This is so FUN and
COOL and OOH I
made it LIGHT UP!”
@holly_cummins
Poll-time.
@holly_cummins
@holly_cummins
+
@holly_cummins
+
@holly_cummins
It was cool.
But it couldn’t move
around much.
@holly_cummins
pcDuino
@holly_cummins
pcDuino
@holly_cummins
pcDuino
£60
@holly_cummins
pcDuino
£60
Dual-core
CPU
4 GB flash
storage
1 GB RAM
“Arduino-ish” pins
Wi-fi
Battery
connector
@holly_cummins
embedded
application
server
Sensors
Liberty
Architecture
@holly_cummins
A bit of textile
engineering.
@holly_cummins
A bit more textile
engineering.
@holly_cummins
Ta-daa!
@holly_cummins
Ta-daa!
Presenting:
The WebSphere Sphere
@holly_cummins
Ta-daa!
Presenting:
The WebSphere Sphere
(“the cuddly application server”)
@holly_cummins
Ta-daa!
Presenting:
The WebSphere Sphere
(“the cuddly application server”)(“the world’s first throwable application server”)
@holly_cummins
@holly_cummins
Throwable technology.
Not so silly after all.
@holly_cummins
Remind you of
anything?
@holly_cummins
Not really.
It’s very lumpy, isn’t it?
@holly_cummins
It’s a computer case
@holly_cummins
Interfacing the ball to
the computer
LED sequins
@holly_cummins
Soft circuits
@holly_cummins
Soft circuits
Conductive thread
@holly_cummins
Soft circuits
£6.78
Conductive thread
@holly_cummins
Soft circuits
£6.78
Conductive thread
Stainless steel
@holly_cummins
Soft circuits
£6.78
Conductive thread
Solderable
Stainless steel
@holly_cummins
Soft circuits
£6.78
Conductive thread
Solderable
Sewable
Stainless steel
@holly_cummins
http://pcduino.local
@holly_cummins
–My Mother
“Holly, why would
anyone want an
application server in
a cuddly ball?”
@holly_cummins
Who wouldn’t want an
application server in
a cuddly ball?
@holly_cummins
So … did it work?
@holly_cummins
So … did it work?
@holly_cummins
So … did it work?
pcDuino could
never display on
any monitor.
@holly_cummins
… and then what happened?
@holly_cummins
… and then what happened?
Wires
snapped.
Many times.
@holly_cummins
… and then what happened?
Wires
snapped.
Many times.
Inside a unit that had to
be disassembled before
any repair could be done.
@holly_cummins
… and then what happened?
• Connectors are not as easy as
one might hope
@holly_cummins
… and then what happened?
• Connectors are not as easy as
one might hopePcDuino
battery
interface
@holly_cummins
… and then what happened?
• Connectors are not as easy as
one might hope
Popular
embeddable
battery
PcDuino
battery
interface
@holly_cummins
… and then what happened?
• Connectors are not as easy as
one might hope
Popular
embeddable
battery
PcDuino
battery
interface
@holly_cummins
… and then what happened?
• Connectors are not as easy as
one might hope
Popular
embeddable
battery
PcDuino
battery
interface
JST-PH
@holly_cummins
… and then what happened?
• Connectors are not as easy as
one might hope
Popular
embeddable
battery
PcDuino
battery
interface
JST-PH
@holly_cummins
… and then what happened?
• Connectors are not as easy as
one might hope
Popular
embeddable
battery
PcDuino
battery
interface
JST-PH
JST-SH
@holly_cummins
“The board features a
difficult-to-get JST-SH
connector. You won't
find a battery with a
ready-made five-pin
JST-SH connector. ”
	
 	
 	
 	
http://wt.tuxomania.net
@holly_cummins
“The board features a
difficult-to-get JST-SH
connector. You won't
find a battery with a
ready-made five-pin
JST-SH connector. ”
	
 	
 	
 	
http://wt.tuxomania.net
!&!^@*!
@holly_cummins
It’s ok! I wired in a
battery.
@holly_cummins
… and then what happened?
LiPoly battery.
Standard 3.3V output.
@holly_cummins
… and then what happened?
Battery voltage isn’t
enough for LEDs.
Or sensors.
LiPoly battery.
Standard 3.3V output.
@holly_cummins
@holly_cummins
It’s ok!
I used a USB battery.
@holly_cummins
It’s ok!
I used a USB battery.
@holly_cummins
It’s ok!
I used a USB battery.
Un-covered metal batteries short pins.
@holly_cummins
It’s ok!
I added a sock.
@holly_cummins
It’s ok!
I added a sock.
@holly_cummins
It’s ok!
I added a sock.
Child will never miss it.
I’ve fixed this for you.
S
I’ve fixed this for you.
@holly_cummins
A USB power
connector lived
here
… and then what happened?
@holly_cummins
… and then what happened?
Another USB
power connector
lived here
@holly_cummins
… and then what happened?
What does that mean in
practice?
@holly_cummins
… and then what happened?
What does that mean in
practice?
Normally, 0 =
bounce.
With insufficient
voltage, pin is
always 0.
@holly_cummins
… and then what happened?
So it infinitely … oh.
Oh dear.
@holly_cummins
… and then what happened?
@holly_cummins
… and then what happened?
@holly_cummins
… and then what happened?
Motion sensor started
smoking, stopped working.
Had to buy a new one.
@holly_cummins
pcDuino stopped working.
Had to buy a new one :(
… and then what happened?
@holly_cummins
–My mother
“Holly, I saw a video of your
sphere talk.
I thought you handled the fact
that the demo failed really well.
Are there any videos where it
actually works?”
@holly_cummins
… and then what happened?
@holly_cummins
… and then what happened?
It worked faultlessly.
Twice in a row.
@holly_cummins
pcDuino
useful stuff
The physical world …
@holly_cummins
pcDuino
useful stuff
The physical world …
bulky protective
padding
@holly_cummins
pcDuino
useful stuff
… doesn’t fit in hand-luggage.
The physical world …
bulky protective
padding
@holly_cummins
… and then what happened?
@holly_cummins
… and then what happened?
@holly_cummins
… and then what happened?
Not supposed
to look like
that.
@holly_cummins
… and then what happened?
Pin on power board snapped.
Remnants of pin in PCB hole.
Not supposed
to look like
that.
@holly_cummins
… and then what happened?
@holly_cummins
Solder burns on kitchen counter.
… and then what happened?
@holly_cummins
… and then what happened?
@holly_cummins
… and then what happened?
No power to pcDuino.
@holly_cummins
… and then what happened?
It’s ok! I bought a better
powerboost.
@holly_cummins
… and then what happened?
@holly_cummins
… and then what happened?
No power to pcDuino.
Still.
@holly_cummins
… and then what happened?
There’s actually a hole in
the battery under all that
tape.
@holly_cummins
What could possibly go
wrong with a damaged
LiPo battery?
@holly_cummins
It’s ok! I bought a new battery.
(and the damaged one isn’t in my house anymore)
@holly_cummins
It’s ok! I bought a new battery.
(and the damaged one isn’t in my house anymore)
It’s ok! I bought two new batteries.
@holly_cummins
- My partner
“Holly, I keep telling you
you should refuse to do
this talk anymore.”
@holly_cummins
- My partner
“Holly, I keep telling you
you should refuse to do
this talk anymore.”
(I didn’t even tell him about the exploding batteries.)
@holly_cummins
IoT development checklist
@holly_cummins
Look before you leap.
IoT development checklist
@holly_cummins
Look before you leap.
You will need:
IoT development checklist
@holly_cummins
Look before you leap.
You will need:
• Spare money
IoT development checklist
@holly_cummins
Look before you leap.
You will need:
• Spare money
• A lot of time
IoT development checklist
@holly_cummins
Look before you leap.
You will need:
• Spare money
• A lot of time
• A high tolerance for stress
IoT development checklist
@holly_cummins
–Thomas Edison
I have not failed.
I've just found 10,000
ways that won't work.
@holly_cummins
But …
what does
it all mean?
http://www.commitstrip.com/en/2016/05/26/the-internet-of-things-a-revolution/
@holly_cummins
This is
important.
@holly_cummins
This is
important-ish.
@holly_cummins
@holly_cummins
Single-board
computers are an
amazing revolution.
@holly_cummins
Single-board
computers are an
amazing revolution.
@holly_cummins
Single-board
computers are an
amazing revolution.
Application servers are
lighter than you think.
@holly_cummins
Single-board
computers are an
amazing revolution.
Application servers are
lighter than you think.
@holly_cummins
Single-board
computers are an
amazing revolution.
Application servers are
lighter than you think.
Java EE is really
handy.
@holly_cummins
@holly_cummins
@holly_cummins
@holly_cummins
@holly_cummins
@holly_cummins
@holly_cummins
WebSphere Liberty installs only the Java EE features needed.
@holly_cummins
WebSphere Liberty installs only the Java EE features needed.
@holly_cummins
WebSphere Liberty installs only the Java EE features needed.
For my application, that’s a lot of features.
@holly_cummins
WebSphere Liberty installs only the Java EE features needed.
For my application, that’s a lot of features.
@holly_cummins
WebSphere Liberty installs only the Java EE features needed.
For my application, that’s a lot of features.
(I used a lot of programming models. )
@holly_cummins
@holly_cummins
But is it IoT?
@holly_cummins
embedded
application
server
Sensors
Liberty
Architecture
@holly_cummins
@holly_cummins
@holly_cummins
Thing
@holly_cummins
Embedded thing
@holly_cummins
Very very embedded thing
@holly_cummins
Very very embedded thing
Network, but not internet
@holly_cummins
@holly_cummins
No machine-to-machine
@holly_cummins
Sensors
@holly_cummins
Sensors
@holly_cummins
http://sphere.mybluemix.net/
@holly_cummins
Bluemix and IoT
@holly_cummins
// parse VCAP_SERVICES
String VCAP_SERVICES = System.getenv("VCAP_SERVICES");
JSONObject vcap = new JSONObject(VCAP_SERVICES);
JSONArray json = vcap.getJSONArray("iotf-service");
JSONObject credentials =
json.getJSONObject(0).getJSONObject("credentials");
String host = (String) credentials.get("mqtt_host");
Integer port = (Integer) credentials.get("mqtt_u_port");
…
MqttClient client = new MqttClient(uri, id);
MqttConnectOptions opts = new MqttConnectOptions();
opts.setUserName(username);
opts.setPassword(password.toCharArray());
client.connect(opts);
client.setCallback(this);
client.subscribe("iot-2/type/+/id/+/evt/+/fmt/+");
Everything is a service
(12-factor style)
@holly_cummins
www.wasdev.net
Any questions?
www.wasdev.net
ibm.biz/bluemixgaragelondon
https://github.com/holly-cummins/throwable-application-server
@holly_cummins

The Cuddly Throwable Application Server