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 - Live APIs with GraphQL Subscriptions - @bruce and @benwilson512 APIs have gone live with G...
New
AstonJ
Just starting to go up - here's the first three: By @lpil By @Crowdhailer By Evadne Wu (Why aren't you a member Evadne :p)
New
axelson
ElixirConf 2017 - Perhap: Applying Domain Driven Design and Reactive Architectures to Functional Programming - by @Version2beta ...
New
axelson
ElixirConf 2017 - Dr. Erlang/OTP or: How I Learned to Stop Worrying and Love :disk_log - Eric Entin Even aft...
New
axelson
Posting a little bit late today but here you go: ElixirConf 2017 - Elixir + Neo4j - Regina Imhoff Neo4j is ...
New
axelson
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. Elix...
New
axelson
Consistent, Distributed Elixir - @keathley Elixir and Erlang provide powerful mechanisms for building systems that are alw...
New
CodeSync
Code Sync: Keynote: Gang of None? Design Patterns in Elixir - José Valim | ElixirConf EU 2024 Comments welcome! View the <span class="ha...
New
ElixirConf
ElixirConf: ElixirConf 2022 - Brian Cardarella - What is LiveView Native? Comments welcome! View the #elixirconf tag for more ElixirConf...
New
AstonJ
Keywords: LiveView autocomplete, LiveView search, focus Startups and web developers take note. Phoenix LiveView is the revolutionary fr...
New

Other popular topics Top

9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New
lastday4you
I wanted to check elixir version in phoenix because i found that my elixir is 1.5 but when i use Enum.chunk_by it said the function is un...
New
freewebwithme
Using vs code and installed ElixirLS: support and debugger. And I got an error popped up on start up says Failed to run ‘elixir’ comma...
New
pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
New
grych
Hi folks, Few months ago I have announced the proof-of-concept of the library to manipulate the browsers DOM objects directly from Elixi...
639 49522 488
New
New
Jim
As a follow up to my earlier question: I have the code compiling and running but not getting a successful login from the rest server. ...
New
chrismccord
This release brings a number of exciting features, including integration with the new Phoenix LiveDashboard and Phoenix LiveView. There h...
New
beno
I will often find my self writing things similar to: case some_value do nil -&gt; something() "" -&gt; something() _ -&gt; someth...
New

We're in Beta

About us Mission Statement