Context Automation and Personal Data Services
Upcoming SlideShare
Loading in...5
×
 

Context Automation and Personal Data Services

on

  • 889 views

One of the technologies that seems to be picking up steam lately is the PDS or personal data service. I believe it’s because the PDS is the centerpiece in a new kind of Internet; one where the ...

One of the technologies that seems to be picking up steam lately is the PDS or personal data service. I believe it’s because the PDS is the centerpiece in a new kind of Internet; one where the individual sees significant increased utility from the use of their personal data in their behalf instead of having it used against them. At the same time, the PDS offers increased privacy over the current regime. This talk describes how a PDS and the Evented Web can combine to provide significant utility and make people's lives easier my automating mundane tasks like choosing as service provider and scheduling an appointment for service.

Statistics

Views

Total Views
889
Views on SlideShare
889
Embed Views
0

Actions

Likes
0
Downloads
11
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • <br />
  • Indeed location has been one of the primary metaphors we&#x2019;ve used to describe the web. After all, a URL is a Uniform Resource LOCATOR. We use verbs like &#x201C;browse,&#x201D; &#x201C;go,&#x201D; &#x201C;locate,&#x201D; &#x201C;property,&#x201D; and even &#x201C;history&#x201D; that all have a property theme. <br /> <br />
  • <br />
  • mention purpose... <br />
  • The most important feature for this discussion is that each Web site is a silo. The location metaphor works fine when what you want to do is confined to that silo. But what happens when you need information from multiple places to accomplish your task? <br />
  • <br />
  • <br />
  • active clients can see all of the silos that a person interacts with. <br />
  • Some apps are just a Web site that takes up space on your phone&#x2019;s screen. Others offer capabilities that you can&#x2019;t get from a Web site. Those are the kind of experiences we want to explore. <br />
  • Because Personal Data Stores puts the user, not the server <br /> at the center they can serve as the active client <br />
  • <br />
  • But there&#x2019;s a huge gap... <br />
  • A PDS is literally a pain in the neck if all it does is manage data. <br /> How will all this work? We have a plan&#x2026;. <br />
  • A PDS is a pain in the neck without automation <br />
  • A PDS is a pain in the neck without automation <br />
  • A PDS is a pain in the neck without automation <br />
  • A PDS is a pain in the neck without automation <br />
  • A PDS is a pain in the neck without automation <br />
  • A PDS is a pain in the neck without automation <br />
  • A PDS is a pain in the neck without automation <br />
  • A PDS is a pain in the neck without automation <br />
  • A PDS is a pain in the neck without automation <br />
  • <br />
  • <br />
  • These apps all exist, loosely coupled, plumbed together in general ways <br /> Multiple APIs, endpoints <br /> <br />
  • These apps all exist, loosely coupled, plumbed together in general ways <br /> Multiple APIs, endpoints <br /> <br />
  • These apps all exist, loosely coupled, plumbed together in general ways <br /> Multiple APIs, endpoints <br /> <br />
  • These apps all exist, loosely coupled, plumbed together in general ways <br /> Multiple APIs, endpoints <br /> <br />
  • These apps all exist, loosely coupled, plumbed together in general ways <br /> Multiple APIs, endpoints <br /> <br />
  • These apps all exist, loosely coupled, plumbed together in general ways <br /> Multiple APIs, endpoints <br /> <br />
  • These apps all exist, loosely coupled, plumbed together in general ways <br /> Multiple APIs, endpoints <br /> <br />
  • These apps all exist, loosely coupled, plumbed together in general ways <br /> Multiple APIs, endpoints <br /> <br />
  • These apps all exist, loosely coupled, plumbed together in general ways <br /> Multiple APIs, endpoints <br /> <br />
  • These apps all exist, loosely coupled, plumbed together in general ways <br /> Multiple APIs, endpoints <br /> <br />
  • These apps all exist, loosely coupled, plumbed together in general ways <br /> Multiple APIs, endpoints <br /> <br />
  • These apps all exist, loosely coupled, plumbed together in general ways <br /> Multiple APIs, endpoints <br /> <br />
  • <br />
  • <br />
  • book on wishlist or maybe you just looked at it. <br />
  • book on wishlist or maybe you just looked at it. <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • but architecture isn&#x2019;t enough... <br />
  • <br />
  • <br />
  • in context, Sam seems to be saying that direct browser to web site interactions won&#x2019;t account for the majority of your business <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • apis are a recognition that you can&#x2019;t be a silo. You need to move beyond your Web site. <br />
  • <br />
  • Fortunately there&#x2019;s a way to make it easier. <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • book on wishlist or maybe you just looked at it. <br />
  • <br />
  • <br />
  • <br />
  • Since 1993 we&#x2019;ve been programming Web applications using CGI and similar systems. CGI provides very little structure and consequently there have been lots of different styles and patterns used. <br />
  • <br />
  • Web hooks and the event drive web <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • Remember we want to span multiple silos, so we need a browser piece as well <br />
  • <br />
  • <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • Endpoints raise events <br /> KNS responds to events by running rules <br />
  • <br />
  • No one&#x2019;s ever surprised me with a GUI <br />
  • No one&#x2019;s ever surprised me with a GUI <br />
  • No one&#x2019;s ever surprised me with a GUI <br />
  • No one&#x2019;s ever surprised me with a GUI <br />
  • No one&#x2019;s ever surprised me with a GUI <br /> Indirection allows us to fix problems once <br /> Languages are how programmers encapsulate problems and create abstractions <br />
  • <br />
  • No one&#x2019;s ever surprised me with a GUI <br /> Indirection allows us to fix problems once <br /> Languages are how programmers encapsulate problems and create abstractions <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • Mention efficiently executing these <br />
  • Pause here to talk about the expansiveness of each in KRL <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • Not to mention Javascript <br />
  • Not to mention Javascript <br />
  • Not to mention Javascript <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • Typically these are done in an ad hoc fashion. Some programming libraries and frameworks provide more help for this than others. In particular, managing data has gotten much easier due to standard library implementations for session data, but that&#x2019;s the easy part. <br />

