GitMonitor on Elixir
blog.gitmonitor.com
blog.gitmonitor.com
A case for new technology should be made more than just on pure technical features but also in terms of reduced ops load, say because of fault tolerance or saving in recurring infrastructure costs. Or it could be community friendliness and acceptance of new members. I feel Elixir does a great job there, as well.
Other thing I found using Erlang: It is simply more fun and easier to discover problems. Can launch observer. Setup traces with recon_trace (I started to do that more lately even instead of adding print statement to code, attaching traces to functions is just too easy). Even things like hot-patching have saved the day many time in terms of fixing an issue for some customers with 0-downtime. These seems like nice extras but they all add up and make a huge difference when taken together.
Rails wins in some cases for development productivity, and is "good enough" for many things. But when it's time for scaling, the language/solution/stack choice almost doesn't matter if you're moving from RoR. That said, if free ops performance wins aren't part of the decision, you've done it wrong.
They should be, but often they are not I. It is mostly about "Look how fast it runs on my laptop, it means we can have millions of requests on a large server". I've heard people quote Techempower benchmarks as their reason to picking a language / library vs another.
Will have to say that working with Elixir and Phoenix (so far) has been much more enjoyable than working with Rails.
I will say the only thing I really miss is extra tooling for debugging and so on, but I'm primarily a java developer, so I'm used to having all sorts of options at my fingertips for debugging.
Elixir projects tend to go thru three phases- early its' green code and everything's working, then there's a phase where you find a whole lot of errors and it looks like you're in trouble, but once you get past that you end up with code that you can put in production and literally forget about.
In that second phase, being able to connect to servers and inject data into them and see the results etc can be very useful.
The only thing I miss is good tooling support but I'm coming from Java and a bit spoiled in that regard.
Elixir and Erlang are bad at number crunching, they aren't "fast" at computations like C is. However, because of the amazing piece of tech that is the BEAM, problems that are best solved through multiple processes/actors, concurrency, and distribution appear to be "blazing" fast because the two languages are very good at that type of stuff. Hence the Phoenix web framework being called "blazing fast"—the BEAM is great for servers.
With elixir you might get 0.4X performance. From that perspective Elixir looks slow.
But you can deploy 10 servers and thus get 4X performance overall, with essentially no cost for Elixir. On the other hand to make distributed system in C you will spend 10X the development time.
So Elixir is fast in the sense that you get a distributed system much faster, and you can get more overall performance by scaling across multiple CPUs.
(And I'm kinda avoiding that on a quad core CPU your C program is really going to only use one core out of the box while elixir will use all four.)
These ratios are just examples, of course.
https://github.com/elixir-lang/elixir/wiki/Interoperability-...
I think that's a pretty major factor to avoid -- multicore processors are the immediate/commercial foreseeable future of CPUs, so its not inconsequential that Erlang/Elixir allow you to be able to use cheap processes in order take full advantage of this