SlideShare a Scribd company logo
1 of 177
Download to read offline
WEB HOOKS
                     and the
             Programmable World of Tomorrow




                                       Jeff Lindsay
introduction
talk about this idiom, show examples, share ideas, explain significance
how many are familiar with this idiom?
Web Service




   internetz


                                     User


for those that don’t know: a story
Web Service
                 Hi, I’m Twickr,
              a new web service.




internetz


                                   User
“Twickr”


            Cool. Sign me up.




internetz


                                User
“Twickr”
            Okay, you’re all set.
                   Now listen...




internetz


                                    User
“Twickr”
             I might find myself with some
            data you might be interested in.




internetz


                                               User
“Twickr”


            Alight, hold on a sec...




internetz


                                       User
“Twickr”




   internetz


                    User


hack hackety hack
“Twickr”

                Could you just post
            it here when you have any?
              http://tinyurl.com/6pln4u




internetz


                                          User
“Twickr”
             ...sure, why not.
            Hmm, what is that URL?




internetz


                                     User
“Twickr”


            It’s a PHP script I put
              up on Dreamhost.




internetz


                                      User
“Twickr”
            What does it do?




internetz


                               User
“Twickr”


                                          Whatever I want...




   internetz


                                                                                  User


web hooks are simple http event notifications meant to trigger other web scripts
the idea is not new, but not exactly popular. why?
paypal has been doing it for ages
instant payment notification is a web hook
“When a customer pays you, PayPal posts a notification to your server at a URL you specify.”
here’s a diagram. they’ve since added anti-spoofing by requiring a validation step. useful
pattern, but not core to the idea
started thinking about this in 2006.
everything flashed before my eyes and was confused why it wasn’t used more.
felt like i was taking crazy pills
compare to REST.
both have been around longer, but the point is rest 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
REST

                                     Hooks



rest and web hooks are two sides of the same coin
they complement each other in ways i’ll get to later
but i just want to give this pattern a name, and start associating some ideas with it
Push

                                                 Pipes

                                            Plugins


talk is split into three sections
ways to look at the use of web hooks
icons will hopefully make more sense as i talk about them
Push
let’s get started with push
people are starting to talk about push in the context of web content
because of feeds. or rather, the success of feeds
it started with blog feeds, then comment feeds...
then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feeds
even feeds of feeds
then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feeds
even feeds of feeds
then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feeds
even feeds of feeds
then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feeds
even feeds of feeds
then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feeds
even feeds of feeds
then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feeds
even feeds of feeds
then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feeds
even feeds of feeds
it makes you think of feeds like in the telecom world
data coming directly to you
but we know that’s not how it works
?




instead we have to go request the data
then it gives it to us. and we do this over and over.
are we there yet? are we there yet?
?




feeds made sense in a world where feed readers ran on
desktops that couldn’t be pushed to over http
?




of course, now we have other web applications consuming feeds and it doesn’t make sense
even our feed readers have become web applications
evan and kellan gave a great talk about this, and their proposed solution: xmpp
i have a condensed version of this talk. the slides speak for themselves
Web Hooks and the Programmable World of Tomorrow
Web Hooks and the Programmable World of Tomorrow
Web Hooks and the Programmable World of Tomorrow
Web Hooks and the Programmable World of Tomorrow
Web Hooks and the Programmable World of Tomorrow
Web Hooks and the Programmable World of Tomorrow
(aka XMPP)




they have a great point. polling sucks, and xmpp is a pretty good solution for data streams
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
joshua schachter responded to this talk in a blog post.
i don’t know him, but he sounds like a smart guy
“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.”




i think you’re onto something joshua.
i just don’t know about the name PIMP (or even Push RSS really).
it *is* a nice place between polling and xmpp pubsub
it’s worked for paypal...
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 perfect for the fast and furious end
microformats



i’m a fan of microformats. not just in what they do, but how they do it.
very ground up, grassroots... take existing popular use-patterns and make it a convention.
like web hooks, microformats can be viewed as an alternative to something: xml+rdf
xml+rdf vs microformats

    “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.”




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”
xmpp vs web hooks


     “Good. XMPP needs a competitor.”




he says...

this was encouraging. i mean, when tantek talks, you listen...
if for no other reason than
he gets the chicks
started spreading the word as “web hooks” and it started popping up places.
this is a standard for discovering and subscribing to content changes.
they use both web hooks and xmpp, which is a good sign.
good idea, but standard specs alone don’t get very far
gnip though. let me tell you about gnip...
if we could just figure out what they do...
ah, no, they’re on to something
Polling

they started with the goal to eliminate polling.
Great!
but they do a lot in several dimensions, so its hard to explain all that they do.
notice they mention web hooks though... so i gotta figure out what they do.
Source                                                                            Destination

                             Protocol + Mechanism     Protocol + Mechanism

                Format                                                       Format
                            Web Hooks                 Web Hooks
                RSS                                                           RSS
                              XMPP                      XMPP
               Atom                                                          Atom
               XML                                                           XML
                                  REST                     REST


                    Publisher                              Consumer


ok. so here’s what i found out. they’re an adaptor for data streams,
letting publishers and consumers choose their format, protocol, and mechanism of choice
various formats, polling or push using web hooks or xmpp (soon).
Source

                             Protocol + Mechanism   Protocol + Mechanism

                Format                                                     Format
                            Web Hooks               Web Hooks
                RSS                                                         RSS
                              XMPP                    XMPP
               Atom                                                        Atom
               XML                                                         XML
                                  REST                   REST


                    Publisher                            Consumer


so for example, i want a digg data stream
Source

                              Protocol + Mechanism   Protocol + Mechanism

                 Format                                                     Format
                             Web Hooks               Web Hooks
                 RSS                                                         RSS
                               XMPP                    XMPP
                Atom                                                        Atom
                XML                                                         XML
                                   REST                   REST


                     Publisher                            Consumer


they provide in rss over rest, which means polling
Source

                            Protocol + Mechanism   Protocol + Mechanism

                Format                                                    Format
                           Web Hooks               Web Hooks
                RSS                                                        RSS
                             XMPP                    XMPP
               Atom                                                       Atom
               XML                                                        XML
                                 REST                   REST


                    Publisher                           Consumer


but i want web hooks with an atom payload.
gnip makes it happen
Protocol + Mechanism       Protocol + Mechanism

                 Format                                                          Format
                              Web Hooks                  Web Hooks
                 RSS                                                              RSS
                                XMPP                       XMPP
                Atom                                                             Atom
                XML                                                              XML
                                    REST                       REST


                     Publisher                                 Consumer


