SlideShare a Scribd company logo
1 of 120
Download to read offline
@progrium
                         #webhooks



web developers? how many are frontend, how many are backend?
twitter username. send me questions.
How WebHooks Will
                 Make Us All
                Programmers


has kathy sierra taught me nothing?
How WebHooks Will
                  Make You A
                    GOD

alternative title
someday you may be asked if you’re a god and as we’ve learned from ghostbusters, you will want to
be able to say yes.
Make You A
                       GOD

               The Evented Web


evented programming
How WebHooks Will Make Us All Programmers
How WebHooks Will Make Us All Programmers
How WebHooks Will Make Us All Programmers
How WebHooks Will Make Us All Programmers
How WebHooks Will Make Us All Programmers
How WebHooks Will Make Us All Programmers
How WebHooks Will Make Us All Programmers
What are WebHooks?



 Why should we all learn to program?



How do WebHooks foster programming?
1
            What are WebHooks?



event callbacks over the web. the design pattern or architecture of letting users receive
notifications over http. it’s not a spec or a protocol, it’s more along the lines of ajax: just an
interesting way of doing things.
1
            What are WebHooks?



event callbacks over the web. the design pattern or architecture of letting users receive
notifications over http. it’s not a spec or a protocol, it’s more along the lines of ajax: just an
interesting way of doing things.
command line: pipes. we talk about the equivalent of pipes on the web and people say RSS! and I say
nooo.... it’s something else.
Input                                                              Output
                                              Program




pipes are amazing in their simplicity. it’s 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
feedback loop, which is the key to emergent systems
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 just the sum of the parts
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.
function clickHandler() {
    alert("Click!");
}

element.addEventListener('click', clickHandler);
element.addEventListener('click', function() {
    alert("Click!");
});
element.addEventListener('click', function() {
    var name = $("input#name").val();
    if (name != "") {
        alert("Hello, " + name);
    }
});
element.addEventListener('click', function(event) {
    var name = $("input#name").val();
    if (name != "") {
        alert("Hello, " + name + ". " +
            "I'm " + event.target.id);
    }
});
getting people excited about evented programming.
twisted, event machine, etc ... event driven programming.
web hooks -> evented web
twitter.addEventListener('newfollower', function(event) {
    var twitterUser = event.follower;
    var friends = facebook.getFriendsNames();

     if (twitterUser['name'] in friends) {
         twitter.follow(twitterUser);
     }
})
twitter.addEventListener('newfollower', function(event) {
    var twitterUser = event.follower;
    var friends = facebook.getFriendsNames();

     if (twitterUser['name'] in friends) {
         twitter.follow(twitterUser);
     }
})
twitter.addEventListener('newfollower', function(event) {
    var twitterUser = event.follower;
    var friends = facebook.getFriendsNames();

     if (twitterUser['name'] in friends) {
         twitter.follow(twitterUser);
     }
})
twitter.addEventListener('newfollower', function(event) {
    var twitterUser = event.follower;
    var friends = facebook.getFriendsNames();

     if (twitterUser['name'] in friends) {
         twitter.follow(twitterUser);
     }
})
twitter.addEventListener('newfollower', function(event) {
    var twitterUser = event.follower;
    var friends = facebook.getFriendsNames();

     if (twitterUser['name'] in friends) {
         twitter.follow(twitterUser);

     } else if (twitterUser['following'] > 1000 &&
         twitterUser['followers'] < twitterUser['following'] / 2) {

         twitter.block(twitterUser);
     }
})
twitter.addEventListener('newfollower',
v                             eventHandler);
twitter.addWebHook('newfollower',
          'http://example.com/eventhandler');
twitter.addWebHook('friendupdate',
           'http://example.com/eventhandler');




some other events you could imagine writing handlers for
twitter.addWebHook('directmessage',
          'http://example.com/eventhandler');
twitter.addWebHook('myupdate',
           'http://example.com/eventhandler');




makes twitter an even more powerful platform than it is
MAILHOOKS
                          DEMO



let’s see this in action. mailhooks was one of the first “adapters” i built for the evented web.
How WebHooks Will Make Us All Programmers
MORE DEMOS
                           (and then code)




create postbin, setup/show tender, pivotal tracker, twilio.
demo clickhooks with postbin and and then show the code.
http://2.latest.scriptletsapp.appspot.com/1w47Cs/run
webhooks are simple as you saw. their simplicity affords them to be used as a simple
building block in slightly more complex systems like pubsubhubbub.
how many have heard of pubsubhubbub? how many know what it does?
not time to play the video, i know brett is here and they talked about it.
basically real-time feeds using webhooks as the core mechanic.
not time to play the video, i know brett is here and they talked about it.
basically real-time feeds using webhooks as the core mechanic.
all these sites publish content with pubsubhubbub, meaning they all effectively have
webhooks for new content events... as a result, you can consume their content in realtime.
simple mechanics, if done right, yield rich, emergent dynamics.
the emergent system with webhooks is the evented web.
The Evented Web
           (Programmable Web 2.0)


               Event Triggers


                             (WebHooks)


Web APIs                        Handler Scripts
“In computer programming, hooking is
a technique used to alter or augment the
behavior of [a program], often without
having access to its source code.”
How WebHooks Will Make Us All Programmers
How WebHooks Will Make Us All Programmers
The Evented Web
           (Programmable Web 2.0)


               Event Triggers


                             (WebHooks)


Web APIs                        Handler Scripts
twitter.addWebHook('newfollower',
           'http://example.com/eventhandler');




