![Page 1: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/1.jpg)
WEB HOOKSProgrammable World of Tomorrow
and the
Jeff Lindsaythree years after coining web hooks, people are starting to get excited about them.i’m going to share what they are, why they’re significant, and what’s going on in the growing web hooks ecosystem
![Page 2: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/2.jpg)
WEB HOOKSProgrammable World of Tomorrow
and the
Jeff Lindsayi’ve given a version of this talk before, but this time i’d like to try and focus on this “programmable” idea that helped inspire web hooks.
![Page 3: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/3.jpg)
WARNING:
Emergent dynamics described ahead.
was a guy really excited hearing about web hooks, but was disappointed to see what they are.i’m describing a game changer based on a mechanism that takes one line of code to describe.seems so simple, people assume you can only do simple things. quite the contrary...
![Page 4: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/4.jpg)
go. simple mechanisms can create rich dynamics.easily teach somebody the rules, doesn’t mean they see the implications of those rules.i want to share the implications of this simple mechanism.
![Page 5: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/5.jpg)
in 1997, jon udell talks about websites as data sources that can be reused and remixedtoday that idea isn’t very novel
![Page 6: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/6.jpg)
“a new programming paradigm that takes the whole Internet
as its platform”he envisions the Internet as a programming paradigm
![Page 7: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/7.jpg)
The Programmable Web“The Web as Platform”
it starts to manifest as the programmable web and talk of “the web as a platform”
![Page 8: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/8.jpg)
The Programmable WebAPIs and Mashups
john musser here starts to track apis and mashups in 2005. there are now over 1k apis and increasingly more.apis and mashups became the foundation of the programmable web...
![Page 9: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/9.jpg)
The Programmable WebProgrammatic
APIs and Mashups
but are they? after thinking about web hooks and what they can give us, i realized apis and mashupsdon’t make a programmable web. they make a programmatic web
![Page 10: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/10.jpg)
The Programmable WebTwitter API lets you use Twitter programmatically.It does not let you program Twitter to do more.
Programmatic
they let you use web apps programmatically. they don’t let you program them to do more, whereas web hooks can. so i like to argue that web hooks will bring about the *real* programmable web.
![Page 11: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/11.jpg)
interwebz
User
Web Service
so let’s get specific. here’s an example scenario showing the use of web hooks.
![Page 12: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/12.jpg)
interwebz
User
Web ServiceHi, I’m Twickr,
a new web service.
![Page 13: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/13.jpg)
interwebz
User
“Twickr”
Cool. Sign me up.
![Page 14: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/14.jpg)
interwebz
User
“Twickr”Okay, you’re all set. Now listen...
![Page 15: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/15.jpg)
interwebz
User
“Twickr”I might find myself with some
data you might be interested in.
![Page 16: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/16.jpg)
interwebz
User
“Twickr”
Alight, hold on a sec...
![Page 17: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/17.jpg)
interwebz
User
“Twickr”
hack hackety hack
![Page 18: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/18.jpg)
interwebz
User
“Twickr”
Could you just post it here when you have any?
http://tinyurl.com/6pln4u
![Page 19: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/19.jpg)
interwebz
User
“Twickr”...sure, why not.
Hmm, what is that URL?
![Page 20: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/20.jpg)
interwebz
User
“Twickr”
It’s a tiny handler I putup on App Engine.
![Page 21: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/21.jpg)
interwebz
User
“Twickr”
What does it do?
![Page 22: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/22.jpg)
interwebz
User
“Twickr”
It doesn’t matter to you.Whatever I want...
web hooks are just user-defined http callbacks
![Page 23: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/23.jpg)
interwebz
UserEMPOWERED
EXTENSIBLEWeb Service
but do you see what they did? they made the web service extensible and empowered the user.
![Page 24: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/24.jpg)
a friend of mine got me to explain web hooks to her. not a programmer, but has iphone.she compared it to jailbreaking the iphone: letting users do what they want, customize, add apps, etchaving web hooks is like jailbreaking your web apps. opens functional extensibility.
![Page 25: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/25.jpg)
a pseudo code example of what the heart of implementing web hooks looks like.SIMPLE: make an HTTP request to a user-specified URL on major events
![Page 26: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/26.jpg)
paypal represents on the oldest web hook implementors
![Page 27: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/27.jpg)
their instant payment notification is a web hook
![Page 28: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/28.jpg)
“When a customer pays you, PayPal posts a notification to your server at a URL you specify.”
its framed as a notification, but that doesn’t properly imply the usage its intended for: integration.
![Page 29: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/29.jpg)
started thinking about this in 2006.everything flashed before my eyes and was very confused why it wasn’t used more.felt like i was taking crazy pills. today i know why...
![Page 30: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/30.jpg)
compare to REST.
![Page 31: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/31.jpg)
both have been around longer. rest is simpler.. in fact, it’s almost described as “using HTTP properly”but not until it got a name could it be used in discourse to make it popular
![Page 32: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/32.jpg)
REST
Hooks
rest apis and web hooks are two sides of the same cointhey complement each other in ways i’ll get to laterbut i just want to give this pattern a name, and start associating some ideas with it
![Page 33: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/33.jpg)
Push
Pipes
Plugins
talk is split into three sectionsways to look at the use of web hooksicons will hopefully make more sense as i talk about them
![Page 34: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/34.jpg)
Pushlet’s get started with pushpeople are starting to talk about push and pubsub on the web... although its not the first time
![Page 35: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/35.jpg)
1998 (predating rss) microsoft submitted an internet draft to extend httpto provide a basic pubsub framework called GENA
![Page 36: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/36.jpg)
it had your standard pubsub terms
![Page 37: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/37.jpg)
and added 4 new methods to http.
![Page 38: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/38.jpg)
it expired a year later in 1999 and the group behind it seemed to disappear.however...
![Page 39: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/39.jpg)
Sneaky!
the methods and protocol ended up in the webdav implemented for exchange
![Page 40: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/40.jpg)
but then in 2000, rss 0.92 was released. five years later it gets an icon and widespread adoption.it started with blog feeds, then comment feeds...
![Page 41: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/41.jpg)
then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feedseven feeds of feeds
![Page 42: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/42.jpg)
then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feedseven feeds of feeds
![Page 43: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/43.jpg)
then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feedseven feeds of feeds
![Page 44: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/44.jpg)
then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feedseven feeds of feeds
![Page 45: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/45.jpg)
then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feedseven feeds of feeds
![Page 46: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/46.jpg)
then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feedseven feeds of feeds
![Page 47: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/47.jpg)
then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feedseven feeds of feeds
![Page 48: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/48.jpg)
it makes you think of feeds like in the telecom world
![Page 49: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/49.jpg)
data coming directly to you
![Page 50: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/50.jpg)
but we know that’s not how it works
![Page 51: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/51.jpg)
?
instead we have to go request the data
![Page 52: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/52.jpg)
then it gives it to us. and we do this over and over. are we there yet? are we there yet?
![Page 53: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/53.jpg)
?
feeds made sense in a world where feed readers ran on desktops that couldn’t be pushed to over http
![Page 54: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/54.jpg)
?
of course, now we have other web applications consuming feeds and it doesn’t make sense.even most of our feed readers have become web applications
![Page 55: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/55.jpg)
SUP is a recent incremental solution to increase the efficiency of consuming large amounts of feeds.however, its based on polling and is essentially yet another feed, so i couldn’t help...
![Page 56: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/56.jpg)
SUP DAWG, WE HEARD YOU LIKE FEEDSSO WE MADE YOU A FEED OF OUR FEEDS
![Page 57: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/57.jpg)
evan and kellan gave a great talk a while back about this push issue, and their proposed solution: xmppi have a condensed version of this talk. the slides speak for themselves
![Page 58: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/58.jpg)
![Page 59: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/59.jpg)
![Page 60: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/60.jpg)
![Page 61: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/61.jpg)
![Page 62: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/62.jpg)
![Page 63: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/63.jpg)
![Page 64: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/64.jpg)
(aka XMPP)
they have a great point. polling sucks, and xmpp is a pretty good solution for data streams
![Page 65: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/65.jpg)
but it’s kind of heavy weight. it does a lot and makes a decently complex little system.luckily it’s not *that* hard to use with today’s library support
![Page 66: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/66.jpg)
evan and kellan did point out there are extremes when it comes to data streams.most data streams will probably fall somewhere in between,but i do think xmpp is suited for the fast and furious end
![Page 67: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/67.jpg)
joshua schachter of delicious responded to this talk in a blog post.he basically suggests web hooks as an alternative
![Page 68: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/68.jpg)
“One solution that occurred to me at the time was to build a simple callback system over HTTP.This would fall comfortably between full polling and full persistent publish/subscribe.”
he says they fall comfortably between polling and xmpp. i agree, and think they can cover most use-cases
![Page 69: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/69.jpg)
others seem to agree....this is a standard for discovering and subscribing to content changes.they let you use web hooks OR xmpp, which is nice.good idea, but (like GENA) standard specs alone don’t get very far
![Page 70: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/70.jpg)
gnip is a service that some may have heard of (but don’t understand)
![Page 71: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/71.jpg)
Polling
their main goal is to stop polling as a service in the middle.
![Page 72: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/72.jpg)
RSSAtomXML
Format
Web HooksXMPP
REST
Protocol + Mechanism
Web HooksXMPP
REST
Protocol + Mechanism
RSSAtomXML
Format
Source Destination
Publisher Consumer
they’re basically an adaptor for data streams, letting you pick your own protocol and mechanism, no matter what the feed publisher is providing.
![Page 73: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/73.jpg)
RSSAtomXML
Format
Web HooksXMPP
REST
Protocol + Mechanism
Web HooksXMPP
REST
Protocol + Mechanism
RSSAtomXML
Format
Source Destination
Publisher Consumer
however, they recently dropped support to consume via xmpp, making web hooks their primary push mechanism for consuming data streams.
![Page 74: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/74.jpg)
RSSAtomXML
Format
Web HooksXMPP
REST
Protocol + Mechanism
Web HooksXMPP
REST
Protocol + Mechanism
RSSAtomXML
Format
Source
Publisher Consumer
as an example, if i wanted to get digg updates via web hooks, gnip will poll digg for me and invoke my callback with the content as new updates come in.
![Page 75: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/75.jpg)
RSSAtomXML
Format
Web HooksXMPP
REST
Protocol + Mechanism
Web HooksXMPP
REST
Protocol + Mechanism
RSSAtomXML
Format
Source
Publisher Consumer
alternatively, i could even poll gnip for digg updates. although seemingly redundant, it helps ease the load on digg and allows gnip to provide filtering functionality.
![Page 76: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/76.jpg)
RSSAtomXML
Format
Web HooksXMPP
REST
Protocol + Mechanism
Web HooksXMPP
REST
Protocol + Mechanism
RSSAtomXML
Format
Publisher Consumer
but another example might be if twitter provides an xmpp stream, but i already have a polling setup... gnip would let me poll instead of integrate xmpp.
![Page 77: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/77.jpg)
microformats
in promoting web hooks, i sort of look up to the way microformats work in values and process.very ground up, grassroots... take existing popular use-patterns and make it a convention.microformats can be viewed as an alternative xml+rdf
![Page 78: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/78.jpg)
“Here's a new language we want you to learn, and now you need to output these additional files on your server. It's a hassle. (Microformats) lower the barrier to entry.”
xml+rdf vs microformats
tantek is a big microformats evangelist. he says....
so i told him about web hooks. “what are they?” “push over http” “how are they diff than xmpp?” “they’re a lightweight alternative” lower the barrier to entry...
![Page 79: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/79.jpg)
“Good. XMPP needs a competitor.”
xmpp vs web hooks
he says...
this was encouraging. i mean, when tantek talks, you listen...if for no other reason than
![Page 80: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/80.jpg)
he gets the chicks
![Page 81: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/81.jpg)
unfortunately, xmpp has many features and proposals to do pubsub that web hooks doesn’t.... after all, it’s just a creative use of http requests, not a messaging protocol. so in order to do pubsub with web hooks, you need more to be implemented. well, brad fitzpatrick and brett slatkin are working on that.
![Page 82: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/82.jpg)
Push is good.
so the moral here is that push is good and there’s finally a demand for it. we have some good solutions waiting adoption...
![Page 83: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/83.jpg)
XMPP is ideal when needed,but Web Hooks generally do the job.
as far as xmpp vs web hooks, i think they both have their place. web hooks are easier, so you might as well default to web hooks unless you really need xmpp.
![Page 84: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/84.jpg)
But push is not the point.
however, as i framed this talk, it’s really not about push. it’s a nice way to get the social media kids into bed with web hooks, but hooks are really about more than pubsub and notifications. otherwise i would have called them web notifications or something...
![Page 85: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/85.jpg)
Pipesinstead of push, i was more drawn by the pipes metaphor. i wanted to integrate and orchestrate the web applications i use, conceptually similar to unix pipelining.
![Page 86: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/86.jpg)
so i thought about it. pipes were a really amazing feature that let you get more out of your commands by letting you chain them together. it sort of let you program without programming, combining commands in ways that weren’t necessarily intended by the author.
![Page 87: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/87.jpg)
Program
Input Output
all from a bit of infrastructure involving input and output
![Page 88: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/88.jpg)
Program
STDIN STDOUT
STDERR
stdin, stdout were available to reroute wherever the user wantedmost common use was chaining commands together: piping
![Page 89: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/89.jpg)
cat
xargs
wc
mailecho
grep
wget
so you had all these simple little programs, that might not even be useful alone
![Page 90: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/90.jpg)
cat
xargs
wc
mailecho
grep
wget
string them together...
![Page 91: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/91.jpg)
grepcat
xargs
wc
mailecho
wget
![Page 92: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/92.jpg)
mailgrepcat
xargs
wc
echowget
and you have something more useful than the sum of the parts
![Page 93: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/93.jpg)
Write programs to work together.
Write programs that do one thing and do it well.
Write programs that handle text streams, because that is a universal interface.
this helped put forth the unix philosophy and encouraged building these small composable commands
![Page 94: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/94.jpg)
Program
STDIN
but it doesn’t work without the output. it just breaks.
![Page 95: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/95.jpg)
Web App
API
unfortunately that’s how the web is today. we can talk to web apps, but they really can’t talk to us. or anything else really.
![Page 96: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/96.jpg)
Web App
API Hooks
it’s not that they can’t, they just don’t. we just need to start putting hooks in so they can.those roles are best played by mechanisms that use the protocol the web is built on: http
![Page 97: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/97.jpg)
backhoe
![Page 98: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/98.jpg)
+
front-loader + excavator
![Page 99: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/99.jpg)
Basecamp
mailgrepcat
so we want to combine web applications like we can CLI programs.get more than the sum of the parts. web hooks open up this possibility, but need like APIs, need to be implemented
![Page 100: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/100.jpg)
Basecamp
imagine basecamp with a bunch of hooks for events
![Page 101: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/101.jpg)
Basecamp
Project finished
Todo completed
Milestone created
Contact added
File uploaded
![Page 102: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/102.jpg)
Basecamp
My handlerhttp://example.com/handler
users can write handlers that are just web scripts. they have a url, and thats what you give basecamp
![Page 103: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/103.jpg)
Basecamp
My handlerhttp://example.com/handler
it’s code. it can do anything from there. integrate with other services, make a phone call, order pizza, whatever
![Page 104: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/104.jpg)
Basecamp
Todos
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.
![Page 105: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/105.jpg)
Service integration
web hooks enable service integration
![Page 106: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/106.jpg)
Composability
adding composability to web apps
![Page 107: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/107.jpg)
Code as glue
based on the idea that web urls can run code. and code can do anything.
![Page 108: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/108.jpg)
when i first thought about this, cheap PHP hosting was all over, but it could be even simpler.there are paste bins like this one. made to share formatted code with people over IRC or email
![Page 109: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/109.jpg)
put in some code you want to share or ask a question about
![Page 110: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/110.jpg)
http://pastie.org/84826
hit save and you get a URL you can share when you ask “where’s the data stored?”
![Page 111: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/111.jpg)
i’m thinking of the same thing, but that you write handlers with
![Page 112: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/112.jpg)
http://pastie.org/run/24576
and saving doesn’t just give a url to view, but to run. pass that url into an app with web hooks
![Page 113: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/113.jpg)
Basecamp
Project finishedhttp://pastie.org/run/24576
for example, basecamp. now when you finish a project, everybody meets for shots in the break room.
![Page 114: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/114.jpg)
fortunately, we have this. it’s called appjet by ex googlers.
![Page 115: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/115.jpg)
just hit a button, write code, hit save, share the url. it’s javascript
![Page 116: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/116.jpg)
obviously app engine, although it’s a little more involved than appjet for quick handlers.but it is an option for python.and there are ruby/rails hosts like heroku
![Page 117: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/117.jpg)
one thing i’ve been working on is an extension to play with ways end-users might interact with web hooks
![Page 118: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/118.jpg)
Hey, there’s an event hook here!
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
![Page 119: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/119.jpg)
Save
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.
![Page 120: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/120.jpg)
Real world examples
but these are all mockups and what-ifs... there is a world of web hooks already evolving...
![Page 121: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/121.jpg)
i started by exposing svn hooks as web hooks in devjavu
![Page 122: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/122.jpg)
i talked about web hooks enough using pbwiki as an example, their mysterious cto decided to implement them
![Page 123: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/123.jpg)
and apparently really liked what he found
![Page 124: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/124.jpg)
went all out on hooked events. not sure if it’s made it to production, but really cool
![Page 125: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/125.jpg)
“Building projects with web hooks in mind lets me keep the core Lighthouse source focused, while external services live in their own libraries.”
--Rick Olson
the idea silently spread to rails guys.rick olson used them in lighthouse
![Page 126: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/126.jpg)
“We implemented web hooks a while ago and people have been building all sorts of unexpected stuff on top of it.”
--Tobias Lütke
tobias used them in shopify. i’m told he’s revamping their api to have more hooks. they were one of the earliest adopters and recently had their 1 yr anniversary using web hooks
![Page 127: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/127.jpg)
google code recently caught up other code hosts by providing a post commit hook. it was very well done, as you’d expect from google and in particular shows that authentication can be done with hmac signatures
![Page 128: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/128.jpg)
github was one of the first majorly popular site to use and promote web hooks.
![Page 129: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/129.jpg)
they’ve been doing really well with their post-receive hook. users have used it to integrate with mailing lists, chat, other project management tools, continuous integration, etc
![Page 130: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/130.jpg)
they were so successful with the adhoc integration, they formalized it.but in the best way! using their existing web hook infrastructure. they just have modules running in a separate but local web service.
![Page 131: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/131.jpg)
in fact, that lets them open source it. letting people fork, write new handlers, and push back.this is probably going to be the standard model of service integration.
![Page 132: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/132.jpg)
and a great example of services integrated with github, besides lighthouse, is runcoderun.they run your regression tests for you. continuous integration in the sky. love it.they sign you up automatically if you put their hook in github.
![Page 133: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/133.jpg)
and of course i mentioned paypal. but i should mention, web hooks make so much sensefor paypal... they’re not so much about pushing content, but INTEGRATING. that’s whatweb hooks are great for, even though they can be used for content push.
![Page 134: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/134.jpg)
jott is another example of a web hook implementer that doesn’t know it. they parse voice over the phone and do stuff with it, like post to twitter, etc
![Page 135: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/135.jpg)
they do it with “Links”... which are just hooks. they post to a script that does something with the parsed text. really cool for todos.
![Page 136: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/136.jpg)
User jotts toa Jott Link
The message isconvertedinto text
Message is sent viaHTTP Post to a
web page
Jott reads back theresponse and sendsit via SMS & SMTP
User receivesinformation back
here’s their diagram. totally web hooks.
![Page 137: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/137.jpg)
it become obvious making adaptor services would not only be useful in specific cases, but in general, it makes sense to have services that will turn other protocols into inputs to the web hook ecosystem. the first was email... i built mailhook...
![Page 138: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/138.jpg)
GAE community made one because GAE doesn’t have a way to accept email (but will soon). web hooks were the obvious solution.
![Page 139: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/139.jpg)
rick olson has an open source non-hosted ruby version that will do xmpp.he uses it for lighthouse.
![Page 140: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/140.jpg)
but smtp2web is interesting because it was made because of the limitations of GAE...
![Page 141: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/141.jpg)
in fact a lot of people made these kinds of “micro webservices” to do simple things GAE didn’t do. it was the first glimpse at small, focused services that are like the equivalent of grep, cat, wordcount, etc in the command line piping ecosystem.
![Page 142: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/142.jpg)
then there’s martyn and andy. two guys in the uk that love web hooks.they built this thing called spaghetti junction at a hackday. it involved into...
![Page 143: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/143.jpg)
switchub. i REALLY love this. i knew this sort of thing would emerge, but i didn’t think it would happen until web hooks were more popular. kind of like the pastinbin code runner, they let you create hook inputs with urls to put in apps that you can route to various output handlers: email, irc, etc
![Page 144: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/144.jpg)
my example switchboard. this kind of feels like gnip, only more focused and more about web hooks. so i like it lots.
![Page 145: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/145.jpg)
opening handlers up like github. anybody can write handlers soon.working with them a little to make it real awesome.
![Page 146: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/146.jpg)
switchub would benefit from builtin inputs from various other protocols like email, rss, etc... but instead of having them builtin, they can work with other services to support those kinds of inputs. for example, rssfwd could easily be modified to provide a web hook for rss
![Page 147: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/147.jpg)
switchub is a lot like how i visualized a way for regular users to orchestrate web apps. was inspired by reason: virtual rack mounts
![Page 148: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/148.jpg)
flip it around and wire them together however you like. totally cool.
![Page 149: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/149.jpg)
Pluginsthere’s one more thing i want to talk about.
![Page 150: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/150.jpg)
web was a bunch of pages linked together.
![Page 151: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/151.jpg)
but people kept wanting to access other things through the web (like me today)
![Page 152: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/152.jpg)
so they developed cgi
![Page 153: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/153.jpg)
tangent: this is a neat find. was on reddit. andreessen proposing IMG tag.people fought it, said it needed to be more generalized.he just put it on mosaic and that was that
![Page 154: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/154.jpg)
so these pages... today... because of cgi
![Page 155: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/155.jpg)
are actually the result
![Page 156: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/156.jpg)
of these higher order nodes... the code... the apps. this is most of the web today. neat how that evolved
![Page 157: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/157.jpg)
so you have these applications
![Page 158: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/158.jpg)
and the difference you might think is backend and frontend.but there is a subtly different way to think about it
![Page 159: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/159.jpg)
PagesApplication
logic and content. the read-write web gave us user contributed content...i want user contributed (democratized) logic.
![Page 160: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/160.jpg)
ContentFunction
logic and content. the read-write web gave us user contributed content...i want user contributed (democratized) logic.
![Page 161: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/161.jpg)
ContentFunction
Integrate
not just integrating and composing apps
![Page 162: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/162.jpg)
ContentFunction
IntegrateExtend
but extending apps...
![Page 163: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/163.jpg)
almost called this section Platforms.platforms are really cool. we all love them.i LOVE them, so fb platform was really cool.asked a friend how it worked. he said “web hooks”
![Page 164: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/164.jpg)
sure enough, this looks like web hooks to me. as long as it’s http, calling out... but then using the results in their app? thats different...
![Page 165: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/165.jpg)
in fact a few people have used web hooks for plugins. dabble is a great example.
![Page 166: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/166.jpg)
they do online databased for people that use excel as a database.
![Page 167: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/167.jpg)
their plugin API is great. it uses web hooks!
![Page 168: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/168.jpg)
“Dabble plugins allow Dabble applications to create new, derived fields by calling out to external HTTP-accessible applications. This solves the problem of safely enabling
extension of a centrally-located hosted application, in that, while you’re writing code to extend and enhance the behavior of a Dabble application, your code never
actually runs inside Dabble.”
[General]Name = Amazon Sales Rank
[Sales Rank by ISBN]URL = http://chadfowler.com/dabble/amazon_sales_rank.cgiInput = TextOutput = Number
only they have an extra layer for meta data. but that’s a cool pattern.
![Page 169: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/169.jpg)
“If you’ve used a UNIX-based operating system, you’re probably familiar with the notion of pipes. The output of one program is piped into the input of another, creating a filter chain. This is conceptually the same as the way Dabble’s plugin IO works.
Nice and simple.”
of course, they compare it to pipes. the simplicity. the natural fit of it.
![Page 170: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/170.jpg)
of course, i think they should have web hooks for all their standard CRUD events... this way their database apps can integrate (like PayPal) with the rest of your workflow
![Page 171: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/171.jpg)
in fact, all these “app platforms” like coghead and salesforce should have web hooks.that would make them more useful, less silo’d off into just processing data in their world
![Page 172: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/172.jpg)
![Page 173: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/173.jpg)
![Page 174: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/174.jpg)
IMified uses web hooks. sells the tech too: “allows anyone with basic web programming skills to quickly and easily create ...”
![Page 175: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/175.jpg)
General SystemsTheory
close by dropping some GST on you
![Page 176: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/176.jpg)
General SystemsTheory
central tenet is value is not in the elements or parts of a system
![Page 177: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/177.jpg)
General SystemsTheory
the real value is in the interactions, how they work together. this creates the emergent phenomenon of a system, and defines its behavior
![Page 178: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/178.jpg)
Degrees of freedom
increase the ways to work together, the means of combination, increases the DoF
![Page 179: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/179.jpg)
Increase possibility space
uncover new opportunities in business, tools, and empowerment
![Page 180: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/180.jpg)
“a new programming paradigm that takes the whole Internet
as its platform”this vision for a programming paradigm that IS the internet/web is very compelling... but we’re not there yet.
![Page 181: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/181.jpg)
The Programmable WebAPIs and Hooks
the real programmable web will require
![Page 182: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/182.jpg)
http://flickr.com/photos/nikonfans/439432049/http://flickr.com/photos/omegaman/477866054/http://flickr.com/photos/aquan/2780542698/http://flickr.com/photos/lucky_13/191038503/http://flickr.com/photos/narwhal85/1290912011/http://flickr.com/photos/thomashawk/521532598/http://flickr.com/photos/bendodson/2601002535/http://flickr.com/photos/ntr23/218966763/http://flickr.com/photos/shrimphead/2259353414/http://flickr.com/photos/raphaelmuli/2913907316/http://flickr.com/photos/x180/467764284/http://flickr.com/photos/x180/1704475856/
Thanks!webhooks.org
![Page 183: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/183.jpg)
![Page 184: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/184.jpg)
“What is the equivalent of the pipein the age of the web?”
in 2000, just as rss 0.92 was being released, tim oreilly asks...
since we had nothing better, we assumed the answer was feeds.
![Page 185: Web Hooks And The Programmable World Of Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060109/5551f4ebb4c905421a8b4740/html5/thumbnails/185.jpg)
this eventually gave us yahoo pipes. which just didn’t seem to change the game like you would think... perhaps feeds just aren’t the answer. or maybe they are and the problem is using the pipes analogy. it’s definitely a stretch...