same thing if twitter provides xmpp notifications, but i have rss polling infrastructure...
gnip makes it happen
Protocol + Mechanism       Protocol + Mechanism

                 Format                                                         Format
                             Web Hooks                  Web Hooks
                 RSS                                                             RSS
                               XMPP                       XMPP
                Atom                                                            Atom
                XML                                                             XML
                                   REST                       REST


                     Publisher                                Consumer


cases like with friendfeed (which doesn’t actually work with fb)
say fb provides atom over rest, but friendfeed doesn’t find that efficient... they want xmpp
gnip
Protocol + Mechanism       Protocol + Mechanism

                 Format                                                         Format
                             Web Hooks                  Web Hooks
                 RSS                                                             RSS
                               XMPP                       XMPP
                Atom                                                            Atom
                XML                                                             XML
                                   REST                       REST


                     Publisher                                Consumer


even something as redundant as polling atom on both ends,
gnip offloads the polling stress from facebook (and adds filters, etc)
Push is good.


so the moral here is that push is good.
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.
But push is not the point.




so far, push has been about pushing content. this is not that interesting to me.
i like functionality. and as simple as web hooks are, they have something xmpp doesn’t:
simple code triggering
Pipes
i love this photo. even more than the cute kid pushing the car
there once was a command line
nav filesystem, launch apps, scripting environment.
but it had an extra something special: pipes. letting you combine applications
Input                                           Output

                                              Program




all from a bit of infrastructure involving input and output
STDIN                                                    STDOUT

                                            Program




                                                                   STDERR



stdin, stdout were available to reroute wherever the user wanted
most common use was chaining commands together: piping
xargs
                                                                               wget
                  echo
                                                            mail

           grep
                                          wc

                                                                         cat

so you had all these simple little programs, that might not even be useful alone
cat




                                xargs
                                               wget
                  echo
                                        mail

           grep
                                  wc




string them together...
cat           grep




             xargs
                                   wget
echo
                            mail


               wc
cat                grep               mail




                                    xargs
                                                                      wget
                echo



                                       wc




and you have something more useful than the sum of the parts
Write programs that do one          thing and do it well.

           Write programs to work           together.

           Write programs that handle text streams,
                 because that is a universal interface.




this helped put forth the unix philosophy
STDIN

                                             Program




but it doesn’t work without the output. it just breaks.
API

                                             Web App




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.
API                                                               Events

                                             Web App




it’s not that they can’t, they just don’t. we need to start placing event hooks in.
REST                                                             Hooks

                                           Web App




those roles are best played by mechanisms that use the protocol the web is built on
backhoe
+

front-loader + excavator
cat                  grep                  mail




                                                                        Basecamp




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
Basecamp




imagine basecamp with a bunch of hooks for events
Basecamp

   Project finished
   Todo completed
   Milestone created
   Contact added
   File uploaded
Basecamp



                                             My handler
                                             http://example.com/handler




users can write handlers that are just web scripts.
they have a url, and thats what you give basecamp
Basecamp



                                            My handler
                                            http://example.com/handler




it’s code. it can do anything from there.
integrate with other services, make a phone call, order pizza, whatever
Todos

                                                                          Basecamp




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.
Service integration


web hooks enable service integration
Composability


adding composability to web apps
Code as glue


based on the idea that web urls can run code. and code can do anything.
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
put in some code you want to share or ask a question about
http://pastie.org/84826


hit save and you get a URL you can share when you ask “where’s the data stored?”
i’m thinking of the same thing, but that you write handlers with
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
Basecamp



                                          Project finished
                                          http://pastie.org/run/24576




for example, basecamp. now when you finish a project, everybody meets for shots in the break room.
fortunately, we have this. it’s called appjet by ex googlers.
just hit a button, write code, hit save, share the url. it’s javascript
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
one thing i’ve been working on is an extension to integrate these ideas.
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
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.
Real world examples




but these are all mockups and what-ifs...
there is a world of web hooks already evolving...
i started by exposing svn hooks as web hooks in devjavu
i talked about web hooks enough using pbwiki as an example,
their mysterious cto decided to implement them
and apparently really liked what he found
went all out on hooked events. not sure if it’s made it to production, but really cool
github though. they had a push hook. in fact, they linked to my blog post from their
homepage for a long time.
they’ve been doing really well with web hooks. we’ll come back to them...
“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




from there the idea silently spread to other rails guys.
rick olson used them in lighthouse
“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
and back to github. 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.
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.
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.
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...
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
my example switchboard. this kind of feels like gnip, only more focused and more about web hooks.
so i like it lots.
opening handlers up like github. anybody can write handlers soon.
working with them a little to make it real awesome.
for example, i suggested rss as an input, but that would require polling. well distribute it!
let somebody like rssfwd implement hooks and use them.
wow, what other services could you build around switchub?
switchub is more of how i envisioned piping on the web.
yahoo pipes was a great experiment, but it’s not real pipes. no integration. only aggregation.
i visualize it more like this.
reason: virtual rack mounts
flip it around and wire them together however you like. totally cool.
and of course i mentioned paypal. but i should mention, web hooks make so much sense
for paypal... they’re not so much about pushing content, but INTEGRATING. that’s what
web hooks are great for, even though they can be used for content push.
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
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.
User jotts to    The message is     Message is sent via   Jott reads back the     User receives
        a Jott Link       converted          HTTP Post to a      response and sends    information back
                           into text           web page           it via SMS & SMTP




here’s their diagram. totally web hooks.
so, thinking back to switchub, and like jott, there’s a lot of cool ideas for something to web
hook services. I made mailhook to parse incoming email and trigger scripts to handle it.
very useful.
GAE community made one because GAE doesn’t have a way to accept email.
web hooks were the obvious solution.
rick olson has an open source non-hosted ruby version that will do xmpp.
he uses it for lighthouse.
but smtp2web is interesting because it was made because of the limitations of GAE...
in fact a lot of people made these kinds of “micro webservices” to do simple things GAE
didn’t do.
http://movq.net




here’s a couple from a site i found. they have a cool cron service ... should be useful in the web hooks
ecosystem
making things more web friendly...
working with lisa dussault to make a IMAP to REST bridge...
this makes working with email mailboxes way easier in the context of the web
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
Write services that do one        thing and do it well.

           Write services to work        together.

           Write services that interact with HTTP,
                  because that is simple + ubiquitous
                                ...and it’s already in your stack.



but these micro webservices are like the tiny CLI programs that aren’t very useful by
themselves. but they need a means to interact with other apps, and web hooks have been the
obvious solution. so i’d like to start pushing these tenets, similar to the unix philosophy
jon udell talks about websites as data sources that can be reused and remixed
today that idea isn’t very novel
“a new programming paradigm
        that takes the whole Internet
               as its platform”



