SlideShare a Scribd company logo
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

PDF
A Rocket Internet experience @ ForumPHP Paris 2013
PDF
A tech team of ~10 @ Rocket Tech Summit 2016 in Berlin
PDF
Deploying 3 times a day without a downtime @ Rocket Tech Summit in Berlin
PDF
3D in the Browser via WebGL: It's Go Time
PDF
世界標準ウェブツール WordPress と そのコミュニティーの魅力
PDF
JavaSE - The road forward
PDF
Designing and developing mobile web applications with Mockup, Sencha Touch an...
PDF
Restinpeaceosidays2011 111121093818-phpapp02
A Rocket Internet experience @ ForumPHP Paris 2013
A tech team of ~10 @ Rocket Tech Summit 2016 in Berlin
Deploying 3 times a day without a downtime @ Rocket Tech Summit in Berlin
3D in the Browser via WebGL: It's Go Time
世界標準ウェブツール WordPress と そのコミュニティーの魅力
JavaSE - The road forward
Designing and developing mobile web applications with Mockup, Sencha Touch an...
Restinpeaceosidays2011 111121093818-phpapp02

More from Alessandro Nadalin (20)

PDF
Spa, isomorphic and back to the server our journey with js @ frontend con po...
PDF
SPA, isomorphic and back to the server: our journey with JavaScript @ JsDay 2...
PDF
Scaling at Namshi @ Seamless Ecommerce Dubai 2017
PDF
Accelerated Mobile Pages @ Dubytes meetup Dec 2016 in Dubai
PDF
React native in the wild @ Codemotion 2016 in Rome
PDF
Dockerize it! @ Codemotion 2016 in Rome
PDF
Hey, I just met AngularJS, and this is crazy, so here’s my JavaScript, let’s ...
PDF
Don't screw it up: how to build durable web apis @ PHPDay 2014 in Verona (ITA)
PDF
Namshi in 2014: let's rock!
PDF
Angular js is the future. maybe. @ ConFoo 2014 in Montreal (CA)
PDF
OrientDB, the fastest document-based graph database @ Confoo 2014 in Montreal...
PDF
HTTP colon slash slash: end of the road? @ CakeFest 2013 in San Francisco
PDF
Tips and Tricks for your Service Oriented Architecture @ CakeFest 2013 in San...
PDF
The rocket internet experience @ PHP.TO.START 2013 in Turin
PDF
GraphDB in PHP @ Codemotion 03/23/2012
PDF
REST in peace @ IPC 2012 in Mainz
PDF
HTTP colon slash slash: the end of the road?
PDF
The state of your own hypertext preprocessor
PDF
Got units? @ Osidays 2011 India 11-20-2011
PDF
Graph databases in PHP @ PHPCon Poland 10-22-2011
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...
Scaling at Namshi @ Seamless Ecommerce Dubai 2017
Accelerated Mobile Pages @ Dubytes meetup Dec 2016 in Dubai
React native in the wild @ 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 ...
Don't screw it up: how to build durable web apis @ PHPDay 2014 in Verona (ITA)
Namshi in 2014: let's rock!
Angular js is the future. maybe. @ ConFoo 2014 in Montreal (CA)
OrientDB, the fastest document-based graph database @ Confoo 2014 in Montreal...
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...
The rocket internet experience @ PHP.TO.START 2013 in Turin
GraphDB in PHP @ Codemotion 03/23/2012
REST in peace @ IPC 2012 in Mainz
HTTP colon slash slash: the end of the road?
The state of your own hypertext preprocessor
Got units? @ Osidays 2011 India 11-20-2011
Graph databases in PHP @ PHPCon Poland 10-22-2011
Ad

Recently uploaded (20)

PDF
Building High-Performance Oracle Teams: Strategic Staffing for Database Manag...
PDF
Top Generative AI Tools for Patent Drafting in 2025.pdf
PDF
Transforming Manufacturing operations through Intelligent Integrations
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Dell Pro 14 Plus: Be better prepared for what’s coming
PDF
HCSP-Presales-Campus Network Planning and Design V1.0 Training Material-Witho...
PDF
Sensors and Actuators in IoT Systems using pdf
PDF
Modernizing your data center with Dell and AMD
PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
PDF
AI And Its Effect On The Evolving IT Sector In Australia - Elevate
PDF
madgavkar20181017ppt McKinsey Presentation.pdf
PDF
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
PDF
CIFDAQ's Token Spotlight: SKY - A Forgotten Giant's Comeback?
PDF
How AI Agents Improve Data Accuracy and Consistency in Due Diligence.pdf
PDF
Google’s NotebookLM Unveils Video Overviews
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PDF
CIFDAQ's Market Wrap: Ethereum Leads, Bitcoin Lags, Institutions Shift
PDF
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Building High-Performance Oracle Teams: Strategic Staffing for Database Manag...
Top Generative AI Tools for Patent Drafting in 2025.pdf
Transforming Manufacturing operations through Intelligent Integrations
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Dell Pro 14 Plus: Be better prepared for what’s coming
HCSP-Presales-Campus Network Planning and Design V1.0 Training Material-Witho...
Sensors and Actuators in IoT Systems using pdf
Modernizing your data center with Dell and AMD
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
AI And Its Effect On The Evolving IT Sector In Australia - Elevate
madgavkar20181017ppt McKinsey Presentation.pdf
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
CIFDAQ's Token Spotlight: SKY - A Forgotten Giant's Comeback?
How AI Agents Improve Data Accuracy and Consistency in Due Diligence.pdf
Google’s NotebookLM Unveils Video Overviews
NewMind AI Monthly Chronicles - July 2025
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
CIFDAQ's Market Wrap: Ethereum Leads, Bitcoin Lags, Institutions Shift
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Ad

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