SlideShare a Scribd company logo
1 of 157
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
Context Automation and Personal Data Services
Context Automation and Personal Data Services

More Related Content

More from Phil Windley

Rule Language for IoT
Rule Language for IoTRule Language for IoT
Rule Language for IoTPhil Windley
 
Events, Picos, and Microservices
Events, Picos, and MicroservicesEvents, Picos, and Microservices
Events, Picos, and MicroservicesPhil Windley
 
Picos, CloudOS, and Connecting Things
Picos, CloudOS, and Connecting ThingsPicos, CloudOS, and Connecting Things
Picos, CloudOS, and Connecting ThingsPhil Windley
 
Events, Picos, and Microservices
Events, Picos, and MicroservicesEvents, Picos, and Microservices
Events, Picos, and MicroservicesPhil Windley
 
Persistent Compute Objects and the Fabric of Cyberspace
Persistent Compute Objects and the Fabric of CyberspacePersistent Compute Objects and the Fabric of Cyberspace
Persistent Compute Objects and the Fabric of CyberspacePhil Windley
 
Persistent Compute Objects - Picos
Persistent Compute Objects - PicosPersistent Compute Objects - Picos
Persistent Compute Objects - PicosPhil Windley
 
Fuse Technical Presentation
Fuse Technical PresentationFuse Technical Presentation
Fuse Technical PresentationPhil Windley
 
Personal Cloud Application Architectures
Personal Cloud Application ArchitecturesPersonal Cloud Application Architectures
Personal Cloud Application ArchitecturesPhil Windley
 
Personal Cloud Operating Systems
Personal Cloud Operating SystemsPersonal Cloud Operating Systems
Personal Cloud Operating SystemsPhil Windley
 
Introducing Personal Event Networks
Introducing Personal Event NetworksIntroducing Personal Event Networks
Introducing Personal Event NetworksPhil Windley
 
The Live Web #SCITDA11 Keynote
The Live Web #SCITDA11 KeynoteThe Live Web #SCITDA11 Keynote
The Live Web #SCITDA11 KeynotePhil Windley
 
Shaping strategies and Startups
Shaping strategies and StartupsShaping strategies and Startups
Shaping strategies and StartupsPhil Windley
 
Shaping Strategies and the Live Web - Kynetx Impact 2011
Shaping Strategies and the Live Web - Kynetx Impact 2011Shaping Strategies and the Live Web - Kynetx Impact 2011
Shaping Strategies and the Live Web - Kynetx Impact 2011Phil Windley
 
The Evented Web Makes Users Happy
The Evented Web Makes Users HappyThe Evented Web Makes Users Happy
The Evented Web Makes Users HappyPhil Windley
 
A Programming Layer for the Internet from Kynetx Impact 2010
A Programming Layer for the Internet from Kynetx Impact 2010A Programming Layer for the Internet from Kynetx Impact 2010
A Programming Layer for the Internet from Kynetx Impact 2010Phil Windley
 
Using Puppet and Cobbler to Automate Your Infrastructure
Using Puppet and Cobbler to Automate Your InfrastructureUsing Puppet and Cobbler to Automate Your Infrastructure
Using Puppet and Cobbler to Automate Your InfrastructurePhil Windley
 
Using Apache as an Application Server
Using Apache as an Application ServerUsing Apache as an Application Server
Using Apache as an Application ServerPhil Windley
 
The Power of Open Data
The Power of Open DataThe Power of Open Data
The Power of Open DataPhil Windley
 

More from Phil Windley (20)

Rule Language for IoT
Rule Language for IoTRule Language for IoT
Rule Language for IoT
 
Events, Picos, and Microservices
Events, Picos, and MicroservicesEvents, Picos, and Microservices
Events, Picos, and Microservices
 
Picos, CloudOS, and Connecting Things
Picos, CloudOS, and Connecting ThingsPicos, CloudOS, and Connecting Things
Picos, CloudOS, and Connecting Things
 
Events, Picos, and Microservices
Events, Picos, and MicroservicesEvents, Picos, and Microservices
Events, Picos, and Microservices
 
