SlideShare a Scribd company logo
1 of 188
webhooks
    jeff lindsay
WEBHOOKS
 AND   THE


FUTURE
OF THE WEB
problem
 solution
  examples
    implementation
         inspiration
               future
problem?
‣ notifications
‣ data syncing
‣ chaining
‣ modification
‣ plugins
‣ notifications
‣ data syncing
‣ chaining
‣ modification
‣ plugins
‣ notifications   “I wish I could get
                 notifications exactly
‣ data syncing   how I want.”
‣ chaining
‣ modification
‣ plugins
‣ notifications
‣ data syncing   “I wish my web apps
                 would keep overlapping
‣ chaining       data in sync.”
‣ modification
‣ plugins
‣ notifications
‣ data syncing
‣ chaining       “I wish I could make
‣ modification    another app do
‣ plugins        something when I use
                 this app.”
‣ notifications
‣ data syncing
‣ chaining
‣ modification    “I wish I could make
‣ plugins        this app work just
                 slightly differently.”
‣ notifications
‣ data syncing
‣ chaining
‣ modification
‣ plugins        “I wish I could let my
                 users extend/build
                 plugins for my app.”
}
‣ notifications
‣ data syncing
‣ chaining           programmability
‣ modification
‣ plugins
WEBHOOKS
WEBHOOKS

       Huh?
web•hooks |ˈwebˌhoŏks|
  pattern of enabling user-defined callbacks
  in web applications
us•er |ˈyoōzər|
call•back |ˈkôlˌbak|
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                        ƒ(x)
call•back |ˈkôlˌbak|
     Program
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library
                               ƒ(x) ƒ(x)
      ƒ(x)            ƒ(x)       ƒ(x)


         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
call•back |ˈkôlˌbak|
     Program
                        ƒ(x)
       ƒ(x)
               ƒ(x)
                               Library

      ƒ(x)            ƒ(x)

         ƒ(x)
                        ƒ(x)

                 ƒ(x)
       ƒ(x)
                       ƒ(x)
“In computer programming, hooking is
a technique used to alter or augment the
behavior of [a program], often without
having access to its source code.”
webhooks origin
subversion hooks

                repository
working copy


                    foo
subversion hooks

                repository
working copy


    foo             foo
subversion hooks

     repository




         foo
subversion hooks

           repository




bar            foo
subversion hooks

           repository




bar            foo
subversion hooks

           repository




bar            bar
subversion hooks

     repository
      pre-commit




          foo       bar




      post-commit
subversion hooks

     repository
      pre-commit




          foo       bar




      post-commit
subversion hooks
Does this user have
                        repository
   permission?

                         pre-commit
Is this change valid?



                             foo       bar




                         post-commit
subversion hooks

     repository
      pre-commit




          foo       bar




      post-commit
subversion hooks

     repository
      pre-commit




          bar       bar




      post-commit
subversion hooks

                       repository
                        pre-commit




                            bar       bar


Send a notice to IRC

                        post-commit
  Try to build the
      project
subversion hooks

           repository




bar            bar
subversion hooks

                          repository
A new change was
committed by Jeff.




       bar                    bar
subversion hooks

                       repository




     bar                   bar




   Damn it Jeff,
you broke the build!
paypal ipn
paypal ipn
paypal ipn
webhooks
SO SIMPLE YOUʼLL THINK ITʼS STUPID
webhooks anatomy



         web app
webhooks anatomy



         web app

                   db
webhooks anatomy


        ui

         web app

                   db
webhooks anatomy


        ui

         web app

                   db
webhooks anatomy


        ui

         web app
        event
        event
                   db
        event
webhooks anatomy


        ui      api

         web app
        event
        event
                   db
        event
webhooks anatomy


        ui      api

         web app
        event
        event
                   db
        event
webhooks anatomy


        ui      api

         web app
        event
        event
                   db
        event
webhooks anatomy


           ui      api

           web app
           event
           event
                     db
           event
callback
webhooks anatomy


               ui      api

               web app
               event
               event
                         db
               event
    callback