he envisions the Internet (and I’ll say the web) as a programming paradigm. i’d say also an OS, but
that’s for another time. but it won’t be true until apps are composable and easily integratable.
that’s the future i see though.
Plugins
there’s one more thing i want to talk about.
web was a bunch of pages linked together.
but people kept wanting to access other things through the web (like me today)
so they developed cgi
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
so these pages... today... because of cgi
are actually the result
of these higher order nodes... the code... the apps. this is most of the web today.
neat how that evolved
so you have these applications
and the difference you might think is backend and frontend.
but there is a subtly different way to think about it
Logic
 Content




logic and content. the read-write web gave us user contributed content...
i want user contributed (democratized) logic.
Logic
 Content




not just integrating and composing apps
Logic
 Content




but extending apps...
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”
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...
in fact a few people have used web hooks for plugins. dabble is a great example.
they do online databased for people that use excel as a database.
their plugin API is great. it uses web hooks!
“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.cgi
                   Input = Text
                   Output = Number




only they have an extra layer for meta data. but that’s a cool pattern.
“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.
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
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
here’s a little microplatform i made last month.
a twitter bot platform using web hooks.
in fact, i built it with web hooks... using mailhook and appjet.
here’s the code.
you just register hooks, give them a name, and DM tdo with the command and arguments.
IMified uses web hooks. sells the tech too: “allows anyone with basic web programming skills
to quickly and easily create ...”
General Systems
                                    Theory




close by dropping some GST on you
General Systems
                                        Theory




central tenet is value is not in the elements or parts of a system
General Systems
                                     Theory




the real value is in the interactions, how they work together.
this creates the emergent phenomenon of a system, and defines its behavior
Degrees of freedom




increase the ways to work together, the means of combination, increases the DoF
Increase possibility space




uncover new opportunities in business, tools, and empowerment
“a new programming paradigm
       that takes the whole Internet
              as its platform”



sounds cool
Web APIs




half way there
Web APIs
                             Web Hooks



not hard to go the rest of the way
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/




Thanks!
progrium@gmail.com
progrium.com

More Related Content

What's hot

Data encoding and Metadata for Streams
Data encoding and Metadata for StreamsData encoding and Metadata for Streams
Data encoding and Metadata for Streamsunivalence
 
Spark Autotuning Talk - Strata New York
Spark Autotuning Talk - Strata New YorkSpark Autotuning Talk - Strata New York
Spark Autotuning Talk - Strata New YorkHolden Karau
 
Akka-chan's Survival Guide for the Streaming World
Akka-chan's Survival Guide for the Streaming WorldAkka-chan's Survival Guide for the Streaming World
Akka-chan's Survival Guide for the Streaming WorldKonrad Malawski
 
Whats wrong with postgres | PGConf EU 2019 | Craig Kerstiens
Whats wrong with postgres | PGConf EU 2019 | Craig KerstiensWhats wrong with postgres | PGConf EU 2019 | Craig Kerstiens
Whats wrong with postgres | PGConf EU 2019 | Craig KerstiensCitus Data
 
Plugin-based software design with Ruby and RubyGems
Plugin-based software design with Ruby and RubyGemsPlugin-based software design with Ruby and RubyGems
Plugin-based software design with Ruby and RubyGemsSadayuki Furuhashi
 
Widening your JavaScript Application
Widening your JavaScript ApplicationWidening your JavaScript Application
Widening your JavaScript ApplicationAlex McPherson
 
When it all goes wrong | PGConf EU 2019 | Will Leinweber
When it all goes wrong | PGConf EU 2019 | Will LeinweberWhen it all goes wrong | PGConf EU 2019 | Will Leinweber
When it all goes wrong | PGConf EU 2019 | Will LeinweberCitus Data
 
When it all goes wrong (with Postgres) | RailsConf 2019 | Will Leinweber
When it all goes wrong (with Postgres) | RailsConf 2019 | Will LeinweberWhen it all goes wrong (with Postgres) | RailsConf 2019 | Will Leinweber
When it all goes wrong (with Postgres) | RailsConf 2019 | Will LeinweberCitus Data
 
What is your application doing right now? An introduction to Prometheus
What is your application doing right now? An introduction to PrometheusWhat is your application doing right now? An introduction to Prometheus
What is your application doing right now? An introduction to PrometheusMatthias Grüter
 
Systems Monitoring with Prometheus (Devops Ireland April 2015)
Systems Monitoring with Prometheus (Devops Ireland April 2015)Systems Monitoring with Prometheus (Devops Ireland April 2015)
Systems Monitoring with Prometheus (Devops Ireland April 2015)Brian Brazil
 
Forcelandia 2016 PK Chunking
Forcelandia 2016 PK ChunkingForcelandia 2016 PK Chunking
Forcelandia 2016 PK ChunkingDaniel Peter
 
OpenShift – the open-source PaaS by Marek Jelen
OpenShift – the open-source PaaS by Marek JelenOpenShift – the open-source PaaS by Marek Jelen
OpenShift – the open-source PaaS by Marek JelenCodemotion
 
Webhooks - Creating a Programmable Internet
Webhooks - Creating a Programmable InternetWebhooks - Creating a Programmable Internet
Webhooks - Creating a Programmable Internetryan teixeira
 
Introduction to Streaming Analytics
Introduction to Streaming AnalyticsIntroduction to Streaming Analytics
Introduction to Streaming AnalyticsGuido Schmutz
 
Flink Forward SF 2017: Trevor Grant - Introduction to Online Machine Learning...
Flink Forward SF 2017: Trevor Grant - Introduction to Online Machine Learning...Flink Forward SF 2017: Trevor Grant - Introduction to Online Machine Learning...
Flink Forward SF 2017: Trevor Grant - Introduction to Online Machine Learning...Flink Forward
 
Intro - End to end ML with Kubeflow @ SignalConf 2018
Intro - End to end ML with Kubeflow @ SignalConf 2018Intro - End to end ML with Kubeflow @ SignalConf 2018
Intro - End to end ML with Kubeflow @ SignalConf 2018Holden Karau
 
Firebase - A real-time server
Firebase - A real-time serverFirebase - A real-time server
Firebase - A real-time serverAneeq Anwar
 
Riot Games Scalable Data Warehouse Lecture at UCSB / UCLA
Riot Games Scalable Data Warehouse Lecture at UCSB / UCLARiot Games Scalable Data Warehouse Lecture at UCSB / UCLA
Riot Games Scalable Data Warehouse Lecture at UCSB / UCLAsean_seannery
 
Top 30 Scalability Mistakes
Top 30 Scalability MistakesTop 30 Scalability Mistakes
Top 30 Scalability MistakesJohn Coggeshall
 

