SlideShare a Scribd company logo
1 of 34
Linking Data & Actions
      On the web
      On the web




   RESTfest 2012
Introduction
• Stuart Charlton (@svrc)

• Independent Consultant on cloud, REST,
  agile delivery, and IT strategy

• Weblog: Stu Says Stuff
  http://www.stucharlton.com/blog

• Many thanks to commenters and twitterers on this
  topic
DisclaimerS
•   This is a sequel (of sorts) to my 2011 WS-REST Keynote

•   Mostly this is my naïve and incomplete thinking on how
    to progress the state of the art.

•   Heavily in debt to ideas from Miro Samek (Statecharts)
    & Alex Champandard (Game AI), and Jim Webber /
    Savas Parastadtitis / Ian Robinson (REST in Practice)

•   I haven’t shared code to back this stuff up so cannot be
    trusted to be correct or even sane ... but bear with me, I
    think it’s at least going to be entertaining.
Background
• The Web Architecture has been an immense success...

    • ... and yet, we can do better.

• There’s a need to design the software for the
  write side of the web to scale and become nearly as
  serendipitous as the read side

    • Is this even possible?

•   “There’s no write side of the web really....
    ... no, in fact, it‘s all GETs”
My Claims
• The Web architecture’s core strength is in encouraging small
  pieces of independent agreement to be linked together and
  shared; we’re missing some agreements for writes

• The Web architecture encourages clients to be designed as
  agents in a dynamic information space

• There are practical approaches to programming agents in a
  dynamic environment

• It should be possible to create a general purpose media type
  for systems to manipulate state on the web, in lieu of more
  specific media types.
Why?
Why?

• Troublesome Growth in Centralized Services

    • e.g. Facebook, Twitter, Google+

•   Centralization occurs in part because of a limitation of
    the current web architecture

    •   This is why we have 4 or 5 incompatible “like” buttons
        everywhere
Why?
• REST APIs and Integration

 • Custom media types are the current approach...

 • ... but this generally is a transitory solution

 • “RESTful” design thrashing due to lack of prescriptive
   guidance

   • Would be reduced with more generic media types
     (e.g. as with HTML, AtomPub)
Why?
• Interoperable Domain Application Protocols
•   RESTbucks vs RESTual Roasters: “All I wanted was a coffee - but I had to rewrite my client!”
Why?

• Programming models matter

 • In particular, the client’s model of how it interacts
   with the server

 • We’re still often stuck on
   client method = network method (dynamic RPC)
Programming
Or Scripts vs. Agents
Client/Server Programming
REST Raises the Level of Abstraction


• The message vs. the resource/representation

• Traditional Client/Server:
  Client is a script sending/receiving messages

• REST:
  Client is an agent acting in an information space
Hypermedia Programming
Qualities of the Agent

• Goal-Directed

• Reactive

• Hypermedia workspace
  (affordances, cached representations)

• Sensing can be done to pick up on effects
TWO POPULAR Ways to
         Program ON The Web


•   Linked Data
    aka. “CRUD”

•   Scripting against a REST API
    aka. “Dynamic RPCs across a pile of Link Relations”
A Third Way?


    Linked                                      REST
     Data                                       APIs

Great for interoperable         Everyone understands it
analysis                             Mostly works well
Not so great for doing things   Not often interoperable
                                            across sites
Requirements
•   Need to be able to describe actions
    •   An action is a desired side-effect ; not an HTTP method
    •   Build higher level behaviors while maintaining uniformity of
        protocol
•   Preferably describe these serendipitously
    •   Searchable, linkable, follow-your-nose
•   Preferably without tight coupling to HTTP methods
    •   One server’s action may require a single POST,
        another’s may require PUT-POST-POST
•   Present and process data in a uniform way (ala. linked data)
    •   Express requirements, assertions and conditions
A Third Way


                        Linked
Linked                                            REST
                       Behavior
 Data                                             APIs
                        Trees


             Interoperable actions and data
An alternative (not replacement) to custom media types
Behavior Tree
•   A constrained hierarchical finite state machine (HFSM)
•   Approach to programming Game Agent AI (Halo 2, 3, GTA)
•   Constrained, how?
    •   Goal-oriented HFSM
    •   Reusable sub-states to enable “programming by difference”
    •   Patterns for common programming constructs