Fuse 2
Fuse 2Fuse 2
Fuse 2
 
Connecting Things
Connecting ThingsConnecting Things
Connecting Things
 
Persistent Compute Objects and the Fabric of Cyberspace
Persistent Compute Objects and the Fabric of CyberspacePersistent Compute Objects and the Fabric of Cyberspace
Persistent Compute Objects and the Fabric of Cyberspace
 
Persistent Compute Objects - Picos
Persistent Compute Objects - PicosPersistent Compute Objects - Picos
Persistent Compute Objects - Picos
 
Fuse Technical Presentation
Fuse Technical PresentationFuse Technical Presentation
Fuse Technical Presentation
 
Personal Cloud Application Architectures
Personal Cloud Application ArchitecturesPersonal Cloud Application Architectures
Personal Cloud Application Architectures
 
Personal Cloud Operating Systems
Personal Cloud Operating SystemsPersonal Cloud Operating Systems
Personal Cloud Operating Systems
 
Introducing Personal Event Networks
Introducing Personal Event NetworksIntroducing Personal Event Networks
Introducing Personal Event Networks
 
The Live Web #SCITDA11 Keynote
The Live Web #SCITDA11 KeynoteThe Live Web #SCITDA11 Keynote
The Live Web #SCITDA11 Keynote
 
Shaping strategies and Startups
Shaping strategies and StartupsShaping strategies and Startups
Shaping strategies and Startups
 
Shaping Strategies and the Live Web - Kynetx Impact 2011
Shaping Strategies and the Live Web - Kynetx Impact 2011Shaping Strategies and the Live Web - Kynetx Impact 2011
Shaping Strategies and the Live Web - Kynetx Impact 2011
 
The Evented Web Makes Users Happy
The Evented Web Makes Users HappyThe Evented Web Makes Users Happy
The Evented Web Makes Users Happy
 
A Programming Layer for the Internet from Kynetx Impact 2010
A Programming Layer for the Internet from Kynetx Impact 2010A Programming Layer for the Internet from Kynetx Impact 2010
A Programming Layer for the Internet from Kynetx Impact 2010
 
Using Puppet and Cobbler to Automate Your Infrastructure
Using Puppet and Cobbler to Automate Your InfrastructureUsing Puppet and Cobbler to Automate Your Infrastructure
Using Puppet and Cobbler to Automate Your Infrastructure
 
Using Apache as an Application Server
Using Apache as an Application ServerUsing Apache as an Application Server
Using Apache as an Application Server
 
The Power of Open Data
The Power of Open DataThe Power of Open Data
The Power of Open Data
 

Recently uploaded

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 

Recently uploaded (20)

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 