the idea is the handler is a URL... whatever. it doesn’t matter whats on the other end.
twitter.addEventListener('newfollower', function(event) {
    var twitterUser = event.follower;
    var friends = facebook.getFriendsNames();

     if (twitterUser['name'] in friends) {
         twitter.follow(twitterUser);

     } else if (twitterUser['following'] > 1000 &&
         twitterUser['followers'] < twitterUser['following'] / 2) {

         twitter.block(twitterUser);
     }
})
twitter.addEventListener('newfollower', function(event) {
    var twitterUser = event.follower;
    var friends = facebook.getFriendsNames();

     if (twitterUser['name'] in friends) {
         twitter.follow(twitterUser);

     } else if (twitterUser['following'] > 1000 &&
         twitterUser['followers'] < twitterUser['following'] / 2) {

         twitter.block(twitterUser);
     }
})
twitter.addWebHook('newfollower',
           'http://example.com/eventhandler');




because its a url, because it’s http ... you already know how to define it. it’s a simple web app, or web
script.
love it, hate it... its everywhere. commodity hosting. compared to classical cgi and perl, it was
easy. no permissions or cgi-bins... just upload a file with ftp.
love it, hate it... its everywhere. commodity hosting. compared to classical cgi and perl, it was
easy. no permissions or cgi-bins... just upload a file with ftp.
love it, hate it... its everywhere. commodity hosting. compared to classical cgi and perl, it was
easy. no permissions or cgi-bins... just upload a file with ftp.
How WebHooks Will Make Us All Programmers
so i built scriptlets, which is basically that. use php, python, javascript to write simple little
scripts hosted in the cloud. write it, save it, get a url to run it. perfect for webhook handler
scripts.
here’s a wrapper that makes postbin work for pubsubhubbub
here’s a script used with hookpress to add comment notifications via notify.io to wordpress
this is the code i used for the clickhooks demo. you can see how simple it is, notify.io does
most of the work.
notify.io is a useful part of the ecosystem. it solves the notification part.
“how do you get events to the desktop?” pubsubhubbub for example
also a gateway drug for webhooks...
NOTIFY.IO
                              DEMO



intro. twitter DM example. outlets. curl. NioCallback. DrEval...
What are WebHooks?




The Evented Web blends our existing ecosystem of web APIs with event-driven programming,
creating a web that is both more programmable and real-time.
What are WebHooks?
                          Event callbacks over HTTP
                                            enabling the Evented Web




The Evented Web blends our existing ecosystem of web APIs with event-driven programming,
creating a web that is both more programmable and real-time.
And so concludes the
technical portion of the talk.

     Questions so far?
2
                Why should we all
                learn to program?



so many passionate programmers that are so smart and influential on society.
gates, jobs, zuckerberg...
exploration of thoughts on significance.
sidenote: programming == holistic programming, not just “software engineering”
“As programming becomes more
      important, it will leave the back room and
      become a key skill and attribute of our top
      intellectual and social classes, just as
      reading and writing did in the past.”
                                                     —Marc Prensky




programming is the new literacy. (rushkoff’s talk)
i wanted to explore this idea further ...
technology.
Technology
                              ==
                             Tools




anything useful created by the mind
think of a world without technology.
humans might not survive denied technology.
some might argue our evolution from prehuman to human was about
 fully leveraging/developing our ability to create and work with technology
How WebHooks Will Make Us All Programmers
we drove many major species into extinction and become the dominant species on earth... all
with just a little bit of basic technology.
The most powerful
                force in the world.



kevin kelly concludes (among other things) that technology is the most powerful force int he
world.
pow•er
               capacity to cause change




best definition of power. simple. more useful.
i like to say that a kid with a laptop can change the world.
what is it about the computer?
How WebHooks Will Make Us All Programmers
How WebHooks Will Make Us All Programmers
“The most remarkable tool
             we’ve ever come up with.”
                            —Steve Jobs




why?
Imagination Compiler



Computing is the ultimate sandbox for our mind, allowing us to explore, model and even
execute whatever systems we can *imagine*, as long as we can figure out how to express
them. This is programming.
don’t have time for this video, but it’s the introduction to the MIT course Structure and
Interpretation of computer programs. Abelson goes over how computer science isn’t really a
science, maybe more engineering or art... he relates it to magic. he also says it’s not about
the computer. it’s fundamentally about formalizing intuitions about process. how to do
things.
don’t have time for this video, but it’s the introduction to the MIT course Structure and
Interpretation of computer programs. Abelson goes over how computer science isn’t really a
science, maybe more engineering or art... he relates it to magic. he also says it’s not about
the computer. it’s fundamentally about formalizing intuitions about process. how to do
things.
Process?



intuitions about ... process?
Knowledge



well it turns out, process is the basis of knowledge. i could go on quite a while about
knowledge, but to keep things on track, we’ll simplify it to this:
knowledge is basically a collection of validated models, allowing us to know how to do
things.
how-to is process.
Knowledge
                                ==
                               Power


this now trite idea, first expressed by francis bacon... is something i had to revisit when i
defined power as the capacity to cause change. because when framed like this it’s obviously
more than a nice correlation: knowledge really *is* the capacity to cause change, therefore in
some way, they actually are quite synonymous.
Knowledge
                                ==
                               Power


this now trite idea, first expressed by francis bacon... is something i had to revisit when i
defined power as the capacity to cause change. because when framed like this it’s obviously
more than a nice correlation: knowledge really *is* the capacity to cause change, therefore in
some way, they actually are quite synonymous.
Programming is the
             language of power.



If knowledge is power, then programming is the language of power. Programming is the most
precise expression of how-to knowledge. You don't just program to express so much as you
program to run, to make happen.
Programming is about designing systems within the realm of computing, but as we trend
towards ubiquitous computing, the boundary of "computing" and the rest of our world will
start to disappear.
our idea of what a computer is...
has been unraveling right in front of us.
abelson is right: it’s not about the “computer” ... it’s about something more.
not even the “network”. i’m not exactly sure what it is... but
Programmers are the
   most potent technologists.



