SlideShare a Scribd company logo
1 of 112
Download to read offline
Bastian Hofmann
ResearchGate GmbH

Mashing up JavaScript
Wtf?
• JavaScript Apps
• CORS and OAuth2
• Local Storage
• OEmbed and Caja
• WebSockets, ActivityStrea.ms and
  PubsubHubbub
• OExchange
http://slideshare.net/bashofmann
https://github.com/bashofmann/statusnet_js_mashup
Let‘s write a JS App
History & Bookmarking
www.example.com#Page
http://sammyjs.org/
API Access
Same Origin Policy
Cross-Origin Resource
       Sharing
Client                         Backend
client.net                     api.twitter.com

                 AJAX

      Access-Control-Allow-Origin: *




                        http://www.w3.org/TR/cors/
var html="<ul>";
for (var i=0; i < viewers.length; i++) {
   html += "<li>" + viewers[i].displayName
+ "</li>";
}
html += "<ul>";
document.getElementById("#div").innerHTML =
html;

             Where is the error?
Templates
Mustache.JS




} https://github.com/janl/mustache.js
var feed = [];
var app = Sammy('#main', function() {
    this.use(Sammy.Mustache, 'ms');
    this.get('#/', function() {
        this.trigger('getFeed');
    });
    ...
});

jQuery(function() {
    app.run('#/');
});
var feed = [];
var app = Sammy('#main', function() {
    this.use(Sammy.Mustache, 'ms');
    this.get('#/', function() {
        this.trigger('getFeed');
    });
    ...
});

jQuery(function() {
    app.run('#/');
});
var feed = [];
var app = Sammy('#main', function() {
    this.use(Sammy.Mustache, 'ms');
    this.get('#/', function() {
        this.trigger('getFeed');
    });
    ...
});

jQuery(function() {
    app.run('#/');
});
var feed = [];
var app = Sammy('#main', function() {
    this.use(Sammy.Mustache, 'ms');
    this.get('#/', function() {
        this.trigger('getFeed');
    });
    ...
});

jQuery(function() {
    app.run('#/');
});
var feed = [];
var app = Sammy('#main', function() {
    this.use(Sammy.Mustache, 'ms');
    this.get('#/', function() {
        this.trigger('getFeed');
    });
    ...
});

