SlideShare a Scribd company logo
1 of 200
Download to read offline
REST
                     in (a mobile) peace
                               May, 21st 2011




Alessandro Nadalin
Agenda
Rest in a nutshell
REST antipattern
REST for the mobile world
   How
       HTTP cache
        fault-tolerance, downtime-availability
       ESI
        Atom + Hypermedia controls
   Why
       performances
       evolution cost
       adaptability
Sorry for the ugly slide.

 There will be others.
    Really sorry.
A nutshell
in (a mobile) peace
Let's go back!
2000
Fielding's dissertation:

REpresentational
State
Transfer
http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
REST in a nutshell:
REST in a nutshell:




1. Client <> Server
REST in a nutshell:




           2. Stateless
easy to
 scale
Recover and
  failover
 paradise
What about
 the user
 session?
Must
 die
REST in a nutshell:




   3. Cacheable
REST in a nutshell:




        When dealing with safe methods,
  the response should be able to tell the client,
     or whatever stands behind the request,
                how to cache it.
REST in a nutshell:




4. Layered system
REST in a nutshell:




           5. Uniform
           interface
Uniform interface
    hierarchic resource identification

       Verbs to perform operations

   manipulation through representation

               HATEOAS
Richardson maturity model

     hierarchic resource identification

         Verbs to perform operations

    manipulation through representation

                       HATEOAS


      Really well explained by Fowler: http://martinfowler.
      com/articles/richardsonMaturityModel.html#level0
Richardson maturity model
                  mess
     hierarchic resource identification

       Verbs to perform operations



                HATEOAS
Richardson maturity model
           0.     mess
     hierarchic resource identification

       Verbs to perform operations



                HATEOAS
0
Using HTTP
Without
giving a f***
Richardson maturity model

  1.         0.     mess
       hierarchic resource identification

         Verbs to perform operations



                  HATEOAS
1
       mytastyproduct.com/users
mytastyproduct.com/users/1/licenses/4
Richardson maturity model

  1.         0.     mess
       hierarchic resource identification

  2.     Verbs to perform operations



                  HATEOAS
2
Richardson maturity model

  1.         0.     mess
       hierarchic resource identification


  2.     Verbs to perform operations




           3.     HATEOAS
3.
    GOD
http://www.slideshare.net/trilancer/why-hateoas-1547275
Hyperlinks
Hypermedia formats



 http://amundsen.com/hypermedia/
Single entry point
Uniform interface is interesting.

Everyone seem to have its own RESTful "service".

But no one seem to entirely implement a uniform interface.
Uniform interface is interesting.

Everyone seem to have its own RESTful "service".

But no one seem to entirely implement a uniform interface.




                 That means... ...?
No
RESTful
 stuff
But don't be too religious.

REST gets raped everyday,
get over it.
( a few ) ANTIPATTERNS
    in (a mobile) peace
1
URIs
"REST is about

       cool URI design"




http://apple.com/users/1/licenses/4.json
"REST is about

       cool URI design"




http://apple.com/users/1/licenses/4.json
http://apple.com/site/en_US/showUsers.jsp?uid=1&license=4



              is OK too
but
"cool URIs help you
think in term of resources"
                 - David Zuelke
and, by the way
a URI should never
locate different resources
a URI should never
locate different resources


while a resource could be
located by different URIs
2
URIs (bis)
REST follows a URI schema
REST follows a URI schema



       GET /users
       POST /users
       PUT /users/{id}
       DELETE /users/{id}
       ...
REST follows a URI schema



       GET /users
       POST /users
       PUT /users/{id}
       DELETE /users/{id}
       ...
URI templates suck, some say
what if you change your
         URL?
Yeah,
client is
broken
RESTful clients should
      be driven by service's
      hypermedia controls
Roy Fielding : http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
3
Formats
REST

 =

XML
REST

 =

XML
a representation varies
  based on the format
Can be:
application/xml
application/json
audio/mp4
image/png
Can be:
   application/xml
   application/json
   audio/mp4
   image/png


but also:
text/dns
video/vnd.motorola.video
text/uri-list
dear JSON, by the way
JSON is evil
{
    "date": "2011-01-01",
    "stock": "100",
    "price": "12"
}
The business evolves
{
    "date": "2011-01-01",
    "stock": "100",
    "price": [
      {"currency": "EUR", "amount": "12"},
      {"currency": "USD", "amount": "10"}
    ]
}
                             Credits: http://twitter.com/#!/odracci
