SlideShare a Scribd company logo
The Past, Present and
Future of Real-Time
Apps &
Communications
FOWA Boston 2015
1 / 97
@leggetter
Real-Time FOWA
2 / 97
@leggetter
5 talks on Real-Time
Real-Time FOWA
2 / 97
@leggetter
5 talks on Real-Time 4 talks on IoT
Real-Time FOWA
2 / 97
@leggetter
5 talks on Real-Time 4 talks on IoT
Real-Time FOWA
21 talks at FOWA 2105
2 / 97
@leggetter
5 talks on Real-Time 4 talks on IoT
Real-Time FOWA
21 talks at FOWA 2105
Over 40%talks on Real-Time
2 / 97
@leggetter
PHIL @LEGGETTER
Head of Developer Relations
4 / 97
@leggetter
5 / 97
@leggetter
Realtime Web Apps (Past)
“The World Wide Web (www) is an information
space where documents and other web resources
are identified by URLs, interlinked by hypertext
links, and can be accessed via the Internet
6 / 97
@leggetter
Realtime Web Apps
7 / 97
@leggetter
Realtime Web Apps
↓
s/Web/Internet
7 / 97
@leggetter
Realtime Web Apps
↓
s/Web/Internet
↓
Realtime Internet Apps
7 / 97
@leggetter
When do we need Realtime?
8 / 97
@leggetter
Data
Is there a timely nature to the data?
9 / 97
@leggetter
User Experience
Is there a timely nature to the experience?
10 / 97
@leggetter
Realtime is required when there's a Need or
Demand for:
Up to date information
Interaction to maintain engagement (UX)
11 / 97
@leggetter
These aren't new Needs or Demands
But...
12 / 97
@leggetter
These aren't new Needs or Demands
But...
The Internet
12 / 97
@leggetter
13 / 97
@leggetter
14 / 97
@leggetter
15 / 97
@leggetter
HTTP was better. But many wanted more.
16 / 97
@leggetter
17 / 97
@leggetter
18 / 97
@leggetter
19 / 97
@leggetter
HTTP wasn't enough!
HTTP - request/response paradigm
Keeping persistent HTTP connections alive
No cross-browser XMLHttpRequest
2 connection limit
No browser cross origin support
General cross browser incompatibilities
20 / 97
@leggetter
Hacks & Tricks
Java Applets
Flash
HTTP Hacks
21 / 97
@leggetter
Then Real-Time Went Mainstream
22 / 97
@leggetter
Social
23 / 97
@leggetter
Technology Advancements
Memory & CPU speed and cost
The cloud
Browser standardisation & enhancements
Any client can use the standards
24 / 97
@leggetter
25 / 97
@leggetter
MASSIVE Increase in Internet Usage
26 / 97
@leggetter
Internet Usage (per day)
200 billion emails
27 / 97
@leggetter
Internet Usage (per day)
200 billion emails
7 million blog posts written†
500 million tweets
27 / 97
@leggetter
Internet Usage (per day)
200 billion emails
7 million blog posts written†
500 million tweets
55 million Facebook status updates
5 billion Google+ +1's
60 million Instagram photos posted
2 billion minutes spent on Skype
33 million hours of Netflix watched
200 million hours of YouTube watched
27 / 97
@leggetter
28 / 97
@leggetter
Realtime Apps in 2015
29 / 97
@leggetter
Realtime Apps in 2015 (Present)
Real-time Use Cases
30 / 97
@leggetter
Realtime Apps in 2015 (Present)
Real-time Use Cases
Application Communication Patterns
30 / 97
@leggetter
Signalling
31 / 97
@leggetter
0:00 32 / 97
@leggetter
Internet ^5 Machine
talky.io
33 / 97
@leggetter
Communication Pattern:
Simple Messaging
34 / 97
@leggetter
Client
var ws = new WebSocket('ws://localhost/');
35 / 97
@leggetter
Client
var ws = new WebSocket('ws://localhost/');
ws.onmessage = function(evt) {
var data = JSON.parse(evt.data);
35 / 97
@leggetter
Client
var ws = new WebSocket('ws://localhost/');
ws.onmessage = function(evt) {
var data = JSON.parse(evt.data);
if(data.action) {
// ^5
}
35 / 97
@leggetter
Client
var ws = new WebSocket('ws://localhost/');
ws.onmessage = function(evt) {
var data = JSON.parse(evt.data);
if(data.action) {
// ^5
}
else if(data.peerId) {
var connectTo = data.peerId;
}
};
35 / 97
@leggetter
Client
var ws = new WebSocket('ws://localhost/');
ws.onmessage = function(evt) {
var data = JSON.parse(evt.data);
if(data.action) {
// ^5
}
else if(data.peerId) {
var connectTo = data.peerId;
}
};
Server
// server
server.on('connection', function(socket){
35 / 97
@leggetter
Client
var ws = new WebSocket('ws://localhost/');
ws.onmessage = function(evt) {
var data = JSON.parse(evt.data);
if(data.action) {
// ^5
}
else if(data.peerId) {
var connectTo = data.peerId;
}
};
Server
// server
server.on('connection', function(socket){
socket.send(JSON.stringify({action: 'high-5'}));
});
35 / 97
@leggetter
36 / 97
@leggetter
Notifications
37 / 97
@leggetter
Communication Pattern:
Publish-Subscribe (PubSub)
38 / 97
@leggetter
Client
var client = new Client('http://localhost:8000/');
39 / 97
@leggetter
Client
var client = new Client('http://localhost:8000/');
client.subscribe('news', function(data) {
39 / 97
@leggetter
Client
var client = new Client('http://localhost:8000/');
client.subscribe('news', function(data) {
console.log(data.headline);
});
39 / 97
@leggetter
Client
var client = new Client('http://localhost:8000/');
client.subscribe('news', function(data) {
console.log(data.headline);
});
Server
server.publish('news', {headline: 'Pusher Rocks!'});
39 / 97
@leggetter
40 / 97
@leggetter
Activity Streams
41 / 97
@leggetter
Communication Pattern
Evented PubSub
42 / 97
@leggetter
Client
var pusher = new Pusher(APP_KEY);
var channel = pusher.subscribe('status');
43 / 97
@leggetter
Client
var pusher = new Pusher(APP_KEY);
var channel = pusher.subscribe('status');
channel.bind('created', function(data) {
// Add activity to UI
});
43 / 97
@leggetter
Client
var pusher = new Pusher(APP_KEY);
var channel = pusher.subscribe('status');
channel.bind('created', function(data) {
// Add activity to UI
});
channel.bind('updated', function(data) {
// Update activity
});
channel.bind('deleted', function(data) {
// Remove activity
});
43 / 97
@leggetter
Client
var pusher = new Pusher(APP_KEY);
var channel = pusher.subscribe('status');
channel.bind('created', function(data) {
// Add activity to UI
});
channel.bind('updated', function(data) {
// Update activity
});
channel.bind('deleted', function(data) {
// Remove activity
});
Server
pusher.trigger('status', 'created', {text: 'PubSub Rocks!', id: 1});
43 / 97
@leggetter
Client
var pusher = new Pusher(APP_KEY);
var channel = pusher.subscribe('status');
channel.bind('created', function(data) {
// Add activity to UI
});
channel.bind('updated', function(data) {
// Update activity
});
channel.bind('deleted', function(data) {
// Remove activity
});
Server
pusher.trigger('status', 'created', {text: 'PubSub Rocks!', id: 1});
pusher.trigger('status', 'updated', {text: 'Evented PubSub Rocks!', id: 1});
pusher.trigger('status', 'deleted', {id: 1});
43 / 97
@leggetter
Data Visualizations
44 / 97
@leggetter
45 / 97
@leggetter
46 / 97
Chat
@leggetter
47 / 97
@leggetter
PubSub vs. Evented PubSub
48 / 97
@leggetter
49 / 97
@leggetter
50 / 97
@leggetter
PubSub
client.subscribe('devexp-channel', function(data) {
if(data.eventType === 'chat-message') {
addMessage(data.message);
}
51 / 97
@leggetter
PubSub
client.subscribe('devexp-channel', function(data) {
if(data.eventType === 'chat-message') {
addMessage(data.message);
}
else if(data.eventType === 'channel-purposed-changed') {
updateRoomTitle(data.purpose);
}
else if(/* and so on */) {
}
})
51 / 97
@leggetter
PubSub
client.subscribe('devexp-channel', function(data) {
if(data.eventType === 'chat-message') {
addMessage(data.message);
}
else if(data.eventType === 'channel-purposed-changed') {
updateRoomTitle(data.purpose);
}
else if(/* and so on */) {
}
})
Evented PubSub
var channel = pusher.subscribe('devexp-channel');
channel.bind('chat-message', addMessage);
channel.bind('channel-purposed-changed', updateChannelPurpose);
51 / 97
@leggetter
PubSub
client.subscribe('devexp-channel', function(data) {
if(data.eventType === 'chat-message') {
addMessage(data.message);
}
else if(data.eventType === 'channel-purposed-changed') {
updateRoomTitle(data.purpose);
}
else if(/* and so on */) {
}
})
Evented PubSub
var channel = pusher.subscribe('devexp-channel');
channel.bind('chat-message', addMessage);
channel.bind('channel-purposed-changed', updateChannelPurpose);
channel.bind('current-topic-changed', updateChannelTopic);
channel.bind('user-online', userOnline);
channel.bind('user-offline', userOffline);
51 / 97
@leggetter
52 / 97
@leggetter
Real-Time Location Tracking
53 / 97
@leggetter
Multi-User Collaboration
54 / 97
@leggetter
55 / 97
@leggetter
Multiplayer Games / Art
56 / 97
@leggetter
Communication Pattern
Data Synchronisation (DataSync)
57 / 97
@leggetter
Client
var sync = new DataSync();
var ref = sync.get('document-1');
58 / 97
@leggetter
Client
var sync = new DataSync();
var ref = sync.get('document-1');
ref.on(function(val) {
console.log(val)
});
58 / 97
@leggetter
Client
var sync = new DataSync();
var ref = sync.get('document-1');
ref.on(function(val) {
console.log(val)
});
ref.put({text: 'Hello, DataSync!'}).key('unique-key');
58 / 97
@leggetter
Client
var sync = new DataSync();
var ref = sync.get('document-1');
ref.on(function(val) {
console.log(val)
});
ref.put({text: 'Hello, DataSync!'}).key('unique-key');
ref.path('unique-key').set(null);
58 / 97
@leggetter
Client
var sync = new DataSync();
var ref = sync.get('document-1');
ref.on(function(val) {
console.log(val)
});
ref.put({text: 'Hello, DataSync!'}).key('unique-key');
ref.path('unique-key').set(null);
Framework handles updates to other clients
58 / 97
@leggetter
59 / 97
@leggetter
Communication Pattern
RPC/RMI
Use Cases?
60 / 97
@leggetter
61 / 97
@leggetter
Client
rmi({
62 / 97
@leggetter
Client
rmi({
newMessage: function(message) {
console.log(message);
}
})
62 / 97
@leggetter
Client
rmi({
newMessage: function(message) {
console.log(message);
}
})
.on('remote', function(remote) {
62 / 97
@leggetter
Client
rmi({
newMessage: function(message) {
console.log(message);
}
})
.on('remote', function(remote) {
remote.sendMessage({text: 'dnode baby!'});
});
62 / 97
@leggetter
Client
rmi({
newMessage: function(message) {
console.log(message);
}
})
.on('remote', function(remote) {
remote.sendMessage({text: 'dnode baby!'});
});
Server
var remotes = [];
rmi({
sendMessage: function(message) {
62 / 97
@leggetter
Client
rmi({
newMessage: function(message) {
console.log(message);
}
})
.on('remote', function(remote) {
remote.sendMessage({text: 'dnode baby!'});
});
Server
var remotes = [];
rmi({
sendMessage: function(message) {
remotes.forEach(function(remote) {
remote.newMessage(message);
});
}
})
62 / 97
@leggetter
Client
rmi({
newMessage: function(message) {
console.log(message);
}
})
.on('remote', function(remote) {
remote.sendMessage({text: 'dnode baby!'});
});
Server
var remotes = [];
rmi({
sendMessage: function(message) {
remotes.forEach(function(remote) {
remote.newMessage(message);
});
}
})
.on('remote', function(remote) {
remotes.push(remote);
}); 62 / 97
@leggetter
63 / 97
@leggetter
Choosing a Communication Pattern
64 / 97
@leggetter
Communication Patterns
65 / 97
@leggetter
Communication Patterns & Use Cases
66 / 97
@leggetter
Real-Time is Essential
67 / 97
@leggetter
Real-Time is Essential
67 / 97
@leggetter
Max Williams (@maxthelion) - CEO, Pusher
‘I'm not sure I believe that there is such a thing as
"realtime apps" any more. Apps either update
instantly and smoothly, or they appear broken. I feel
that "realtime" as a feature has moved down the
Kano graph. It is much more of an expectation, than
an "exciter".
68 / 97
@leggetter
69 / 97
@leggetter
The Internet...
70 / 97
@leggetter
The Internet...
1. is our main communications platform
70 / 97
@leggetter
The Internet...
1. is our main communications platform
2. is becoming our main entertainment
platform
70 / 97
@leggetter
The Internet...
1. is our main communications platform
2. is becoming our main entertainment
platform
3. should give users real-time experiences
70 / 97
@leggetter
Future
71 / 97
@leggetter
Network Infrastructure & Protocols
Reliability
Speed
Beyond HTTP
HTTP2
72 / 97
@leggetter
Bayeux
DDP
dNode
EPCP
GRIP
MQTT
Pusher Protocol
STOMP
SignalR Protocol
WAMP (Web App Messaging Protocol)
XMPP (various)
Communication Pattern Protocol
Standardisation
73 / 97
@leggetter
74 / 97
@leggetter
GitHub
Iron.io
MailChimp
MailJet
PagerDuty
Pusher
SendGrid
Twilio
Real-Time APIs
75 / 97
@leggetter
76 / 97
@leggetter
More "Things"!
77 / 97
@leggetter
The Physical Web
78 / 97
@leggetter
IoT, Apps & Developers
79 / 97
@leggetter
A thing can be anything
80 / 97
@leggetter
A thing can be anything
Sensors
Appliances
Vehicles
Smart Phones
Devices (Arduino, Electric Imp, Raspberry Pi etc.)
80 / 97
@leggetter
A thing can be anything
Sensors
Appliances
Vehicles
Smart Phones
Devices (Arduino, Electric Imp, Raspberry Pi etc.)
Servers
Browsers
Apps: Native, Web, running anywhere
80 / 97
@leggetter
The Majority of code we'll write will still be
for "Apps"
Configuring
Monitoring
Interacting
App Logic
81 / 97
@leggetter
Real-Time Use Case Evolution
Notifications & Signalling
Activity Streams
Data Viz & Polls
Chat
Collaboration
Multiplayer Games
82 / 97
@leggetter
Notifications/Activity Streams -> Actions
83 / 97
@leggetter
The end of apps as we know it - Intercom
Subscriptions
84 / 97
@leggetter
Personalised Event Streams
85 / 97
@leggetter
Unified UIs
86 / 97
@leggetter
Chat for Everything
87 / 97
@leggetter
549M MAUs
10k integrations
app-within-an-app model
taxi, order food, tickets, games etc.
WeChat
88 / 97
@leggetter
Chat Integrations
89 / 97
@leggetter
Siri
Google Now
Microsoft Cortana
Facebook M
Chat "Virtual Assistants"
90 / 97
@leggetter
Chat has evolved. Chat is now a platform!
91 / 97
@leggetter
Multi-Device Experiences
92 / 97
@leggetter
Ben Foxall - A conceptual future for the multi-device web (FutureJS 2014)
93 / 97
@leggetter
Summary
94 / 97
@leggetter
Summary
The Internet is our communications platform
94 / 97
@leggetter
Summary
The Internet is our communications platform
Easier than ever to innovate on this platform
94 / 97
@leggetter
Summary
The Internet is our communications platform
Easier than ever to innovate on this platform
Users expect real-time experiences
94 / 97
@leggetter
Summary
The Internet is our communications platform
Easier than ever to innovate on this platform
Users expect real-time experiences
Future:
Infrastructure
standards
IoT
Event streams
Use case evolution
Chat everywhere
94 / 97
@leggetter
Realtime Internet Apps === IoT
Web Browsers +
Web Servers +
Native Apps +
Devices +
...
95 / 97
@leggetter
The Past, Present and Future of Real-Time Apps
& Communications
Thanks! Feedback & Questions!
PHIL @LEGGETTER
Head of Evangelism
96 / 97
@leggetter
References
Pusher
These slides - leggetter.github.io/realtime-internet-apps/
Mary Meeker's internet trend report
Kano model
DDP Protocol
Socket.IO protocol
MQTT
Real-Time Web Tech Guide
The end of apps as we know them - Intercom
97 / 97
@leggetter

More Related Content

Similar to The Past, Present and Future of Real-Time Apps and Communications

Introduction to Stream Processing
Introduction to Stream ProcessingIntroduction to Stream Processing
Introduction to Stream Processing
Guido Schmutz
 
Gemfire
GemfireGemfire
GemfireFNian
 
Evolution of a big data project
Evolution of a big data projectEvolution of a big data project
Evolution of a big data projectMichael Peacock
 
Data Science on Google Cloud Platform
Data Science on Google Cloud PlatformData Science on Google Cloud Platform
Data Science on Google Cloud Platform
Virot "Ta" Chiraphadhanakul
 
Scalding Big (Ad)ta
Scalding Big (Ad)taScalding Big (Ad)ta
Scalding Big (Ad)ta
b0ris_1
 
The Full Power of REST: Executing Code On The Client With HyperMap
The Full Power of REST: Executing Code On The Client With HyperMapThe Full Power of REST: Executing Code On The Client With HyperMap
The Full Power of REST: Executing Code On The Client With HyperMap
Nordic APIs
 
Vaadin 7 by Joonas Lehtinen
Vaadin 7 by Joonas LehtinenVaadin 7 by Joonas Lehtinen
Vaadin 7 by Joonas Lehtinen
Codemotion
 
Get Real: Adventures in realtime web apps
Get Real: Adventures in realtime web appsGet Real: Adventures in realtime web apps
Get Real: Adventures in realtime web apps
daviddemello
 
Pushing Datatothe Browserwith Comet Ajax W
Pushing Datatothe Browserwith Comet Ajax WPushing Datatothe Browserwith Comet Ajax W
Pushing Datatothe Browserwith Comet Ajax Wrajivmordani
 
Streaming Visualization
Streaming VisualizationStreaming Visualization
Streaming Visualization
Guido Schmutz
 
Tools, Tips and Techniques for Developing Real-time Apps. Phil Leggetter
Tools, Tips and Techniques for Developing Real-time Apps. Phil LeggetterTools, Tips and Techniques for Developing Real-time Apps. Phil Leggetter
Tools, Tips and Techniques for Developing Real-time Apps. Phil Leggetter
Future Insights
 
Building Event-Driven (Micro)Services with Apache Kafka
Building Event-Driven (Micro)Services with Apache KafkaBuilding Event-Driven (Micro)Services with Apache Kafka
Building Event-Driven (Micro)Services with Apache Kafka
Guido Schmutz
 
Web automation with #d8rules (European Drupal Days 2015)
Web automation with #d8rules (European Drupal Days 2015)Web automation with #d8rules (European Drupal Days 2015)
Web automation with #d8rules (European Drupal Days 2015)
Eugenio Minardi
 
Streaming Visualisation
Streaming VisualisationStreaming Visualisation
Streaming Visualisation
Guido Schmutz
 
Big Data & Machine Learning Pipelines: A Tale of Lambdas, Kappas and Pancakes
Big Data & Machine Learning Pipelines: A Tale of Lambdas, Kappas and PancakesBig Data & Machine Learning Pipelines: A Tale of Lambdas, Kappas and Pancakes
Big Data & Machine Learning Pipelines: A Tale of Lambdas, Kappas and Pancakes
Osama Khan
 
Deep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway SpecificationDeep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway Specification
Gerardo Pardo-Castellote
 
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
MSDEVMTL
 
Apache Flume - Streaming data easily to Hadoop from any source for Telco oper...
Apache Flume - Streaming data easily to Hadoop from any source for Telco oper...Apache Flume - Streaming data easily to Hadoop from any source for Telco oper...
Apache Flume - Streaming data easily to Hadoop from any source for Telco oper...
DataWorks Summit
 
Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web Development
Robert J. Stein
 
070416 Egu Vienna Husar
070416 Egu Vienna Husar070416 Egu Vienna Husar
070416 Egu Vienna Husar
Rudolf Husar
 

Similar to The Past, Present and Future of Real-Time Apps and Communications (20)

Introduction to Stream Processing
Introduction to Stream ProcessingIntroduction to Stream Processing
Introduction to Stream Processing
 
Gemfire
GemfireGemfire
Gemfire
 
Evolution of a big data project
Evolution of a big data projectEvolution of a big data project
Evolution of a big data project
 
Data Science on Google Cloud Platform
Data Science on Google Cloud PlatformData Science on Google Cloud Platform
Data Science on Google Cloud Platform
 
Scalding Big (Ad)ta
Scalding Big (Ad)taScalding Big (Ad)ta
Scalding Big (Ad)ta
 
The Full Power of REST: Executing Code On The Client With HyperMap
The Full Power of REST: Executing Code On The Client With HyperMapThe Full Power of REST: Executing Code On The Client With HyperMap
The Full Power of REST: Executing Code On The Client With HyperMap
 
Vaadin 7 by Joonas Lehtinen
Vaadin 7 by Joonas LehtinenVaadin 7 by Joonas Lehtinen
Vaadin 7 by Joonas Lehtinen
 
Get Real: Adventures in realtime web apps
Get Real: Adventures in realtime web appsGet Real: Adventures in realtime web apps
Get Real: Adventures in realtime web apps
 
Pushing Datatothe Browserwith Comet Ajax W
Pushing Datatothe Browserwith Comet Ajax WPushing Datatothe Browserwith Comet Ajax W
Pushing Datatothe Browserwith Comet Ajax W
 
Streaming Visualization
Streaming VisualizationStreaming Visualization
Streaming Visualization
 
Tools, Tips and Techniques for Developing Real-time Apps. Phil Leggetter
Tools, Tips and Techniques for Developing Real-time Apps. Phil LeggetterTools, Tips and Techniques for Developing Real-time Apps. Phil Leggetter
Tools, Tips and Techniques for Developing Real-time Apps. Phil Leggetter
 
Building Event-Driven (Micro)Services with Apache Kafka
Building Event-Driven (Micro)Services with Apache KafkaBuilding Event-Driven (Micro)Services with Apache Kafka
Building Event-Driven (Micro)Services with Apache Kafka
 
Web automation with #d8rules (European Drupal Days 2015)
Web automation with #d8rules (European Drupal Days 2015)Web automation with #d8rules (European Drupal Days 2015)
Web automation with #d8rules (European Drupal Days 2015)
 
Streaming Visualisation
Streaming VisualisationStreaming Visualisation
Streaming Visualisation
 
Big Data & Machine Learning Pipelines: A Tale of Lambdas, Kappas and Pancakes
Big Data & Machine Learning Pipelines: A Tale of Lambdas, Kappas and PancakesBig Data & Machine Learning Pipelines: A Tale of Lambdas, Kappas and Pancakes
Big Data & Machine Learning Pipelines: A Tale of Lambdas, Kappas and Pancakes
 
Deep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway SpecificationDeep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway Specification
 
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
 
Apache Flume - Streaming data easily to Hadoop from any source for Telco oper...
Apache Flume - Streaming data easily to Hadoop from any source for Telco oper...Apache Flume - Streaming data easily to Hadoop from any source for Telco oper...
Apache Flume - Streaming data easily to Hadoop from any source for Telco oper...
 
Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web Development
 
070416 Egu Vienna Husar
070416 Egu Vienna Husar070416 Egu Vienna Husar
070416 Egu Vienna Husar
 

More from Phil Leggetter

An Introduction to AAARRRP: A framework for Defining Your Developer Relations...
An Introduction to AAARRRP: A framework for Defining Your Developer Relations...An Introduction to AAARRRP: A framework for Defining Your Developer Relations...
An Introduction to AAARRRP: A framework for Defining Your Developer Relations...
Phil Leggetter
 
How APIs Enable Contextual Communications
How APIs Enable Contextual CommunicationsHow APIs Enable Contextual Communications
How APIs Enable Contextual Communications
Phil Leggetter
 
An Introduction to the AAARRRP Developer Relations Strategy Framework and How...
An Introduction to the AAARRRP Developer Relations Strategy Framework and How...An Introduction to the AAARRRP Developer Relations Strategy Framework and How...
An Introduction to the AAARRRP Developer Relations Strategy Framework and How...
Phil Leggetter
 
An Introduction to the AAARRRP Developer Relations Strategy Framework and How...
An Introduction to the AAARRRP Developer Relations Strategy Framework and How...An Introduction to the AAARRRP Developer Relations Strategy Framework and How...
An Introduction to the AAARRRP Developer Relations Strategy Framework and How...
Phil Leggetter
 
Contextual Communications: What, Why and How? Bristol JS
Contextual Communications: What, Why and How? Bristol JSContextual Communications: What, Why and How? Bristol JS
Contextual Communications: What, Why and How? Bristol JS
Phil Leggetter
 
What's the ROI of Developer Relations?
What's the ROI of Developer Relations?What's the ROI of Developer Relations?
What's the ROI of Developer Relations?
Phil Leggetter
 
Real-Time Web Apps & Symfony. What are your options?
Real-Time Web Apps & Symfony. What are your options?Real-Time Web Apps & Symfony. What are your options?
Real-Time Web Apps & Symfony. What are your options?
Phil Leggetter
 
Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015
Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015
Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015
Phil Leggetter
 
Real-Time Web Apps in 2015 & Beyond
Real-Time Web Apps in 2015 & BeyondReal-Time Web Apps in 2015 & Beyond
Real-Time Web Apps in 2015 & Beyond
Phil Leggetter
 
Why you should be using Web Components. And How - DevWeek 2015
Why you should be using Web Components. And How - DevWeek 2015Why you should be using Web Components. And How - DevWeek 2015
Why you should be using Web Components. And How - DevWeek 2015
Phil Leggetter
 
Patterns and practices for building enterprise-scale HTML5 apps
Patterns and practices for building enterprise-scale HTML5 appsPatterns and practices for building enterprise-scale HTML5 apps
Patterns and practices for building enterprise-scale HTML5 apps
Phil Leggetter
 
Fed London - January 2015
Fed London - January 2015Fed London - January 2015
Fed London - January 2015
Phil Leggetter
 
How to Build Single Page HTML5 Apps that Scale
How to Build Single Page HTML5 Apps that ScaleHow to Build Single Page HTML5 Apps that Scale
How to Build Single Page HTML5 Apps that Scale
Phil Leggetter
 
BladeRunnerJS Show & Tell
BladeRunnerJS Show & TellBladeRunnerJS Show & Tell
BladeRunnerJS Show & Tell
Phil Leggetter
 
Testing Ginormous JavaScript Apps - ScotlandJS 2014
Testing Ginormous JavaScript Apps - ScotlandJS 2014Testing Ginormous JavaScript Apps - ScotlandJS 2014
Testing Ginormous JavaScript Apps - ScotlandJS 2014
Phil Leggetter
 
How to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJSHow to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJS
Phil Leggetter
 
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Phil Leggetter
 
Building front-end apps that Scale - FOSDEM 2014
Building front-end apps that Scale - FOSDEM 2014Building front-end apps that Scale - FOSDEM 2014
Building front-end apps that Scale - FOSDEM 2014
Phil Leggetter
 
What Developers Want - Developers Want Realtime - BAPI 2012
What Developers Want - Developers Want Realtime - BAPI 2012What Developers Want - Developers Want Realtime - BAPI 2012
What Developers Want - Developers Want Realtime - BAPI 2012
Phil Leggetter
 
How the Realtime Web is influencing the future of communications
How the Realtime Web is influencing the future of communicationsHow the Realtime Web is influencing the future of communications
How the Realtime Web is influencing the future of communications
Phil Leggetter
 

More from Phil Leggetter (20)

An Introduction to AAARRRP: A framework for Defining Your Developer Relations...
An Introduction to AAARRRP: A framework for Defining Your Developer Relations...An Introduction to AAARRRP: A framework for Defining Your Developer Relations...
An Introduction to AAARRRP: A framework for Defining Your Developer Relations...
 
How APIs Enable Contextual Communications
How APIs Enable Contextual CommunicationsHow APIs Enable Contextual Communications
How APIs Enable Contextual Communications
 
An Introduction to the AAARRRP Developer Relations Strategy Framework and How...
An Introduction to the AAARRRP Developer Relations Strategy Framework and How...An Introduction to the AAARRRP Developer Relations Strategy Framework and How...
An Introduction to the AAARRRP Developer Relations Strategy Framework and How...
 
An Introduction to the AAARRRP Developer Relations Strategy Framework and How...
An Introduction to the AAARRRP Developer Relations Strategy Framework and How...An Introduction to the AAARRRP Developer Relations Strategy Framework and How...
An Introduction to the AAARRRP Developer Relations Strategy Framework and How...
 
Contextual Communications: What, Why and How? Bristol JS
Contextual Communications: What, Why and How? Bristol JSContextual Communications: What, Why and How? Bristol JS
Contextual Communications: What, Why and How? Bristol JS
 
What's the ROI of Developer Relations?
What's the ROI of Developer Relations?What's the ROI of Developer Relations?
What's the ROI of Developer Relations?
 
Real-Time Web Apps & Symfony. What are your options?
Real-Time Web Apps & Symfony. What are your options?Real-Time Web Apps & Symfony. What are your options?
Real-Time Web Apps & Symfony. What are your options?
 
Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015
Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015
Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015
 
Real-Time Web Apps in 2015 & Beyond
Real-Time Web Apps in 2015 & BeyondReal-Time Web Apps in 2015 & Beyond
Real-Time Web Apps in 2015 & Beyond
 
Why you should be using Web Components. And How - DevWeek 2015
Why you should be using Web Components. And How - DevWeek 2015Why you should be using Web Components. And How - DevWeek 2015
Why you should be using Web Components. And How - DevWeek 2015
 
Patterns and practices for building enterprise-scale HTML5 apps
Patterns and practices for building enterprise-scale HTML5 appsPatterns and practices for building enterprise-scale HTML5 apps
Patterns and practices for building enterprise-scale HTML5 apps
 
Fed London - January 2015
Fed London - January 2015Fed London - January 2015
Fed London - January 2015
 
How to Build Single Page HTML5 Apps that Scale
How to Build Single Page HTML5 Apps that ScaleHow to Build Single Page HTML5 Apps that Scale
How to Build Single Page HTML5 Apps that Scale
 
BladeRunnerJS Show & Tell
BladeRunnerJS Show & TellBladeRunnerJS Show & Tell
BladeRunnerJS Show & Tell
 
Testing Ginormous JavaScript Apps - ScotlandJS 2014
Testing Ginormous JavaScript Apps - ScotlandJS 2014Testing Ginormous JavaScript Apps - ScotlandJS 2014
Testing Ginormous JavaScript Apps - ScotlandJS 2014
 
How to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJSHow to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJS
 
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
 
Building front-end apps that Scale - FOSDEM 2014
Building front-end apps that Scale - FOSDEM 2014Building front-end apps that Scale - FOSDEM 2014
Building front-end apps that Scale - FOSDEM 2014
 
What Developers Want - Developers Want Realtime - BAPI 2012
What Developers Want - Developers Want Realtime - BAPI 2012What Developers Want - Developers Want Realtime - BAPI 2012
What Developers Want - Developers Want Realtime - BAPI 2012
 
How the Realtime Web is influencing the future of communications
How the Realtime Web is influencing the future of communicationsHow the Realtime Web is influencing the future of communications
How the Realtime Web is influencing the future of communications
 

Recently uploaded

A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Yara Milbes
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 

Recently uploaded (20)

A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 

The Past, Present and Future of Real-Time Apps and Communications