webhooks anatomy


        ui      api

         web app
        event
        event
                   db
        event
webhooks anatomy
webhooks anatomy




callback
webhooks anatomy




callback
webhooks anatomy




callback
webhooks anatomy




callback
webhooks anatomy




callback
examples
DEPLOY
PUSH
Hey guys, pull.
k
DEPLOY
PUSH
Hey guys, pull.
k
DEPLOY
Hooks?
http://myserver.com/script
http://myserver.com/script




   R
   ISTE
REG
PUSH
PUSH
Hey guys, pull.
k
OY
   PL
 E
D
1. define achievements here
2. add trigger pings to your backend
3. paste javascript into your layout
not done yet, but...




   QUESTIONS?
more examples
ecommerce



project hosting



notifications



plugins / platform
more examples
ecommerce



project hosting



notifications



plugins / platform
more examples
ecommerce



project hosting



notifications



plugins / platform
more examples
ecommerce



project hosting



notifications



plugins / platform
payoff               notifications
                     data syncing
 FOR THE DEVELOPER
                     chaining
                     modifications
                     plugins
payoff               notifications
                     data syncing
 FOR THE DEVELOPER
                     chaining
                     modifications
                     plugins
payoff               notifications
                     data syncing
 FOR THE DEVELOPER
                     chaining
                     modifications
                     plugins
payoff               notifications
                     data syncing
 FOR THE DEVELOPER
                     chaining
                     modifications
                     plugins
payoff               notifications
                     data syncing
 FOR THE DEVELOPER
                     chaining
                     modifications
                     plugins
payoff               notifications
                     data syncing
 FOR THE DEVELOPER
                     chaining
                     modifications
                     plugins

                     one, simple solution
how to implement
1. design callback channels

  per noun     or   per verb on noun
     wiki              crud?
     project           install/uninstall
     account           pre-commit/post-commit
     plugin




               vs
2. create registration method

 web ui      or    api




            both? :)
3. choose payload format

  POST parameters


  JSON


  XML
4. add trigger code to events
5. consider these options
    queuing posts
      HMAC
        verification
          retry
             return data
                 filtering
                     validation
ecosystem
protocol-droid
protocol-droid


    coming soon...
inspiration
Todos

        Basecamp
Hey, there’s an
event hook here!
Save
future
what to expect from webhooks
what to expect from webhooks


            sharing
what to expect from webhooks


                     sharing

   standardization
what to expect from webhooks


                     sharing

   standardization
what to expect from webhooks


                     sharing

   standardization




                tools
what to expect from webhooks


                     sharing

   standardization
                               integration



                tools
what to expect from webhooks


                     sharing

   standardization
                               integration



                tools
what to expect from webhooks
web of things
embedded devices are getting
more powerful and connected
web of things

 “API for everything”
programming literacy
  As programming becomes more important, it
  will leave the back room and become a key
  skill and attribute of our top intellectual and
  social classes, just as reading and writing did
  in the past.
                               Marc Prensky
program the world

   cloud computing
           +
                         == near real “magic”
     web of things
           +
easier programmability
problem
 solution
  examples
    implementation
         inspiration
               future
use webhooks!

   join the community
   http://webhooks.org
ok, itʼs over...




  QUESTIONS?

More Related Content

What's hot

Stateless Auth using OAuth2 & JWT
Stateless Auth using OAuth2 & JWTStateless Auth using OAuth2 & JWT
Stateless Auth using OAuth2 & JWTGaurav Roy
 
Designing APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven DesignDesigning APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven DesignLaunchAny
 
Developing YARN Applications - Integrating natively to YARN July 24 2014
Developing YARN Applications - Integrating natively to YARN July 24 2014Developing YARN Applications - Integrating natively to YARN July 24 2014
Developing YARN Applications - Integrating natively to YARN July 24 2014Hortonworks
 
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...Daniel Oh
 
