[HN Gopher] Adding Elixir to our Nextjs app (2022)
___________________________________________________________________
Adding Elixir to our Nextjs app (2022)
Author : cheeseblubber
Score : 43 points
Date : 2023-06-26 15:39 UTC (7 hours ago)
(HTM) web link (www.linen.dev)
(TXT) w3m dump (www.linen.dev)
| wbobeirne wrote:
| > But after some more research we heard a bunch of negative
| feedback about Socket.io and one of our team members had a poor
| experience using Socket.io.
|
| Would have loved to have seen a section devoted to what feedback
| you heard, what the team member's poor experience was, and how
| you felt confident that Elixir & Phoenix would solve those
| problems.
| melony wrote:
| Why not use Go? They have one of the best networking stacks among
| language standard libraries, excellent support for low latency
| soft real-time concurrent operations, and single binary
| deployment is trivial.
| ianbutler wrote:
| Not OP.
|
| Very personal opinion:
|
| Go is an ugly language and I don't enjoy working in it for that
| reason alone.
|
| Outside of that, I also don't like the language design for a
| lot of its features.
|
| Though, admittedly, the goroutines part is not one of those
| choices I dislike. But the error handling pattern, generics and
| a few other things are super meh to me.
|
| And everything Go does with networking and concurrency, Elixir
| does better.
|
| Elixir just doesn't have the backing of a big name like Google
| so it doesn't have the same popularity.
| rco8786 wrote:
| General distaste for writing `if err := nil { return err }`
| over and over and over
| fndex wrote:
| IMHO, Elixir has much more powerful networking capabilities
| than Go. And as for deployment,
| https://hexdocs.pm/mix/1.12/Mix.Tasks.Release.html
|
| Not to mention how good Phoenix and Ecto are. I would never
| think about using Go if Elixir is a suitable option.
| reeaper wrote:
| Sometimes I want partial application and other functional
| paradigms... to reduce LOC by 90%
| adregan wrote:
| I'm currently in the process of picking up elixir. When you
| say partial application, are you referring to the use of the
| capture operator `&`?
| whalesalad wrote:
| golang is pretty rudimentary versus the BEAM and OTP. It is
| hard to compare erlang/elixir to a traditional language. They
| benefit from the fact that you can run literally hundreds of
| thousands of processes on a single node all doing their own
| independent thing and managing their own state.
| cultofmetatron wrote:
| go is great at a lot of things but if you want a multi
| clustered websocket solution, elixir is the absolute best in
| this category.
|
| go has go threads. elixir has the actors, futures, message
| passing, immutable data structures and the OTP platform. OTP is
| killer and gives you genservers with pubsub and the ability to
| have thousands of tiny stateful processors PER machine.
|
| Its all battle tested too.
|
| comparing go to elixir in this particular case is like
| comparing a piper cub to a jet liner
|
| source: 5 years of experience building an elixir startup with
| realtime sync between devices over websockets as a killer
| feature.
| throwawaymaths wrote:
| Elixir has releases, so deployment is not really that hard
| whether or not you use containers.
|
| And the beam networking stack is quite good, which is
| unsurprising given it's been in slowly evolving use for 30
| years now.
|
| In go you just don't get stuff like "trivially cleaning up
| associated resources with zero lines of code when your socket
| gets early terminated by the client or a backhoe cuts the
| network in to the data center"
| jolux wrote:
| For me personally (not OP): I find Elixir more ergonomic, the
| networking stuff is very solid, soft realtime is the whole
| reason it exists, and I don't need single binary deployment
| because everything is going to be running in a container in AWS
| anyway. Elixir also has Releases, which let you deploy a self-
| contained application more easily. But I think Go might let you
| cross-compile out of the box, which you can't do with Releases
| out of the box as far as I know.
| throwawaymaths wrote:
| Cross compilation is possible in elixir with burrito.
| jolux wrote:
| I've never tried it but I think I've heard of it.
| Regardless, it's a third-party tool, so not at the same
| level of support as Go.
| throwawaymaths wrote:
| Technically ecto, phoenix, plug, cowboy/bandit and Jason
| are third party tools too.
| jolux wrote:
| Yes, I'm aware. I've been programming in Elixir since
| 2014. I didn't intend to imply that being third-party
| means these are bad tools, they're not. They're great.
| But Go people often harp about how much stuff is in the
| standard library, so it felt relevant to mention.
| throwawaymaths wrote:
| :) just thought it was a good idea to bring it up to make
| clear some major differences between the two communities
| cheeseblubber wrote:
| We were more familiar with Elixir since our last product was
| another real-time chat app built in Elixir/Phoenix.
| cheeseblubber wrote:
| Since this was written about 8 months ago. Our Elixir/Phoenix
| service has been incredibly stable and I can't think of a single
| time we had an issue with it.
| andrewmutz wrote:
| Have you considered moving the logic that is in the Node
| backend over to phoenix, so you just have a single backend
| component?
___________________________________________________________________
(page generated 2023-06-26 23:02 UTC)