What's hot (20)

Data encoding and Metadata for Streams
Data encoding and Metadata for StreamsData encoding and Metadata for Streams
Data encoding and Metadata for Streams
 
Spark Autotuning Talk - Strata New York
Spark Autotuning Talk - Strata New YorkSpark Autotuning Talk - Strata New York
Spark Autotuning Talk - Strata New York
 
Akka-chan's Survival Guide for the Streaming World
Akka-chan's Survival Guide for the Streaming WorldAkka-chan's Survival Guide for the Streaming World
Akka-chan's Survival Guide for the Streaming World
 
Whats wrong with postgres | PGConf EU 2019 | Craig Kerstiens
Whats wrong with postgres | PGConf EU 2019 | Craig KerstiensWhats wrong with postgres | PGConf EU 2019 | Craig Kerstiens
Whats wrong with postgres | PGConf EU 2019 | Craig Kerstiens
 
Plugin-based software design with Ruby and RubyGems
Plugin-based software design with Ruby and RubyGemsPlugin-based software design with Ruby and RubyGems
Plugin-based software design with Ruby and RubyGems
 
Widening your JavaScript Application
Widening your JavaScript ApplicationWidening your JavaScript Application
Widening your JavaScript Application
 
Dash presentation
Dash presentationDash presentation
Dash presentation
 
When it all goes wrong | PGConf EU 2019 | Will Leinweber
When it all goes wrong | PGConf EU 2019 | Will LeinweberWhen it all goes wrong | PGConf EU 2019 | Will Leinweber
When it all goes wrong | PGConf EU 2019 | Will Leinweber
 
When it all goes wrong (with Postgres) | RailsConf 2019 | Will Leinweber
When it all goes wrong (with Postgres) | RailsConf 2019 | Will LeinweberWhen it all goes wrong (with Postgres) | RailsConf 2019 | Will Leinweber
When it all goes wrong (with Postgres) | RailsConf 2019 | Will Leinweber
 
What is your application doing right now? An introduction to Prometheus
What is your application doing right now? An introduction to PrometheusWhat is your application doing right now? An introduction to Prometheus
What is your application doing right now? An introduction to Prometheus
 
Systems Monitoring with Prometheus (Devops Ireland April 2015)
Systems Monitoring with Prometheus (Devops Ireland April 2015)Systems Monitoring with Prometheus (Devops Ireland April 2015)
Systems Monitoring with Prometheus (Devops Ireland April 2015)
 
Forcelandia 2016 PK Chunking
Forcelandia 2016 PK ChunkingForcelandia 2016 PK Chunking
Forcelandia 2016 PK Chunking
 
OpenShift – the open-source PaaS by Marek Jelen
OpenShift – the open-source PaaS by Marek JelenOpenShift – the open-source PaaS by Marek Jelen
OpenShift – the open-source PaaS by Marek Jelen
 
Webhooks - Creating a Programmable Internet
Webhooks - Creating a Programmable InternetWebhooks - Creating a Programmable Internet
Webhooks - Creating a Programmable Internet
 
Introduction to Streaming Analytics
Introduction to Streaming AnalyticsIntroduction to Streaming Analytics
Introduction to Streaming Analytics
 
Flink Forward SF 2017: Trevor Grant - Introduction to Online Machine Learning...
Flink Forward SF 2017: Trevor Grant - Introduction to Online Machine Learning...Flink Forward SF 2017: Trevor Grant - Introduction to Online Machine Learning...
Flink Forward SF 2017: Trevor Grant - Introduction to Online Machine Learning...
 
Intro - End to end ML with Kubeflow @ SignalConf 2018
Intro - End to end ML with Kubeflow @ SignalConf 2018Intro - End to end ML with Kubeflow @ SignalConf 2018
Intro - End to end ML with Kubeflow @ SignalConf 2018
 
Firebase - A real-time server
Firebase - A real-time serverFirebase - A real-time server
Firebase - A real-time server
 
Riot Games Scalable Data Warehouse Lecture at UCSB / UCLA
Riot Games Scalable Data Warehouse Lecture at UCSB / UCLARiot Games Scalable Data Warehouse Lecture at UCSB / UCLA
Riot Games Scalable Data Warehouse Lecture at UCSB / UCLA
 
Top 30 Scalability Mistakes
Top 30 Scalability MistakesTop 30 Scalability Mistakes
Top 30 Scalability Mistakes
 

Viewers also liked

Planejamento Estratégico
Planejamento EstratégicoPlanejamento Estratégico
Planejamento EstratégicoGerisval Pessoa
 
Strategy execution ebook why most ideas fail pdf
Strategy execution ebook  why most ideas fail pdfStrategy execution ebook  why most ideas fail pdf
Strategy execution ebook why most ideas fail pdfJeroen De Flander
 
The Ultimate Guide to Creating Visually Appealing Content
The Ultimate Guide to Creating Visually Appealing ContentThe Ultimate Guide to Creating Visually Appealing Content
The Ultimate Guide to Creating Visually Appealing ContentNeil Patel
 
Building an Integrated Marketing Plan
Building an Integrated Marketing PlanBuilding an Integrated Marketing Plan
Building an Integrated Marketing PlanMargaret Dawson
 
E-book free - Ferramentas Visuais para Estrategistas
E-book free - Ferramentas Visuais para EstrategistasE-book free - Ferramentas Visuais para Estrategistas
E-book free - Ferramentas Visuais para EstrategistasMarcelo Pimenta (menta90)
 
Testing for language teachers 101 (1)
Testing for language teachers 101 (1)Testing for language teachers 101 (1)
Testing for language teachers 101 (1)Paul Doyon
 
