SlideShare a Scribd company logo
1 of 193
Download to read offline
RESTin peace
Bengaluru, 20-22 November 2011
Sorry for the ugly slide.

 There will be others.
    Really sorry.



     Bengaluru, 20-22 November 2011
REST in a nutshell



    Bengaluru, 20-22 November 2011
2000
 Fielding's dissertation:

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




                                      Bengaluru, 20-22 November 2011
REST in a nutshell:




1. Client <> Server
    Bengaluru, 20-22 November 2011
REST in a nutshell:




                   2. Stateless
    Bengaluru, 20-22 November 2011
Servers do not keep any
informations the clients uses
  during different requests.



       Bengaluru, 20-22 November 2011
So the architecture scales well.




        Bengaluru, 20-22 November 2011
REST in a nutshell:




   3. Cacheable
    Bengaluru, 20-22 November 2011
Client has access to
resources stored between
 it and the origin server.



      Bengaluru, 20-22 November 2011
So communication is faster.




      Bengaluru, 20-22 November 2011
REST in a nutshell:




4. Layered system
     Bengaluru, 20-22 November 2011
Intermediary nodes can be
used along our architecture.




       Bengaluru, 20-22 November 2011
So you efficiently implement
           point 3.



       Bengaluru, 20-22 November 2011
REST in a nutshell:



                      5. Uniform
                      interface
    Bengaluru, 20-22 November 2011
Communicate using well-known
  verbs and providing all the
    informations needed to
      consume a service.


        Bengaluru, 20-22 November 2011
So fallbacks are easy.




   Bengaluru, 20-22 November 2011
this was a bit difficult to understand

           so, obviously...




    Bengaluru, 20-22 November 2011
nobody had a clue




  Bengaluru, 20-22 November 2011
ANTIPATTERNS


   Bengaluru, 20-22 November 2011
1
       URIs

Bengaluru, 20-22 November 2011
"REST is about

 cool URI design"




http://apple.com/users/1/licenses/4.json




                        Bengaluru, 20-22 November 2011
"REST is about

 cool URI design"




http://apple.com/users/1/licenses/4.json




                        Bengaluru, 20-22 November 2011
http://apple.com/site/en_US/showUsers.jsp?uid=1&license=4




            is OK too

                Bengaluru, 20-22 November 2011
but, enter simple rule of thumb




        Bengaluru, 20-22 November 2011
cool URIs help you
think in term of resources
                                        - David Zuelke




       Bengaluru, 20-22 November 2011
2
 URIs (bis)

Bengaluru, 20-22 November 2011
REST follows a URI schema


                GET /users
                POST /users
                PUT /users/{id}
                DELETE /users/{id}
                ...


       Bengaluru, 20-22 November 2011
REST follows a URI schema


               GET /users
                  POST /users
               PUT /users/{id}
                DELETE /users/{id}
                ...


       Bengaluru, 20-22 November 2011
what if you change your
         URL?



     Bengaluru, 20-22 November 2011
client is
broken
 Bengaluru, 20-22 November 2011
RESTful clients should
      be driven by service's
      hypermedia controls
Roy Fielding : http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven




                      Bengaluru, 20-22 November 2011
HATEOAS
 Bengaluru, 20-22 November 2011
3
POST is cool


Bengaluru, 20-22 November 2011
said SOAP 1.1

   Bengaluru, 20-22 November 2011
said SOAP 1.1

   Bengaluru, 20-22 November 2011
loosing meaningful verbs at the protocol level




             Bengaluru, 20-22 November 2011
loosing meaningful verbs at the protocol level

        nothing cacheable by default




             Bengaluru, 20-22 November 2011
loosing meaningful verbs at the protocol level

        nothing cacheable by default

         what about bookmarking?



             Bengaluru, 20-22 November 2011
4
500 is your friend


  Bengaluru, 20-22 November 2011
said SOAP
         ( again )




 Bengaluru, 20-22 November 2011
GET /users/300
Host: www.example.com




Bengaluru, 20-22 November 2011
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

       Bengaluru, 20-22 November 2011
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

       Bengaluru, 20-22 November 2011
The HTTP protocol is awesome,
and lets you return meaningful and
universally-understood status codes




        Bengaluru, 20-22 November 2011
404 Not Found




Bengaluru, 20-22 November 2011
404 Not Found




  OMG Link is broken?