OpenTelemetry For Developers
OpenTelemetry For DevelopersOpenTelemetry For Developers
OpenTelemetry For DevelopersKevin Brockhoff
 
Developing Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaDeveloping Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaJoe Stein
 
MuleSoft Event Driven Architecture (EDA Patterns in MuleSoft) - VirtualMuleys63
MuleSoft Event Driven Architecture (EDA Patterns in MuleSoft) - VirtualMuleys63MuleSoft Event Driven Architecture (EDA Patterns in MuleSoft) - VirtualMuleys63
MuleSoft Event Driven Architecture (EDA Patterns in MuleSoft) - VirtualMuleys63Angel Alberici
 
Cloud Native Identity with SPIFFE
Cloud Native Identity with SPIFFECloud Native Identity with SPIFFE
Cloud Native Identity with SPIFFEPrabath Siriwardena
 
Observability in Java: Getting Started with OpenTelemetry
Observability in Java: Getting Started with OpenTelemetryObservability in Java: Getting Started with OpenTelemetry
Observability in Java: Getting Started with OpenTelemetryDevOps.com
 
WebLogic Server Work Managers and Overload Protection
WebLogic Server Work Managers and Overload ProtectionWebLogic Server Work Managers and Overload Protection
WebLogic Server Work Managers and Overload ProtectionJames Bayer
 
IBM Integration Bus and REST APIs - Sanjay Nagchowdhury
IBM Integration Bus and REST APIs - Sanjay NagchowdhuryIBM Integration Bus and REST APIs - Sanjay Nagchowdhury
IBM Integration Bus and REST APIs - Sanjay NagchowdhuryKaren Broughton-Mabbitt
 
Data power Performance Tuning
Data power Performance TuningData power Performance Tuning
Data power Performance TuningKINGSHUK MAJUMDER
 
Introduction to Kubernetes RBAC
Introduction to Kubernetes RBACIntroduction to Kubernetes RBAC
Introduction to Kubernetes RBACKublr
 
Understanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsUnderstanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsTessa Mero
 
Azure DevOps를 활용한 CI, CD 구축
Azure DevOps를 활용한 CI, CD 구축Azure DevOps를 활용한 CI, CD 구축
Azure DevOps를 활용한 CI, CD 구축Taeyoung Kim
 
Service Virtualization
Service VirtualizationService Virtualization
Service VirtualizationErika Barron
 

What's hot (20)

Stateless Auth using OAuth2 & JWT
Stateless Auth using OAuth2 & JWTStateless Auth using OAuth2 & JWT
Stateless Auth using OAuth2 & JWT
 
ELK Stack
ELK StackELK Stack
ELK Stack
 
Designing APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven DesignDesigning APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven Design
 
Developing YARN Applications - Integrating natively to YARN July 24 2014
Developing YARN Applications - Integrating natively to YARN July 24 2014Developing YARN Applications - Integrating natively to YARN July 24 2014
Developing YARN Applications - Integrating natively to YARN July 24 2014
 
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
 
OpenTelemetry For Developers
OpenTelemetry For DevelopersOpenTelemetry For Developers
OpenTelemetry For Developers
 
Developing Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaDeveloping Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache Kafka
 
OAuth 2.0
OAuth 2.0OAuth 2.0
OAuth 2.0
 
MuleSoft Event Driven Architecture (EDA Patterns in MuleSoft) - VirtualMuleys63
MuleSoft Event Driven Architecture (EDA Patterns in MuleSoft) - VirtualMuleys63MuleSoft Event Driven Architecture (EDA Patterns in MuleSoft) - VirtualMuleys63
MuleSoft Event Driven Architecture (EDA Patterns in MuleSoft) - VirtualMuleys63
 
Cloud Native Identity with SPIFFE
Cloud Native Identity with SPIFFECloud Native Identity with SPIFFE
Cloud Native Identity with SPIFFE
 
Observability in Java: Getting Started with OpenTelemetry
Observability in Java: Getting Started with OpenTelemetryObservability in Java: Getting Started with OpenTelemetry
Observability in Java: Getting Started with OpenTelemetry
 