Yeah,
client is
broken
Everything is a tradeoff
4
POST is cool
said SOAP 1.1
said SOAP 1.1
loosing meaningful verbs at the protocol level
loosing meaningful verbs at the protocol level

        nothing cacheable by default
loosing meaningful verbs at the protocol level

        nothing cacheable by default

         what about bookmarking?
5
500 is your friend
said SOAP
   ( again )
GET /users/300
Host: www.example.com
GET /users/300
        Host: www.example.com




HTTP/1.1 500 Internal Server Error
Etag: 1234
X-Powered-By: php/5.3
...

The record cannot be found
GET /users/300
        Host: www.example.com




HTTP/1.1 500 Internal Server Error
Etag: 1234
X-Powered-By: php/5.3
...

The record cannot be found
The HTTP protocol is awesome,
and lets you return meaningful and
universally-understood status codes
404 Not Found
404 Not Found




OMG Link is broken?
202 Accepted
202 Accepted




You get an immediate OK, and the operation will hopefully complete
412 Precondition Failed
412 Precondition Failed




   Want money?.. Got money?
The serious s**t
   in (a mobile) peace
How do I
implement
   this
goodness?
1.
caching & scalability
HTTP
your long-time friend
Types of cache

        Local

    Shared/proxy

 Shared/reverse proxy
Types of cache

        Local

    Shared/proxy

 Shared/reverse proxy
Types of cache

        Local

   Shared/proxy

 Shared/reverse proxy
Types of cache

       Local

    Shared/proxy

Shared/reverse proxy
on the server side
Proxy            Reverse proxy




        http://www.codeproject.com/KB/aspnet/ExploringCaching.aspx
There is something cool about
caching softwares.
Free as free beer
...but the server should
 take advantage of them
( the boring part were you need to write code )
and here are a few ways to do so,
using
and here are a few ways to do so,
using

           expiration
and here are a few ways to do so,
using

           expiration

           validation
and here are a few ways to do so,
using

           expiration

           validation

          invalidation
and here are a few ways to do so,
using

           expiration

           validation
                     we will se why
          invalidation
Expiration
GET / HTTP/1.1
Host: www.example.com
Expires: 0
GET / HTTP/1.1
Host: www.example.com
Expires: 0
GET / HTTP/1.1
Host: www.example.com
Expires: Tue, 15 Nov 1994 01:00 GMT
GET / HTTP/1.1
Host: www.example.com
Cache-Control: max-age=60, public
GET / HTTP/1.1
Host: www.example.com
Cache-Control: max-age=60, public
GET / HTTP/1.1
Host: www.example.com
Cache-Control: max-age=60, public


       Cacheable for 60 seconds
GET / HTTP/1.1
Host: www.example.com
Cache-Control: max-age=60, public


Cacheable by both local and shared caches
GET / HTTP/1.1
Host: www.example.com
Cache-Control: stale-if-error=600, stale-while-revalidate=600
GET / HTTP/1.1
Host: www.example.com
Cache-Control: stale-if-error=600, stale-while-revalidate=600




                        fault-tolerant
GET / HTTP/1.1
Host: www.example.com
Cache-Control: stale-if-error=600, stale-while-revalidate=600




                    available during downtime
GET / HTTP/1.1
Host: www.example.com
Cache-Control: stale-if-error=600, stale-while-revalidate=600




                  available during revalidation
Validation
GET / HTTP/1.1
Host: www.example.com
Etag: 1234
GET / HTTP/1.1
 Host: www.example.com
 Etag: 1234


an identifier for your response
Conditional requests

        GET / HTTP/1.1
        Host: www.example.com
        If-None-Match: 1234


the browsers asks you if it has been modified
Relax
Calculating an Etag is cheaper than generating a full MVC response
HTTP/1.1 304 Not Modified
GET / HTTP/1.1
Host: www.example.com
Last-Modified: Tue, 15 Jan 2011 12:00:00 GMT
GET / HTTP/1.1
Host: www.example.com
Last-Modified: Tue, 15 Jan 2011 12:00:00 GMT


          tell the client about the latest change
Conditional requests

