Slide 1

Slide 1 text

Polyglot Or  How  To  Write  A  Web  App  in  6   Programming  Languages Chang  Sau  Sheong   Oct  2014 1

Slide 2

Slide 2 text

*  http://spectrum.ieee.org/computing/software/top-­‐10-­‐programming-­‐languages 2

Slide 3

Slide 3 text

*http://blog.codeeval.com/codeevalblog/2014 3

Slide 4

Slide 4 text

Programming   language  wars 4

Slide 5

Slide 5 text

Dependency  hell 5

Slide 6

Slide 6 text

Polyglot 6

Slide 7

Slide 7 text

Build  your  web  app   with  any  language 7

Slide 8

Slide 8 text

All  at  once 8

Slide 9

Slide 9 text

Acceptor HTTP Responder Responder Responder POST/_/post Responder Responder Responder GET/_/posts Acceptor HTTP Acceptor HTTP Broker ZMQ ZMQ Responder Responder Responder GET/_/post/new 9

Slide 10

Slide 10 text

10 Acceptor P

Slide 11

Slide 11 text

11 P Broker

Slide 12

Slide 12 text

12 Responder You  need  to  write  this

Slide 13

Slide 13 text

Simple  responder require 'securerandom' require 'bundler' Bundler.require broker = "tcp://localhost:4321" routeid = "GET/_/hello/ruby" identity = SecureRandom.uuid puts "#{routeid} - #{identity} responder ready." ctx = ZMQ::Context.new client = ctx.socket ZMQ::REQ client.identity = identity client.connect broker client.send_string routeid loop do request = String.new client.recv_string request response = [routeid, "200", "{\"Content-Type\": \"text/html\"}", "Hello World"] client.send_strings response end Define  route  ID  and  unique   responder  identity Connect  to  broker Register  responder Receive  request  and  process   it Return  with  response 13

Slide 14

Slide 14 text

Distributed  by  default 14

Slide 15

Slide 15 text

15 Broker Acceptor Responder Responder Responder

Slide 16

Slide 16 text

Scale  as  you  like  it 16

Slide 17

Slide 17 text

17 Broker Acceptor Responder Responder Responder Acceptor Responder

Slide 18

Slide 18 text

Evolve  your  web  app 18

Slide 19

Slide 19 text

19 Broker Acceptor Responder Responder Responder

Slide 20

Slide 20 text

Still  Evolving   (need  your  feedback  and  help) 20

Slide 21

Slide 21 text

http://github.com/sausheong/polyglot   [email protected]   @sausheong 21