WebLogic Server Work Managers and Overload Protection
WebLogic Server Work Managers and Overload ProtectionWebLogic Server Work Managers and Overload Protection
WebLogic Server Work Managers and Overload Protection
 
IdP, SAML, OAuth
IdP, SAML, OAuthIdP, SAML, OAuth
IdP, SAML, OAuth
 
IBM Integration Bus and REST APIs - Sanjay Nagchowdhury
IBM Integration Bus and REST APIs - Sanjay NagchowdhuryIBM Integration Bus and REST APIs - Sanjay Nagchowdhury
IBM Integration Bus and REST APIs - Sanjay Nagchowdhury
 
Data power Performance Tuning
Data power Performance TuningData power Performance Tuning
Data power Performance Tuning
 
Introduction to Kubernetes RBAC
Introduction to Kubernetes RBACIntroduction to Kubernetes RBAC
Introduction to Kubernetes RBAC
 
Understanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsUnderstanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple Steps
 
Kong
KongKong
Kong
 
Azure DevOps를 활용한 CI, CD 구축
Azure DevOps를 활용한 CI, CD 구축Azure DevOps를 활용한 CI, CD 구축
Azure DevOps를 활용한 CI, CD 구축
 
Service Virtualization
Service VirtualizationService Virtualization
Service Virtualization
 

More from Jeff Lindsay

Hack Party SHDH Lightning Talk
Hack Party SHDH Lightning TalkHack Party SHDH Lightning Talk
Hack Party SHDH Lightning TalkJeff Lindsay
 
Building an Event-driven Web @ Impact
Building an Event-driven Web @ ImpactBuilding an Event-driven Web @ Impact
Building an Event-driven Web @ ImpactJeff Lindsay
 
Evented Web @ Ignite
Evented Web @ IgniteEvented Web @ Ignite
Evented Web @ IgniteJeff Lindsay
 
Hacker Dojo Origins
Hacker Dojo OriginsHacker Dojo Origins
Hacker Dojo OriginsJeff Lindsay
 
APIs That Make Things Happen
APIs That Make Things HappenAPIs That Make Things Happen
APIs That Make Things HappenJeff Lindsay
 
WebHooks in 10 Minutes
WebHooks in 10 MinutesWebHooks in 10 Minutes
WebHooks in 10 MinutesJeff Lindsay
 
Hacker Dojo @ Google
Hacker Dojo @ GoogleHacker Dojo @ Google
Hacker Dojo @ GoogleJeff Lindsay
 
How WebHooks Will Make Us All Programmers
How WebHooks Will Make Us All ProgrammersHow WebHooks Will Make Us All Programmers
How WebHooks Will Make Us All ProgrammersJeff Lindsay
 
Creating + Nurturing Your Indie Game Community
Creating + Nurturing Your Indie Game CommunityCreating + Nurturing Your Indie Game Community
Creating + Nurturing Your Indie Game CommunityJeff Lindsay
 
Dissolving Problems
Dissolving ProblemsDissolving Problems
Dissolving ProblemsJeff Lindsay
 
SHDH Retrospective, Part 2
SHDH Retrospective, Part 2SHDH Retrospective, Part 2
SHDH Retrospective, Part 2Jeff Lindsay
 
SHDH Retrospective, Part 1
SHDH Retrospective, Part 1SHDH Retrospective, Part 1
SHDH Retrospective, Part 1Jeff Lindsay
 
Superglue: Web Hooks and the Future of the Web
Superglue: Web Hooks and the Future of the WebSuperglue: Web Hooks and the Future of the Web
Superglue: Web Hooks and the Future of the WebJeff Lindsay
 
Web Hooks Google Tech Talk
Web Hooks Google Tech TalkWeb Hooks Google Tech Talk
Web Hooks Google Tech TalkJeff Lindsay
 
Beyond Mashups: Service Integration and More
Beyond Mashups: Service Integration and MoreBeyond Mashups: Service Integration and More
Beyond Mashups: Service Integration and MoreJeff Lindsay
 