i would like to make this assertion. the industrial revolution was about mechanization. i think
software and automation are the new mechanization. only this time it’s much greater --
software gives us more bang for buck in terms of change caused by effort. it was software
that allowed celebrity conan obrien to, with one click, change a person’s life.
Technologists shape
                 humanity.



and i think its undeniable how influential people are to society that can create and truly wield
technology.
but to bring it back to a little more concrete terms and where things are going:
The world is trending towards
         becoming programmable




USA Today on CES: “You’re going to be hard-pressed to find a new gadget or gizmo in 2010
that doesn’t also connect you to web services.” That’s just a step away from having apis and
hooks. Imagine a world where everything has an API and webhooks. Programmers can use it
all as building blocks, literally programming the world around them. Magic indeed.
Wizards.



programmers become not unlike wizards ... and wizards are basically gods.
Why should we all learn
    to program?
Why should we all learn
        to program?
         “Program or be programmed.”
The world is becoming increasingly programmable.
    The power of programming will eventually
            outweigh any reason not to.
3
              How do WebHooks
            foster programming?



obviously that kind of power, capacity to cause change, will be worthy of seeking out on its
own once it becomes more obvious. what do webhooks and the evented web have to
contribute? i think they’ll accelerate the process by making it more obvious, but there’s more.
this is more generally about education.
“Education is not the filling of a pail,
                     but the lighting of a fire.”
                                                 —William Butler Yeats




framed my idea of education.
inspiration and motivation are the real secrets to education.
teaching is just a means to facilitate learning; learning happens by the individual.
you need to inspire/convince the individual they want to learn ... and they will
“The truth is that reading, writing, and
   arithmetic only take about one hundred
   hours to transmit as long as the audience is
   eager and willing to learn.”
                                                        —John Taylor Gatto




world renowned school teacher corroborates this idea.
ackoff: one of the greatest thinkers of the 20th century that you probably haven’t heard of.
greenberg: champion of the democratic school.
Infrastructure as
    Education
Village that not only didn't have access to computers, but didn't know English. Left the
computer there with CDs (no Internet) and came back 3 months later. An 8 and 12 year old
were playing a game on it and when they realized he had brought the machine, they said (in
English): "We need a faster processor and a better mouse."
How WebHooks Will Make Us All Programmers
How WebHooks Will Make Us All Programmers
“Creating content is not what's
     important. What is important is
     infrastructure and access.”

                                                    —Sugata Mitra




Montesorri
Natural language
Google.
taking this idea, and returning to programming...
how many of us started programming on something like these?
programming was almost unavoidable on them.
how many of you experience a noticeable physiological reaction to this screen?
Programming is discovered.




today, the closest thing is myspace: css hacks to pimp your profile.
but while this IS programming, it’s doesn’t convey the POWER of programming
even though there’s automator on mac -- its sterile and limiting, pure utility.
myspace style programming has relevance, expression, and... view source
Programming is discovered.




today, the closest thing is myspace: css hacks to pimp your profile.
but while this IS programming, it’s doesn’t convey the POWER of programming
even though there’s automator on mac -- its sterile and limiting, pure utility.
myspace style programming has relevance, expression, and... view source
excellent viewsourceposse panel (missed it). my quick idea:
view page source is a huge reason why there are so many web people (esp frontend)
browser as a sandbox to explore and learn.
unfortunately its not the cool stuff. it’s not the stuff that changes the world.
twitter.addEventListener('newfollower', function(event) {
       var twitterUser = event.follower;
       var friends = facebook.getFriendsNames();

         if (twitterUser['name'] in friends) {
             twitter.follow(twitterUser);

         } else if (twitterUser['following'] > 1000 &&
             twitterUser['followers'] < twitterUser['following'] / 2) {

               twitter.block(twitterUser);
         }
   })




evented web gives us a sandbox to play with code that actually DOES cool and important things that
are relevant to us. making the apps we use do more in a very personal and expressive way. the
possibility space is much larger, and the language is richer, so it’s just begging for clever and creative
exploration...
How do WebHooks foster
                    programming?




it gives us a new sandbox to “play” with our web applications together in new and useful
ways.
it provides the infrastructure to *just code* like on apple II or commodore. No dev environs,
nothing to install. building directly on the shoulders of giants to easily achieve cool, useful,
relevant “hacks” that I think would hook anybody on at least the idea of programming.
How do WebHooks foster
                    programming?

           WebHooks and the Evented Web make
             programming discoverable again




it gives us a new sandbox to “play” with our web applications together in new and useful
ways.
it provides the infrastructure to *just code* like on apple II or commodore. No dev environs,
nothing to install. building directly on the shoulders of giants to easily achieve cool, useful,
relevant “hacks” that I think would hook anybody on at least the idea of programming.
and that’s how i think, in the long run, webhooks and the evented web will help make us all gods with
the ability to *program* the world around us.
@progrium
#webhooks

More Related Content

What's hot

PWA 與 Service Worker
PWA 與 Service WorkerPWA 與 Service Worker
PWA 與 Service WorkerAnna Su
 
The MetaCPAN VM Part II (Using the VM)
The MetaCPAN VM Part II (Using the VM)The MetaCPAN VM Part II (Using the VM)
The MetaCPAN VM Part II (Using the VM)Olaf Alders
 
Java to Golang: An intro by Ryan Dawson Seldon.io
Java to Golang: An intro by Ryan Dawson Seldon.ioJava to Golang: An intro by Ryan Dawson Seldon.io
Java to Golang: An intro by Ryan Dawson Seldon.ioMauricio (Salaboy) Salatino
 