Bengaluru, 20-22 November 2011
202 Accepted




Bengaluru, 20-22 November 2011
202 Accepted




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



                  Bengaluru, 20-22 November 2011
Pause




Bengaluru, 20-22 November 2011
The WWW

 Bengaluru, 20-22 November 2011
the largest data-exchange network on the planet




          Bengaluru, 20-22 November 2011
And meanwhile, at Facebook...




12TB of new data every day
       (1 year ago)

    500 million users
        Bengaluru, 20-22 November 2011
And meanwhile, at Google...




       1 billion
unique monthly googlers

      Bengaluru, 20-22 November 2011
via   HTTP                       , baby!




      Bengaluru, 20-22 November 2011
HTTP in a nutshell:




1. Client <> Server
    Bengaluru, 20-22 November 2011
HTTP in a nutshell:




                   2. Stateless
    Bengaluru, 20-22 November 2011
HTTP in a nutshell:



3. widespread cache spec
 http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html


               Bengaluru, 20-22 November 2011
HTTP in a nutshell:
    Lao Tze Song using Firefox 6
          Company proxy
       Great chinese (fire)wall
            Reverse proxy
             Origin server

4. Layered system
      Bengaluru, 20-22 November 2011
HTTP in a nutshell:




 5. it is the uniform interface
 between clients and servers
     Bengaluru, 20-22 November 2011
HTTP bleeds REST


    Bengaluru, 20-22 November 2011
How do I
implement
   this
goodness?
 Bengaluru, 20-22 November 2011
1.
caching & scalability


    Bengaluru, 20-22 November 2011
HTTP cache

  Bengaluru, 20-22 November 2011
Types of cache

           Local

     Shared/proxy

 Shared/reverse proxy



  Bengaluru, 20-22 November 2011
Types of cache

           Local

     Shared/proxy

 Shared/reverse proxy



  Bengaluru, 20-22 November 2011
Bengaluru, 20-22 November 2011
Types of cache

           Local

   Shared/proxy

 Shared/reverse proxy



  Bengaluru, 20-22 November 2011
Bengaluru, 20-22 November 2011
Types of cache

           Local

     Shared/proxy

Shared/reverse proxy



  Bengaluru, 20-22 November 2011
Bengaluru, 20-22 November 2011
on the server side




Bengaluru, 20-22 November 2011
Caching with
  Expiration
  (example)
 Bengaluru, 20-22 November 2011
HTTP/1.1 200 OK
Host: www.example.com
Expires: 0




        Bengaluru, 20-22 November 2011
HTTP/1.1 200 OK
Host: www.example.com
Expires: 0




        Bengaluru, 20-22 November 2011
HTTP/1.1 200 OK
Host: www.example.com
Expires: Tue, 31 Jan 2011 01:00 GMT




         Bengaluru, 20-22 November 2011
HTTP/1.1 200 OK
Host: www.example.com
Cache-Control: max-age=60, public




       Bengaluru, 20-22 November 2011
HTTP/1.1 200 OK
Host: www.example.com
Cache-Control: max-age=60, public




       Bengaluru, 20-22 November 2011
HTTP/1.1 200 OK
Host: www.example.com
Cache-Control: max-age=60, public


      Cacheable for 60 seconds




       Bengaluru, 20-22 November 2011
HTTP/1.1 200 OK
Host: www.example.com
Cache-Control: max-age=60, public


Cacheable by both local and shared caches




        Bengaluru, 20-22 November 2011
You can also cache with
                 validation
(Etags, If-None-Match, ...)



    Bengaluru, 20-22 November 2011
Why HTTP caching
      is so
   important?


   Bengaluru, 20-22 November 2011
Ask yourself:
as a developer, what do I want
      on my application?



        Bengaluru, 20-22 November 2011
Evolve



                                 Loose coupling




                                     Work less




Bengaluru, 20-22 November 2011
Evolve

Because you want your platform to extensible

                                                   Loose coupling




                                                       Work less




                  Bengaluru, 20-22 November 2011
Evolve

Because you want your platform to extensible

                                                    Loose coupling

Because you want it to be easy to integrate with, evolve, plug
and mantain

                                                        Work less




                   Bengaluru, 20-22 November 2011
Evolve

Because you want your platform to extensible

                                                    Loose coupling