Web Hooks and the Programmable World of Tomorrow
Web Hooks and the Programmable World of TomorrowWeb Hooks and the Programmable World of Tomorrow
Web Hooks and the Programmable World of TomorrowJeff Lindsay
 

More from Jeff Lindsay (19)

Hack Party SHDH Lightning Talk
Hack Party SHDH Lightning TalkHack Party SHDH Lightning Talk
Hack Party SHDH Lightning Talk
 
NullMQ @ PDX
NullMQ @ PDXNullMQ @ PDX
NullMQ @ PDX
 
Building an Event-driven Web @ Impact
Building an Event-driven Web @ ImpactBuilding an Event-driven Web @ Impact
Building an Event-driven Web @ Impact
 
Evented Web @ Ignite
Evented Web @ IgniteEvented Web @ Ignite
Evented Web @ Ignite
 
Hacker Dojo Origins
Hacker Dojo OriginsHacker Dojo Origins
Hacker Dojo Origins
 
Dinos
DinosDinos
Dinos
 
APIs That Make Things Happen
APIs That Make Things HappenAPIs That Make Things Happen
APIs That Make Things Happen
 
WebHooks in 10 Minutes
WebHooks in 10 MinutesWebHooks in 10 Minutes
WebHooks in 10 Minutes
 
Hacker Dojo @ Google
Hacker Dojo @ GoogleHacker Dojo @ Google
Hacker Dojo @ Google
 
How WebHooks Will Make Us All Programmers
How WebHooks Will Make Us All ProgrammersHow WebHooks Will Make Us All Programmers
How WebHooks Will Make Us All Programmers
 
Creating + Nurturing Your Indie Game Community
Creating + Nurturing Your Indie Game CommunityCreating + Nurturing Your Indie Game Community
Creating + Nurturing Your Indie Game Community
 
Dissolving Problems
Dissolving ProblemsDissolving Problems
Dissolving Problems
 
SHDH Retrospective, Part 2
SHDH Retrospective, Part 2SHDH Retrospective, Part 2
SHDH Retrospective, Part 2
 
SHDH Retrospective, Part 1
SHDH Retrospective, Part 1SHDH Retrospective, Part 1
SHDH Retrospective, Part 1
 
Superglue: Web Hooks and the Future of the Web
Superglue: Web Hooks and the Future of the WebSuperglue: Web Hooks and the Future of the Web
Superglue: Web Hooks and the Future of the Web
 
Web Hooks Google Tech Talk
Web Hooks Google Tech TalkWeb Hooks Google Tech Talk
Web Hooks Google Tech Talk
 
Beyond Mashups: Service Integration and More
Beyond Mashups: Service Integration and MoreBeyond Mashups: Service Integration and More
Beyond Mashups: Service Integration and More
 
Web Hooks and the Programmable World of Tomorrow
Web Hooks and the Programmable World of TomorrowWeb Hooks and the Programmable World of Tomorrow
Web Hooks and the Programmable World of Tomorrow
 
Web Hooks
Web HooksWeb Hooks
Web Hooks
 