GET / HTTP/1.1
Host: www.example.com
If-Modified-Since: Tue, 15 Jan 2011 12:00:00 GMT


  the client asks you if it has been modified since the last time
Relax
Calculating a date is cheaper than retrieving an entire object
HTTP/1.1 304 Not Modified
Invalidation
The web is not meant for invalidating data.

Server should not be able to keep clients' state, otherwise they
                       wont scale well.

That's why long-polling and endless connections haven't had
              big success dealing with caching.
but hey, you say
HTTP's cache fails when dealing with really dynamic pages,
because consumers will always have to hit the origin server,
although a part of the page would be cacheable ( header and
                                       footer, for example )
Nope


       Nope
ESI was built for that
     http://www.w3.org/TR/esi-lang
Edge Side Includes
   A de facto standard for bla bla bla...
Edge Side Includes
         A de facto standard for bla bla bla...



 Server side includes ( not SSI! ) usually handled by the
               architecture's ESI processor.

            http://www.w3.org/TR/esi-lang
           http://www.w3.org/TR/edge-arch
<esi:include src="http://whymca.org/talks/1" />
<esi:include src="http://whymca.org/talks/1" />
<esi:include src="http://whymca.org/talks/1" />
This is a response
15 seconds cache




30 minutes cache
and hey, Varnish is a reverse proxy implementing what you
               need of the ESI specification

                    take 2, pay for 1
So what does HTTP cache is meant to solve?
Less work
http://www.flickr.com/photos/snakphotography/5004775320/sizes/o/in/photostream/




        because the hard work is delegated to the browser/proxy
evolve
because cache is abstracted from the application
loose coupling
because caching is bound to the protocol, HTTP, not
to your implementation ( Sf, RoR, Django )
2.
adaptability & durability
Hypermedia
  another long-time friend
Links
outrageously semplifying
<img src="..." />

<a href="..." />

<link rel="payment" ... />
<img src="..." />

<a href="..." />

<link rel="payment" ... />
<img src="..." />

<a href="..." />

<link rel="payment" ... />
Atomis your friend
http://www.xml.com/lpt/a/1434
<link rel="payment" href="/checkout" type="text/html" ... />
<link rel="payment" href="/checkout" type="text/html" ... />
<link rel="payment" href="/checkout" type="text/html" ... />
<link rel="payment" href="/checkout" type="text/html" ... />
POST /users
Host: www.example.com
POST /users
       Host: www.example.com




HTTP/1.1 201 Created
Host: www.example.com
Etag: 1234
X-Powered-By: php/5.3
Location: /users/1
POST /users
       Host: www.example.com




HTTP/1.1 201 Created
Host: www.example.com
Etag: 1234
X-Powered-By: php/5.3
Location: /users/1
POST /users
Host: www.example.com
POST /users
       Host: www.example.com




HTTP/1.1 301 Moved permanently
Host: www.example.com
Location: /users
POST /users
Host: www.example.com
POST /users
       Host: www.example.com




HTTP/1.1 201 Created
Host: www.example.com
Etag: 1234
X-Powered-By: php/5.3
Location: /newusersdatabase/1
POST /users
       Host: www.example.com




HTTP/1.1 201 Created
Host: www.example.com
Etag: 1234
X-Powered-By: php/5.3
Location: /newusersdatabase/1
POST /users
          Host: www.example.com




   Helps refactoring legacy stuff indeed :)
HTTP/1.1 201 Created
Host: www.example.com
Etag: 1234
X-Powered-By: php/5.3
Location: /newusersdatabase/1
consumers of your API are able to follow
      the changes of your design
Clients are too important
       to break'em
and here comes a controversial part...
Like it or not,

     XML is a friend of the
   non BC-breaking evolution
http://www.slideshare.net/Wombert/xml-versus-the-new-kids-on-the-block-phpbnl11-20110129
             http://www.odino.org/320/long-live-xml-too-sorry-for-json-fanboyz
BTW
<xml...>
 <product...>
  <price>25</price>
 </product>
</xml>
BTW
<xml...>
 <product...>
  <price currency="EUR">25</price>
  <price currency="USD">23</price>
 </product>
</xml>
As said, everything is a tradeoff
Choose the media type
   for your needs
No need to be religious. Ever.
Why being
 in (a mobile) peace?
everything seems cool
everything seems cool

        but

 why REST?
Pros



