[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)