Make It Fast - Using Modern Browser Performance APIs to Monitor and Improve t...
Make It Fast - Using Modern Browser Performance APIs to Monitor and Improve t...Make It Fast - Using Modern Browser Performance APIs to Monitor and Improve t...
Make It Fast - Using Modern Browser Performance APIs to Monitor and Improve t...Nicholas Jansma
 
Evented applications with RabbitMQ and CakePHP
Evented applications with RabbitMQ and CakePHPEvented applications with RabbitMQ and CakePHP
Evented applications with RabbitMQ and CakePHPmarkstory
 
The Present Future of OAuth
The Present Future of OAuthThe Present Future of OAuth
The Present Future of OAuthMichael Bleigh
 
Forensic Tools for In-Depth Performance Investigations
Forensic Tools for In-Depth Performance InvestigationsForensic Tools for In-Depth Performance Investigations
Forensic Tools for In-Depth Performance InvestigationsNicholas Jansma
 
Migrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 stepsMigrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 stepsYan Cui
 
Continuous integration with Git & CI Joe
Continuous integration with Git & CI JoeContinuous integration with Git & CI Joe
Continuous integration with Git & CI JoeShawn Price
 
Python in the land of serverless
Python in the land of serverlessPython in the land of serverless
Python in the land of serverlessDavid Przybilla
 
JavaScript APIs - The Web is the Platform
JavaScript APIs - The Web is the PlatformJavaScript APIs - The Web is the Platform
JavaScript APIs - The Web is the PlatformRobert Nyman
 
Beware the potholes on the road to serverless
Beware the potholes on the road to serverlessBeware the potholes on the road to serverless
Beware the potholes on the road to serverlessYan Cui
 
IS YOUR WIDGET FAST? FIVE BEST PRACTICES TO FASTER EMBEDDABLE CONTENT
IS YOUR WIDGET FAST? FIVE BEST PRACTICES TO FASTER EMBEDDABLE CONTENTIS YOUR WIDGET FAST? FIVE BEST PRACTICES TO FASTER EMBEDDABLE CONTENT
IS YOUR WIDGET FAST? FIVE BEST PRACTICES TO FASTER EMBEDDABLE CONTENTIsmail Elshareef
 

What's hot (20)

PWA 與 Service Worker
PWA 與 Service WorkerPWA 與 Service Worker
PWA 與 Service Worker
 
Secure my ng-app
Secure my ng-appSecure my ng-app
Secure my ng-app
 
Mangling
Mangling Mangling
Mangling
 
The MetaCPAN VM Part II (Using the VM)
The MetaCPAN VM Part II (Using the VM)The MetaCPAN VM Part II (Using the VM)
The MetaCPAN VM Part II (Using the VM)
 
Java to Golang: An intro by Ryan Dawson Seldon.io
Java to Golang: An intro by Ryan Dawson Seldon.ioJava to Golang: An intro by Ryan Dawson Seldon.io
Java to Golang: An intro by Ryan Dawson Seldon.io
 
Make It Fast - Using Modern Browser Performance APIs to Monitor and Improve t...
Make It Fast - Using Modern Browser Performance APIs to Monitor and Improve t...Make It Fast - Using Modern Browser Performance APIs to Monitor and Improve t...
Make It Fast - Using Modern Browser Performance APIs to Monitor and Improve t...
 
Evented applications with RabbitMQ and CakePHP
Evented applications with RabbitMQ and CakePHPEvented applications with RabbitMQ and CakePHP
Evented applications with RabbitMQ and CakePHP
 
#PDR15 - PebbleKit iOS 3.0
#PDR15 - PebbleKit iOS 3.0#PDR15 - PebbleKit iOS 3.0
#PDR15 - PebbleKit iOS 3.0
 
The Present Future of OAuth
The Present Future of OAuthThe Present Future of OAuth
The Present Future of OAuth
 
Forensic Tools for In-Depth Performance Investigations
Forensic Tools for In-Depth Performance InvestigationsForensic Tools for In-Depth Performance Investigations
Forensic Tools for In-Depth Performance Investigations
 
Migrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 stepsMigrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 steps
 
Power Of Zero
Power Of ZeroPower Of Zero
Power Of Zero
 
Continuous integration with Git & CI Joe
Continuous integration with Git & CI JoeContinuous integration with Git & CI Joe
Continuous integration with Git & CI Joe
 
Python in the land of serverless
Python in the land of serverlessPython in the land of serverless
Python in the land of serverless
 
JavaScript APIs - The Web is the Platform
JavaScript APIs - The Web is the PlatformJavaScript APIs - The Web is the Platform
JavaScript APIs - The Web is the Platform
 
React in production
React in productionReact in production
React in production
 
Attribute actions
Attribute actionsAttribute actions
Attribute actions
 
Meet with Meteor
Meet with MeteorMeet with Meteor
Meet with Meteor
 
Beware the potholes on the road to serverless
Beware the potholes on the road to serverlessBeware the potholes on the road to serverless
Beware the potholes on the road to serverless
 
IS YOUR WIDGET FAST? FIVE BEST PRACTICES TO FASTER EMBEDDABLE CONTENT
IS YOUR WIDGET FAST? FIVE BEST PRACTICES TO FASTER EMBEDDABLE CONTENTIS YOUR WIDGET FAST? FIVE BEST PRACTICES TO FASTER EMBEDDABLE CONTENT
IS YOUR WIDGET FAST? FIVE BEST PRACTICES TO FASTER EMBEDDABLE CONTENT
 

Similar to How WebHooks Will Make Us All Programmers

Madison PHP 2015 - DevOps For Small Teams
Madison PHP 2015 - DevOps For Small TeamsMadison PHP 2015 - DevOps For Small Teams
Madison PHP 2015 - DevOps For Small TeamsJoe Ferguson
 