Performances
Pros


Scalability
http://articles.sfgate.com/2011-02-20/opinion/28613184_1_news-network-cable-and-satellite-website

                 http://tech.groups.yahoo.com/group/rest-discuss/message/17370




                +2.500%
                 traffic
Pros

       Durability
"REST is software design on the scale of decades: every detail is intended to promote
 software longevity and independent evolution. Many of the constraints are directly
opposed to short-term efficiency. Unfortunately, people are fairly good at short-term
                  design, and usually awful at long-term design. "




                                    Roy Fielding
Put a bit of
   REST
everywhere
Rules of good
   design
amazon.it
Alessandro Nadalin
Alessandro Nadalin
         odino.org
Alessandro Nadalin
         odino.org
        @_odino_
Alessandro Nadalin
         odino.org
        @_odino_
Thanks
Alessandro Nadalin
         odino.org
        @_odino_
Credits
       http://www.flickr.com/photos/larachris/16564077/sizes/o/in/photostream/
  http://www.flickr.com/photos/ashatenbroeke/4367373081/sizes/z/in/photostream/
      http://www.flickr.com/photos/yourdon/3140270189/sizes/l/in/photostream/
      http://www.flickr.com/photos/jox1989/4964706072/sizes/l/in/photostream/
       http://www.flickr.com/photos/brainfg/168506259/sizes/o/in/photostream/
     http://www.flickr.com/photos/norte_it/3897091546/sizes/o/in/photostream/
 http://www.zdnet.com/blog/service-oriented/soap-versus-rest-a-matter-of-style/3568
http://www.flickr.com/photos/turtlemom_nancy/2046347762/sizes/l/in/photostream/
      http://www.flickr.com/photos/juanpg/3333385784/sizes/z/in/photostream/
       http://www.flickr.com/photos/congvo/301678287/sizes/l/in/photostream/
     http://www.flickr.com/photos/ihasb33r/2573196546/sizes/z/in/photostream/
 http://www.flickr.com/photos/martin_heigan/4544138976/sizes/o/in/photostream/
      http://www.flickr.com/photos/cknara/4195099999/sizes/o/in/photostream/
       http://www.flickr.com/photos/1080p/3076529265/sizes/l/in/photostream/
     http://www.flickr.com/photos/adamrice/280300202/sizes/l/in/photostream/
      http://www.flickr.com/photos/tomer_a/541411897/sizes/o/in/photostream/
      http://www.flickr.com/photos/subpra/4514008262/sizes/l/in/photostream/
     http://www.flickr.com/photos/lippincott/2539720043/sizes/l/in/photostream/
     http://www.flickr.com/photos/rawryder/5086090931/sizes/l/in/photostream/
     http://www.flickr.com/photos/robboudon/5312731161/sizes/l/in/photostream/
 http://www.flickr.com/photos/bc-burnslibrary/4158243488/sizes/o/in/photostream/
http://www.flickr.com/photos/13606325@N08/2416993706/sizes/o/in/photostream/
    http://www.flickr.com/photos/neothezion/5135841069/sizes/l/in/photostream/
               http://www.flickr.com/photos/planetschwa/2494067809/
               http://www.flickr.com/photos/thomasthomas/258931782/
   http://www.flickr.com/photos/rustyboxcars/2629631562/sizes/l/in/photostream/
    http://www.flickr.com/photos/ell-r-brown/4138727474/sizes/l/in/photostream/
     http://www.flickr.com/photos/noah123/5082076630/sizes/z/in/photostream/
     http://www.flickr.com/photos/jungle_boy/220181177/sizes/l/in/photostream/
    http://www.flickr.com/photos/prettydaisies/872539081/sizes/l/in/photostream/
   http://www.flickr.com/photos/kaptainkobold/76256150/sizes/o/in/photostream/
 http://www.flickr.com/photos/uomoincravatta/1438372865/sizes/z/in/photostream/

More Related Content

What's hot

Incorporating Web Services in Mobile Applications - Web 2.0 San Fran 2009
Incorporating Web Services in Mobile Applications - Web 2.0 San Fran 2009Incorporating Web Services in Mobile Applications - Web 2.0 San Fran 2009
Incorporating Web Services in Mobile Applications - Web 2.0 San Fran 2009
Aduci
 
腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站
areyouok
 