Recently uploaded

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
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
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
🐬 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 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
[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
 

Recently uploaded (20)

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
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...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
🐬 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 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
[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
 

Using Web Hooks

Editor's Notes

  1. me: nasa, startups, shdh, web hooks “using webhooks”
  2. more appropriately pretentious. although it’s really about webhooks, then future. webhooks may be the future of the web, but just a small part. who has heard of webhooks? i watch search.twitter for webhooks...
  3. lightning bolts of cloud computing.
  4. i don’t know how this started. it had nothing to do with my talk titles...
  5. tim bray just says they’re the next big thing.
  6. this guy’s not so sure.
  7. it’s great to see people love an idea. i wish i could sell it.
  8. and then there’s this guy. apparently he’s french.
  9. this is what my talk is going to feel like. i’m going to talk about...
  10. before we get to what they are... what problem do they solve? people haven’t been asking for them, so what’s the point? \"If I had asked people what they wanted, they would have said faster horses.\"
  11. like a good engineer i came up with the problems after the solution. like a good programmer i came up with a solution that is very generalized and can be used for lots of stuff. these are the rough problems that webhooks solve, most of which haven’t been done well or much at all on the web.
  12. notifications are the big pull these days. which is cool i suppose. but really just the tip of the iceberg
  13. i use three web applications that have “projects.” i use them all for slightly different things, but none of them share data. twitter to facebook updates is sort of the same thing. both are updates, i like both apps. they should just be about the same data.
  14. this is like the pipes for the web metaphor. this is about composing a system of applications to do more than the parts individually.
  15. there is no open source equivalent for the concept of a SaaS. we don’t have the freedom to change code for things we use in the cloud. think of how many lame projects this would eliminate: “it’s like twitter, but it does INSERT MINOR IMPROVEMENT” what if you could just make it do that?
  16. the most popular desktop apps we use: office, firefox, itunes, photoshop... even cult favorites like quicksilver, winamp, vlc... they all have plugins. how many web apps do you know with plugins?
  17. to me, these ARE all part of the same problem. the web is not programmable enough. programmable web is a misnomer. programmatic web. and if people do try to solve these problems, they reinvent for each one... just lay proper infrastructure. really this is about code in the cloud ... hooks are just a vehicle for code, but we’ll get to this later.
  18. but obviously... we need webhooks. right?
  19. we know what web apps are... callbacks is a bit curious--wait user defined? like end users?
  20. i think of three classes of users. developers, power users, machines, and average users. so far, web hooks are for developers, but part of all this is about bridging the gap between their power and the average user. for the moment, we mostly talk about the first two here
  21. callbacks! you know what callbacks are? well here’s a quick summary, excuse the crude program diagram
  22. programs start and stop, usually have input/output
  23. flow through functions
  24. flow through functions
  25. flow through functions
  26. flow through functions
  27. flow through functions
  28. flow through functions
  29. flow through functions
  30. compelx. use libraries. they have functions, but they’re black boxes
  31. compelx. use libraries. they have functions, but they’re black boxes
  32. we use them like black boxes most of the time
  33. we use them like black boxes most of the time
  34. we use them like black boxes most of the time
  35. we use them like black boxes most of the time
  36. we use them like black boxes most of the time
  37. we use them like black boxes most of the time
  38. unless they have callbacks. here we can modify their behavior! this is also called hooking
  39. unless they have callbacks. here we can modify their behavior! this is also called hooking
  40. unless they have callbacks. here we can modify their behavior! this is also called hooking
  41. unless they have callbacks. here we can modify their behavior! this is also called hooking
  42. unless they have callbacks. here we can modify their behavior! this is also called hooking
  43. unless they have callbacks. here we can modify their behavior! this is also called hooking
  44. unless they have callbacks. here we can modify their behavior! this is also called hooking
  45. unless they have callbacks. here we can modify their behavior! this is also called hooking
  46. unless they have callbacks. here we can modify their behavior! this is also called hooking
  47. unless they have callbacks. here we can modify their behavior! this is also called hooking
  48. devjavu, paypal ... before functional programming even?
  49. look at those extra files in the repo!
  50. code can do anything
  51. all transparent. only see the effects
  52. maybe later this
  53. ipn is a webhook. started as just a real-time ping of a payment, but more events came up...
  54. including events that didn’t involve a user at all. ex: subscription payment failed
  55. simple. register a callback url.
  56. used that to expose svn hooks in devjavu.
  57. simple. too simple? heard disappointment after discovering it was HTTP POST.
  58. came up with this tongue in cheek tagline. but simple isn’t bad. it’s usually great.
  59. simple mechanics, if done right, yield rich, emergent dynamics.
  60. so here’s a regular web app.
  61. so here’s a regular web app.
  62. so here’s a regular web app.
  63. so here’s a regular web app.
  64. so here’s a regular web app.
  65. so here’s a regular web app.
  66. just have the events, stuff your code already does, trigger a callback url using POST. the user will have a callback...
  67. ..registers with you... and now it gets run when events happen
  68. all the app needs to know is its a url. it shouldn’t care about much else.
  69. so what is the callback? it’s just something to handle the post data. cheap php hosting, app engine, appjet, scriptlets... because it’s just a url that runs cgi, it can be any language on any machine...
  70. so what is the callback? it’s just something to handle the post data. cheap php hosting, app engine, appjet, scriptlets... because it’s just a url that runs cgi, it can be any language on any machine...
  71. so what is the callback? it’s just something to handle the post data. cheap php hosting, app engine, appjet, scriptlets... because it’s just a url that runs cgi, it can be any language on any machine...
  72. so what is the callback? it’s just something to handle the post data. cheap php hosting, app engine, appjet, scriptlets... because it’s just a url that runs cgi, it can be any language on any machine...
  73. so what is the callback? it’s just something to handle the post data. cheap php hosting, app engine, appjet, scriptlets... because it’s just a url that runs cgi, it can be any language on any machine...
  74. jon is building a web app. writes code, deploys to server.
  75. jon starts working with a team
  76. jon starts working with a team
  77. jon starts working with a team
  78. jon starts working with a team
  79. jon starts working with a team
  80. jon starts working with a team
  81. jon starts working with a team
  82. jon starts working with a team
  83. gets repetitive
  84. puts a script on his server
  85. registers it as a callback on github for post-recieve
  86. as he pushes, it runs the script
  87. as he pushes, it runs the script
  88. automates his previous manual announcement
  89. and even...
  90. deploys to itself automatically. all he has to do is write code and push. could take it further, he owns the script... maybe testing before deploy?
  91. the issue is that while interacting with amazon, the user picks options that could affect shipping, promotion discounts, and taxes. needs to call out back to you (the store owner) to calculate these.
  92. here’s what they look like. just post params, key value pairs. you can see what i did. they trigger on a lot of events. like login...
  93. verticals: ecommerce
  94. another big vertical
  95. more of a particular use case
  96. this is another use case, but varies a lot in details
  97. let users decide how they will be notified
  98. let users manage data from where they want
  99. let users use your app as part of a system
  100. let users tweak your app to their needs
  101. let users build new functionality for your app. user contributed functionality...
  102. This is real value: empowering your users to do more with your app than what you created it for... with one, simple solution
  103. observer pattern: subscribe to subjects
  104. getpingd, Fethr
  105. getpingd, Fethr
  106. as a user (power user or otherwise), all hookable apps are part of the ecosystem. like web apps with apis.
  107. made to help making callback urls for common things easy
  108. in code in the cloud environments, you usually are limited to web requests for obvious reasons. protocol droid is going to get around that.
  109. this makes working with email mailboxes way easier in the context of the web
  110. it’s neat to see it in netnewswire. looks like mail.app point is to make more protocols easier to work with from web scripts in fairly limited environments... because there will be more of them as the cloud grows
  111. do my own parsing on tasks... extend natural language, or add special codes
  112. for example, all these apps share data about todos. they each have respective specialized talents, but all work with todos. by putting hooks on todo CRUD, you can use their apis to keep them synced pretty well. magically. real-time.
  113. could use hooks to help with their magic, maybe... but could also use them to let people contribute connectors... reference github
  114. monitoring hooks. run some code to restart your server if the site is down?
  115. one thing i’ve been working on is an extension to integrate these ideas.
  116. by detecting some markup in a page, it discovers hooks. like say for new photos from contacts. you want to do something when that happens, click it
  117. and write some code. hit save, it posts to AppJet (or wherever), registers the handler (assuming a standard protocol), and done. all inline. go back and change the code.
  118. botanicalls, camera with webhooks
  119. Any sufficiently advanced technology is indistinguishable from magic.
  120. Web is not programmable/composable enough ... As the web integrates with the world, as it becomes more programmable, so does the world