axelson

axelson

Scenic Core Team

2) ElixirConf 2017: My Journey from Go to Elixir - Veronica Lopez

I really like the idea of discussing one Elixirconf talk each day and since @brightball hasn’t posted the second talk I’ll post it.

ElixirConf 2017: My Journey from Go to Elixir - Veronica Lopez

Go and Elixir are powerful and popular tools with a similar goal, but with a different approach. As a seasoned Go developer, I used to look at Elixir from a safe distance, till its fault tolerance capabilities and Phoenix made it impossible to ignore. This talk will describe how Elixir works compared to Go, beyond simple performance benchmarking or syntax preferences, instead focusing on tooling, development environment, and the BEAM internals (compared to the CSP model) that make Elixir shine as a language to build elegant and strong distributed systems.

Previous days thread:

Most Liked

axelson

axelson

Scenic Core Team

No problem, I’d just like to see the discussion continue :slight_smile:

JEG2

JEG2

Author of Designing Elixir Systems with OTP

Hooray! Please keep the trend alive.

JEG2

JEG2

Author of Designing Elixir Systems with OTP

This talk didn’t speak to me directly too much, just because I have essentially zero experience with Go. That said, I could appreciate that it was a technically well constructed talk. I really love the lengths Veronica went to not to throw shade at either side.

brightball

brightball

Thanks for picking up the slack.

tkruthoff

tkruthoff

Veronica touched very briefly on a key metric/indicator when she mentioned she had started a side web project in Go but never completed it vs being able to complete it quickly in Elixir/Phoenix. Frankly, I wish 80% of her talk reflected why this was the case.

I am possibly discovering this the hard way, coding mostly Go, I have been flirting with Elixir on and off for the past 3 years to gauge developer velocity when crafting web applications.

I love Go and it will be a tool I reach for often, our current system is Kubernetes, Docker, gRPC, Protobufs and NSQ (message queue) to tie it all together. Thats a lot of parts and a lot of work to get going. Not to mention we’ve made our own view and database libraries, which is great now, but took a lot of time and adds up to a bit of work to onboard a new developer.

However, debugging production is painful. How many times I longed for the runtime introspection and REPL ability of the BEAM, what-makes-a-good-repl articulates very well the benefits of a tight feedback loop. When choosing Go, we had bought into the Pay-It-Forward concept, more time developing up front would gain us velocity managing and enhancing the system in production. This has held true when you know what to fix, however finding what went wrong and the state that caused it can be harrowing.

To sum it up, I think the dynamic typing, immutable data, guards, processes, supervisors, REPL and frameworks such as OTP and Phoenix/Plug offer best-in-class developer velocity for web applications with a concurrent runtime. (maybe Ecto as well, each time we have looked Elixir’s way we end up fighting Ecto one-way or the other because we love our postgres, custom types, and sql in general – but this seems to be progressing with schemaless queries, fragments, etc). But even with all those goodies, we chose Go over Elixir because it was easy to grok from Day 1.

Runtime introspection of the platform gives best-in-class debugging and maintaining and the tightest feedback look you could ask for. I think as Elixir/Phoenix continue to move forward and more people deploy production apps, its the maintainability and reliability at runtime that will attract even more adoption. I think the keynotes from the last Elixirconf are spot on and shows the community moving in a healthy direction. (sidenote: Phoenix Contexts are basically how we structure our code in any language we can, it’s not a new idea, just a good one)

Maybe this will be the year we grab Elixir by the horns and use it in anger and never look back. If so, it would be fun to share a real-life benefit analysis of Go to Elixir and how the REPL and Runtime safety over Compile time acceptance increases velocity by tightening the feedback loop.

Where Next?

Popular in Talks Top

axelson
ElixirConf 2017 - Elixir as a first language - Alexis Huefner What would it be like to use Elixir as your fi...
New
axelson
by @chrismccord My summary: Chris gives an update and copious demos of Phoenix LiveView which is now released on hex.pm. Demos on: ...
New
CodeSync
Code Sync: Writing much better tests in Elixir by Xochitl Pérez | Code BEAM Lite Mexico 2023 Comments welcome! View the <span class="has...
New
axelson
ElixirConf 2017 - Streaming Video with Elixir - @johnwahba Running a video stream is challenging. You can’t ...
New
axelson
ElixirConf 2017 - Day 2 Morning Keynote - @josevalim All talks are available in the Elixir Conf 2017 Talks ...
New
axelson
ElixirConf US 2018 – Behavior Trees and Battleship: Tapping into the Power of Advanced Data Structures – Jeff Schomay I ...
New
axelson
ElixirConf US 2018 – Take Your Time – Ben Marx (@bgmarx) OTP20 officially introduced dirty schedulers. In this talk, we’...
New
axelson
Consistent, Distributed Elixir - @keathley Elixir and Erlang provide powerful mechanisms for building systems that are alw...
New
JuanjoA
Hi, I don’t know if I have the post in the right place. I put here in case you might be interested, I am not the author, I just found it...
New
New

Other popular topics Top

aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
sergio
I couldn’t find any guides that worked well with Phoenix 1.6.0 and esbuild. I hope this helps people test the waters and eases you into t...
New
malloryerik
Hi, this is for people who, like me, have had some friction using .html.heex templates in VSCode. The solution seems to be, in a hyphena...
New
KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 35421 110
New
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list....
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
Fl4m3Ph03n1x
About me? ( if you have nothing better to do than reading about some random guy in the internet :stuck_out_tongue: ) Hello all, this is ...
New
Nvim
Elixir appears to be a superior language to Python. I don’t see any advantage of Python over Elixir. Are there any?
New

We're in Beta

About us Mission Statement