RESTful SOA - 中科院暑期讲座
RESTful SOA - 中科院暑期讲座RESTful SOA - 中科院暑期讲座
RESTful SOA - 中科院暑期讲座
Li Yi
 

What's hot (18)

Build a Node.js Client for Your REST+JSON API
Build a Node.js Client for Your REST+JSON APIBuild a Node.js Client for Your REST+JSON API
Build a Node.js Client for Your REST+JSON API
 
How To Start Up With Php In Ibm I
How To Start Up With Php In Ibm IHow To Start Up With Php In Ibm I
How To Start Up With Php In Ibm I
 
The Case for HTTP/2
The Case for HTTP/2The Case for HTTP/2
The Case for HTTP/2
 
HTML5 Real-Time and Connectivity
HTML5 Real-Time and ConnectivityHTML5 Real-Time and Connectivity
HTML5 Real-Time and Connectivity
 
Getting Started with WebSocket and Server-Sent Events in Java
Getting Started with WebSocket and Server-Sent Events in JavaGetting Started with WebSocket and Server-Sent Events in Java
Getting Started with WebSocket and Server-Sent Events in Java
 
ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4
 
Incorporating Web Services in Mobile Applications - Web 2.0 San Fran 2009
Incorporating Web Services in Mobile Applications - Web 2.0 San Fran 2009Incorporating Web Services in Mobile Applications - Web 2.0 San Fran 2009
Incorporating Web Services in Mobile Applications - Web 2.0 San Fran 2009
 
A python web service
A python web serviceA python web service
A python web service
 
Rest API using Flask & SqlAlchemy
Rest API using Flask & SqlAlchemyRest API using Flask & SqlAlchemy
Rest API using Flask & SqlAlchemy
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
 
High Performance Websites
High Performance WebsitesHigh Performance Websites
High Performance Websites
 
Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?
Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?
Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?
 
腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站
 
REST API Design for JAX-RS And Jersey
REST API Design for JAX-RS And JerseyREST API Design for JAX-RS And Jersey
REST API Design for JAX-RS And Jersey
 
RESTful SOA - 中科院暑期讲座
RESTful SOA - 中科院暑期讲座RESTful SOA - 中科院暑期讲座
RESTful SOA - 中科院暑期讲座
 
Peculiarities of web interfaces for resource constrained embedded systems / B...
Peculiarities of web interfaces for resource constrained embedded systems / B...Peculiarities of web interfaces for resource constrained embedded systems / B...
Peculiarities of web interfaces for resource constrained embedded systems / B...
 
REST API Laravel
REST API LaravelREST API Laravel
REST API Laravel
 
Introduction to RESTful Web Services
Introduction to RESTful Web ServicesIntroduction to RESTful Web Services
Introduction to RESTful Web Services
 

Similar to REST in ( a mobile ) peace @ WHYMCA 05-21-2011

04 request-headers
04 request-headers04 request-headers
04 request-headers
snopteck
 
Site Performance - From Pinto to Ferrari
Site Performance - From Pinto to FerrariSite Performance - From Pinto to Ferrari
Site Performance - From Pinto to Ferrari
Joseph Scott
 
Restful web services rule financial
Restful web services   rule financialRestful web services   rule financial
Restful web services rule financial
Rule_Financial
 
RESTful services
RESTful servicesRESTful services
RESTful services
gouthamrv
 

Similar to REST in ( a mobile ) peace @ WHYMCA 05-21-2011 (20)

REST in peace @ IPC 2012 in Mainz
REST in peace @ IPC 2012 in MainzREST in peace @ IPC 2012 in Mainz
REST in peace @ IPC 2012 in Mainz
 
HTTP colon slash slash: the end of the road?
HTTP colon slash slash: the end of the road?HTTP colon slash slash: the end of the road?
HTTP colon slash slash: the end of the road?
 
HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011
 
Rest
RestRest
Rest
 
CSG 2012
CSG 2012CSG 2012
CSG 2012
 
HTTP Basics Demo
HTTP Basics DemoHTTP Basics Demo
HTTP Basics Demo
 
Don't screw it up! How to build durable API
Don't screw it up! How to build durable API Don't screw it up! How to build durable API
Don't screw it up! How to build durable API
 
04 request-headers
04 request-headers04 request-headers
04 request-headers
 