Context Automation and Personal Data Services Context Automation and Personal Data Services Presentation Transcript

  • Context Automation & Personal Data Services Phillip J. Windley, Ph.D Founder and CTO Kynetx www.kynetx.com
  • people don’t want to go anywhere
  • they want to do something
  • Purpose requires more than servers
  • unifying framework active client data
  • Active Clients
  • Active Clients
  • Apps are an example of active clients
  • personal data
  • personal data
  • Personal Data Identity OAuth UMA
  • Automating Life Events* *props to Steve Fulling & David Siegel
  • Automating Life Events* Bad news from your radiologist... *props to Steve Fulling & David Siegel
  • Automating Life Events* Bad news from your radiologist... Choose surgeon *props to Steve Fulling & David Siegel
  • Automating Life Events* Bad news from your radiologist... Choose surgeon insurance *props to Steve Fulling & David Siegel
  • Automating Life Events* Bad news from your radiologist... Choose surgeon insurance reputation *props to Steve Fulling & David Siegel
  • Automating Life Events* Bad news from your radiologist... Choose surgeon insurance reputation Schedule appointment *props to Steve Fulling & David Siegel
  • Automating Life Events* Bad news from your radiologist... Choose surgeon insurance reputation Schedule appointment Confirm Appointment *props to Steve Fulling & David Siegel
  • Automating Life Events* Bad news from your radiologist... Choose surgeon insurance reputation Schedule appointment Confirm Appointment Send medical history *props to Steve Fulling & David Siegel
  • Automating Life Events* Bad news from your radiologist... Choose surgeon insurance reputation Schedule appointment Confirm Appointment Send medical history negotiation *props to Steve Fulling & David Siegel
  • Automating Life Events* Bad news from your radiologist... Choose surgeon insurance reputation Schedule appointment Confirm Appointment Send medical history negotiation Make payments *props to Steve Fulling & David Siegel
  • demo: project neck pain
  • Multiple coordinating and cooperating apps creating a holistic, purpose-centric experience
  • PDS
  • PDS paint Flickr
  • parse email PDS paint Flickr
  • TODO list parse email PDS paint Flickr
  • choose Dr TODO list parse email PDS paint Flickr
  • choose Dr confirm appt TODO list parse email PDS paint Flickr
  • choose Dr confirm appt TODO list reminders parse email PDS paint Flickr
  • choose Dr confirm appt TODO list reminders parse email PDS request info paint Flickr
  • choose Dr confirm appt TODO list reminders parse email PDS request info paint Flickr med history
  • choose Dr confirm appt TODO list reminders parse email PDS request info paint Flickr med history global config
  • Doctor Choices Action Items Select Doctor Set Flickr Appointment PDS Activity Stream Phone Confirm TODO List Information Transfer Dashboard Global Config
  • Doctor Choices Action Items Select Doctor Set Flickr Appointment PDS Activity Stream Phone PDS Confirm TODO List Information Transfer Dashboard Global Config
  • rules engine mail phone web
  • PDS rules engine mail phone web
  • demo: project neck pain (again...slowly)
  • Your book’s available here!!!
  • In a purpose-centric Internet developers are tasked with delivering an experience
  • this is hard
  • developer props to Sam Ramji
  • location developer props to Sam Ramji
  • location developer AuthN props to Sam Ramji
  • location APIs developer AuthN props to Sam Ramji
  • location APIs developer optimization AuthN props to Sam Ramji
  • location APIs developer AuthZ optimization AuthN props to Sam Ramji
  • devices location APIs developer AuthZ optimization AuthN props to Sam Ramji
  • devices location APIs events developer AuthZ optimization AuthN props to Sam Ramji
  • devices location APIs events developer AuthZ optimization AuthN data formats props to Sam Ramji
  • devices protocols data identity standards
  • architecture devices protocols data identity standards
  • this is still hard
  • The web is going indirect
  • For successful companies, 80% of traffic will be coming from beyond the browser -Sam Ramji
  • "get me a domain and a page" sez Robert Scoble 1994
  • "get me a domain and a page" "make my page interactive and put people on it" sez Robert Scoble 1994 2000
  • "get me a domain and a page" "make my page interactive and put people on it" sez Robert Scoble "get rid of pages & glue APIs & people together" 1994 2000 2010
  • Online Population 3rd Widgets SNS Semantic party Web Gadgets Apps Web apps Site API Your Web Application adapted from Dion Hitchcliffe
  • Online Population reach 3rd Widgets SNS Semantic party Web Gadgets Apps Web apps Site API Your Web Application adapted from Dion Hitchcliffe
  • APIs encapsulate semantics
  • architecture devices protocols APIs identity standards
  • semantics architecture devices protocols APIs identity standards
  • this is still hard
  • Successful applications will use many APIs - Sam Ramji
  • SUB32 PROC ; begin procedure CMP AX,97 ; compare AX to 97 JL DONE ; if < jump to DONE CMP AX,122 ; compare AX to 122 JG DONE ; if > jump to DONE SUB AX,32 ; subtract 32 DONE: RET ; return SUB32 ENDP
  • wow! that’s hard to understand
  • wow! that’s hard to understand and what about scoping
  • wow! that’s hard to understand and what about optimization
  • wow! that’s hard to understand and what about machine independence
  • func sub32(a) { (97 <= a && a <= 122) ? a-32 : a }
  • Your book’s available here!!!
  • scenarios can be described as expressions over events
  • when wishlist changes before in_Borders(location)...
  • semantics architecture devices protocols APIs identity standards
  • notation semantics architecture devices protocols APIs identity standards
  • Web Programming Patterns
  • Reactive Systems
  • reacting to events
  • Rule Language
  • Rule Language
  • Rule Language Constraint
  • Rule Language Constraint Deductive
  • Rule Language Constraint Deductive Responsive
  • when
event if


condition then
action
  • unifying framework active client data
  • rules engine active client data
  • Kynetx Architecture
  • Kynetx Architecture
  • Kynetx Architecture
  • BX Kynetx Architecture
  • KNS BX Kynetx Architecture
  • KNS BX Kynetx Architecture
  • KNS BX Kynetx Architecture
  • KNS BX Kynetx Architecture
  • Web KNS • pageview • submit • click • etc BX Kynetx Architecture
  • Events Web KNS • pageview • submit • click • etc BX Kynetx Architecture
  • Events Web KNS • pageview • submit • click • etc Endpoint BX Kynetx Architecture
  • Events Web KNS • pageview • submit • click • etc Endpoint BX Kynetx Architecture
  • Events Web Mail KNS • pageview • received • submit • sent • click • refiled • etc • etc Endpoint BX Kynetx Architecture
  • Events Web Mail Other KNS • pageview • received • RSS • submit • sent • Facebook • click • refiled • Mobile • etc • etc • etc Endpoint BX Kynetx Architecture
  • KNS is a big event loop in the cloud
  • Kynetx Rule Language (KRL) Sometimes a layer of indirection helps...
  • Kynetx Rule Language (KRL) Sometimes a layer of indirection helps... Domain specific language
  • Kynetx Rule Language (KRL) Sometimes a layer of indirection helps... Domain specific language Designed for programming the Internet
  • Kynetx Rule Language (KRL) Sometimes a layer of indirection helps... Domain specific language Designed for programming the Internet Browser and platform independent
  • Kynetx Rule Language (KRL) Sometimes a layer of indirection helps... Domain specific language Designed for programming the Internet Browser and platform independent Optimized for events
  • why?
  • languages promote “creative laziness” -Douglas Crockford
  • Sure, but why a new language?
  • KRL Rulesets
  • KRL Rulesets Event loop
  • KRL Rulesets Event loop Pageview via URL class
  • KRL Rulesets Event loop Pageview via URL class Submit form
  • KRL Rulesets Event loop Pageview via URL class Submit form Click element
  • KRL Rulesets Event loop Pageview via URL class Submit form Click element Change element
  • KRL Rulesets Event loop Pageview via URL class Submit form Click element Change element Declare and access data sources
  • KRL Rulesets Event loop Pageview via URL class Submit form Click element Change element Declare and access data sources Conditionally fire action
  • KRL Rulesets Event loop Pageview via URL class Submit form Click element Change element Declare and access data sources Conditionally fire action Effects
  • Event Expressions
  • Simple Events
  • select when pageview “/archives/(d+)” setting(year)
  • select when submit “#my_form”
  • Complex Events
  • select when pageview “/archives/(d+)” setting(year) before click “#button”
  • Also then and or between not between
  • select when (click “#button” not between( pageview “/archives/d+”, pageview “google.com”)) before click “#link_1”
  • Example
  • ruleset library { global { datasource library_search <- "http://www.example.com/bookdata/?wt=json" cachable; } rule book_notfication is active { select when pageview "www.amazon.com/gp/product/(d+)/" setting(isbn) pre { book_data = datasource:library_search("q="+isbn); url = book_data.pick("$..docs[0].url"); title = book_data.pick("$..docs[0].title"); msg = << This book's available the library. <a id="MLN_link" href="#{url}">#{title}</a> >>; } if(book_data.pick("$..numFound") > 0) then { notify("Local Library", msg) } callbacks { success { click id="MLN_link" } }}} KRL for Library Lookup
  • ruleset library { global { datasource library_search <- "http://www.example.com/bookdata/?wt=json" cachable; } rule book_notfication is active { select when pageview "www.amazon.com/gp/product/(d+)/" setting(isbn) pre { book_data = datasource:library_search("q="+isbn); url = book_data.pick("$..docs[0].url"); title = book_data.pick("$..docs[0].title"); msg = << This book's available the library. <a id="MLN_link" href="#{url}">#{title}</a> >>; } if(book_data.pick("$..numFound") > 0) then { notify("Local Library", msg) } callbacks { success { click id="MLN_link" } }}} KRL for Library Lookup
  • ruleset library { global { datasource library_search <- "http://www.example.com/bookdata/?wt=json" cachable; } rule book_notfication is active { select when pageview "www.amazon.com/gp/product/(d+)/" setting(isbn) pre { book_data = datasource:library_search("q="+isbn); url = book_data.pick("$..docs[0].url"); title = book_data.pick("$..docs[0].title"); msg = << This book's available the library. <a id="MLN_link" href="#{url}">#{title}</a> >>; } if(book_data.pick("$..numFound") > 0) then { notify("Local Library", msg) } callbacks { success { click id="MLN_link" } }}} KRL for Library Lookup
  • ruleset library { global { datasource library_search <- "http://www.example.com/bookdata/?wt=json" cachable; } rule book_notfication is active { select when pageview "www.amazon.com/gp/product/(d+)/" setting(isbn) pre { book_data = datasource:library_search("q="+isbn); url = book_data.pick("$..docs[0].url"); title = book_data.pick("$..docs[0].title"); msg = << This book's available the library. <a id="MLN_link" href="#{url}">#{title}</a> >>; } if(book_data.pick("$..numFound") > 0) then { notify("Local Library", msg) } callbacks { success { click id="MLN_link" } }}} KRL for Library Lookup
  • ruleset library { global { datasource library_search <- "http://www.example.com/bookdata/?wt=json" cachable; } rule book_notfication is active { select when pageview "www.amazon.com/gp/product/(d+)/" setting(isbn) pre { book_data = datasource:library_search("q="+isbn); url = book_data.pick("$..docs[0].url"); title = book_data.pick("$..docs[0].title"); msg = << This book's available the library. <a id="MLN_link" href="#{url}">#{title}</a> >>; } if(book_data.pick("$..numFound") > 0) then { notify("Local Library", msg) } callbacks { success { click id="MLN_link" } }}} KRL for Library Lookup
  • ruleset library { global { datasource library_search <- "http://www.example.com/bookdata/?wt=json" cachable; } rule book_notfication is active { select when pageview "www.amazon.com/gp/product/(d+)/" setting(isbn) pre { book_data = datasource:library_search("q="+isbn); url = book_data.pick("$..docs[0].url"); title = book_data.pick("$..docs[0].title"); msg = << This book's available the library. <a id="MLN_link" href="#{url}">#{title}</a> >>; } if(book_data.pick("$..numFound") > 0) then { notify("Local Library", msg) } callbacks { success { click id="MLN_link" } }}} KRL for Library Lookup
  • ruleset library { global { datasource library_search <- "http://www.example.com/bookdata/?wt=json" cachable; } rule book_notfication is active { select when pageview "www.amazon.com/gp/product/(d+)/" setting(isbn) pre { book_data = datasource:library_search("q="+isbn); url = book_data.pick("$..docs[0].url"); title = book_data.pick("$..docs[0].title"); msg = << This book's available the library. <a id="MLN_link" href="#{url}">#{title}</a> >>; } if(book_data.pick("$..numFound") > 0) then { notify("Local Library", msg) } callbacks { success { click id="MLN_link" } }}} KRL for Library Lookup
  • ruleset library { global { datasource library_search <- "http://www.example.com/bookdata/?wt=json" cachable; } rule book_notfication is active { select when pageview "www.amazon.com/gp/product/(d+)/" setting(isbn) pre { book_data = datasource:library_search("q="+isbn); url = book_data.pick("$..docs[0].url"); title = book_data.pick("$..docs[0].title"); msg = << This book's available the library. <a id="MLN_link" href="#{url}">#{title}</a> >>; } if(book_data.pick("$..numFound") > 0) then { notify("Local Library", msg) } callbacks { success { click id="MLN_link" } }}} KRL for Library Lookup
  • ruleset library { global { datasource library_search <- "http://www.example.com/bookdata/?wt=json" cachable; } rule book_notfication is active { select when pageview "www.amazon.com/gp/product/(d+)/" setting(isbn) pre { book_data = datasource:library_search("q="+isbn); url = book_data.pick("$..docs[0].url"); title = book_data.pick("$..docs[0].title"); msg = << This book's available the library. <a id="MLN_link" href="#{url}">#{title}</a> >>; } if(book_data.pick("$..numFound") > 0) then { notify("Local Library", msg) } callbacks { success { click id="MLN_link" } }}} KRL for Library Lookup
  • Little Languages
  • Little Languages Regular expressions
  • Little Languages Regular expressions JSONPath
  • Little Languages Regular expressions JSONPath jQuery HTML Selectors
  • Data
  • Data General (JSON/XML) Geo-location Weather Twitter Acxiom (pilot) GData (Google) Amazon OData (Microsoft)
  • Demo
  • “there’s an API for that”
  • Sign up for a free developer account at http://www.kynetx.com Come to lunch
  • Context Automation & Personal Data Services Contact info: pjw@kynetx.com www.windley.com @windley =windley White paper: http://bit.ly/kntxwp