ZendCon 2015 - DevOps for Small Teams
ZendCon 2015 - DevOps for Small TeamsZendCon 2015 - DevOps for Small Teams
ZendCon 2015 - DevOps for Small TeamsJoe Ferguson
 
Incredible Machine with Pipelines and Generators
Incredible Machine with Pipelines and GeneratorsIncredible Machine with Pipelines and Generators
Incredible Machine with Pipelines and Generatorsdantleech
 
Midwest PHP 2017 DevOps For Small team
Midwest PHP 2017 DevOps For Small teamMidwest PHP 2017 DevOps For Small team
Midwest PHP 2017 DevOps For Small teamJoe Ferguson
 
OGCE Project Overview
OGCE Project OverviewOGCE Project Overview
OGCE Project Overviewmarpierc
 
Claim Academy Intro to Programming
Claim Academy Intro to ProgrammingClaim Academy Intro to Programming
Claim Academy Intro to ProgrammingAlex Pearson
 
Basics of Ext JS
Basics of Ext JSBasics of Ext JS
Basics of Ext JSikhwanhayat
 
Building Hermetic Systems (without Docker)
Building Hermetic Systems (without Docker)Building Hermetic Systems (without Docker)
Building Hermetic Systems (without Docker)William Farrell
 
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
 
Using Groovy to empower WebRTC Network Systems
Using Groovy to empower WebRTC Network SystemsUsing Groovy to empower WebRTC Network Systems
Using Groovy to empower WebRTC Network Systemsantonry
 
Mobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScriptMobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScriptfranksvalli
 
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developersjBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developersKris Verlaenen
 
APIs for modern web apps
APIs for modern web appsAPIs for modern web apps
APIs for modern web appsChris Mills
 
Programming For Google Wave
Programming For Google WaveProgramming For Google Wave
Programming For Google WaveRodrigo Borges
 
OpenSocial Intro
OpenSocial IntroOpenSocial Intro
OpenSocial IntroPamela Fox
 

Similar to How WebHooks Will Make Us All Programmers (20)

Having Fun with Play
Having Fun with PlayHaving Fun with Play
Having Fun with Play
 
Madison PHP 2015 - DevOps For Small Teams
Madison PHP 2015 - DevOps For Small TeamsMadison PHP 2015 - DevOps For Small Teams
Madison PHP 2015 - DevOps For Small Teams
 
ZendCon 2015 - DevOps for Small Teams
ZendCon 2015 - DevOps for Small TeamsZendCon 2015 - DevOps for Small Teams
ZendCon 2015 - DevOps for Small Teams
 
Introduce Django
Introduce DjangoIntroduce Django
Introduce Django
 
Retrofitting
RetrofittingRetrofitting
Retrofitting
 
Incredible Machine with Pipelines and Generators
Incredible Machine with Pipelines and GeneratorsIncredible Machine with Pipelines and Generators
Incredible Machine with Pipelines and Generators
 
Midwest PHP 2017 DevOps For Small team
Midwest PHP 2017 DevOps For Small teamMidwest PHP 2017 DevOps For Small team
Midwest PHP 2017 DevOps For Small team
 
OGCE Project Overview
OGCE Project OverviewOGCE Project Overview
OGCE Project Overview
 
Claim Academy Intro to Programming
Claim Academy Intro to ProgrammingClaim Academy Intro to Programming
Claim Academy Intro to Programming
 
Basics of Ext JS
Basics of Ext JSBasics of Ext JS
Basics of Ext JS
 
Building Hermetic Systems (without Docker)
Building Hermetic Systems (without Docker)Building Hermetic Systems (without Docker)
Building Hermetic Systems (without Docker)
 
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
 
Using Groovy to empower WebRTC Network Systems
Using Groovy to empower WebRTC Network SystemsUsing Groovy to empower WebRTC Network Systems
Using Groovy to empower WebRTC Network Systems
 
Mobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScriptMobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScript
 
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developersjBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
 
APIs for modern web apps
APIs for modern web appsAPIs for modern web apps
APIs for modern web apps
 
WebSockets with PHP: Mission impossible
WebSockets with PHP: Mission impossibleWebSockets with PHP: Mission impossible
WebSockets with PHP: Mission impossible
 
Mobile optimization
Mobile optimizationMobile optimization
Mobile optimization
 
Programming For Google Wave
Programming For Google WaveProgramming For Google Wave
Programming For Google Wave
 
OpenSocial Intro
OpenSocial IntroOpenSocial Intro
OpenSocial Intro
 

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
 
Creating + Nurturing Your Indie Game Community
Creating + Nurturing Your Indie Game CommunityCreating + Nurturing Your Indie Game Community
Creating + Nurturing Your Indie Game CommunityJeff Lindsay
 
Dissolving Problems
Dissolving ProblemsDissolving Problems
Dissolving ProblemsJeff Lindsay
 
SHDH Retrospective, Part 2
SHDH Retrospective, Part 2SHDH Retrospective, Part 2
SHDH Retrospective, Part 2Jeff Lindsay
 
SHDH Retrospective, Part 1
SHDH Retrospective, Part 1SHDH Retrospective, Part 1
SHDH Retrospective, Part 1Jeff Lindsay
 
Superglue: Web Hooks and the Future of the Web
Superglue: Web Hooks and the Future of the WebSuperglue: Web Hooks and the Future of the Web
Superglue: Web Hooks and the Future of the WebJeff Lindsay
 
Web Hooks Google Tech Talk
Web Hooks Google Tech TalkWeb Hooks Google Tech Talk
Web Hooks Google Tech TalkJeff Lindsay
 
Beyond Mashups: Service Integration and More
Beyond Mashups: Service Integration and MoreBeyond Mashups: Service Integration and More
Beyond Mashups: Service Integration and MoreJeff Lindsay
 