Evolve or Die: A3 Thinking and Popcorn Flow in Action (#LKCE14)
Evolve or Die: A3 Thinking and Popcorn Flow in Action (#LKCE14)Evolve or Die: A3 Thinking and Popcorn Flow in Action (#LKCE14)
Evolve or Die: A3 Thinking and Popcorn Flow in Action (#LKCE14)Claudio Perrone
 
Why Agile Is Failing in Large Enterprises, And What You Can Do About It
Why Agile Is Failing in Large Enterprises, And What You Can Do About ItWhy Agile Is Failing in Large Enterprises, And What You Can Do About It
Why Agile Is Failing in Large Enterprises, And What You Can Do About ItMike Cottmeyer
 
Fintech and Transformation of the Financial Services Industry
Fintech and Transformation of the Financial Services IndustryFintech and Transformation of the Financial Services Industry
Fintech and Transformation of the Financial Services IndustryRobin Teigland
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great InfographicsSlideShare
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShareKapost
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareEmpowered Presentations
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation OptimizationOneupweb
 
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingHow To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingContent Marketing Institute
 
Dear NSA, let me take care of your slides.
Dear NSA, let me take care of your slides.Dear NSA, let me take care of your slides.
Dear NSA, let me take care of your slides.Emiland
 
What I Carry: 10 Tools for Success
What I Carry: 10 Tools for SuccessWhat I Carry: 10 Tools for Success
What I Carry: 10 Tools for SuccessJonathon Colman
 

Viewers also liked (20)

Planejamento Estratégico
Planejamento EstratégicoPlanejamento Estratégico
Planejamento Estratégico
 
Strategy execution ebook why most ideas fail pdf
Strategy execution ebook  why most ideas fail pdfStrategy execution ebook  why most ideas fail pdf
Strategy execution ebook why most ideas fail pdf
 
BUSINESS QUIZ -Round 1
 BUSINESS QUIZ -Round 1 BUSINESS QUIZ -Round 1
BUSINESS QUIZ -Round 1
 
The Ultimate Guide to Creating Visually Appealing Content
The Ultimate Guide to Creating Visually Appealing ContentThe Ultimate Guide to Creating Visually Appealing Content
The Ultimate Guide to Creating Visually Appealing Content
 
Building an Integrated Marketing Plan
Building an Integrated Marketing PlanBuilding an Integrated Marketing Plan
Building an Integrated Marketing Plan
 
Presentation on Condition Monitoring
Presentation on Condition MonitoringPresentation on Condition Monitoring
Presentation on Condition Monitoring
 
E-book free - Ferramentas Visuais para Estrategistas
E-book free - Ferramentas Visuais para EstrategistasE-book free - Ferramentas Visuais para Estrategistas
E-book free - Ferramentas Visuais para Estrategistas
 
Testing for language teachers 101 (1)
Testing for language teachers 101 (1)Testing for language teachers 101 (1)
Testing for language teachers 101 (1)
 
5000 Sat Words With Definitions
5000 Sat Words With Definitions5000 Sat Words With Definitions
5000 Sat Words With Definitions
 
Evolve or Die: A3 Thinking and Popcorn Flow in Action (#LKCE14)
Evolve or Die: A3 Thinking and Popcorn Flow in Action (#LKCE14)Evolve or Die: A3 Thinking and Popcorn Flow in Action (#LKCE14)
Evolve or Die: A3 Thinking and Popcorn Flow in Action (#LKCE14)
 
Why Agile Is Failing in Large Enterprises, And What You Can Do About It
Why Agile Is Failing in Large Enterprises, And What You Can Do About ItWhy Agile Is Failing in Large Enterprises, And What You Can Do About It
Why Agile Is Failing in Large Enterprises, And What You Can Do About It
 
Fintech and Transformation of the Financial Services Industry
Fintech and Transformation of the Financial Services IndustryFintech and Transformation of the Financial Services Industry
Fintech and Transformation of the Financial Services Industry
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great Infographics
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShare
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
 
You Suck At PowerPoint!
You Suck At PowerPoint!You Suck At PowerPoint!
You Suck At PowerPoint!
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization
 
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingHow To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
 
Dear NSA, let me take care of your slides.
Dear NSA, let me take care of your slides.Dear NSA, let me take care of your slides.
Dear NSA, let me take care of your slides.
 
What I Carry: 10 Tools for Success
What I Carry: 10 Tools for SuccessWhat I Carry: 10 Tools for Success
What I Carry: 10 Tools for Success
 

Similar to Web Hooks and the Programmable World of Tomorrow

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 TomorrowGoogleTecTalks
 
Web Hooks Google Tech Talk
Web Hooks Google Tech TalkWeb Hooks Google Tech Talk
Web Hooks Google Tech TalkJeff Lindsay
 
Synchronous Reads Asynchronous Writes RubyConf 2009
Synchronous Reads Asynchronous Writes RubyConf 2009Synchronous Reads Asynchronous Writes RubyConf 2009
Synchronous Reads Asynchronous Writes RubyConf 2009pauldix
 
Sinatra Rack And Middleware
Sinatra Rack And MiddlewareSinatra Rack And Middleware
Sinatra Rack And MiddlewareBen Schwarz
 
Codebits Handivi
Codebits HandiviCodebits Handivi
Codebits Handivicfpinto
 
Server-Sent Events (real-time HTTP push for HTML5 browsers)
Server-Sent Events (real-time HTTP push for HTML5 browsers)Server-Sent Events (real-time HTTP push for HTML5 browsers)
Server-Sent Events (real-time HTTP push for HTML5 browsers)yay w00t
 
From zero to almost rails in about a million slides...
From zero to almost rails in about a million slides...From zero to almost rails in about a million slides...
From zero to almost rails in about a million slides...david_e_worth
 
WebHooks in 10 Minutes
WebHooks in 10 MinutesWebHooks in 10 Minutes
WebHooks in 10 MinutesJeff Lindsay
 
How To Reinterpret The Web In 180 Seconds
How To Reinterpret The Web In 180 SecondsHow To Reinterpret The Web In 180 Seconds
How To Reinterpret The Web In 180 SecondsBen Schwarz
 
Python and the Web
Python and the WebPython and the Web
Python and the Webpycontw
 
APIs That Make Things Happen
APIs That Make Things HappenAPIs That Make Things Happen
APIs That Make Things HappenJeff Lindsay
 
Real time Web Application with XMPP and Wave
Real time Web Application with XMPP and WaveReal time Web Application with XMPP and Wave
Real time Web Application with XMPP and WaveMickaël Rémond
 
Oscon 2008 Open Micro Blogging Presentation
Oscon 2008 Open Micro Blogging PresentationOscon 2008 Open Micro Blogging Presentation
Oscon 2008 Open Micro Blogging PresentationEvan Prodromou
 
Let's Get Real (time): Server-Sent Events, WebSockets and WebRTC for the soul
Let's Get Real (time): Server-Sent Events, WebSockets and WebRTC for the soulLet's Get Real (time): Server-Sent Events, WebSockets and WebRTC for the soul
Let's Get Real (time): Server-Sent Events, WebSockets and WebRTC for the soulSwanand Pagnis
 
Yahoo Pipes Middleware In The Cloud
Yahoo Pipes Middleware In The CloudYahoo Pipes Middleware In The Cloud
Yahoo Pipes Middleware In The CloudConSanFrancisco123
 
Rewiring the Internet for Ownership with Big Data and Blockchains, by Trent M...
Rewiring the Internet for Ownership with Big Data and Blockchains, by Trent M...Rewiring the Internet for Ownership with Big Data and Blockchains, by Trent M...
Rewiring the Internet for Ownership with Big Data and Blockchains, by Trent M...ascribeIO
 
Jeff Lindsay: Building Public Infrastructure with Autosustainable Services
Jeff Lindsay: Building Public Infrastructure with Autosustainable ServicesJeff Lindsay: Building Public Infrastructure with Autosustainable Services
Jeff Lindsay: Building Public Infrastructure with Autosustainable Servicesit-people
 
PHP is the King, nodejs is the Prince and Lua is the fool
PHP is the King, nodejs is the Prince and Lua is the foolPHP is the King, nodejs is the Prince and Lua is the fool
PHP is the King, nodejs is the Prince and Lua is the foolAlessandro Cinelli (cirpo)
 
Real world functional reactive programming
Real world functional reactive programmingReal world functional reactive programming
Real world functional reactive programmingEric Polerecky
 

Similar to Web Hooks and the Programmable World of Tomorrow (20)

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 Google Tech Talk
Web Hooks Google Tech TalkWeb Hooks Google Tech Talk
Web Hooks Google Tech Talk
 
Synchronous Reads Asynchronous Writes RubyConf 2009
Synchronous Reads Asynchronous Writes RubyConf 2009Synchronous Reads Asynchronous Writes RubyConf 2009
Synchronous Reads Asynchronous Writes RubyConf 2009
 
Sinatra Rack And Middleware
Sinatra Rack And MiddlewareSinatra Rack And Middleware
Sinatra Rack And Middleware
 
Codebits Handivi
Codebits HandiviCodebits Handivi
Codebits Handivi
 
Server-Sent Events (real-time HTTP push for HTML5 browsers)
Server-Sent Events (real-time HTTP push for HTML5 browsers)Server-Sent Events (real-time HTTP push for HTML5 browsers)
Server-Sent Events (real-time HTTP push for HTML5 browsers)
 
From zero to almost rails in about a million slides...
From zero to almost rails in about a million slides...From zero to almost rails in about a million slides...
From zero to almost rails in about a million slides...
 
WebHooks in 10 Minutes
WebHooks in 10 MinutesWebHooks in 10 Minutes
WebHooks in 10 Minutes
 
How To Reinterpret The Web In 180 Seconds
How To Reinterpret The Web In 180 SecondsHow To Reinterpret The Web In 180 Seconds
How To Reinterpret The Web In 180 Seconds
 
Python and the Web
Python and the WebPython and the Web
Python and the Web
 
APIs That Make Things Happen
APIs That Make Things HappenAPIs That Make Things Happen
APIs That Make Things Happen
 
Real time Web Application with XMPP and Wave
Real time Web Application with XMPP and WaveReal time Web Application with XMPP and Wave
Real time Web Application with XMPP and Wave
 
Web Hooks
Web HooksWeb Hooks
Web Hooks
 
Oscon 2008 Open Micro Blogging Presentation
Oscon 2008 Open Micro Blogging PresentationOscon 2008 Open Micro Blogging Presentation
Oscon 2008 Open Micro Blogging Presentation
 
Let's Get Real (time): Server-Sent Events, WebSockets and WebRTC for the soul
Let's Get Real (time): Server-Sent Events, WebSockets and WebRTC for the soulLet's Get Real (time): Server-Sent Events, WebSockets and WebRTC for the soul
Let's Get Real (time): Server-Sent Events, WebSockets and WebRTC for the soul
 
Yahoo Pipes Middleware In The Cloud
Yahoo Pipes Middleware In The CloudYahoo Pipes Middleware In The Cloud
Yahoo Pipes Middleware In The Cloud
 
Rewiring the Internet for Ownership with Big Data and Blockchains, by Trent M...
Rewiring the Internet for Ownership with Big Data and Blockchains, by Trent M...Rewiring the Internet for Ownership with Big Data and Blockchains, by Trent M...
Rewiring the Internet for Ownership with Big Data and Blockchains, by Trent M...
 
Jeff Lindsay: Building Public Infrastructure with Autosustainable Services
Jeff Lindsay: Building Public Infrastructure with Autosustainable ServicesJeff Lindsay: Building Public Infrastructure with Autosustainable Services
Jeff Lindsay: Building Public Infrastructure with Autosustainable Services
 
PHP is the King, nodejs is the Prince and Lua is the fool
PHP is the King, nodejs is the Prince and Lua is the foolPHP is the King, nodejs is the Prince and Lua is the fool
PHP is the King, nodejs is the Prince and Lua is the fool
 
Real world functional reactive programming
Real world functional reactive programmingReal world functional reactive programming
Real world functional reactive programming
 

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
 
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
 
Beyond Mashups: Service Integration and More
Beyond Mashups: Service Integration and MoreBeyond Mashups: Service Integration and More
Beyond Mashups: Service Integration and MoreJeff Lindsay
 

More from Jeff Lindsay (15)

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
 
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
 
Using Web Hooks
Using Web HooksUsing Web Hooks
Using Web Hooks
 
Beyond Mashups: Service Integration and More
Beyond Mashups: Service Integration and MoreBeyond Mashups: Service Integration and More
Beyond Mashups: Service Integration and More
 

Recently uploaded

AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 

Recently uploaded (20)

AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 

Web Hooks and the Programmable World of Tomorrow

  • 1. WEB HOOKS and the Programmable World of Tomorrow Jeff Lindsay introduction talk about this idiom, show examples, share ideas, explain significance how many are familiar with this idiom?
  • 2. Web Service internetz User for those that don’t know: a story
  • 3. Web Service Hi, I’m Twickr, a new web service. internetz User
  • 4. “Twickr” Cool. Sign me up. internetz User
  • 5. “Twickr” Okay, you’re all set. Now listen... internetz User
  • 6. “Twickr” I might find myself with some data you might be interested in. internetz User
  • 7. “Twickr” Alight, hold on a sec... internetz User
  • 8. “Twickr” internetz User hack hackety hack
  • 9. “Twickr” Could you just post it here when you have any? http://tinyurl.com/6pln4u internetz User
  • 10. “Twickr” ...sure, why not. Hmm, what is that URL? internetz User
  • 11. “Twickr” It’s a PHP script I put up on Dreamhost. internetz User
  • 12. “Twickr” What does it do? internetz User
  • 13. “Twickr” Whatever I want... internetz User web hooks are simple http event notifications meant to trigger other web scripts
  • 14. the idea is not new, but not exactly popular. why? paypal has been doing it for ages
  • 16. “When a customer pays you, PayPal posts a notification to your server at a URL you specify.”
  • 17. here’s a diagram. they’ve since added anti-spoofing by requiring a validation step. useful pattern, but not core to the idea
  • 18. started thinking about this in 2006. everything flashed before my eyes and was confused why it wasn’t used more. felt like i was taking crazy pills
  • 20. both have been around longer, but the point is rest 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
  • 21. REST Hooks rest and web hooks are two sides of the same coin they complement each other in ways i’ll get to later but i just want to give this pattern a name, and start associating some ideas with it
  • 22. Push Pipes Plugins talk is split into three sections ways to look at the use of web hooks icons will hopefully make more sense as i talk about them
  • 23. Push let’s get started with push people are starting to talk about push in the context of web content
  • 24. because of feeds. or rather, the success of feeds it started with blog feeds, then comment feeds...
  • 25. then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feeds even feeds of feeds
  • 26. then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feeds even feeds of feeds
  • 27. then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feeds even feeds of feeds
  • 28. then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feeds even feeds of feeds
  • 29. then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feeds even feeds of feeds
  • 30. then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feeds even feeds of feeds
  • 31. then soon exploded into twitter feeds, photo feeds, activity feeds, event feeds, bookmark feeds even feeds of feeds
  • 32. it makes you think of feeds like in the telecom world
  • 34. but we know that’s not how it works
  • 35. ? instead we have to go request the data
  • 36. then it gives it to us. and we do this over and over. are we there yet? are we there yet?
  • 37. ? feeds made sense in a world where feed readers ran on desktops that couldn’t be pushed to over http
  • 38. ? of course, now we have other web applications consuming feeds and it doesn’t make sense even our feed readers have become web applications
  • 39. evan and kellan gave a great talk about this, and their proposed solution: xmpp i have a condensed version of this talk. the slides speak for themselves
  • 46. (aka XMPP) they have a great point. polling sucks, and xmpp is a pretty good solution for data streams
  • 47. 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
  • 48. joshua schachter responded to this talk in a blog post. i don’t know him, but he sounds like a smart guy
  • 49. “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.” i think you’re onto something joshua. i just don’t know about the name PIMP (or even Push RSS really). it *is* a nice place between polling and xmpp pubsub
  • 50. it’s worked for paypal...
  • 51. 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 perfect for the fast and furious end
  • 52. microformats i’m a fan of microformats. not just in what they do, but how they do it. very ground up, grassroots... take existing popular use-patterns and make it a convention. like web hooks, microformats can be viewed as an alternative to something: xml+rdf
  • 53. xml+rdf vs microformats “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.” 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”
  • 54. xmpp vs web hooks “Good. XMPP needs a competitor.” he says... this was encouraging. i mean, when tantek talks, you listen... if for no other reason than
  • 55. he gets the chicks
  • 56. started spreading the word as “web hooks” and it started popping up places. this is a standard for discovering and subscribing to content changes. they use both web hooks and xmpp, which is a good sign. good idea, but standard specs alone don’t get very far
  • 57. gnip though. let me tell you about gnip... if we could just figure out what they do... ah, no, they’re on to something
  • 58. Polling they started with the goal to eliminate polling. Great!
  • 59. but they do a lot in several dimensions, so its hard to explain all that they do. notice they mention web hooks though... so i gotta figure out what they do.
  • 60. Source Destination Protocol + Mechanism Protocol + Mechanism Format Format Web Hooks Web Hooks RSS RSS XMPP XMPP Atom Atom XML XML REST REST Publisher Consumer ok. so here’s what i found out. they’re an adaptor for data streams, letting publishers and consumers choose their format, protocol, and mechanism of choice various formats, polling or push using web hooks or xmpp (soon).
  • 61. Source Protocol + Mechanism Protocol + Mechanism Format Format Web Hooks Web Hooks RSS RSS XMPP XMPP Atom Atom XML XML REST REST Publisher Consumer so for example, i want a digg data stream
  • 62. Source Protocol + Mechanism Protocol + Mechanism Format Format Web Hooks Web Hooks RSS RSS XMPP XMPP Atom Atom XML XML REST REST Publisher Consumer they provide in rss over rest, which means polling
  • 63. Source Protocol + Mechanism Protocol + Mechanism Format Format Web Hooks Web Hooks RSS RSS XMPP XMPP Atom Atom XML XML REST REST Publisher Consumer but i want web hooks with an atom payload. gnip makes it happen
  • 64. Protocol + Mechanism Protocol + Mechanism Format Format Web Hooks Web Hooks RSS RSS XMPP XMPP Atom Atom XML XML REST REST Publisher Consumer same thing if twitter provides xmpp notifications, but i have rss polling infrastructure... gnip makes it happen
  • 65. Protocol + Mechanism Protocol + Mechanism Format Format Web Hooks Web Hooks RSS RSS XMPP XMPP Atom Atom XML XML REST REST Publisher Consumer cases like with friendfeed (which doesn’t actually work with fb) say fb provides atom over rest, but friendfeed doesn’t find that efficient... they want xmpp gnip
  • 66. Protocol + Mechanism Protocol + Mechanism Format Format Web Hooks Web Hooks RSS RSS XMPP XMPP Atom Atom XML XML REST REST Publisher Consumer even something as redundant as polling atom on both ends, gnip offloads the polling stress from facebook (and adds filters, etc)
  • 67. Push is good. so the moral here is that push is good.
  • 68. 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.
  • 69. But push is not the point. so far, push has been about pushing content. this is not that interesting to me. i like functionality. and as simple as web hooks are, they have something xmpp doesn’t: simple code triggering
  • 70. Pipes i love this photo. even more than the cute kid pushing the car
  • 71. there once was a command line nav filesystem, launch apps, scripting environment. but it had an extra something special: pipes. letting you combine applications
  • 72. Input Output Program all from a bit of infrastructure involving input and output
  • 73. STDIN STDOUT Program STDERR stdin, stdout were available to reroute wherever the user wanted most common use was chaining commands together: piping
  • 74. xargs wget echo mail grep wc cat so you had all these simple little programs, that might not even be useful alone
  • 75. cat xargs wget echo mail grep wc string them together...
  • 76. cat grep xargs wget echo mail wc
  • 77. cat grep mail xargs wget echo wc and you have something more useful than the sum of the parts
  • 78. Write programs that do one thing and do it well. Write programs to work together. Write programs that handle text streams, because that is a universal interface. this helped put forth the unix philosophy
  • 79. STDIN Program but it doesn’t work without the output. it just breaks.
  • 80. API Web App 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.
  • 81. API Events Web App it’s not that they can’t, they just don’t. we need to start placing event hooks in.
  • 82. REST Hooks Web App those roles are best played by mechanisms that use the protocol the web is built on
  • 85. cat grep mail Basecamp 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
  • 86. Basecamp imagine basecamp with a bunch of hooks for events
  • 87. Basecamp Project finished Todo completed Milestone created Contact added File uploaded
  • 88. Basecamp My handler http://example.com/handler users can write handlers that are just web scripts. they have a url, and thats what you give basecamp
  • 89. Basecamp My handler http://example.com/handler it’s code. it can do anything from there. integrate with other services, make a phone call, order pizza, whatever
  • 90. Todos Basecamp 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.
  • 91. Service integration web hooks enable service integration
  • 93. Code as glue based on the idea that web urls can run code. and code can do anything.
  • 94. 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
  • 95. put in some code you want to share or ask a question about
  • 96. http://pastie.org/84826 hit save and you get a URL you can share when you ask “where’s the data stored?”
  • 97. i’m thinking of the same thing, but that you write handlers with
  • 98. 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
  • 99. Basecamp Project finished http://pastie.org/run/24576 for example, basecamp. now when you finish a project, everybody meets for shots in the break room.
  • 100. fortunately, we have this. it’s called appjet by ex googlers.
  • 101. just hit a button, write code, hit save, share the url. it’s javascript
  • 102. 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
  • 103. one thing i’ve been working on is an extension to integrate these ideas.
  • 104. 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
  • 105. 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.
  • 106. Real world examples but these are all mockups and what-ifs... there is a world of web hooks already evolving...
  • 107. i started by exposing svn hooks as web hooks in devjavu
  • 108. i talked about web hooks enough using pbwiki as an example, their mysterious cto decided to implement them
  • 109. and apparently really liked what he found
  • 110. went all out on hooked events. not sure if it’s made it to production, but really cool
  • 111. github though. they had a push hook. in fact, they linked to my blog post from their homepage for a long time.
  • 112. they’ve been doing really well with web hooks. we’ll come back to them...
  • 113. “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 from there the idea silently spread to other rails guys. rick olson used them in lighthouse
  • 114. “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
  • 115. and back to github. 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.
  • 116. 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.
  • 117. 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.
  • 118. 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...
  • 119. 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
  • 120. my example switchboard. this kind of feels like gnip, only more focused and more about web hooks. so i like it lots.
  • 121. opening handlers up like github. anybody can write handlers soon. working with them a little to make it real awesome.
  • 122. for example, i suggested rss as an input, but that would require polling. well distribute it! let somebody like rssfwd implement hooks and use them. wow, what other services could you build around switchub?
  • 123. switchub is more of how i envisioned piping on the web. yahoo pipes was a great experiment, but it’s not real pipes. no integration. only aggregation.
  • 124. i visualize it more like this. reason: virtual rack mounts
  • 125. flip it around and wire them together however you like. totally cool.
  • 126. and of course i mentioned paypal. but i should mention, web hooks make so much sense for paypal... they’re not so much about pushing content, but INTEGRATING. that’s what web hooks are great for, even though they can be used for content push.
  • 127. 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
  • 128. 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.
  • 129. User jotts to The message is Message is sent via Jott reads back the User receives a Jott Link converted HTTP Post to a response and sends information back into text web page it via SMS & SMTP here’s their diagram. totally web hooks.
  • 130. so, thinking back to switchub, and like jott, there’s a lot of cool ideas for something to web hook services. I made mailhook to parse incoming email and trigger scripts to handle it. very useful.
  • 131. GAE community made one because GAE doesn’t have a way to accept email. web hooks were the obvious solution.
  • 132. rick olson has an open source non-hosted ruby version that will do xmpp. he uses it for lighthouse.
  • 133. but smtp2web is interesting because it was made because of the limitations of GAE...
  • 134. in fact a lot of people made these kinds of “micro webservices” to do simple things GAE didn’t do.
  • 135. http://movq.net here’s a couple from a site i found. they have a cool cron service ... should be useful in the web hooks ecosystem
  • 136. making things more web friendly... working with lisa dussault to make a IMAP to REST bridge...
  • 137. this makes working with email mailboxes way easier in the context of the web
  • 138. 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
  • 139. Write services that do one thing and do it well. Write services to work together. Write services that interact with HTTP, because that is simple + ubiquitous ...and it’s already in your stack. but these micro webservices are like the tiny CLI programs that aren’t very useful by themselves. but they need a means to interact with other apps, and web hooks have been the obvious solution. so i’d like to start pushing these tenets, similar to the unix philosophy
  • 140. jon udell talks about websites as data sources that can be reused and remixed today that idea isn’t very novel
  • 141. “a new programming paradigm that takes the whole Internet as its platform” he envisions the Internet (and I’ll say the web) as a programming paradigm. i’d say also an OS, but that’s for another time. but it won’t be true until apps are composable and easily integratable.
  • 142. that’s the future i see though.
  • 143. Plugins there’s one more thing i want to talk about.
  • 144. web was a bunch of pages linked together.
  • 145. but people kept wanting to access other things through the web (like me today)
  • 147. 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
  • 148. so these pages... today... because of cgi
  • 149. are actually the result
  • 150. of these higher order nodes... the code... the apps. this is most of the web today. neat how that evolved
  • 151. so you have these applications
  • 152. and the difference you might think is backend and frontend. but there is a subtly different way to think about it
  • 153. Logic Content logic and content. the read-write web gave us user contributed content... i want user contributed (democratized) logic.
  • 154. Logic Content not just integrating and composing apps
  • 156. 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”
  • 157. 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...
  • 158. in fact a few people have used web hooks for plugins. dabble is a great example.
  • 159. they do online databased for people that use excel as a database.
  • 160. their plugin API is great. it uses web hooks!
  • 161. “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.cgi Input = Text Output = Number only they have an extra layer for meta data. but that’s a cool pattern.
  • 162. “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.
  • 163. 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
  • 164. 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
  • 165. here’s a little microplatform i made last month. a twitter bot platform using web hooks. in fact, i built it with web hooks... using mailhook and appjet.
  • 167. you just register hooks, give them a name, and DM tdo with the command and arguments.
  • 168. IMified uses web hooks. sells the tech too: “allows anyone with basic web programming skills to quickly and easily create ...”
  • 169. General Systems Theory close by dropping some GST on you
  • 170. General Systems Theory central tenet is value is not in the elements or parts of a system
  • 171. General Systems Theory the real value is in the interactions, how they work together. this creates the emergent phenomenon of a system, and defines its behavior
  • 172. Degrees of freedom increase the ways to work together, the means of combination, increases the DoF
  • 173. Increase possibility space uncover new opportunities in business, tools, and empowerment
  • 174. “a new programming paradigm that takes the whole Internet as its platform” sounds cool
  • 176. Web APIs Web Hooks not hard to go the rest of the way
  • 177. 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/ Thanks! progrium@gmail.com progrium.com