Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Realtime Geospatial Applications using Open Source tools

A walkthrough an implementation of a realtime geospatial system using open source tools
by

Ragi Yaser Burhum Espinoza

on 14 October 2012

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Realtime Geospatial Applications using Open Source tools

photo credit Nasa / Goddard Space Flight Center / Reto Stöckli Realtime Tracking of Geospatial Objects What do we mean by "realtime"? A "traditional" geospatial web stack Back to the
Computer Science Basics Architecture
for realtime tracking Demos! Ragi Burhum Ragi Yaser Burhum
@rburhum Who Am I ? Ragi Yaser Burhum ESRI for several years (Professional Services and Core GeoDatabase)
Microsoft Game Studios (Flight Simulator)
Startups related to Geo
Run Small Consulting Company for GIS problems (Burhum LLC)
All around Open Source fan (OSGeo Charter Member / Contributor)
Co-Founder of venture backed Luxury E-commerce Company (ModeWalk.com)
Co-Founder of GIS Company specializing in Mobile Data Collection and Realtime tracking (AmigoCloud) Definition of "realtime" (computing) In computer science, real-time computing (RTC), or reactive computing, is the study of hardware and software systems that are subject to a "real-time constraint"— e.g. operational deadlines from event to system response. Real-time programs must guarantee response within strict time constraints. "Common" internet-approved definition nowadays "Wow, this sh*it is fast!!! It is in realtime!" Stateless vs Stateful (rambling about connections & protocols alert!) Stateless protocol "In computing, a stateless protocol is a communications protocol that treats each request as an independent transaction that is unrelated to any previous request so that the communication consists of independent pairs of requests and responses. A stateless protocol does not require the server to retain session information or status about each communications partner for the duration of multiple requests." Popular stateless protocols/architectures HTTP is a stateless protocol
REST is a stateless architecture
SOAP is a stateless architecture Stateful protocol A stateful protocol is a protocol in which part of the data that is exchanged between the client and the server systems includes state information. Both systems track the state of the communication session. Popular stateful protocol/architectures TCP is a stateful protocol
SSH is a stateful protocol
telnet is a stateful protocol
ftp is a stateful protocol
WebSockets is a stateful protocol
WebSockets allow stateful architectures Realtime tracking applications are inherently stateful Stateless vs Stateful connections Usually implemented with flash or java sockets
Naive programmers resort to timers and auto-refresh rates that will not scale and are unnecessarily traffic heavy
Require a server push
Requires a stateful architecture Event-driven frameworks

We can do a server push... but how do we know when to do it?!?!

An event has to occur (e.g a car moved) that triggers the server push to the right client.

This is the realm of event driven-frameworks! A WebSocket client (i.e any modern browser) and a WebSocket-enabled server solve the state problem. Event-driven frameworks (2) node.js (javascript)
EventMachine (Ruby)
Twisted (Python) Require a different programming style and this generates frustration automatically (new language, different programming libraries) Examples: So what if I want to use my favorite popular web framework? Do it! Combine them both! Making both frameworks interact nicely
with... a message queue! Adding a realtime component to our original geo-architecture Websockets
node.js (server)
socket.io (client) PubSub Queue
Redis @rburhum
ragi@amigocloud.com
Full transcript