Web Hooks and the Programmable World of Tomorrow
Web Hooks and the Programmable World of TomorrowWeb Hooks and the Programmable World of Tomorrow
Web Hooks and the Programmable World of TomorrowJeff Lindsay
 

More from Jeff Lindsay (16)

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
 
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
 
Web Hooks Google Tech Talk
Web Hooks Google Tech TalkWeb Hooks Google Tech Talk
Web Hooks Google Tech Talk
 
Beyond Mashups: Service Integration and More
Beyond Mashups: Service Integration and MoreBeyond Mashups: Service Integration and More
Beyond Mashups: Service Integration and More
 
Web Hooks and the Programmable World of Tomorrow
Web Hooks and the Programmable World of TomorrowWeb Hooks and the Programmable World of Tomorrow
Web Hooks and the Programmable World of Tomorrow
 

Recently uploaded

Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
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
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
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
 
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
 
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
 
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
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
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
 
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
 
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
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 

Recently uploaded (20)

20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
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
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
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...
 
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
 
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
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
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
 
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
 
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 )
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 

How WebHooks Will Make Us All Programmers

  • 1. @progrium #webhooks web developers? how many are frontend, how many are backend? twitter username. send me questions.
  • 2. How WebHooks Will Make Us All Programmers has kathy sierra taught me nothing?
  • 3. How WebHooks Will Make You A GOD alternative title
  • 4. someday you may be asked if you’re a god and as we’ve learned from ghostbusters, you will want to be able to say yes.
  • 5. Make You A GOD The Evented Web evented programming
  • 13. What are WebHooks? Why should we all learn to program? How do WebHooks foster programming?
  • 14. 1 What are WebHooks? event callbacks over the web. the design pattern or architecture of letting users receive notifications over http. it’s not a spec or a protocol, it’s more along the lines of ajax: just an interesting way of doing things.
  • 15. 1 What are WebHooks? event callbacks over the web. the design pattern or architecture of letting users receive notifications over http. it’s not a spec or a protocol, it’s more along the lines of ajax: just an interesting way of doing things.
  • 16. command line: pipes. we talk about the equivalent of pipes on the web and people say RSS! and I say nooo.... it’s something else.
  • 17. Input Output Program pipes are amazing in their simplicity. it’s all from a bit of infrastructure involving input and output
  • 18. STDIN STDOUT Program STDERR stdin, stdout were available to reroute wherever the user wanted most common use was chaining commands together: piping feedback loop, which is the key to emergent systems
  • 19. xargs wget echo mail grep wc cat so you had all these simple little programs, that might not even be useful alone
  • 20. cat xargs wget echo mail grep wc string them together...
  • 21. cat grep xargs wget echo mail wc
  • 22. cat grep mail xargs wget echo wc and you have something more useful than just the sum of the parts
  • 23. STDIN Program but it doesn’t work without the output. it just breaks.
  • 24. 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.
  • 25. API Events Web App it’s not that they can’t, they just don’t. we need to start placing event hooks in.
  • 26. function clickHandler() { alert("Click!"); } element.addEventListener('click', clickHandler);
  • 28. element.addEventListener('click', function() { var name = $("input#name").val(); if (name != "") { alert("Hello, " + name); } });
  • 29. element.addEventListener('click', function(event) { var name = $("input#name").val(); if (name != "") { alert("Hello, " + name + ". " + "I'm " + event.target.id); } });
  • 30. getting people excited about evented programming. twisted, event machine, etc ... event driven programming. web hooks -> evented web
  • 31. twitter.addEventListener('newfollower', function(event) { var twitterUser = event.follower; var friends = facebook.getFriendsNames(); if (twitterUser['name'] in friends) { twitter.follow(twitterUser); } })
  • 32. twitter.addEventListener('newfollower', function(event) { var twitterUser = event.follower; var friends = facebook.getFriendsNames(); if (twitterUser['name'] in friends) { twitter.follow(twitterUser); } })
  • 33. twitter.addEventListener('newfollower', function(event) { var twitterUser = event.follower; var friends = facebook.getFriendsNames(); if (twitterUser['name'] in friends) { twitter.follow(twitterUser); } })
  • 34. twitter.addEventListener('newfollower', function(event) { var twitterUser = event.follower; var friends = facebook.getFriendsNames(); if (twitterUser['name'] in friends) { twitter.follow(twitterUser); } })
  • 35. twitter.addEventListener('newfollower', function(event) { var twitterUser = event.follower; var friends = facebook.getFriendsNames(); if (twitterUser['name'] in friends) { twitter.follow(twitterUser); } else if (twitterUser['following'] > 1000 && twitterUser['followers'] < twitterUser['following'] / 2) { twitter.block(twitterUser); } })
  • 37. twitter.addWebHook('newfollower', 'http://example.com/eventhandler');
  • 38. twitter.addWebHook('friendupdate', 'http://example.com/eventhandler'); some other events you could imagine writing handlers for
  • 39. twitter.addWebHook('directmessage', 'http://example.com/eventhandler');
  • 40. twitter.addWebHook('myupdate', 'http://example.com/eventhandler'); makes twitter an even more powerful platform than it is
  • 41. MAILHOOKS DEMO let’s see this in action. mailhooks was one of the first “adapters” i built for the evented web.
  • 43. MORE DEMOS (and then code) create postbin, setup/show tender, pivotal tracker, twilio. demo clickhooks with postbin and and then show the code. http://2.latest.scriptletsapp.appspot.com/1w47Cs/run
  • 44. webhooks are simple as you saw. their simplicity affords them to be used as a simple building block in slightly more complex systems like pubsubhubbub. how many have heard of pubsubhubbub? how many know what it does?
  • 45. not time to play the video, i know brett is here and they talked about it. basically real-time feeds using webhooks as the core mechanic.
  • 46. not time to play the video, i know brett is here and they talked about it. basically real-time feeds using webhooks as the core mechanic.
  • 47. all these sites publish content with pubsubhubbub, meaning they all effectively have webhooks for new content events... as a result, you can consume their content in realtime.
  • 48. simple mechanics, if done right, yield rich, emergent dynamics. the emergent system with webhooks is the evented web.
  • 49. The Evented Web (Programmable Web 2.0) Event Triggers (WebHooks) Web APIs Handler Scripts
  • 50. “In computer programming, hooking is a technique used to alter or augment the behavior of [a program], often without having access to its source code.”
  • 53. The Evented Web (Programmable Web 2.0) Event Triggers (WebHooks) Web APIs Handler Scripts
  • 54. twitter.addWebHook('newfollower', 'http://example.com/eventhandler'); the idea is the handler is a URL... whatever. it doesn’t matter whats on the other end.
  • 55. twitter.addEventListener('newfollower', function(event) { var twitterUser = event.follower; var friends = facebook.getFriendsNames(); if (twitterUser['name'] in friends) { twitter.follow(twitterUser); } else if (twitterUser['following'] > 1000 && twitterUser['followers'] < twitterUser['following'] / 2) { twitter.block(twitterUser); } })
  • 56. twitter.addEventListener('newfollower', function(event) { var twitterUser = event.follower; var friends = facebook.getFriendsNames(); if (twitterUser['name'] in friends) { twitter.follow(twitterUser); } else if (twitterUser['following'] > 1000 && twitterUser['followers'] < twitterUser['following'] / 2) { twitter.block(twitterUser); } })
  • 57. twitter.addWebHook('newfollower', 'http://example.com/eventhandler'); because its a url, because it’s http ... you already know how to define it. it’s a simple web app, or web script.
  • 58. love it, hate it... its everywhere. commodity hosting. compared to classical cgi and perl, it was easy. no permissions or cgi-bins... just upload a file with ftp.
  • 59. love it, hate it... its everywhere. commodity hosting. compared to classical cgi and perl, it was easy. no permissions or cgi-bins... just upload a file with ftp.
  • 60. love it, hate it... its everywhere. commodity hosting. compared to classical cgi and perl, it was easy. no permissions or cgi-bins... just upload a file with ftp.
  • 62. so i built scriptlets, which is basically that. use php, python, javascript to write simple little scripts hosted in the cloud. write it, save it, get a url to run it. perfect for webhook handler scripts.
  • 63. here’s a wrapper that makes postbin work for pubsubhubbub
  • 64. here’s a script used with hookpress to add comment notifications via notify.io to wordpress
  • 65. this is the code i used for the clickhooks demo. you can see how simple it is, notify.io does most of the work.
  • 66. notify.io is a useful part of the ecosystem. it solves the notification part. “how do you get events to the desktop?” pubsubhubbub for example also a gateway drug for webhooks...
  • 67. NOTIFY.IO DEMO intro. twitter DM example. outlets. curl. NioCallback. DrEval...
  • 68. What are WebHooks? The Evented Web blends our existing ecosystem of web APIs with event-driven programming, creating a web that is both more programmable and real-time.
  • 69. What are WebHooks? Event callbacks over HTTP enabling the Evented Web The Evented Web blends our existing ecosystem of web APIs with event-driven programming, creating a web that is both more programmable and real-time.
  • 70. And so concludes the technical portion of the talk. Questions so far?
  • 71. 2 Why should we all learn to program? so many passionate programmers that are so smart and influential on society. gates, jobs, zuckerberg... exploration of thoughts on significance. sidenote: programming == holistic programming, not just “software engineering”
  • 72. “As programming becomes more important, it will leave the back room and become a key skill and attribute of our top intellectual and social classes, just as reading and writing did in the past.” —Marc Prensky programming is the new literacy. (rushkoff’s talk) i wanted to explore this idea further ...
  • 74. Technology == Tools anything useful created by the mind
  • 75. think of a world without technology. humans might not survive denied technology. some might argue our evolution from prehuman to human was about fully leveraging/developing our ability to create and work with technology
  • 77. we drove many major species into extinction and become the dominant species on earth... all with just a little bit of basic technology.
  • 78. The most powerful force in the world. kevin kelly concludes (among other things) that technology is the most powerful force int he world.
  • 79. pow•er capacity to cause change best definition of power. simple. more useful.
  • 80. i like to say that a kid with a laptop can change the world. what is it about the computer?
  • 83. “The most remarkable tool we’ve ever come up with.” —Steve Jobs why?
  • 84. Imagination Compiler Computing is the ultimate sandbox for our mind, allowing us to explore, model and even execute whatever systems we can *imagine*, as long as we can figure out how to express them. This is programming.
  • 85. don’t have time for this video, but it’s the introduction to the MIT course Structure and Interpretation of computer programs. Abelson goes over how computer science isn’t really a science, maybe more engineering or art... he relates it to magic. he also says it’s not about the computer. it’s fundamentally about formalizing intuitions about process. how to do things.
  • 86. don’t have time for this video, but it’s the introduction to the MIT course Structure and Interpretation of computer programs. Abelson goes over how computer science isn’t really a science, maybe more engineering or art... he relates it to magic. he also says it’s not about the computer. it’s fundamentally about formalizing intuitions about process. how to do things.
  • 88. Knowledge well it turns out, process is the basis of knowledge. i could go on quite a while about knowledge, but to keep things on track, we’ll simplify it to this: knowledge is basically a collection of validated models, allowing us to know how to do things. how-to is process.
  • 89. Knowledge == Power this now trite idea, first expressed by francis bacon... is something i had to revisit when i defined power as the capacity to cause change. because when framed like this it’s obviously more than a nice correlation: knowledge really *is* the capacity to cause change, therefore in some way, they actually are quite synonymous.
  • 90. Knowledge == Power this now trite idea, first expressed by francis bacon... is something i had to revisit when i defined power as the capacity to cause change. because when framed like this it’s obviously more than a nice correlation: knowledge really *is* the capacity to cause change, therefore in some way, they actually are quite synonymous.
  • 91. Programming is the language of power. If knowledge is power, then programming is the language of power. Programming is the most precise expression of how-to knowledge. You don't just program to express so much as you program to run, to make happen.
  • 92. Programming is about designing systems within the realm of computing, but as we trend towards ubiquitous computing, the boundary of "computing" and the rest of our world will start to disappear.
  • 93. our idea of what a computer is...
  • 94. has been unraveling right in front of us. abelson is right: it’s not about the “computer” ... it’s about something more. not even the “network”. i’m not exactly sure what it is... but
  • 95. Programmers are the most potent technologists. i would like to make this assertion. the industrial revolution was about mechanization. i think software and automation are the new mechanization. only this time it’s much greater -- software gives us more bang for buck in terms of change caused by effort. it was software that allowed celebrity conan obrien to, with one click, change a person’s life.
  • 96. Technologists shape humanity. and i think its undeniable how influential people are to society that can create and truly wield technology. but to bring it back to a little more concrete terms and where things are going:
  • 97. The world is trending towards becoming programmable USA Today on CES: “You’re going to be hard-pressed to find a new gadget or gizmo in 2010 that doesn’t also connect you to web services.” That’s just a step away from having apis and hooks. Imagine a world where everything has an API and webhooks. Programmers can use it all as building blocks, literally programming the world around them. Magic indeed.
  • 98. Wizards. programmers become not unlike wizards ... and wizards are basically gods.
  • 99. Why should we all learn to program?
  • 100. Why should we all learn to program? “Program or be programmed.” The world is becoming increasingly programmable. The power of programming will eventually outweigh any reason not to.
  • 101. 3 How do WebHooks foster programming? obviously that kind of power, capacity to cause change, will be worthy of seeking out on its own once it becomes more obvious. what do webhooks and the evented web have to contribute? i think they’ll accelerate the process by making it more obvious, but there’s more.
  • 102. this is more generally about education.
  • 103. “Education is not the filling of a pail, but the lighting of a fire.” —William Butler Yeats framed my idea of education. inspiration and motivation are the real secrets to education. teaching is just a means to facilitate learning; learning happens by the individual. you need to inspire/convince the individual they want to learn ... and they will
  • 104. “The truth is that reading, writing, and arithmetic only take about one hundred hours to transmit as long as the audience is eager and willing to learn.” —John Taylor Gatto world renowned school teacher corroborates this idea.
  • 105. ackoff: one of the greatest thinkers of the 20th century that you probably haven’t heard of. greenberg: champion of the democratic school.
  • 106. Infrastructure as Education
  • 107. Village that not only didn't have access to computers, but didn't know English. Left the computer there with CDs (no Internet) and came back 3 months later. An 8 and 12 year old were playing a game on it and when they realized he had brought the machine, they said (in English): "We need a faster processor and a better mouse."
  • 110. “Creating content is not what's important. What is important is infrastructure and access.” —Sugata Mitra Montesorri Natural language Google. taking this idea, and returning to programming...
  • 111. how many of us started programming on something like these?
  • 112. programming was almost unavoidable on them. how many of you experience a noticeable physiological reaction to this screen?
  • 113. Programming is discovered. today, the closest thing is myspace: css hacks to pimp your profile. but while this IS programming, it’s doesn’t convey the POWER of programming even though there’s automator on mac -- its sterile and limiting, pure utility. myspace style programming has relevance, expression, and... view source
  • 114. Programming is discovered. today, the closest thing is myspace: css hacks to pimp your profile. but while this IS programming, it’s doesn’t convey the POWER of programming even though there’s automator on mac -- its sterile and limiting, pure utility. myspace style programming has relevance, expression, and... view source
  • 115. excellent viewsourceposse panel (missed it). my quick idea: view page source is a huge reason why there are so many web people (esp frontend) browser as a sandbox to explore and learn. unfortunately its not the cool stuff. it’s not the stuff that changes the world.
  • 116. twitter.addEventListener('newfollower', function(event) { var twitterUser = event.follower; var friends = facebook.getFriendsNames(); if (twitterUser['name'] in friends) { twitter.follow(twitterUser); } else if (twitterUser['following'] > 1000 && twitterUser['followers'] < twitterUser['following'] / 2) { twitter.block(twitterUser); } }) evented web gives us a sandbox to play with code that actually DOES cool and important things that are relevant to us. making the apps we use do more in a very personal and expressive way. the possibility space is much larger, and the language is richer, so it’s just begging for clever and creative exploration...
  • 117. How do WebHooks foster programming? it gives us a new sandbox to “play” with our web applications together in new and useful ways. it provides the infrastructure to *just code* like on apple II or commodore. No dev environs, nothing to install. building directly on the shoulders of giants to easily achieve cool, useful, relevant “hacks” that I think would hook anybody on at least the idea of programming.
  • 118. How do WebHooks foster programming? WebHooks and the Evented Web make programming discoverable again it gives us a new sandbox to “play” with our web applications together in new and useful ways. it provides the infrastructure to *just code* like on apple II or commodore. No dev environs, nothing to install. building directly on the shoulders of giants to easily achieve cool, useful, relevant “hacks” that I think would hook anybody on at least the idea of programming.
  • 119. and that’s how i think, in the long run, webhooks and the evented web will help make us all gods with the ability to *program* the world around us.