Because you want it to be easy to integrate with, evolve, plug
and mantain

                                                        Work less

Because every LoC is bug-prone and our man-day is a hard-to-
scale cost



                   Bengaluru, 20-22 November 2011
enters our Hero #1




Bengaluru, 20-22 November 2011
Bengaluru, 20-22 November 2011
Bengaluru, 20-22 November 2011
enters our Hero #2




Bengaluru, 20-22 November 2011
Bengaluru, 20-22 November 2011
http://www.lullabot.com/articles/a-beginners-guide-to-caching-data




              Bengaluru, 20-22 November 2011
2007


Bengaluru, 20-22 November 2011
2011?


Bengaluru, 20-22 November 2011
it supports
HTTP caching!
  http://drupal.org/node/147310




    Bengaluru, 20-22 November 2011
it supports
HTTP caching!
   http://drupal.org/node/147310
 ( people is supposed to clap their hands here )




       Bengaluru, 20-22 November 2011
but



Bengaluru, 20-22 November 2011
wait.... how?


  Bengaluru, 20-22 November 2011
Default headers
Expires = 'Sun, 19 Nov 1978 05:00:00 GMT',

Cache-Control = 'no-cache, must-revalidate',

ETag = $_SERVER['REQUEST_TIME'],




         Bengaluru, 20-22 November 2011
Default headers
Expires = 'Sun, 19 Nov 1978 05:00:00 GMT',

Cache-Control = 'no-cache, must-revalidate',

ETag = $_SERVER['REQUEST_TIME'],




         Bengaluru, 20-22 November 2011
Default headers
Expires = 'Sun, 19 Nov 1978 05:00:00 GMT',

Cache-Control = 'no-cache, must-revalidate',

ETag = $_SERVER['REQUEST_TIME'],




         Bengaluru, 20-22 November 2011
Default headers
Expires = 'Sun, 19 Nov 1978 05:00:00 GMT',

Cache-Control = 'no-cache, must-revalidate',

ETag = $_SERVER['REQUEST_TIME'],




         Bengaluru, 20-22 November 2011
is that even legal?




Bengaluru, 20-22 November 2011
"but you can redefine them!"




      Bengaluru, 20-22 November 2011
drupal_add_http_header()




     Bengaluru, 20-22 November 2011
function drupal_add_http_header()
{
  ...


    ...

    drupal_send_headers($headers);
}




          Bengaluru, 20-22 November 2011
so, what

drupal_send_headers()

    can do so evil?


    Bengaluru, 20-22 November 2011
header()                          ,

         of course




 Bengaluru, 20-22 November 2011
which means