jQuery(function() {
    app.run('#/');
});
this.bind('getFeed', function() {
    var that = this;
    $.ajax({
      url: 'http://..._timeline.json',
      success: function(response) {
          feed = response;
          that.trigger('renderFeed');
      }
    });
});
this.bind('renderFeed', function() {
    this.feed = feed;
    this.partial('js/templates/feed.ms');
});
this.bind('getFeed', function() {
    var that = this;
    $.ajax({
      url: 'http://..._timeline.json',
      success: function(response) {
          feed = response;
          that.trigger('renderFeed');
      }
    });
});
this.bind('renderFeed', function() {
    this.feed = feed;
    this.partial('js/templates/feed.ms');
});
this.bind('getFeed', function() {
    var that = this;
    $.ajax({
      url: 'http://..._timeline.json',
      success: function(response) {
          feed = response;
          that.trigger('renderFeed');
      }
    });
});
this.bind('renderFeed', function() {
    this.feed = feed;
    this.partial('js/templates/feed.ms');
});
this.bind('getFeed', function() {
    var that = this;
    $.ajax({
      url: 'http://..._timeline.json',
      success: function(response) {
          feed = response;
          that.trigger('renderFeed');
      }
    });
});
this.bind('renderFeed', function() {
    this.feed = feed;
    this.partial('js/templates/feed.ms');
});
this.bind('getFeed', function() {
    var that = this;
    $.ajax({
      url: 'http://..._timeline.json',
      success: function(response) {
          feed = response;
          that.trigger('renderFeed');
      }
    });
});
this.bind('renderFeed', function() {
    this.feed = feed;
    this.partial('js/templates/feed.ms');
});
this.bind('getFeed', function() {
    var that = this;
    $.ajax({
      url: 'http://..._timeline.json',
      success: function(response) {
          feed = response;
          that.trigger('renderFeed');
      }
    });
});
this.bind('renderFeed', function() {
    this.feed = feed;
    this.partial('js/templates/feed.ms');
});
<ul>
{{#feed}}
  <li>
       <p>{{{statusnet_html}}}</p>
       <p>{{created_at}}
            {{#user}}
            {{name}}
            {{/user}}
       </p>
  </li>
{{/feed}}
</ul>
<ul>
{{#feed}}
  <li>
       <p>{{{statusnet_html}}}</p>
       <p>{{created_at}}
            {{#user}}
            {{name}}
            {{/user}}
       </p>
  </li>
{{/feed}}
</ul>
<ul>
{{#feed}}
  <li>
       <p>{{{statusnet_html}}}</p>
       <p>{{created_at}}
            {{#user}}
            {{name}}
            {{/user}}
       </p>
  </li>
{{/feed}}
</ul>
<ul>
{{#feed}}
  <li>
       <p>{{{statusnet_html}}}</p>
       <p>{{created_at}}
            {{#user}}
            {{name}}
            {{/user}}
       </p>
  </li>
{{/feed}}
</ul>
DEMO
Authorization
OAuth 2
       +----------+          Client Identifier     +----------------+
       |          |>---(A)-- & Redirection URI --->|                |
       |          |                                |                |
End <--+ - - - +----(B)-- User authenticates -->| Authorization |
User   |          |                                |     Server     |
       |          |<---(C)--- Redirect URI -------<|                |
       | Client |           with Access Token      |                |
       |    in    |            in Fragment         +----------------+
       | Browser |
       |          |                                +----------------+
       |          |>---(D)--- Redirect URI ------->|                |
       |          |         without Fragment       |   Web Server   |
       |          |                                |   with Client |
       |    (F)   |<---(E)--- Web Page with ------<|    Resource    |
       | Access |                Script            |                |
       |   Token |                                 +----------------+
       +----------+

                  http://tools.ietf.org/html/draft-ietf-oauth-v2
this.bind('getFeed', function() {
    oauth2.retrieveAccessToken();
    if (! oauth2.store['access_token']) {
        this.redirect('#Login');
        return;
    }
    ...
});
this.bind('getFeed', function() {
    oauth2.retrieveAccessToken();
    if (! oauth2.store['access_token']) {
        this.redirect('#Login');
        return;
    }
    ...
});
this.get('#Login', function() {
  var consumerKey = 'abc....';
  window.open('http://status.net/api/oauth2/
authorize?response_toke=token&client_id=' +
consumerKey);
});
this.get('#Login', function() {
  var consumerKey = 'abc....';
  window.open('http://status.net/api/oauth2/
authorize?response_toke=token&client_id=' +
consumerKey);
});
<script type="text/javascript">
  var fragment = location.hash.substr(1);
  opener.parent.oauth2.storeToken(fragment);
  window.close();
</script>
<script type="text/javascript">
  var fragment = location.hash.substr(1);
  opener.parent.oauth2.storeToken(fragment);
  window.close();
</script>
<script type="text/javascript">
  var fragment = location.hash.substr(1);
  opener.parent.oauth2.storeToken(fragment);
  window.close();
</script>
<form action="#Entry" method="post">
    <textarea name="comment"></textarea>
    <input type="submit" value="send"/>
</form>
<form action="#Entry" method="post">
    <textarea name="comment"></textarea>
    <input type="submit" value="send"/>
</form>
<form action="#Entry" method="post">
    <textarea name="comment"></textarea>
    <input type="submit" value="send"/>
</form>
this.post('#Entry', function() {
        var that = this;
        $.ajax({
            url: 'http://status.net/.../
update.json?oauth_token=' +
                 oauth2.store['access_token'],
            type: 'POST',
            data: {
               'status': that.params['comment']
            },
            success: function() {
                 that.redirect('#/');
            }
        });
    });
this.post('#Entry', function() {
        var that = this;
        $.ajax({
            url: 'http://status.net/.../
update.json?oauth_token=' +
                 oauth2.store['access_token'],
            type: 'POST',
            data: {
               'status': that.params['comment']
            },
            success: function() {
                 that.redirect('#/');
            }
        });
    });
this.post('#Entry', function() {
        var that = this;
        $.ajax({
            url: 'http://status.net/.../
update.json?oauth_token=' +
                 oauth2.store['access_token'],
            type: 'POST',
            data: {
               'status': that.params['comment']
            },
            success: function() {
                 that.redirect('#/');
            }
        });
    });
this.post('#Entry', function() {
        var that = this;
        $.ajax({
            url: 'http://status.net/.../
update.json?oauth_token=' +
                 oauth2.store['access_token'],
            type: 'POST',
            data: {
               'status': that.params['comment']
            },
            success: function() {
                 that.redirect('#/');
            }
        });
    });
this.post('#Entry', function() {
        var that = this;
        $.ajax({
            url: 'http://status.net/.../
update.json?oauth_token=' +
                 oauth2.store['access_token'],
            type: 'POST',
            data: {
               'status': that.params['comment']
            },
            success: function() {
                 that.redirect('#/');
            }
        });
    });
this.post('#Entry', function() {
        var that = this;
        $.ajax({
            url: 'http://status.net/.../
update.json?oauth_token=' +
                 oauth2.store['access_token'],
            type: 'POST',
            data: {
               'status': that.params['comment']
            },
            success: function() {
                 that.redirect('#/');
            }
        });
    });
Storing the access
      token
Local Storage




   http://www.w3.org/TR/webstorage/
localStorage.setItem("key", value);
localStorage.getItem("key");
DEMO
Mash it up!
cool video:
http://www.youtube.com/
watch?v=OFzkTxiwziQ
OEmbed


         http://oembed.com/
http://www.youtube.com/watch?v=OyJd2qsRkNk
http://www.youtube.com/oembed?url=http%3A%2F
       %2Fwww.youtube.com%2Fwatch%3Fv
 %3DOyJd2qsRkNk&maxwidth=500&format=json
{
  "provider_url":"http://www.youtube.com/",
  "title":"Jupiter Jones - 
Das Jahr in dem ich schlief (Musik Video)",
  "html":"u003cobject width="500" height="306"u003e
u003cparam name="movie" value="http://www.youtube.com/v/
OyJd2qsRkNk?version=3"u003eu003c/paramu003eu003cparam name=
"allowFullScreen" value="true"u003eu003c/paramu003e
u003cparam name="allowscriptaccess" value="always"u003e
u003c/paramu003eu003cembed src="http://www.youtube.com/v/
OyJd2qsRkNk?version=3" type="application/x-shockwave-flash
" width="500" height="306" allowscriptaccess="always
" allowfullscreen="true"u003eu003c/embedu003eu003c/object
u003e",
  "author_name":"St182",
  "height":306,
  "thumbnail_width":480,
  "width":500,
  "version":"1.0",
  "author_url":"http://www.youtube.com/user/Stinkfist182",
  "provider_name":"YouTube",
  "thumbnail_url":"http://i4.ytimg.com/vi/OyJd2qsRkNk/
hqdefault.jpg",
  "type":"video",
  "thumbnail_height":360
}
cool video:
http://embed.ly/
Caja


http://code.google.com/p/google-caja/
html_sanitize(‘<script>alert(“foo“);</script>‘)
DEMO
Instant updates without
        reloading
PubSubHubbub
                           retrieves Atom feed with Hub URL

                               subscribes
                                for feed
                                acks
                                            Hub
                            subscription

                             pings every          posts sth
                             subscriber

http://code.google.com/p/pubsubhubbub/
<link rel="alternate"href="http://
status.net.xyz:8061/index.php/api/statuses/
user_timeline/3.atom"type="application/atom
+xml" title="Notice feed for bastian
(Atom)"/>
<entry>
 <activity:object-type>http://activitystrea.ms/schema/1.0/
note</activity:object-type>
 <id>http://status.net.xyz:8061/index.php/notice/20</id>
 <title>hello from client</title>
 <content type="html">hello from client</content>
 <link rel="alternate" type="text/html" href="http://
status.net.xyz:8061/index.php/notice/20"/>
 <activity:verb>http://activitystrea.ms/schema/1.0/post</
activity:verb>
 <published>2011-05-23T21:07:33+00:00</published>
 <updated>2011-05-23T21:07:33+00:00</updated>
 <link rel="ostatus:conversation" href="http://status.net.xyz:
8061/index.php/conversation/20"/>
 <georss:point>52.52437 13.41053</georss:point>
 <link rel="self" type="application/atom+xml"href="http://
status.net.xyz:8061/index.php/api/statuses/show/20.atom"/>
 <link rel="edit" type="application/atom+xml"href="http://
status.net.xyz:8061/index.php/api/statuses/show/20.atom"/>
 <statusnet:notice_info local_id="20" source="api"
favorite="false"repeated="false"></statusnet:notice_info>
</entry>
http://activitystrea.ms/
<link href="http://status.net.xyz:8061/
index.php/main/push/hub" rel="hub"/>
PubSubHubbub
                           retrieves Atom feed with Hub URL

                               subscribes
                                for feed
                                acks
                                            Hub
                            subscription

                             pings every          posts sth
                             subscriber

http://code.google.com/p/pubsubhubbub/
http://nodejs.org/
WebSockets




  http://dev.w3.org/html5/websockets/
socket.io


            http://socket.io/
http://search.npmjs.org/#/socket.io
Browser Notifications
webkitNotifications.createNotification(image,
title, text).show();
webkitNotifications.requestPermission();
Notification


                               retrieve Stream with Hub

Ajax: request   WebSockets:
Subscription    new Post
                  subscribe at hub
                     challenge
                         ack
                       new post              new post
DEMO
Sharing
Nascar Problem
http://www.oexchange.org/
http://www.example.com/share.php?url={URI}
&title={title for the content}
&description={short description of the
content}&ctype=flash&swfurl={SWF URI}
&height={preferred SWF height}
&width={preferred swf width}
&screenshot={screenshot URI}
http://example.com/.well-
    known/host-meta



http://tools.ietf.org/html/draft-nottingham-site-meta
<?xml version='1.0' encoding='UTF-8'?>
<XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'
   xmlns:hm='http://host-meta.net/xrd/1.0'>
    <hm:Host>www.meinvz.net</hm:Host>

        <Link
           rel="http://oexchange.org/spec/0.8/rel/resident-target"
           type="application/xrd+xml"
           href="http://www.example.com/oexchange.xrd" >
        </Link>

</XRD>
<?xml version='1.0' encoding='UTF-8'?>
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
    <Subject>http://www.example.com/linkeater</Subject>
    <Property
       type="http://www.oexchange.org/spec/0.8/prop/vendor">
        Examples Inc.</Property>
    <Property
       type="http://www.oexchange.org/spec/0.8/prop/title">
        A Link-Accepting Service</Property>
    <Link
       rel= "icon" href="http://www.example.com/favicon.ico"
       type="image/vnd.microsoft.icon" />
    <Link
       rel= "http://www.oexchange.org/spec/0.8/rel/offer"
       href="http://www.example.com/linkeater/offer.php"
       type="text/html" />
</XRD>
http://search.npmjs.org/#/oexchange
DEMO
Rate and Comment




   http://joind.in/3876
h"p://twi"er.com/Bas2anHofmann
h"p://profiles.google.com/bashofmann
h"p://lanyrd.com/people/Bas2anHofmann/
h"p://slideshare.net/bashofmann

mail@bas2anhofmann.de

More Related Content

What's hot

Be RESTful (Symfony Camp 2008)
Be RESTful (Symfony Camp 2008)Be RESTful (Symfony Camp 2008)
Be RESTful (Symfony Camp 2008)Fabien Potencier
 
Silex meets SOAP & REST
Silex meets SOAP & RESTSilex meets SOAP & REST
Silex meets SOAP & RESTHugo Hamon
 
Decoupling with Design Patterns and Symfony2 DIC
Decoupling with Design Patterns and Symfony2 DICDecoupling with Design Patterns and Symfony2 DIC
Decoupling with Design Patterns and Symfony2 DICKonstantin Kudryashov
 
How Kris Writes Symfony Apps
How Kris Writes Symfony AppsHow Kris Writes Symfony Apps
How Kris Writes Symfony AppsKris Wallsmith
 
Как получить чёрный пояс по WordPress?
Как получить чёрный пояс по WordPress?Как получить чёрный пояс по WordPress?
Как получить чёрный пояс по WordPress?Yevhen Kotelnytskyi
 
Как получить чёрный пояс по WordPress? v2.0
Как получить чёрный пояс по WordPress? v2.0Как получить чёрный пояс по WordPress? v2.0
Как получить чёрный пояс по WordPress? v2.0Yevhen Kotelnytskyi
 
RubyBarCamp “Полезные gems и plugins”
RubyBarCamp “Полезные gems и plugins”RubyBarCamp “Полезные gems и plugins”
RubyBarCamp “Полезные gems и plugins”apostlion
 
Intro programacion funcional
Intro programacion funcionalIntro programacion funcional
Intro programacion funcionalNSCoder Mexico
 
The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010Fabien Potencier
 
Building @Anywhere (for TXJS)
Building @Anywhere (for TXJS)Building @Anywhere (for TXJS)
Building @Anywhere (for TXJS)danwrong
 
Sencha Touch - Introduction
Sencha Touch - IntroductionSencha Touch - Introduction
Sencha Touch - IntroductionABC-GROEP.BE
 
ApacheCon NA11 - Apache Celix, Universal OSGi?
ApacheCon NA11 - Apache Celix, Universal OSGi?ApacheCon NA11 - Apache Celix, Universal OSGi?
ApacheCon NA11 - Apache Celix, Universal OSGi?abroekhuis
 
Angular Promises and Advanced Routing
Angular Promises and Advanced RoutingAngular Promises and Advanced Routing
Angular Promises and Advanced RoutingAlexe Bogdan
 
Data20161007
Data20161007Data20161007
Data20161007capegmail
 
Rich domain model with symfony 2.5 and doctrine 2.5
Rich domain model with symfony 2.5 and doctrine 2.5Rich domain model with symfony 2.5 and doctrine 2.5
Rich domain model with symfony 2.5 and doctrine 2.5Leonardo Proietti
 

What's hot (20)

The Settings API
The Settings APIThe Settings API
The Settings API
 
Node.js server-side rendering
Node.js server-side renderingNode.js server-side rendering
Node.js server-side rendering
 
Be RESTful (Symfony Camp 2008)
Be RESTful (Symfony Camp 2008)Be RESTful (Symfony Camp 2008)
Be RESTful (Symfony Camp 2008)
 
Silex meets SOAP & REST
Silex meets SOAP & RESTSilex meets SOAP & REST
Silex meets SOAP & REST
 
Matters of State
Matters of StateMatters of State
Matters of State
 
Decoupling with Design Patterns and Symfony2 DIC
Decoupling with Design Patterns and Symfony2 DICDecoupling with Design Patterns and Symfony2 DIC
Decoupling with Design Patterns and Symfony2 DIC
 
How Kris Writes Symfony Apps
How Kris Writes Symfony AppsHow Kris Writes Symfony Apps
How Kris Writes Symfony Apps
 
Как получить чёрный пояс по WordPress?
Как получить чёрный пояс по WordPress?Как получить чёрный пояс по WordPress?
Как получить чёрный пояс по WordPress?
 
Как получить чёрный пояс по WordPress? v2.0
Как получить чёрный пояс по WordPress? v2.0Как получить чёрный пояс по WordPress? v2.0
Как получить чёрный пояс по WordPress? v2.0
 
RubyBarCamp “Полезные gems и plugins”
RubyBarCamp “Полезные gems и plugins”RubyBarCamp “Полезные gems и plugins”
RubyBarCamp “Полезные gems и plugins”
 
Intro programacion funcional
Intro programacion funcionalIntro programacion funcional
Intro programacion funcional
 
The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010
 
Silex Cheat Sheet
Silex Cheat SheetSilex Cheat Sheet
Silex Cheat Sheet
 
Building @Anywhere (for TXJS)
Building @Anywhere (for TXJS)Building @Anywhere (for TXJS)
Building @Anywhere (for TXJS)
 
Sencha Touch - Introduction
Sencha Touch - IntroductionSencha Touch - Introduction
Sencha Touch - Introduction
 
ApacheCon NA11 - Apache Celix, Universal OSGi?
ApacheCon NA11 - Apache Celix, Universal OSGi?ApacheCon NA11 - Apache Celix, Universal OSGi?
ApacheCon NA11 - Apache Celix, Universal OSGi?
 
Angular Promises and Advanced Routing
Angular Promises and Advanced RoutingAngular Promises and Advanced Routing
Angular Promises and Advanced Routing
 
Data20161007
Data20161007Data20161007
Data20161007
 
Rich domain model with symfony 2.5 and doctrine 2.5
Rich domain model with symfony 2.5 and doctrine 2.5Rich domain model with symfony 2.5 and doctrine 2.5
Rich domain model with symfony 2.5 and doctrine 2.5
 
Php
PhpPhp
Php
 

Viewers also liked

Creating OpenSocial Apps for millions of users
Creating OpenSocial Apps for millions of usersCreating OpenSocial Apps for millions of users
Creating OpenSocial Apps for millions of usersBastian Hofmann
 
2010 GMC Yukon in Fergus Falls, MN
2010 GMC Yukon in Fergus Falls, MN2010 GMC Yukon in Fergus Falls, MN
2010 GMC Yukon in Fergus Falls, MNNelson GMC
 
IGNITE OpenSocial 2.0 - Viva La OpenAppRevolution!
IGNITE OpenSocial 2.0 - Viva La OpenAppRevolution! IGNITE OpenSocial 2.0 - Viva La OpenAppRevolution!
IGNITE OpenSocial 2.0 - Viva La OpenAppRevolution! Bastian Hofmann
 
Common wealth game 2010,CWG 2010,Delhi,India
Common wealth game 2010,CWG 2010,Delhi,IndiaCommon wealth game 2010,CWG 2010,Delhi,India
Common wealth game 2010,CWG 2010,Delhi,IndiaShow To Clients
 
Latsia TV - Price List
Latsia TV - Price ListLatsia TV - Price List
Latsia TV - Price ListUnitrustMedia
 
Our Stories, Reintegration Experiences of Survivors of Trafficking and Exploi...
Our Stories, Reintegration Experiences of Survivors of Trafficking and Exploi...Our Stories, Reintegration Experiences of Survivors of Trafficking and Exploi...
Our Stories, Reintegration Experiences of Survivors of Trafficking and Exploi...Tierra de hombres - Ayuda a la infancia
 
Why Collaboration?
Why Collaboration?Why Collaboration?
Why Collaboration?C5 Insight
 
Everbridge Webinar: Mother Nature Strikes Back
Everbridge Webinar: Mother Nature Strikes BackEverbridge Webinar: Mother Nature Strikes Back
Everbridge Webinar: Mother Nature Strikes BackEverbridge, Inc.
 
StartupChicks_Buyer Persona Presenation
StartupChicks_Buyer Persona PresenationStartupChicks_Buyer Persona Presenation
StartupChicks_Buyer Persona PresenationiFusion Marketing
 
Japan Moving Forward: 5 Communication Priorities
Japan Moving Forward: 5 Communication PrioritiesJapan Moving Forward: 5 Communication Priorities
Japan Moving Forward: 5 Communication PrioritiesEverbridge, Inc.
 

Viewers also liked (20)

Creating OpenSocial Apps for millions of users
Creating OpenSocial Apps for millions of usersCreating OpenSocial Apps for millions of users
Creating OpenSocial Apps for millions of users
 
2010 GMC Yukon in Fergus Falls, MN
2010 GMC Yukon in Fergus Falls, MN2010 GMC Yukon in Fergus Falls, MN
2010 GMC Yukon in Fergus Falls, MN
 
Radio winners cl2012
Radio winners   cl2012Radio winners   cl2012
Radio winners cl2012
 
Social media
Social mediaSocial media
Social media
 
IGNITE OpenSocial 2.0 - Viva La OpenAppRevolution!
IGNITE OpenSocial 2.0 - Viva La OpenAppRevolution! IGNITE OpenSocial 2.0 - Viva La OpenAppRevolution!
IGNITE OpenSocial 2.0 - Viva La OpenAppRevolution!
 
Dns
DnsDns
Dns
 
Common wealth game 2010,CWG 2010,Delhi,India
Common wealth game 2010,CWG 2010,Delhi,IndiaCommon wealth game 2010,CWG 2010,Delhi,India
Common wealth game 2010,CWG 2010,Delhi,India
 
GyroHSR
GyroHSRGyroHSR
GyroHSR
 
Latsia TV - Price List
Latsia TV - Price ListLatsia TV - Price List
Latsia TV - Price List
 
Radio monitor dati_1a_wave_2012
Radio monitor dati_1a_wave_2012Radio monitor dati_1a_wave_2012
Radio monitor dati_1a_wave_2012
 
Our Stories, Reintegration Experiences of Survivors of Trafficking and Exploi...
Our Stories, Reintegration Experiences of Survivors of Trafficking and Exploi...Our Stories, Reintegration Experiences of Survivors of Trafficking and Exploi...
Our Stories, Reintegration Experiences of Survivors of Trafficking and Exploi...
 
Why Collaboration?
Why Collaboration?Why Collaboration?
Why Collaboration?
 
Tdh study a_surfeit_of_children_in_europe_2010_en
Tdh study a_surfeit_of_children_in_europe_2010_enTdh study a_surfeit_of_children_in_europe_2010_en
Tdh study a_surfeit_of_children_in_europe_2010_en
 
Promo & activation winners cl2012
Promo & activation winners   cl2012Promo & activation winners   cl2012
Promo & activation winners cl2012
 
Everbridge Webinar: Mother Nature Strikes Back
Everbridge Webinar: Mother Nature Strikes BackEverbridge Webinar: Mother Nature Strikes Back
Everbridge Webinar: Mother Nature Strikes Back
 
Sanremo 2012 4° puntata starcom
Sanremo 2012  4° puntata starcomSanremo 2012  4° puntata starcom
Sanremo 2012 4° puntata starcom
 
StartupChicks_Buyer Persona Presenation
StartupChicks_Buyer Persona PresenationStartupChicks_Buyer Persona Presenation
StartupChicks_Buyer Persona Presenation
 
Japan Moving Forward: 5 Communication Priorities
Japan Moving Forward: 5 Communication PrioritiesJapan Moving Forward: 5 Communication Priorities
Japan Moving Forward: 5 Communication Priorities
 
Laboratorio de circuitos
Laboratorio de circuitosLaboratorio de circuitos
Laboratorio de circuitos
 
Listino pubblicitario Rai 2012 2013
Listino pubblicitario Rai 2012 2013Listino pubblicitario Rai 2012 2013
Listino pubblicitario Rai 2012 2013
 

Similar to Mashing up JavaScript

Virtual Madness @ Etsy
Virtual Madness @ EtsyVirtual Madness @ Etsy
Virtual Madness @ EtsyNishan Subedi
 
WordPress REST API hacking
WordPress REST API hackingWordPress REST API hacking
WordPress REST API hackingJeroen van Dijk
 
Do you want a SDK with that API? (Nordic APIS April 2014)
Do you want a SDK with that API? (Nordic APIS April 2014)Do you want a SDK with that API? (Nordic APIS April 2014)
Do you want a SDK with that API? (Nordic APIS April 2014)Nordic APIs
 
Bonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsBonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsFrancois Zaninotto
 
WordPress REST API hacking
WordPress REST API hackingWordPress REST API hacking
WordPress REST API hackingJeroen van Dijk
 
WordPress Realtime - WordCamp São Paulo 2015
WordPress Realtime - WordCamp São Paulo 2015WordPress Realtime - WordCamp São Paulo 2015
WordPress Realtime - WordCamp São Paulo 2015Fernando Daciuk
 
Rich Portlet Development in uPortal
Rich Portlet Development in uPortalRich Portlet Development in uPortal
Rich Portlet Development in uPortalJennifer Bourey
 
Building Persona: federated and privacy-sensitive identity for the Web (Open ...
Building Persona: federated and privacy-sensitive identity for the Web (Open ...Building Persona: federated and privacy-sensitive identity for the Web (Open ...
Building Persona: federated and privacy-sensitive identity for the Web (Open ...Francois Marier
 
Authenticating and Securing Node.js APIs
Authenticating and Securing Node.js APIsAuthenticating and Securing Node.js APIs
Authenticating and Securing Node.js APIsJimmy Guerrero
 
Bag Of Tricks From Iusethis
Bag Of Tricks From IusethisBag Of Tricks From Iusethis
Bag Of Tricks From IusethisMarcus Ramberg
 
From 0 to Spring Security 4.0
From 0 to Spring Security 4.0From 0 to Spring Security 4.0
From 0 to Spring Security 4.0robwinch
 
AnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkara JUG
 
Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8Michelangelo van Dam
 
Mock Servers - Fake All the Things!
Mock Servers - Fake All the Things!Mock Servers - Fake All the Things!
Mock Servers - Fake All the Things!Atlassian
 
international PHP2011_Bastian Feder_jQuery's Secrets
international PHP2011_Bastian Feder_jQuery's Secretsinternational PHP2011_Bastian Feder_jQuery's Secrets
international PHP2011_Bastian Feder_jQuery's Secretssmueller_sandsmedia
 

Similar to Mashing up JavaScript (20)

Express JS
Express JSExpress JS
Express JS
 
Virtual Madness @ Etsy
Virtual Madness @ EtsyVirtual Madness @ Etsy
Virtual Madness @ Etsy
 
WordPress REST API hacking
WordPress REST API hackingWordPress REST API hacking
WordPress REST API hacking
 
Do you want a SDK with that API? (Nordic APIS April 2014)
Do you want a SDK with that API? (Nordic APIS April 2014)Do you want a SDK with that API? (Nordic APIS April 2014)
Do you want a SDK with that API? (Nordic APIS April 2014)
 
JavaScript Promise
JavaScript PromiseJavaScript Promise
JavaScript Promise
 
Bonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsBonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node js
 
Angular Workshop_Sarajevo2
Angular Workshop_Sarajevo2Angular Workshop_Sarajevo2
Angular Workshop_Sarajevo2
 
Reduxing like a pro
Reduxing like a proReduxing like a pro
Reduxing like a pro
 
WordPress REST API hacking
WordPress REST API hackingWordPress REST API hacking
WordPress REST API hacking
 
WordPress Realtime - WordCamp São Paulo 2015
WordPress Realtime - WordCamp São Paulo 2015WordPress Realtime - WordCamp São Paulo 2015
WordPress Realtime - WordCamp São Paulo 2015
 
Rich Portlet Development in uPortal
Rich Portlet Development in uPortalRich Portlet Development in uPortal
Rich Portlet Development in uPortal
 
Building Persona: federated and privacy-sensitive identity for the Web (Open ...
Building Persona: federated and privacy-sensitive identity for the Web (Open ...Building Persona: federated and privacy-sensitive identity for the Web (Open ...
Building Persona: federated and privacy-sensitive identity for the Web (Open ...
 
Angular js security
Angular js securityAngular js security
Angular js security
 
Authenticating and Securing Node.js APIs
Authenticating and Securing Node.js APIsAuthenticating and Securing Node.js APIs
Authenticating and Securing Node.js APIs
 
Bag Of Tricks From Iusethis
Bag Of Tricks From IusethisBag Of Tricks From Iusethis
Bag Of Tricks From Iusethis
 
From 0 to Spring Security 4.0
From 0 to Spring Security 4.0From 0 to Spring Security 4.0
From 0 to Spring Security 4.0
 
AnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFaces
 
Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8
 
Mock Servers - Fake All the Things!
Mock Servers - Fake All the Things!Mock Servers - Fake All the Things!
Mock Servers - Fake All the Things!
 
international PHP2011_Bastian Feder_jQuery's Secrets
international PHP2011_Bastian Feder_jQuery's Secretsinternational PHP2011_Bastian Feder_jQuery's Secrets
international PHP2011_Bastian Feder_jQuery's Secrets
 

More from Bastian Hofmann

Introduction to rg\injection
Introduction to rg\injectionIntroduction to rg\injection
Introduction to rg\injectionBastian Hofmann
 
How to create OpenSocial Apps in 45 minutes
How to create OpenSocial Apps in 45 minutesHow to create OpenSocial Apps in 45 minutes
How to create OpenSocial Apps in 45 minutesBastian Hofmann
 
Crossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocialCrossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocialBastian Hofmann
 
The Identity Problem of the Web and how to solve it
The Identity Problem of the Web and how to solve itThe Identity Problem of the Web and how to solve it
The Identity Problem of the Web and how to solve itBastian Hofmann
 
Crossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocialCrossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocialBastian Hofmann
 
Crossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocialCrossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocialBastian Hofmann
 
Distributed Identities with OpenID
Distributed Identities with OpenIDDistributed Identities with OpenID
Distributed Identities with OpenIDBastian Hofmann
 
Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the IslandsOpening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the IslandsBastian Hofmann
 
Creating social games for millions of users
Creating social games for millions of usersCreating social games for millions of users
Creating social games for millions of usersBastian Hofmann
 
How to create social apps for millions of users
How to create social apps for millions of users How to create social apps for millions of users
How to create social apps for millions of users Bastian Hofmann
 
Distributed Identities with OpenID
Distributed Identities with OpenIDDistributed Identities with OpenID
Distributed Identities with OpenIDBastian Hofmann
 
OpenSocial - Past, Present, Future
OpenSocial - Past, Present, FutureOpenSocial - Past, Present, Future
OpenSocial - Past, Present, FutureBastian Hofmann
 
Distributed Social Networking
Distributed Social NetworkingDistributed Social Networking
Distributed Social NetworkingBastian Hofmann
 
Technical Background of VZ-ID
Technical Background of VZ-IDTechnical Background of VZ-ID
Technical Background of VZ-IDBastian Hofmann
 
Advanced Capabilities of OpenSocial Apps
Advanced Capabilities of OpenSocial AppsAdvanced Capabilities of OpenSocial Apps
Advanced Capabilities of OpenSocial AppsBastian Hofmann
 
How to make your social games successfull
How to make your social games successfullHow to make your social games successfull
How to make your social games successfullBastian Hofmann
 
Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the Islands Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the Islands Bastian Hofmann
 
Distributed Identities with OpenID
Distributed Identities with OpenIDDistributed Identities with OpenID
Distributed Identities with OpenIDBastian Hofmann
 
Creating OpenSocial Apps
Creating OpenSocial AppsCreating OpenSocial Apps
Creating OpenSocial AppsBastian Hofmann
 

More from Bastian Hofmann (20)

Introduction to rg\injection
Introduction to rg\injectionIntroduction to rg\injection
Introduction to rg\injection
 
How to create OpenSocial Apps in 45 minutes
How to create OpenSocial Apps in 45 minutesHow to create OpenSocial Apps in 45 minutes
How to create OpenSocial Apps in 45 minutes
 
Crossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocialCrossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocial
 
The Identity Problem of the Web and how to solve it
The Identity Problem of the Web and how to solve itThe Identity Problem of the Web and how to solve it
The Identity Problem of the Web and how to solve it
 
Crossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocialCrossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocial
 
Crossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocialCrossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocial
 
Distributed Identities with OpenID
Distributed Identities with OpenIDDistributed Identities with OpenID
Distributed Identities with OpenID
 
Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the IslandsOpening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the Islands
 
Mashing up JavaScript
Mashing up JavaScriptMashing up JavaScript
Mashing up JavaScript
 
Creating social games for millions of users
Creating social games for millions of usersCreating social games for millions of users
Creating social games for millions of users
 
How to create social apps for millions of users
How to create social apps for millions of users How to create social apps for millions of users
How to create social apps for millions of users
 
Distributed Identities with OpenID
Distributed Identities with OpenIDDistributed Identities with OpenID
Distributed Identities with OpenID
 
OpenSocial - Past, Present, Future
OpenSocial - Past, Present, FutureOpenSocial - Past, Present, Future
OpenSocial - Past, Present, Future
 
Distributed Social Networking
Distributed Social NetworkingDistributed Social Networking
Distributed Social Networking
 
Technical Background of VZ-ID
Technical Background of VZ-IDTechnical Background of VZ-ID
Technical Background of VZ-ID
 
Advanced Capabilities of OpenSocial Apps
Advanced Capabilities of OpenSocial AppsAdvanced Capabilities of OpenSocial Apps
Advanced Capabilities of OpenSocial Apps
 
How to make your social games successfull
How to make your social games successfullHow to make your social games successfull
How to make your social games successfull
 
Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the Islands Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the Islands
 
Distributed Identities with OpenID
Distributed Identities with OpenIDDistributed Identities with OpenID
Distributed Identities with OpenID
 
Creating OpenSocial Apps
Creating OpenSocial AppsCreating OpenSocial Apps
Creating OpenSocial Apps
 

Recently uploaded

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 

Recently uploaded (20)

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 

Mashing up JavaScript