A limited history of how core web technologies have been influenced by misuse and abuse.
Early Web (The 90s)
Need Serve (complete) web pages for cross referencing documents.
Hack HTML extracted, adopted, extended by Mosaic/Netscape/IE.
REACT HTML 2,3,4 & HTTP 0.9, 1.0, 1.1 standards
Birth of Ajax (Early 2000s)
Need More dynamic sites with only small partial content updates.
React Browsers implement XMLHTTP(IE) and XMLHttpRequest to solve issue.
Web 2.0 (Mid to Late 2000s)
Need Ajax without all the cross browser code. Shareable web (APIs).
Hack jQuery, Prototype, etc - More abstraction on HTTP, cross browser Ajax
React W3C XHMLHttpRequest Spec
Real time web (2010+)
Need More collaboration & apps need to push data to client.
Hack Long Polling, flash based solutions, HTTP keep alive, Pipelining.
React WebSockets Protocol & API drafted.
The Web of the Future
Users demand more
More dynamic interfaces
More real time collaboration
More social sharing
Protocols are Old
HTTP 1.1 is 18 years old.
HTTP 2.0, based on SPDY, still being worked on by IETF.
HTTP 2.0 proposal expected End of 2014.
Request/Response Fails at Real Time
Todays most popular back end technologies have all been designed around the request/response cycle.
Tools that do support persistent connections:
Node.js, Ruby EventMachine, Python Twisted, etc
Need auxiliary infrastructure to scale beyond one server. (ZeroMQ, Redis, etc)
Can be hard to reason about - callback soup.
More connectivity is coming
Today: Your computer and phone are online
Tomorrow: Your house, car, glasses, watch, fridge and bike will be.
So What is Elixir?
Elixir is a functional meta-programming aware language built on top of the Erlang VM. It is a dynamic language with flexible syntax and macro support that leverages Erlang's abilities to build concurrent, distributed, fault-tolerant applications with hot code upgrades.