programming (FP)? • A little bit of context on what we are doing with Elixir @ Xerpa • Elixir & Ruby – What's the difference? • The main problems & difficulties we encountered so far • Final points & discussion
google “no more free lunch” and read the first article. Seriously. • Since I'm already here, I'll give you a primer: – CPU clock is not getting exponentially faster – Transistor number is still growing rapidly – No performance gain for single threaded apps – Concurrency is the next major revolution in how we write software
write software > Applications will increasingly need to be concurrent if they want to fully exploit continuing exponential CPU throughput gains > Efficiency and performance optimization will get more, not less, important
XP. Vista only in 2007. – No AWS, Twitter, Netflix. – Ruby on Rails launched in December 13th. – Youtube was just founded. – We never have heard of Justin Bieber – I was playing Gunbound & Tibia. No money for WoW.
– IMMUTABILITY – THERE IS A COMPILER – IMMUTABILITY – Docs & tooling receive much more love (!?) – MACROS (!? ruby doesn't need them!) – OTP – Iex >> Irb (!?)
– SUPER DUPPER FAST (!?) – Much easier to setup for high concurrency – Much less magic. Mostly everything is based on simple function calls. – Views vs Templates.
very small (and buggy). – No options for monitoring apps (like new relic, appsignal, honeybadger). – No Sidekiq. – ExMachina (elixir's factory girl) is so broken. – No Monads.
very small (and buggy). – No usable client for elastic search (?!) – No usable (at the time?) library for exposing jsonapi (?!) – No usable (at the time) library to handle acls (?!) – No usable bindings for ImageMagick (?!) – Releases are so damn hard and un-12factor – Hot code reloads are much much harder than people say – Almost no problems with core libs like Ecto, Plug & Phoenix though.
can tap into the JVM with Jruby. – Ruby's stdlib has waaaaaaay more stuff out of the box – A *big* and mature ecosystem – A lot of developers willing to work with it – Although Elixir can tap into erlang-land's libraries and tools, they are much harder to use (less googlability, bad/incomplete docs)
a lot from other communities. (e.g. Queryable is an idea from .net's Linq) • You can see that it evolves and taps into the learning experiences of other languages & communities. It still lacks a mature ecosystem but it is gaining traction fast. • If you truly aim to invest yourself in it, you must be ready to get your hands dirt and write a lot of infrastructure you can take for granted in Ruby-land. Do not underestimate the complexity of managing library code + tests + docs + versioning + bug tracking.
it is not stagnant. • Many nice ideas on how to add better concurrency to Ruby. Ruby 3 promises to be 3x faster than Ruby 2, while keeping maximum backwards-compatibility.