Behavior Trees On the Web
•   Specifying dynamic behavior as a search problem

•   A behavior tree is effectively a process flow that’s
    assembled by a crawler and
    executed by depth first search

•   More complexity, potentially evolvability & less
    programming
Agent Design
Agent Design
1.     Start with your basic app
     information in the blackboard
     (personal info, credit card, etc.)

2.   Crawl the behavior tree, starting
     with your goal tree                           2
3.    Execute the tree, picking actions,
                                               1
     scripts, doing data transforms

4.   Update the blackboard with sensed
     state (via GETs)
                                           5
5.   Agent handler is notified when            4
     certain blackboard values change              3
     (i.e. as goal is reached or
     exceptions happen)
A Behavior Tree
            Goal: Buy a coffee & tell my friends


     Find                                   Tell Friends
                         Buy

                                   Order


                                      Pay
Appropriate
                                            Like
  coffee?                                            Tweet
A Behavior Tree




•   Each node is a hyperlink (may be an #anchor within a doc)
•   Leaves are tasks: the interface with the Web and/or your Agent
Distributed & linked
              foo.com
     Goal
      &
                                                  bar.org
    Tactics



                                                            Behavior


                                                        buz.biz




                                                               Action
                                                               Binding
•   Different domains & origin servers can describe pieces of the
    tree
•   Goals lead to behaviors, which trickle down into concrete
Atomic Tasks
    Link Relations
      (for sensing)




                                                                Script

Conditions


                 Actions

•    Relation links are GETted where found to change application state
     Conditions sense your application state
     Actions update (POST, PUT, DELETE) resource state
     Scripts enable code on demand to change application/resource state opaquely
Composite Tasks
                                                                Selector




                                                                     Sequence




•   Branches control complexity by enabling higher-level logic
    Examples: selectors, sequences, decorators, filters, parallel, etc.
Selector vs. Sequence
Example
                       Find & Buy a Coffee

•   Tree provided by me to my agent

•   Find and Buy are effectively link relations that others can
    reference that they implement with their own trees
Example
                      Find & Buy a Coffee

•   Tree provided someone else for generic
    “find something in a document by a criteria”
Example
                       Find & Buy a Coffee

•   Bindings to the “buy” link relation

•   Provided by their respective origin servers
    (or some good samaritan)
Example
                        Find & Buy a Coffee

•   Putting it all together
Summary

• The Web architecture encourages clients to be designed as
  agents in a dynamic information space


• There are practical approaches to programming agents in
  a dynamic environment (blackboard, search, crawler)


• Linked behavior trees may be a general purpose media
  type for systems to manipulate state on the web, in lieu of
  more specific media types

More Related Content

What's hot

Complex Er[jl]ang Processing with StreamBase
Complex Er[jl]ang Processing with StreamBaseComplex Er[jl]ang Processing with StreamBase
Complex Er[jl]ang Processing with StreamBasedarach
 
Analytics framework
Analytics frameworkAnalytics framework
Analytics frameworkzagginlips
 
Couchbase - orbitz use case - nyc meetup
Couchbase - orbitz use case - nyc meetupCouchbase - orbitz use case - nyc meetup
Couchbase - orbitz use case - nyc meetupsharonyb
 
TIG sharepoint for Knowledge managment
TIG sharepoint for Knowledge managmentTIG sharepoint for Knowledge managment
TIG sharepoint for Knowledge managmentBrian Rowe
 
Data distribution in the cloud with Node.js
Data distribution in the cloud with Node.jsData distribution in the cloud with Node.js
Data distribution in the cloud with Node.jsdarach
 
"A Study of I/O and Virtualization Performance with a Search Engine based on ...
"A Study of I/O and Virtualization Performance with a Search Engine based on ..."A Study of I/O and Virtualization Performance with a Search Engine based on ...
"A Study of I/O and Virtualization Performance with a Search Engine based on ...Lucidworks (Archived)
 
Make Your Business More Flexible with Scalable Business Process Management So...
Make Your Business More Flexible with Scalable Business Process Management So...Make Your Business More Flexible with Scalable Business Process Management So...
Make Your Business More Flexible with Scalable Business Process Management So...Perficient, Inc.
 

What's hot (8)

Complex Er[jl]ang Processing with StreamBase
Complex Er[jl]ang Processing with StreamBaseComplex Er[jl]ang Processing with StreamBase
Complex Er[jl]ang Processing with StreamBase
 
RavenDB overview
RavenDB overviewRavenDB overview
RavenDB overview
 
Analytics framework
Analytics frameworkAnalytics framework
Analytics framework
 
Couchbase - orbitz use case - nyc meetup
Couchbase - orbitz use case - nyc meetupCouchbase - orbitz use case - nyc meetup
Couchbase - orbitz use case - nyc meetup
 
TIG sharepoint for Knowledge managment
TIG sharepoint for Knowledge managmentTIG sharepoint for Knowledge managment
TIG sharepoint for Knowledge managment
 
Data distribution in the cloud with Node.js
Data distribution in the cloud with Node.jsData distribution in the cloud with Node.js
Data distribution in the cloud with Node.js
 
"A Study of I/O and Virtualization Performance with a Search Engine based on ...
"A Study of I/O and Virtualization Performance with a Search Engine based on ..."A Study of I/O and Virtualization Performance with a Search Engine based on ...
"A Study of I/O and Virtualization Performance with a Search Engine based on ...
 
Make Your Business More Flexible with Scalable Business Process Management So...
Make Your Business More Flexible with Scalable Business Process Management So...Make Your Business More Flexible with Scalable Business Process Management So...
Make Your Business More Flexible with Scalable Business Process Management So...
 

Similar to Linking Data and Actions on the Web

Facebook architecture
Facebook architectureFacebook architecture
Facebook architecturedrewz lin
 
Facebook architecture
Facebook architectureFacebook architecture
Facebook architecturemysqlops
 
Qcon 090408233824-phpapp01
Qcon 090408233824-phpapp01Qcon 090408233824-phpapp01
Qcon 090408233824-phpapp01jgregory1234
 
Facebook的架构
Facebook的架构Facebook的架构
Facebook的架构yiditushe
 
HATEOAS: The Confusing Bit from REST
HATEOAS: The Confusing Bit from RESTHATEOAS: The Confusing Bit from REST
HATEOAS: The Confusing Bit from RESTelliando dias
 
Semantic framework for web scraping.
Semantic framework for web scraping.Semantic framework for web scraping.
Semantic framework for web scraping.Shyjal Raazi
 
Presto Summit 2018 - 02 - LinkedIn
Presto Summit 2018  - 02 - LinkedInPresto Summit 2018  - 02 - LinkedIn
Presto Summit 2018 - 02 - LinkedInkbajda
 
Designing microservices part2
Designing microservices part2Designing microservices part2
Designing microservices part2Masashi Narumoto
 
Big Data (NJ SQL Server User Group)
Big Data (NJ SQL Server User Group)Big Data (NJ SQL Server User Group)
Big Data (NJ SQL Server User Group)Don Demcsak
 
Dropping ACID: Wrapping Your Mind Around NoSQL Databases
Dropping ACID: Wrapping Your Mind Around NoSQL DatabasesDropping ACID: Wrapping Your Mind Around NoSQL Databases
Dropping ACID: Wrapping Your Mind Around NoSQL DatabasesKyle Banerjee
 
Generating docs from APIs
Generating docs from APIsGenerating docs from APIs
Generating docs from APIsjamiehannaford
 
Bernadette Hyland SemTech 2011 West - Linked Data Cookbook
Bernadette Hyland SemTech 2011 West - Linked Data CookbookBernadette Hyland SemTech 2011 West - Linked Data Cookbook
Bernadette Hyland SemTech 2011 West - Linked Data CookbookBernadette Hyland-Wood
 
Alla ricerca della User Story perduta
Alla ricerca della User Story perdutaAlla ricerca della User Story perduta
Alla ricerca della User Story perdutaEdoardo Schepis
 
Alla ricerca della user story perduta
Alla ricerca della user story perdutaAlla ricerca della user story perduta
Alla ricerca della user story perdutaBetter Software
 
Adapter Poxy Pattern
Adapter Poxy PatternAdapter Poxy Pattern
Adapter Poxy PatternPhilip Zhong
 
Enterprise Software Development Patterns
Enterprise Software Development PatternsEnterprise Software Development Patterns
Enterprise Software Development PatternsJosh Lane
 
Hadoop Data Reservoir Webinar
Hadoop Data Reservoir WebinarHadoop Data Reservoir Webinar
Hadoop Data Reservoir WebinarPlatfora
 
Scaling Databases On The Cloud
Scaling Databases On The CloudScaling Databases On The Cloud
Scaling Databases On The CloudImaginea
 

Similar to Linking Data and Actions on the Web (20)

WebDev Crash Course
WebDev Crash CourseWebDev Crash Course
WebDev Crash Course
 
Facebook architecture
Facebook architectureFacebook architecture
Facebook architecture
 
Facebook architecture
Facebook architectureFacebook architecture
Facebook architecture
 
Qcon 090408233824-phpapp01
Qcon 090408233824-phpapp01Qcon 090408233824-phpapp01
Qcon 090408233824-phpapp01
 
Facebook的架构
Facebook的架构Facebook的架构
Facebook的架构
 
HATEOAS: The Confusing Bit from REST
HATEOAS: The Confusing Bit from RESTHATEOAS: The Confusing Bit from REST
HATEOAS: The Confusing Bit from REST
 
Semantic framework for web scraping.
Semantic framework for web scraping.Semantic framework for web scraping.
Semantic framework for web scraping.
 
Presto Summit 2018 - 02 - LinkedIn
Presto Summit 2018  - 02 - LinkedInPresto Summit 2018  - 02 - LinkedIn
Presto Summit 2018 - 02 - LinkedIn
 
Designing microservices part2
Designing microservices part2Designing microservices part2
Designing microservices part2
 
Big Data (NJ SQL Server User Group)
Big Data (NJ SQL Server User Group)Big Data (NJ SQL Server User Group)
Big Data (NJ SQL Server User Group)
 
Dropping ACID: Wrapping Your Mind Around NoSQL Databases
Dropping ACID: Wrapping Your Mind Around NoSQL DatabasesDropping ACID: Wrapping Your Mind Around NoSQL Databases
Dropping ACID: Wrapping Your Mind Around NoSQL Databases
 
Generating docs from APIs
Generating docs from APIsGenerating docs from APIs
Generating docs from APIs
 
Hpts 2011 flexible_oltp
Hpts 2011 flexible_oltpHpts 2011 flexible_oltp
Hpts 2011 flexible_oltp
 
Bernadette Hyland SemTech 2011 West - Linked Data Cookbook
Bernadette Hyland SemTech 2011 West - Linked Data CookbookBernadette Hyland SemTech 2011 West - Linked Data Cookbook
Bernadette Hyland SemTech 2011 West - Linked Data Cookbook
 
Alla ricerca della User Story perduta
Alla ricerca della User Story perdutaAlla ricerca della User Story perduta
Alla ricerca della User Story perduta
 
Alla ricerca della user story perduta
Alla ricerca della user story perdutaAlla ricerca della user story perduta
Alla ricerca della user story perduta
 
Adapter Poxy Pattern
Adapter Poxy PatternAdapter Poxy Pattern
Adapter Poxy Pattern
 
Enterprise Software Development Patterns
Enterprise Software Development PatternsEnterprise Software Development Patterns
Enterprise Software Development Patterns
 
Hadoop Data Reservoir Webinar
Hadoop Data Reservoir WebinarHadoop Data Reservoir Webinar
Hadoop Data Reservoir Webinar
 
Scaling Databases On The Cloud
Scaling Databases On The CloudScaling Databases On The Cloud
Scaling Databases On The Cloud
 

More from Stuart Charlton

Applied tactics for your transformation
Applied tactics for your transformationApplied tactics for your transformation
Applied tactics for your transformationStuart Charlton
 
Cloud Foundry Vancouver Meetup July 2016
Cloud Foundry Vancouver Meetup July 2016Cloud Foundry Vancouver Meetup July 2016
Cloud Foundry Vancouver Meetup July 2016Stuart Charlton
 
Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!Stuart Charlton
 
The Cloud Foundry Story on OpenStack
The Cloud Foundry Story on OpenStackThe Cloud Foundry Story on OpenStack
The Cloud Foundry Story on OpenStackStuart Charlton
 
Deploying to Production 50+ Times a Day - Calgary Agile Users Group 2015
Deploying to Production 50+ Times a Day - Calgary Agile Users Group 2015Deploying to Production 50+ Times a Day - Calgary Agile Users Group 2015
Deploying to Production 50+ Times a Day - Calgary Agile Users Group 2015Stuart Charlton
 
Speeding up enterprises, one deploy at a time - Devopsdays Toronto 2014
Speeding up enterprises, one deploy at a time - Devopsdays Toronto 2014Speeding up enterprises, one deploy at a time - Devopsdays Toronto 2014
Speeding up enterprises, one deploy at a time - Devopsdays Toronto 2014Stuart Charlton
 
From Agile Development to Agile Operations (QCon SF 2009)
From Agile Development to Agile Operations (QCon SF 2009)From Agile Development to Agile Operations (QCon SF 2009)
From Agile Development to Agile Operations (QCon SF 2009)Stuart Charlton
 
Designing for the Cloud Tutorial - QCon SF 2009
Designing for the Cloud Tutorial - QCon SF 2009Designing for the Cloud Tutorial - QCon SF 2009
Designing for the Cloud Tutorial - QCon SF 2009Stuart Charlton
 
OOPSLA Cloud Workshop - Designing for the Cloud (Elastra)
OOPSLA Cloud Workshop - Designing for the Cloud (Elastra)OOPSLA Cloud Workshop - Designing for the Cloud (Elastra)
OOPSLA Cloud Workshop - Designing for the Cloud (Elastra)Stuart Charlton
 
Software Licensing In The Cloud (CloudWorld 2009)
Software Licensing In The Cloud  (CloudWorld 2009)Software Licensing In The Cloud  (CloudWorld 2009)
Software Licensing In The Cloud (CloudWorld 2009)Stuart Charlton
 
Designing Enterprise IT Systems with REST - QCon San Francisco 2008
Designing Enterprise IT Systems with REST - QCon San Francisco 2008Designing Enterprise IT Systems with REST - QCon San Francisco 2008
Designing Enterprise IT Systems with REST - QCon San Francisco 2008Stuart Charlton
 
Cloud Computing and the Next-Generation of Enterprise Architecture - Cloud Co...
Cloud Computing and the Next-Generation of Enterprise Architecture - Cloud Co...Cloud Computing and the Next-Generation of Enterprise Architecture - Cloud Co...
Cloud Computing and the Next-Generation of Enterprise Architecture - Cloud Co...Stuart Charlton
 
Cloud Computing for Developers and Architects - QCon 2008 Tutorial
Cloud Computing for Developers and Architects - QCon 2008 TutorialCloud Computing for Developers and Architects - QCon 2008 Tutorial
Cloud Computing for Developers and Architects - QCon 2008 TutorialStuart Charlton
 
Oopsla 2007 - The Web: Distributed Objects Realized!
Oopsla 2007 - The Web: Distributed Objects Realized!Oopsla 2007 - The Web: Distributed Objects Realized!
Oopsla 2007 - The Web: Distributed Objects Realized!Stuart Charlton
 

More from Stuart Charlton (14)

Applied tactics for your transformation
Applied tactics for your transformationApplied tactics for your transformation
Applied tactics for your transformation
 
Cloud Foundry Vancouver Meetup July 2016
Cloud Foundry Vancouver Meetup July 2016Cloud Foundry Vancouver Meetup July 2016
Cloud Foundry Vancouver Meetup July 2016
 
Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!
 
The Cloud Foundry Story on OpenStack
The Cloud Foundry Story on OpenStackThe Cloud Foundry Story on OpenStack
The Cloud Foundry Story on OpenStack
 
Deploying to Production 50+ Times a Day - Calgary Agile Users Group 2015
Deploying to Production 50+ Times a Day - Calgary Agile Users Group 2015Deploying to Production 50+ Times a Day - Calgary Agile Users Group 2015
Deploying to Production 50+ Times a Day - Calgary Agile Users Group 2015
 
Speeding up enterprises, one deploy at a time - Devopsdays Toronto 2014
Speeding up enterprises, one deploy at a time - Devopsdays Toronto 2014Speeding up enterprises, one deploy at a time - Devopsdays Toronto 2014
Speeding up enterprises, one deploy at a time - Devopsdays Toronto 2014
 
From Agile Development to Agile Operations (QCon SF 2009)
From Agile Development to Agile Operations (QCon SF 2009)From Agile Development to Agile Operations (QCon SF 2009)
From Agile Development to Agile Operations (QCon SF 2009)
 
Designing for the Cloud Tutorial - QCon SF 2009
Designing for the Cloud Tutorial - QCon SF 2009Designing for the Cloud Tutorial - QCon SF 2009
Designing for the Cloud Tutorial - QCon SF 2009
 
OOPSLA Cloud Workshop - Designing for the Cloud (Elastra)
OOPSLA Cloud Workshop - Designing for the Cloud (Elastra)OOPSLA Cloud Workshop - Designing for the Cloud (Elastra)
OOPSLA Cloud Workshop - Designing for the Cloud (Elastra)
 
Software Licensing In The Cloud (CloudWorld 2009)
Software Licensing In The Cloud  (CloudWorld 2009)Software Licensing In The Cloud  (CloudWorld 2009)
Software Licensing In The Cloud (CloudWorld 2009)
 
Designing Enterprise IT Systems with REST - QCon San Francisco 2008
Designing Enterprise IT Systems with REST - QCon San Francisco 2008Designing Enterprise IT Systems with REST - QCon San Francisco 2008
Designing Enterprise IT Systems with REST - QCon San Francisco 2008
 
Cloud Computing and the Next-Generation of Enterprise Architecture - Cloud Co...
Cloud Computing and the Next-Generation of Enterprise Architecture - Cloud Co...Cloud Computing and the Next-Generation of Enterprise Architecture - Cloud Co...
Cloud Computing and the Next-Generation of Enterprise Architecture - Cloud Co...
 
Cloud Computing for Developers and Architects - QCon 2008 Tutorial
Cloud Computing for Developers and Architects - QCon 2008 TutorialCloud Computing for Developers and Architects - QCon 2008 Tutorial
Cloud Computing for Developers and Architects - QCon 2008 Tutorial
 
Oopsla 2007 - The Web: Distributed Objects Realized!
Oopsla 2007 - The Web: Distributed Objects Realized!Oopsla 2007 - The Web: Distributed Objects Realized!
Oopsla 2007 - The Web: Distributed Objects Realized!
 

Recently uploaded

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 

Recently uploaded (20)

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 

Linking Data and Actions on the Web

  • 1. Linking Data & Actions On the web On the web RESTfest 2012
  • 2. Introduction • Stuart Charlton (@svrc) • Independent Consultant on cloud, REST, agile delivery, and IT strategy • Weblog: Stu Says Stuff http://www.stucharlton.com/blog • Many thanks to commenters and twitterers on this topic
  • 3. DisclaimerS • This is a sequel (of sorts) to my 2011 WS-REST Keynote • Mostly this is my naïve and incomplete thinking on how to progress the state of the art. • Heavily in debt to ideas from Miro Samek (Statecharts) & Alex Champandard (Game AI), and Jim Webber / Savas Parastadtitis / Ian Robinson (REST in Practice) • I haven’t shared code to back this stuff up so cannot be trusted to be correct or even sane ... but bear with me, I think it’s at least going to be entertaining.
  • 4. Background • The Web Architecture has been an immense success... • ... and yet, we can do better. • There’s a need to design the software for the write side of the web to scale and become nearly as serendipitous as the read side • Is this even possible? • “There’s no write side of the web really.... ... no, in fact, it‘s all GETs”
  • 5. My Claims • The Web architecture’s core strength is in encouraging small pieces of independent agreement to be linked together and shared; we’re missing some agreements for writes • The Web architecture encourages clients to be designed as agents in a dynamic information space • There are practical approaches to programming agents in a dynamic environment • It should be possible to create a general purpose media type for systems to manipulate state on the web, in lieu of more specific media types.
  • 7. Why? • Troublesome Growth in Centralized Services • e.g. Facebook, Twitter, Google+ • Centralization occurs in part because of a limitation of the current web architecture • This is why we have 4 or 5 incompatible “like” buttons everywhere
  • 8. Why? • REST APIs and Integration • Custom media types are the current approach... • ... but this generally is a transitory solution • “RESTful” design thrashing due to lack of prescriptive guidance • Would be reduced with more generic media types (e.g. as with HTML, AtomPub)
  • 9. Why? • Interoperable Domain Application Protocols • RESTbucks vs RESTual Roasters: “All I wanted was a coffee - but I had to rewrite my client!”
  • 10. Why? • Programming models matter • In particular, the client’s model of how it interacts with the server • We’re still often stuck on client method = network method (dynamic RPC)
  • 13. REST Raises the Level of Abstraction • The message vs. the resource/representation • Traditional Client/Server: Client is a script sending/receiving messages • REST: Client is an agent acting in an information space
  • 15. Qualities of the Agent • Goal-Directed • Reactive • Hypermedia workspace (affordances, cached representations) • Sensing can be done to pick up on effects
  • 16. TWO POPULAR Ways to Program ON The Web • Linked Data aka. “CRUD” • Scripting against a REST API aka. “Dynamic RPCs across a pile of Link Relations”
  • 17. A Third Way? Linked REST Data APIs Great for interoperable Everyone understands it analysis Mostly works well Not so great for doing things Not often interoperable across sites
  • 18. Requirements • Need to be able to describe actions • An action is a desired side-effect ; not an HTTP method • Build higher level behaviors while maintaining uniformity of protocol • Preferably describe these serendipitously • Searchable, linkable, follow-your-nose • Preferably without tight coupling to HTTP methods • One server’s action may require a single POST, another’s may require PUT-POST-POST • Present and process data in a uniform way (ala. linked data) • Express requirements, assertions and conditions
  • 19. A Third Way Linked Linked REST Behavior Data APIs Trees Interoperable actions and data An alternative (not replacement) to custom media types
  • 20. Behavior Tree • A constrained hierarchical finite state machine (HFSM) • Approach to programming Game Agent AI (Halo 2, 3, GTA) • Constrained, how? • Goal-oriented HFSM • Reusable sub-states to enable “programming by difference” • Patterns for common programming constructs
  • 21. Behavior Trees On the Web • Specifying dynamic behavior as a search problem • A behavior tree is effectively a process flow that’s assembled by a crawler and executed by depth first search • More complexity, potentially evolvability & less programming
  • 23. Agent Design 1. Start with your basic app information in the blackboard (personal info, credit card, etc.) 2. Crawl the behavior tree, starting with your goal tree 2 3. Execute the tree, picking actions, 1 scripts, doing data transforms 4. Update the blackboard with sensed state (via GETs) 5 5. Agent handler is notified when 4 certain blackboard values change 3 (i.e. as goal is reached or exceptions happen)
  • 24. A Behavior Tree Goal: Buy a coffee & tell my friends Find Tell Friends Buy Order Pay Appropriate Like coffee? Tweet
  • 25. A Behavior Tree • Each node is a hyperlink (may be an #anchor within a doc) • Leaves are tasks: the interface with the Web and/or your Agent
  • 26. Distributed & linked foo.com Goal & bar.org Tactics Behavior buz.biz Action Binding • Different domains & origin servers can describe pieces of the tree • Goals lead to behaviors, which trickle down into concrete
  • 27. Atomic Tasks Link Relations (for sensing) Script Conditions Actions • Relation links are GETted where found to change application state Conditions sense your application state Actions update (POST, PUT, DELETE) resource state Scripts enable code on demand to change application/resource state opaquely
  • 28. Composite Tasks Selector Sequence • Branches control complexity by enabling higher-level logic Examples: selectors, sequences, decorators, filters, parallel, etc.
  • 30. Example Find & Buy a Coffee • Tree provided by me to my agent • Find and Buy are effectively link relations that others can reference that they implement with their own trees
  • 31. Example Find & Buy a Coffee • Tree provided someone else for generic “find something in a document by a criteria”
  • 32. Example Find & Buy a Coffee • Bindings to the “buy” link relation • Provided by their respective origin servers (or some good samaritan)
  • 33. Example Find & Buy a Coffee • Putting it all together
  • 34. Summary • The Web architecture encourages clients to be designed as agents in a dynamic information space • There are practical approaches to programming agents in a dynamic environment (blackboard, search, crawler) • Linked behavior trees may be a general purpose media type for systems to manipulate state on the web, in lieu of more specific media types