Context Automation and Personal Data Services

1,121 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
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,121
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

  • Indeed location has been one of the primary metaphors we’ve used to describe the web. After all, a URL is a Uniform Resource LOCATOR. We use verbs like “browse,” “go,” “locate,” “property,” and even “history” that all have a property theme.


  • mention purpose...
  • 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?


  • active clients can see all of the silos that a person interacts with.
  • Some apps are just a Web site that takes up space on your phone’s screen. Others offer capabilities that you can’t get from a Web site. Those are the kind of experiences we want to explore.
  • Because Personal Data Stores puts the user, not the server
    at the center they can serve as the active client

  • But there’s a huge gap...
  • A PDS is literally a pain in the neck if all it does is manage data.
    How will all this work? We have a plan….
  • A PDS is a pain in the neck without automation
  • A PDS is a pain in the neck without automation
  • A PDS is a pain in the neck without automation
  • A PDS is a pain in the neck without automation
  • A PDS is a pain in the neck without automation
  • A PDS is a pain in the neck without automation
  • A PDS is a pain in the neck without automation
  • A PDS is a pain in the neck without automation
  • A PDS is a pain in the neck without automation


  • These apps all exist, loosely coupled, plumbed together in general ways
    Multiple APIs, endpoints

  • These apps all exist, loosely coupled, plumbed together in general ways
    Multiple APIs, endpoints

  • These apps all exist, loosely coupled, plumbed together in general ways
    Multiple APIs, endpoints

  • These apps all exist, loosely coupled, plumbed together in general ways
    Multiple APIs, endpoints

  • These apps all exist, loosely coupled, plumbed together in general ways
    Multiple APIs, endpoints

  • These apps all exist, loosely coupled, plumbed together in general ways
    Multiple APIs, endpoints

  • These apps all exist, loosely coupled, plumbed together in general ways
    Multiple APIs, endpoints

  • These apps all exist, loosely coupled, plumbed together in general ways
    Multiple APIs, endpoints

  • These apps all exist, loosely coupled, plumbed together in general ways
    Multiple APIs, endpoints

  • These apps all exist, loosely coupled, plumbed together in general ways
    Multiple APIs, endpoints

  • These apps all exist, loosely coupled, plumbed together in general ways
    Multiple APIs, endpoints

  • These apps all exist, loosely coupled, plumbed together in general ways
    Multiple APIs, endpoints



  • book on wishlist or maybe you just looked at it.
  • book on wishlist or maybe you just looked at it.










  • but architecture isn’t enough...


  • in context, Sam seems to be saying that direct browser to web site interactions won’t account for the majority of your business







  • apis are a recognition that you can’t be a silo. You need to move beyond your Web site.

  • Fortunately there’s a way to make it easier.









  • book on wishlist or maybe you just looked at it.



  • Since 1993 we’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.

  • Web hooks and the event drive web





  • Remember we want to span multiple silos, so we need a browser piece as well


  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules
  • Endpoints raise events
    KNS responds to events by running rules

  • No one’s ever surprised me with a GUI
  • No one’s ever surprised me with a GUI
  • No one’s ever surprised me with a GUI
  • No one’s ever surprised me with a GUI
  • No one’s ever surprised me with a GUI
    Indirection allows us to fix problems once
    Languages are how programmers encapsulate problems and create abstractions

  • No one’s ever surprised me with a GUI
    Indirection allows us to fix problems once
    Languages are how programmers encapsulate problems and create abstractions















  • Mention efficiently executing these
  • Pause here to talk about the expansiveness of each in KRL











  • Not to mention Javascript
  • Not to mention Javascript
  • Not to mention Javascript































  • 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’s the easy part.
  • 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

    ×