MNPHP Scalable Architecture 101 - Feb 3 2011
MNPHP Scalable Architecture 101 - Feb 3 2011MNPHP Scalable Architecture 101 - Feb 3 2011
MNPHP Scalable Architecture 101 - Feb 3 2011
 
REST-API introduction for developers
REST-API introduction for developersREST-API introduction for developers
REST-API introduction for developers
 
Introduction to REST and Hypermedia
Introduction to REST and HypermediaIntroduction to REST and Hypermedia
Introduction to REST and Hypermedia
 
Web performance optimization
Web performance optimizationWeb performance optimization
Web performance optimization
 
Site Performance - From Pinto to Ferrari
Site Performance - From Pinto to FerrariSite Performance - From Pinto to Ferrari
Site Performance - From Pinto to Ferrari
 
Dave Orchard - Offline Web Apps with HTML5
Dave Orchard - Offline Web Apps with HTML5Dave Orchard - Offline Web Apps with HTML5
Dave Orchard - Offline Web Apps with HTML5
 
Resource-Oriented Web Services
Resource-Oriented Web ServicesResource-Oriented Web Services
Resource-Oriented Web Services
 
distributing over the web
distributing over the webdistributing over the web
distributing over the web
 
Python tools for testing web services over HTTP
Python tools for testing web services over HTTPPython tools for testing web services over HTTP
Python tools for testing web services over HTTP
 
Restful web services rule financial
Restful web services   rule financialRestful web services   rule financial
Restful web services rule financial
 
RESTful services
RESTful servicesRESTful services
RESTful services
 
Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2
 

More from Alessandro Nadalin

Hey, I just met AngularJS, and this is crazy, so here’s my JavaScript, let’s ...
Hey, I just met AngularJS, and this is crazy, so here’s my JavaScript, let’s ...Hey, I just met AngularJS, and this is crazy, so here’s my JavaScript, let’s ...
Hey, I just met AngularJS, and this is crazy, so here’s my JavaScript, let’s ...
Alessandro Nadalin
 
Don't screw it up: how to build durable web apis @ PHPDay 2014 in Verona (ITA)
Don't screw it up: how to build durable web apis @ PHPDay 2014 in Verona (ITA)Don't screw it up: how to build durable web apis @ PHPDay 2014 in Verona (ITA)
Don't screw it up: how to build durable web apis @ PHPDay 2014 in Verona (ITA)
Alessandro Nadalin
 
A Rocket Internet experience @ ForumPHP Paris 2013
A Rocket Internet experience @ ForumPHP Paris 2013A Rocket Internet experience @ ForumPHP Paris 2013
A Rocket Internet experience @ ForumPHP Paris 2013
Alessandro Nadalin
 

More from Alessandro Nadalin (20)

Spa, isomorphic and back to the server our journey with js @ frontend con po...
Spa, isomorphic and back to the server  our journey with js @ frontend con po...Spa, isomorphic and back to the server  our journey with js @ frontend con po...
Spa, isomorphic and back to the server our journey with js @ frontend con po...
 
SPA, isomorphic and back to the server: our journey with JavaScript @ JsDay 2...
SPA, isomorphic and back to the server: our journey with JavaScript @ JsDay 2...SPA, isomorphic and back to the server: our journey with JavaScript @ JsDay 2...
SPA, isomorphic and back to the server: our journey with JavaScript @ JsDay 2...
 
Scaling at Namshi @ Seamless Ecommerce Dubai 2017
Scaling at Namshi @ Seamless Ecommerce Dubai 2017Scaling at Namshi @ Seamless Ecommerce Dubai 2017
Scaling at Namshi @ Seamless Ecommerce Dubai 2017
 
Accelerated Mobile Pages @ Dubytes meetup Dec 2016 in Dubai
Accelerated Mobile Pages @ Dubytes meetup Dec 2016 in DubaiAccelerated Mobile Pages @ Dubytes meetup Dec 2016 in Dubai
Accelerated Mobile Pages @ Dubytes meetup Dec 2016 in Dubai
 
A tech team of ~10 @ Rocket Tech Summit 2016 in Berlin
A tech team of ~10 @ Rocket Tech Summit 2016 in BerlinA tech team of ~10 @ Rocket Tech Summit 2016 in Berlin
A tech team of ~10 @ Rocket Tech Summit 2016 in Berlin
 
