Hacker Newsnew | past | comments | ask | show | jobs | submit | prodiguy89's commentslogin

I'm currently working on my side project the backend for which I've chosen elixir to go with. Looking at performance and long term maintainability, it doesn't seem to be a sucker like rails.

No magic, no hacky patterns. No mess like the one you see with Node. For what it does the platform is hella stable. I drifted towards Go for a little bit but man, code in Go felt too verbose with weird patterns. Go is a solid platform as well. But it's not just my cup of tea for web apps right now.

Scalability is in reach if you need it. Hell, even if you need ridiculous background job processing power, use OTP already. And I forgot, liveView is also rock solid. Honestly, if anyone would ask me what the best platform for web apps right now is, I'd just say Phoenix/Elixir.


I really, really enjoyed Rails when I discovered it and I still like it for some quick prototypes. Since finding Elixir, I haven't ever wanted to maintain a Rails app again, though.

The immutability and the lack of magic you mention are probably the two main reasons Elixir projects are easier to jump into. Even when macros are involved, you can still scroll to the top of the file, look at line with "use" or "using" in it and know exactly what is affecting your module.

With a lot of other languages, it's completely unknowable from inside one file to know where or if external metaprogramming is affecting your module.


I used to work with rails before. While it is fun to build stuff with it, it comes with a set of bothersome headaches:

- too much magic

- slow and painful to scale

- too much metaprogramming

- no compilation, makes it easy to hide syntax errors

- concurrency is absent

- frameworks like rails are too bloated

All these are addressed on the elixir platform, and there are more pros:

- immutability

- mostly purely functional

- well defined modules with good documentation


Screw windows and move to Linux! Opens up a ton of possibilities including docker


The good thing about Phoenix is you are not forced to go in any particular convention for everything, you can craft them yourselves from scratch. The bright side of this is you will only every little thing in the implementation and you'll know how to optimize it.


The one time I really want to override something in a Phoenix app was deleting a response header bolted on by Cowboy (I think it was the server header). I couldn't find a work around, so I did something lame like intercept the formatted response and modify it. Some flexibility in that area would have been nice, but it was a pretty niche corner case on a not too important app, so a time crunch hack was my best option.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: