Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Context Automation and Personal Data Services

1,157 views

Published on

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.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Context Automation and Personal Data Services

  1. 1. Context Automation & Personal Data Services Phillip J. Windley, Ph.D Founder and CTO Kynetx www.kynetx.com
  2. 2. people don’t want to go anywhere
  3. 3. they want to do something
  4. 4. Purpose requires more than servers
  5. 5. unifying framework active client data
  6. 6. Active Clients
  7. 7. Active Clients
  8. 8. Apps are an example of active clients
  9. 9. personal data
  10. 10. personal data
  11. 11. Personal Data Identity OAuth UMA
  12. 12. Automating Life Events* *props to Steve Fulling & David Siegel
  13. 13. Automating Life Events* Bad news from your radiologist... *props to Steve Fulling & David Siegel
  14. 14. Automating Life Events* Bad news from your radiologist... Choose surgeon *props to Steve Fulling & David Siegel
  15. 15. Automating Life Events* Bad news from your radiologist... Choose surgeon insurance *props to Steve Fulling & David Siegel
  16. 16. Automating Life Events* Bad news from your radiologist... Choose surgeon insurance reputation *props to Steve Fulling & David Siegel
  17. 17. Automating Life Events* Bad news from your radiologist... Choose surgeon insurance reputation Schedule appointment *props to Steve Fulling & David Siegel
  18. 18. Automating Life Events* Bad news from your radiologist... Choose surgeon insurance reputation Schedule appointment Confirm Appointment *props to Steve Fulling & David Siegel
  19. 19. 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
  20. 20. 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
  21. 21. 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
  22. 22. demo: project neck pain
  23. 23. Multiple coordinating and cooperating apps creating a holistic, purpose-centric experience
  24. 24. PDS
  25. 25. PDS paint Flickr
  26. 26. parse email PDS paint Flickr
  27. 27. TODO list parse email PDS paint Flickr
  28. 28. choose Dr TODO list parse email PDS paint Flickr
  29. 29. choose Dr confirm appt TODO list parse email PDS paint Flickr
  30. 30. choose Dr confirm appt TODO list reminders parse email PDS paint Flickr
  31. 31. choose Dr confirm appt TODO list reminders parse email PDS request info paint Flickr
  32. 32. choose Dr confirm appt TODO list reminders parse email PDS request info paint Flickr med history
  33. 33. choose Dr confirm appt TODO list reminders parse email PDS request info paint Flickr med history global config
  34. 34. Doctor Choices Action Items Select Doctor Set Flickr Appointment PDS Activity Stream Phone Confirm TODO List Information Transfer Dashboard Global Config
  35. 35. Doctor Choices Action Items Select Doctor Set Flickr Appointment PDS Activity Stream Phone PDS Confirm TODO List Information Transfer Dashboard Global Config
  36. 36. rules engine mail phone web
  37. 37. PDS rules engine mail phone web
  38. 38. demo: project neck pain (again...slowly)
  39. 39. Your book’s available here!!!
  40. 40. In a purpose-centric Internet developers are tasked with delivering an experience
  41. 41. this is hard
  42. 42. developer props to Sam Ramji
  43. 43. location developer props to Sam Ramji
  44. 44. location developer AuthN props to Sam Ramji
  45. 45. location APIs developer AuthN props to Sam Ramji
  46. 46. location APIs developer optimization AuthN props to Sam Ramji
  47. 47. location APIs developer AuthZ optimization AuthN props to Sam Ramji
  48. 48. devices location APIs developer AuthZ optimization AuthN props to Sam Ramji
  49. 49. devices location APIs events developer AuthZ optimization AuthN props to Sam Ramji
  50. 50. devices location APIs events developer AuthZ optimization AuthN data formats props to Sam Ramji
  51. 51. devices protocols data identity standards
  52. 52. architecture devices protocols data identity standards
  53. 53. this is still hard
  54. 54. The web is going indirect
  55. 55. For successful companies, 80% of traffic will be coming from beyond the browser -Sam Ramji
  56. 56. "get me a domain and a page" sez Robert Scoble 1994
  57. 57. "get me a domain and a page" "make my page interactive and put people on it" sez Robert Scoble 1994 2000
  58. 58. "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
  59. 59. Online Population 3rd Widgets SNS Semantic party Web Gadgets Apps Web apps Site API Your Web Application adapted from Dion Hitchcliffe
  60. 60. Online Population reach 3rd Widgets SNS Semantic party Web Gadgets Apps Web apps Site API Your Web Application adapted from Dion Hitchcliffe
  61. 61. APIs encapsulate semantics
  62. 62. architecture devices protocols APIs identity standards
  63. 63. semantics architecture devices protocols APIs identity standards
  64. 64. this is still hard
  65. 65. Successful applications will use many APIs - Sam Ramji
  66. 66. 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
  67. 67. wow! that’s hard to understand
  68. 68. wow! that’s hard to understand and what about scoping
  69. 69. wow! that’s hard to understand and what about optimization
  70. 70. wow! that’s hard to understand and what about machine independence
  71. 71. func sub32(a) { (97 <= a && a <= 122) ? a-32 : a }
  72. 72. Your book’s available here!!!
  73. 73. scenarios can be described as expressions over events
  74. 74. when wishlist changes before in_Borders(location)...
  75. 75. semantics architecture devices protocols APIs identity standards
  76. 76. notation semantics architecture devices protocols APIs identity standards
  77. 77. Web Programming Patterns
  78. 78. Reactive Systems
  79. 79. reacting to events
  80. 80. Rule Language
  81. 81. Rule Language
  82. 82. Rule Language Constraint
  83. 83. Rule Language Constraint Deductive
  84. 84. Rule Language Constraint Deductive Responsive
  85. 85. when
event if


condition then
action
  86. 86. unifying framework active client data
  87. 87. rules engine active client data
  88. 88. Kynetx Architecture
  89. 89. Kynetx Architecture
  90. 90. Kynetx Architecture
  91. 91. BX Kynetx Architecture
  92. 92. KNS BX Kynetx Architecture
  93. 93. KNS BX Kynetx Architecture
  94. 94. KNS BX Kynetx Architecture
  95. 95. KNS BX Kynetx Architecture
  96. 96. Web KNS • pageview • submit • click • etc BX Kynetx Architecture
  97. 97. Events Web KNS • pageview • submit • click • etc BX Kynetx Architecture
  98. 98. Events Web KNS • pageview • submit • click • etc Endpoint BX Kynetx Architecture
  99. 99. Events Web KNS • pageview • submit • click • etc Endpoint BX Kynetx Architecture
  100. 100. Events Web Mail KNS • pageview • received • submit • sent • click • refiled • etc • etc Endpoint BX Kynetx Architecture
  101. 101. Events Web Mail Other KNS • pageview • received • RSS • submit • sent • Facebook • click • refiled • Mobile • etc • etc • etc Endpoint BX Kynetx Architecture
  102. 102. KNS is a big event loop in the cloud
  103. 103. Kynetx Rule Language (KRL) Sometimes a layer of indirection helps...
  104. 104. Kynetx Rule Language (KRL) Sometimes a layer of indirection helps... Domain specific language
  105. 105. Kynetx Rule Language (KRL) Sometimes a layer of indirection helps... Domain specific language Designed for programming the Internet
  106. 106. Kynetx Rule Language (KRL) Sometimes a layer of indirection helps... Domain specific language Designed for programming the Internet Browser and platform independent
  107. 107. 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
  108. 108. why?
  109. 109. languages promote “creative laziness” -Douglas Crockford
  110. 110. Sure, but why a new language?
  111. 111. KRL Rulesets
  112. 112. KRL Rulesets Event loop
  113. 113. KRL Rulesets Event loop Pageview via URL class
  114. 114. KRL Rulesets Event loop Pageview via URL class Submit form
  115. 115. KRL Rulesets Event loop Pageview via URL class Submit form Click element
  116. 116. KRL Rulesets Event loop Pageview via URL class Submit form Click element Change element
  117. 117. KRL Rulesets Event loop Pageview via URL class Submit form Click element Change element Declare and access data sources
  118. 118. KRL Rulesets Event loop Pageview via URL class Submit form Click element Change element Declare and access data sources Conditionally fire action
  119. 119. KRL Rulesets Event loop Pageview via URL class Submit form Click element Change element Declare and access data sources Conditionally fire action Effects
  120. 120. Event Expressions
  121. 121. Simple Events
  122. 122. select when pageview “/archives/(d+)” setting(year)
  123. 123. select when submit “#my_form”
  124. 124. Complex Events
  125. 125. select when pageview “/archives/(d+)” setting(year) before click “#button”
  126. 126. Also then and or between not between
  127. 127. select when (click “#button” not between( pageview “/archives/d+”, pageview “google.com”)) before click “#link_1”
  128. 128. Example
  129. 129. 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
  130. 130. 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
  131. 131. 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
  132. 132. 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
  133. 133. 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
  134. 134. 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
  135. 135. 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
  136. 136. 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
  137. 137. 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
  138. 138. Little Languages
  139. 139. Little Languages Regular expressions
  140. 140. Little Languages Regular expressions JSONPath
  141. 141. Little Languages Regular expressions JSONPath jQuery HTML Selectors
  142. 142. Data
  143. 143. Data General (JSON/XML) Geo-location Weather Twitter Acxiom (pilot) GData (Google) Amazon OData (Microsoft)
  144. 144. Demo
  145. 145. “there’s an API for that”
  146. 146. Sign up for a free developer account at http://www.kynetx.com Come to lunch
  147. 147. Context Automation & Personal Data Services Contact info: pjw@kynetx.com www.windley.com @windley =windley White paper: http://bit.ly/kntxwp

×