Context Automation and Personal Data Services

  • 1. Context Automation & Personal Data Services Phillip J. Windley, Ph.D Founder and CTO Kynetx www.kynetx.com
  • 2.
  • 3. people don’t want to go anywhere
  • 4. they want to do something
  • 5.
  • 10. Apps are an example of active clients
  • 13. Personal Data Identity OAuth UMA
  • 14.
  • 15. Automating Life Events* *props to Steve Fulling & David Siegel
  • 16. Automating Life Events* Bad news from your radiologist... *props to Steve Fulling & David Siegel
  • 17. Automating Life Events* Bad news from your radiologist... Choose surgeon *props to Steve Fulling & David Siegel
  • 18. Automating Life Events* Bad news from your radiologist... Choose surgeon insurance *props to Steve Fulling & David Siegel
  • 19. Automating Life Events* Bad news from your radiologist... Choose surgeon insurance reputation *props to Steve Fulling & David Siegel
  • 20. Automating Life Events* Bad news from your radiologist... Choose surgeon insurance reputation Schedule appointment *props to Steve Fulling & David Siegel
  • 21. Automating Life Events* Bad news from your radiologist... Choose surgeon insurance reputation Schedule appointment Confirm Appointment *props to Steve Fulling & David Siegel
  • 22. 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
  • 23. 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
  • 24. 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
  • 26.
  • 27. Multiple coordinating and cooperating apps creating a holistic, purpose-centric experience
  • 28. PDS
  • 30. parse email PDS paint Flickr
  • 31. TODO list parse email PDS paint Flickr
  • 32. choose Dr TODO list parse email PDS paint Flickr
  • 33. choose Dr confirm appt TODO list parse email PDS paint Flickr
  • 34. choose Dr confirm appt TODO list reminders parse email PDS paint Flickr
  • 35. choose Dr confirm appt TODO list reminders parse email PDS request info paint Flickr
  • 36. choose Dr confirm appt TODO list reminders parse email PDS request info paint Flickr med history
  • 37. choose Dr confirm appt TODO list reminders parse email PDS request info paint Flickr med history global config
  • 38. Doctor Choices Action Items Select Doctor Set Flickr Appointment PDS Activity Stream Phone Confirm TODO List Information Transfer Dashboard Global Config
  • 39. Doctor Choices Action Items Select Doctor Set Flickr Appointment PDS Activity Stream Phone PDS Confirm TODO List Information Transfer Dashboard Global Config
  • 40. rules engine mail phone web
  • 41. PDS rules engine mail phone web
  • 42. demo: project neck pain (again...slowly)
  • 43.
  • 44.
  • 46. In a purpose-centric Internet developers are tasked with delivering an experience
  • 48. developer props to Sam Ramji
  • 49. location developer props to Sam Ramji
  • 50. location developer AuthN props to Sam Ramji
  • 51. location APIs developer AuthN props to Sam Ramji
  • 52. location APIs developer optimization AuthN props to Sam Ramji
  • 53. location APIs developer AuthZ optimization AuthN props to Sam Ramji
  • 54. devices location APIs developer AuthZ optimization AuthN props to Sam Ramji
  • 55. devices location APIs events developer AuthZ optimization AuthN props to Sam Ramji
  • 56. devices location APIs events developer AuthZ optimization AuthN data formats props to Sam Ramji
  • 57. devices protocols data identity standards
  • 60. The web is going indirect
  • 61. For successful companies, 80% of traffic will be coming from beyond the browser -Sam Ramji
  • 62. "get me a domain and a page" sez Robert Scoble 1994
  • 63. "get me a domain and a page" "make my page interactive and put people on it" sez Robert Scoble 1994 2000
  • 64. "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
  • 65. Online Population 3rd Widgets SNS Semantic party Web Gadgets Apps Web apps Site API Your Web Application adapted from Dion Hitchcliffe
  • 66. Online Population reach 3rd Widgets SNS Semantic party Web Gadgets Apps Web apps Site API Your Web Application adapted from Dion Hitchcliffe
  • 69. semantics architecture devices protocols APIs identity standards
  • 72. 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
  • 73. wow! that’s hard to understand
  • 74. wow! that’s hard to understand and what about scoping
  • 75. wow! that’s hard to understand and what about optimization
  • 76. wow! that’s hard to understand and what about machine independence
  • 77. func sub32(a) { (97 <= a && a <= 122) ? a-32 : a }
  • 79. scenarios can be described as expressions over events
  • 80. when wishlist changes before in_Borders(location)...
  • 81. semantics architecture devices protocols APIs identity standards
  • 82. notation semantics architecture devices protocols APIs identity standards
  • 92.
  • 98. BX Kynetx Architecture
  • 99. KNS BX Kynetx Architecture
  • 100. KNS BX Kynetx Architecture
  • 101. KNS BX Kynetx Architecture
  • 102. KNS BX Kynetx Architecture
  • 103. Web KNS • pageview • submit • click • etc BX Kynetx Architecture
  • 104. Events Web KNS • pageview • submit • click • etc BX Kynetx Architecture
  • 105. Events Web KNS • pageview • submit • click • etc Endpoint BX Kynetx Architecture
  • 106. Events Web KNS • pageview • submit • click • etc Endpoint BX Kynetx Architecture
  • 107. Events Web Mail KNS • pageview • received • submit • sent • click • refiled • etc • etc Endpoint BX Kynetx Architecture
  • 108. Events Web Mail Other KNS • pageview • received • RSS • submit • sent • Facebook • click • refiled • Mobile • etc • etc • etc Endpoint BX Kynetx Architecture
  • 109. KNS is a big event loop in the cloud
  • 110. Kynetx Rule Language (KRL) Sometimes a layer of indirection helps...
  • 111. Kynetx Rule Language (KRL) Sometimes a layer of indirection helps... Domain specific language
  • 112. Kynetx Rule Language (KRL) Sometimes a layer of indirection helps... Domain specific language Designed for programming the Internet
  • 113. Kynetx Rule Language (KRL) Sometimes a layer of indirection helps... Domain specific language Designed for programming the Internet Browser and platform independent
  • 114. 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
  • 115. why?
  • 116. languages promote “creative laziness” -Douglas Crockford
  • 117. Sure, but why a new language?
  • 119. KRL Rulesets Event loop
  • 120. KRL Rulesets Event loop Pageview via URL class
  • 121. KRL Rulesets Event loop Pageview via URL class Submit form
  • 122. KRL Rulesets Event loop Pageview via URL class Submit form Click element
  • 123. KRL Rulesets Event loop Pageview via URL class Submit form Click element Change element
  • 124. KRL Rulesets Event loop Pageview via URL class Submit form Click element Change element Declare and access data sources
  • 125. KRL Rulesets Event loop Pageview via URL class Submit form Click element Change element Declare and access data sources Conditionally fire action
  • 126. KRL Rulesets Event loop Pageview via URL class Submit form Click element Change element Declare and access data sources Conditionally fire action Effects
  • 129. select when pageview “/archives/(d+)” setting(year)
  • 130. select when submit “#my_form”
  • 132. select when pageview “/archives/(d+)” setting(year) before click “#button”
  • 133. Also then and or between not between
  • 134. select when (click “#button” not between( pageview “/archives/d+”, pageview “google.com”)) before click “#link_1”
  • 136.
  • 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. 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
  • 139. 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
  • 140. 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
  • 141. 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
  • 142. 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
  • 143. 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
  • 144. 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
  • 145. 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
  • 147. Little Languages Regular expressions
  • 148. Little Languages Regular expressions JSONPath
  • 149. Little Languages Regular expressions JSONPath jQuery HTML Selectors
  • 150. Data
  • 151. Data General (JSON/XML) Geo-location Weather Twitter Acxiom (pilot) GData (Google) Amazon OData (Microsoft)
  • 152. Demo
  • 153. “there’s an API for that”
  • 154. Sign up for a free developer account at http://www.kynetx.com Come to lunch
  • 155. Context Automation & Personal Data Services Contact info: pjw@kynetx.com www.windley.com @windley =windley White paper: http://bit.ly/kntxwp

Editor's Notes

  1. Indeed location has been one of the primary metaphors we&amp;#x2019;ve used to describe the web. After all, a URL is a Uniform Resource LOCATOR. We use verbs like &amp;#x201C;browse,&amp;#x201D; &amp;#x201C;go,&amp;#x201D; &amp;#x201C;locate,&amp;#x201D; &amp;#x201C;property,&amp;#x201D; and even &amp;#x201C;history&amp;#x201D; that all have a property theme.
  2. mention purpose...
  3. 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?
  4. active clients can see all of the silos that a person interacts with.
  5. Some apps are just a Web site that takes up space on your phone&amp;#x2019;s screen. Others offer capabilities that you can&amp;#x2019;t get from a Web site. Those are the kind of experiences we want to explore.
  6. Because Personal Data Stores puts the user, not the server at the center they can serve as the active client
  7. But there&amp;#x2019;s a huge gap...
  8. 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&amp;#x2026;.
  9. A PDS is a pain in the neck without automation
  10. A PDS is a pain in the neck without automation
  11. A PDS is a pain in the neck without automation
  12. A PDS is a pain in the neck without automation
  13. A PDS is a pain in the neck without automation
  14. A PDS is a pain in the neck without automation
  15. A PDS is a pain in the neck without automation
  16. A PDS is a pain in the neck without automation
  17. A PDS is a pain in the neck without automation
  18. These apps all exist, loosely coupled, plumbed together in general ways Multiple APIs, endpoints
  19. These apps all exist, loosely coupled, plumbed together in general ways Multiple APIs, endpoints
  20. These apps all exist, loosely coupled, plumbed together in general ways Multiple APIs, endpoints
  21. These apps all exist, loosely coupled, plumbed together in general ways Multiple APIs, endpoints
  22. These apps all exist, loosely coupled, plumbed together in general ways Multiple APIs, endpoints
  23. These apps all exist, loosely coupled, plumbed together in general ways Multiple APIs, endpoints
  24. These apps all exist, loosely coupled, plumbed together in general ways Multiple APIs, endpoints
  25. These apps all exist, loosely coupled, plumbed together in general ways Multiple APIs, endpoints
  26. These apps all exist, loosely coupled, plumbed together in general ways Multiple APIs, endpoints
  27. These apps all exist, loosely coupled, plumbed together in general ways Multiple APIs, endpoints
  28. These apps all exist, loosely coupled, plumbed together in general ways Multiple APIs, endpoints
  29. These apps all exist, loosely coupled, plumbed together in general ways Multiple APIs, endpoints
  30. book on wishlist or maybe you just looked at it.
  31. book on wishlist or maybe you just looked at it.
  32. but architecture isn&amp;#x2019;t enough...
  33. in context, Sam seems to be saying that direct browser to web site interactions won&amp;#x2019;t account for the majority of your business
  34. apis are a recognition that you can&amp;#x2019;t be a silo. You need to move beyond your Web site.
  35. Fortunately there&amp;#x2019;s a way to make it easier.
  36. book on wishlist or maybe you just looked at it.
  37. Since 1993 we&amp;#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.
  38. Web hooks and the event drive web
  39. Remember we want to span multiple silos, so we need a browser piece as well
  40. Endpoints raise events KNS responds to events by running rules
  41. Endpoints raise events KNS responds to events by running rules
  42. Endpoints raise events KNS responds to events by running rules
  43. Endpoints raise events KNS responds to events by running rules
  44. Endpoints raise events KNS responds to events by running rules
  45. Endpoints raise events KNS responds to events by running rules
  46. Endpoints raise events KNS responds to events by running rules
  47. Endpoints raise events KNS responds to events by running rules
  48. Endpoints raise events KNS responds to events by running rules
  49. Endpoints raise events KNS responds to events by running rules
  50. Endpoints raise events KNS responds to events by running rules
  51. Endpoints raise events KNS responds to events by running rules
  52. Endpoints raise events KNS responds to events by running rules
  53. Endpoints raise events KNS responds to events by running rules
  54. Endpoints raise events KNS responds to events by running rules
  55. Endpoints raise events KNS responds to events by running rules
  56. Endpoints raise events KNS responds to events by running rules
  57. Endpoints raise events KNS responds to events by running rules
  58. Endpoints raise events KNS responds to events by running rules
  59. Endpoints raise events KNS responds to events by running rules
  60. Endpoints raise events KNS responds to events by running rules
  61. Endpoints raise events KNS responds to events by running rules
  62. Endpoints raise events KNS responds to events by running rules
  63. Endpoints raise events KNS responds to events by running rules
  64. Endpoints raise events KNS responds to events by running rules
  65. Endpoints raise events KNS responds to events by running rules
  66. Endpoints raise events KNS responds to events by running rules
  67. No one&amp;#x2019;s ever surprised me with a GUI
  68. No one&amp;#x2019;s ever surprised me with a GUI
  69. No one&amp;#x2019;s ever surprised me with a GUI
  70. No one&amp;#x2019;s ever surprised me with a GUI
  71. No one&amp;#x2019;s ever surprised me with a GUI Indirection allows us to fix problems once Languages are how programmers encapsulate problems and create abstractions
  72. No one&amp;#x2019;s ever surprised me with a GUI Indirection allows us to fix problems once Languages are how programmers encapsulate problems and create abstractions
  73. Mention efficiently executing these
  74. Pause here to talk about the expansiveness of each in KRL
  75. Not to mention Javascript
  76. Not to mention Javascript
  77. Not to mention Javascript
  78. 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&amp;#x2019;s the easy part.