Bengaluru, 20-22 November 2011
drupal_add_http_header('Dumb-Header', 'I'm batman!');
...
// other logic
...
drupal_add_http_header('Dumb-Header', 'I'm not');

var_dump(headers_list());




                Bengaluru, 20-22 November 2011
drupal_add_http_header('Dumb-Header', 'I'm batman!');
...
// other logic
...
drupal_add_http_header('Dumb-Header', 'I'm not');

var_dump(headers_list());

array
 0 => string 'X-Powered-By: PHP/5.3.2-1ubuntu4.7'
 1 => string 'Dump-Header: I'm not'




                Bengaluru, 20-22 November 2011
drupal_add_http_header('Dumb-Header', 'I'm batman!');
...
// other logic
...
drupal_add_http_header('Dumb-Header', false);

var_dump(headers_list());




                Bengaluru, 20-22 November 2011
drupal_add_http_header('Dumb-Header', 'I'm batman!');
...
// other logic
...
drupal_add_http_header('Dumb-Header', false);

var_dump(headers_list());

array
 0 => string 'X-Powered-By: PHP/5.3.2-1ubuntu4.7'
 1 => string 'Dump-Header: I'm batman'




                Bengaluru, 20-22 November 2011
drupal_add_http_header('Dumb-Header', 'I'm batman!');
...
// other logic
...
drupal_add_http_header('Dumb-Header', ' ');

var_dump(headers_list());




                Bengaluru, 20-22 November 2011
drupal_add_http_header('Dumb-Header', 'I'm batman!');
...
// other logic
...
drupal_add_http_header('Dumb-Header', ' ');

var_dump(headers_list());

array
 0 => string 'X-Powered-By: PHP/5.3.2-1ubuntu4.7'
 1 => string 'Dumb-Header:'




                Bengaluru, 20-22 November 2011
or

Bengaluru, 20-22 November 2011
you can use header_remove()
               ( PHP 5.3 )




       Bengaluru, 20-22 November 2011
and create a new class to
   manage/keep track of
headers and caching directives



       Bengaluru, 20-22 November 2011
but we're lazy

                 and

we don't want to reinvent the wheel




     Bengaluru, 20-22 November 2011
Goals
Work less
                                             evolve
              loose coupling


            Bengaluru, 20-22 November 2011
Goals
Work less
                                             evolve
              loose coupling


            Bengaluru, 20-22 November 2011
everything is done for us!

                :)



             but....



   Bengaluru, 20-22 November 2011
tmp files, cache tables, procedural code...

                mmmmh....

        gotta be something better




          Bengaluru, 20-22 November 2011
Frameworks



Bengaluru, 20-22 November 2011
Bengaluru, 20-22 November 2011
ONE

Bengaluru, 20-22 November 2011
Cache is used for compiling routes, autoloading, ...




              Bengaluru, 20-22 November 2011
Cache is used for compiling routes, autoloading, ...




   ...but also for storing the view

              Bengaluru, 20-22 November 2011
Goals
Work less
                                             evolve
              loose coupling


            Bengaluru, 20-22 November 2011
Goals
Work less
                                             evolve
              loose coupling


            Bengaluru, 20-22 November 2011
at least because we use a framework




       Bengaluru, 20-22 November 2011
HTTP
Less work


Bengaluru, 20-22 November 2011
http://www.flickr.com/photos/snakphotography/5004775320/sizes/o/in/photostream/




  because the hard work is delegated to the browser/proxy


                                 Bengaluru, 20-22 November 2011
Evolve


Bengaluru, 20-22 November 2011
because cache is abstracted from the application




           Bengaluru, 20-22 November 2011
Loose coupling


   Bengaluru, 20-22 November 2011
because caching is bound to the protocol, HTTP, not
to your implementation ( Sf, RoR, Django )




                    Bengaluru, 20-22 November 2011
but hey, you say




Bengaluru, 20-22 November 2011
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 )




              Bengaluru, 20-22 November 2011
Nope


     Nope

Bengaluru, 20-22 November 2011
ESI was built for that
  http://www.w3.org/TR/esi-lang




     Bengaluru, 20-22 November 2011
Edge Side Includes
   A de facto standard for bla bla bla...




       Bengaluru, 20-22 November 2011
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://osidays.com/talks/1" />




              Bengaluru, 20-22 November 2011
<esi:include src="http://osidays.com/talks/1" />




              Bengaluru, 20-22 November 2011
<esi:include src="http://osidays.com/talks/1" />




              Bengaluru, 20-22 November 2011
1s (tweets)




3600 (post)

   Bengaluru, 20-22 November 2011
<esi:include src='tweets.html' />




<esi:include src='article/12.html' />



          Bengaluru, 20-22 November 2011
2.
adaptability & durability


      Bengaluru, 20-22 November 2011
Hypermedia
 another long-time friend




   Bengaluru, 20-22 November 2011
Links
outrageously semplifying




  Bengaluru, 20-22 November 2011
<img src="..." />

<a href="..." />

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


       Bengaluru, 20-22 November 2011
<img src="..." />

<a href="..." />

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


       Bengaluru, 20-22 November 2011
<img src="..." />

<a href="..." />

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


       Bengaluru, 20-22 November 2011
<link rel="payment" href="/checkout" type="text/html" ... />




                Bengaluru, 20-22 November 2011
<link rel="payment" href="/checkout" type="text/html" ... />




                Bengaluru, 20-22 November 2011
<link rel="payment" href="/checkout" type="text/html" ... />




                Bengaluru, 20-22 November 2011
<link rel="payment" href="/checkout" type="text/html" ... />




                Bengaluru, 20-22 November 2011
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
      Bengaluru, 20-22 November 2011
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
      Bengaluru, 20-22 November 2011
POST /users
       Host: www.example.
       com




HTTP/1.1 201 Created
Host: www.example.com
Etag: 1234
X-Powered-By: php/5.3
Location: /new-users-db/1
      Bengaluru, 20-22 November 2011
POST /users
       Host: www.example.
       com




HTTP/1.1 201 Created
Host: www.example.com
Etag: 1234
X-Powered-By: php/5.3
Location: /new-users-db/1
      Bengaluru, 20-22 November 2011
consumers of your API are able to follow
      the changes of your design




        Bengaluru, 20-22 November 2011
Client knows how to consume the
service based on the informations
auto-provided by the service itself




       Bengaluru, 20-22 November 2011
No WSDL.




Bengaluru, 20-22 November 2011
No URI templates.




Bengaluru, 20-22 November 2011
No easily-outdated documentation.




       Bengaluru, 20-22 November 2011
No assumptions.




Bengaluru, 20-22 November 2011
Less WTFs.




Bengaluru, 20-22 November 2011
Bengaluru, 20-22 November 2011
This does not easily break.




   Bengaluru, 20-22 November 2011
HATEOAS
Hypermedia As The Engine Of Application State




           Bengaluru, 20-22 November 2011
6

Bengaluru, 20-22 November 2011
everything
seems eventually
      cool

Recap: why REST?
    Bengaluru, 20-22 November 2011
Pros



Performances
  Bengaluru, 20-22 November 2011
Pros

Scalability

       Bengaluru, 20-22 November 2011
REST in peace @ Osidays 2011 India 11-21-2011
Pros
                     Durability



Bengaluru, 20-22 November 2011
Not RESTful?


  Bengaluru, 20-22 November 2011
Simply don't care


    Bengaluru, 20-22 November 2011
Rules of architectural design




        Bengaluru, 20-22 November 2011
Follow them according
     to your needs


     Bengaluru, 20-22 November 2011
amazon.com



Bengaluru, 20-22 November 2011
So...

Bengaluru, 20-22 November 2011
Bengaluru, 20-22 November 2011
Alessandro Nadalin



   Bengaluru, 20-22 November 2011
odino.org



Bengaluru, 20-22 November 2011
Bengaluru, 20-22 November 2011
@_odino_                     #osidays




Bengaluru, 20-22 November 2011
Thank YOU!
@_odino_




     Bengaluru, 20-22 November 2011
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/




           Bengaluru, 20-22 November 2011

More Related Content

More from Alessandro Nadalin

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...Alessandro Nadalin
 
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...Alessandro Nadalin
 
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 2017Alessandro Nadalin
 
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 DubaiAlessandro Nadalin
 
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 RomeAlessandro Nadalin
 
Dockerize it! @ Codemotion 2016 in Rome
Dockerize it! @ Codemotion 2016 in RomeDockerize it! @ Codemotion 2016 in Rome
Dockerize it! @ Codemotion 2016 in RomeAlessandro 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
 
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)Alessandro Nadalin
 
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...Alessandro Nadalin
 
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 FranciscoAlessandro Nadalin
 
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...Alessandro Nadalin
 
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 TurinAlessandro Nadalin
 
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/2012Alessandro Nadalin
 
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 MainzAlessandro Nadalin
 
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?Alessandro Nadalin
 
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 preprocessorAlessandro Nadalin
 
Got units? @ Osidays 2011 India 11-20-2011
Got units? @ Osidays 2011 India 11-20-2011Got units? @ Osidays 2011 India 11-20-2011
Got units? @ Osidays 2011 India 11-20-2011Alessandro Nadalin
 
Graph databases in PHP @ PHPCon Poland 10-22-2011
Graph databases in PHP @ PHPCon Poland 10-22-2011 Graph databases in PHP @ PHPCon Poland 10-22-2011
Graph databases in PHP @ PHPCon Poland 10-22-2011 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
 
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
 
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...
 
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
 
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?
 
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
 
Got units? @ Osidays 2011 India 11-20-2011
Got units? @ Osidays 2011 India 11-20-2011Got units? @ Osidays 2011 India 11-20-2011
Got units? @ Osidays 2011 India 11-20-2011
 
Graph databases in PHP @ PHPCon Poland 10-22-2011
Graph databases in PHP @ PHPCon Poland 10-22-2011 Graph databases in PHP @ PHPCon Poland 10-22-2011
Graph databases in PHP @ PHPCon Poland 10-22-2011
 

Recently uploaded

UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
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
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
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
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
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
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
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
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
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
 
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
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 

Recently uploaded (20)

UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
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 )
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
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
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
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
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
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
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
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
 
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
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 

REST in peace @ Osidays 2011 India 11-21-2011