React native in the wild @ Codemotion 2016 in Rome
React native in the wild @ Codemotion 2016 in RomeReact native in the wild @ Codemotion 2016 in Rome
React native in the wild @ Codemotion 2016 in Rome
 
Dockerize it! @ Codemotion 2016 in Rome
Dockerize it! @ Codemotion 2016 in RomeDockerize it! @ Codemotion 2016 in Rome
Dockerize it! @ Codemotion 2016 in Rome
 
Deploying 3 times a day without a downtime @ Rocket Tech Summit in Berlin
Deploying 3 times a day without a downtime @ Rocket Tech Summit in BerlinDeploying 3 times a day without a downtime @ Rocket Tech Summit in Berlin
Deploying 3 times a day without a downtime @ Rocket Tech Summit in Berlin
 
Hey, I just met AngularJS, and this is crazy, so here’s my JavaScript, let’s ...
Hey, I just met AngularJS, and this is crazy, so here’s my JavaScript, let’s ...Hey, I just met AngularJS, and this is crazy, so here’s my JavaScript, let’s ...
Hey, I just met AngularJS, and this is crazy, so here’s my JavaScript, let’s ...
 
Don't screw it up: how to build durable web apis @ PHPDay 2014 in Verona (ITA)
Don't screw it up: how to build durable web apis @ PHPDay 2014 in Verona (ITA)Don't screw it up: how to build durable web apis @ PHPDay 2014 in Verona (ITA)
Don't screw it up: how to build durable web apis @ PHPDay 2014 in Verona (ITA)
 
Namshi in 2014: let's rock!
Namshi in 2014: let's rock!Namshi in 2014: let's rock!
Namshi in 2014: let's rock!
 
Angular js is the future. maybe. @ ConFoo 2014 in Montreal (CA)
Angular js is the future. maybe. @ ConFoo 2014 in Montreal (CA)Angular js is the future. maybe. @ ConFoo 2014 in Montreal (CA)
Angular js is the future. maybe. @ ConFoo 2014 in Montreal (CA)
 
OrientDB, the fastest document-based graph database @ Confoo 2014 in Montreal...
OrientDB, the fastest document-based graph database @ Confoo 2014 in Montreal...OrientDB, the fastest document-based graph database @ Confoo 2014 in Montreal...
OrientDB, the fastest document-based graph database @ Confoo 2014 in Montreal...
 
A Rocket Internet experience @ ForumPHP Paris 2013
A Rocket Internet experience @ ForumPHP Paris 2013A Rocket Internet experience @ ForumPHP Paris 2013
A Rocket Internet experience @ ForumPHP Paris 2013
 
HTTP colon slash slash: end of the road? @ CakeFest 2013 in San Francisco
HTTP colon slash slash: end of the road? @ CakeFest 2013 in San FranciscoHTTP colon slash slash: end of the road? @ CakeFest 2013 in San Francisco
HTTP colon slash slash: end of the road? @ CakeFest 2013 in San Francisco
 
Tips and Tricks for your Service Oriented Architecture @ CakeFest 2013 in San...
Tips and Tricks for your Service Oriented Architecture @ CakeFest 2013 in San...Tips and Tricks for your Service Oriented Architecture @ CakeFest 2013 in San...
Tips and Tricks for your Service Oriented Architecture @ CakeFest 2013 in San...
 
The rocket internet experience @ PHP.TO.START 2013 in Turin
The rocket internet experience @ PHP.TO.START 2013 in TurinThe rocket internet experience @ PHP.TO.START 2013 in Turin
The rocket internet experience @ PHP.TO.START 2013 in Turin
 
GraphDB in PHP @ Codemotion 03/23/2012
GraphDB in PHP @ Codemotion 03/23/2012GraphDB in PHP @ Codemotion 03/23/2012
GraphDB in PHP @ Codemotion 03/23/2012
 
The state of your own hypertext preprocessor
The state of your own hypertext preprocessorThe state of your own hypertext preprocessor
The state of your own hypertext preprocessor
 
REST in peace @ Osidays 2011 India 11-21-2011
REST in peace @ Osidays 2011 India 11-21-2011REST in peace @ Osidays 2011 India 11-21-2011
REST in peace @ Osidays 2011 India 11-21-2011
 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 

REST in ( a mobile ) peace @ WHYMCA 05-21-2011