3 ms·
Yes, it’s always a surprise to me that, given how great Elixir is, it didn’t take over backend development. It seems so much better suited to doing something si
by andy_ppp 1y ago
Yes, it’s always a surprise to me that, given how great Elixir is, it didn’t take over backend development. It seems so much better suited to doing something similar to microservices without a lot of the overhead you’d think people would love it. It always seems that fads win and projects with extremely tight concepts remain niche.
- tl 1y agoWhile Elixir is my current favorite language to hack in, it is very alien and downright hostile to integrating with existing systems. For example, relational database support was postgres focused for a long time (to the exclusion even of SQLite and continued inability to talk to Oracle). Then you have articles like https://dashbit.co/blog/you-may-not-need-redis-with-elixir https://dashbit.co/blog/you-may-not-need-redis-with-elixir pushing ETS over Redis. While it's a valid argument, it's not adoption-friendly. Clojure brings about half the novelty of Elixir, runs on the JVM and still struggles to replace Java.
- stanmancan 1y agoWhat’s wrong with that article? For what it’s worth, I’ve been using Elixir professionally for a few years now and haven’t touched Redis once. Not sure why telling people they don’t need another service is bad for adoption?
- nesarkvechnep 1y agoIn my current project we use Oracle database. It’s possible and almost on par with Postgres.
- 3eb7988a1663 1y agoJust as long as you do not need a boolean. (I know, modern Oracle has finally fixed this, but I have Oracle 11 and 12 systems which bring me daily joy)
- nesarkvechnep 1y agoIs it a problem with Elixir then?
- cess11 1y agoPretty sure there has been BEAM connectivity for Oracle for at least five years. SQLite3 is one of the defaults in Phoenix and have been for a long time. I do mix phx.new curious_idea --database=sqlite3 at least once a week, it's a sub-minute effort to a mostly generated base for a prototype (with OK auth/user management) I can just throw on a VPS and show someone. If you want an in memory store without interfacing over HTTP, that is less foreign than ETS, try Duckdbex. Mix.install or add to mix.exs, then it's two lines and you get a connection to an ephemeral database with a SQL interface. Can probably do the same with SQLite but I've never done it. If your needs are simple you can just boot a GenServer with a K-V structure as state. Pattern matching, the capture operator and functional programming style are the really "hostile" parts, in my experience.
- jjtheblunt 1y agoi understand, but i am not familiar with how one allocates hosts to create a cluster of beam instances across which elixir/gleam apps are running. is there a popular pattern, perhaps as used by whatsapp, i guess?
- andy_ppp 1y agoIt’s all built in at the language/runtime level and then extended with things like Horde or libcluster.
- jjtheblunt 1y agothanks! i knew the language/runtime but had no occasion to have tried libcluster or Horde (yet...but very soon). very useful response...thanks again.
- conradfr 1y agoThe way concurrency work in elixir compared to JS I used to view it as a potential nodejs killer. It was never marketed that way though, and then Typescript took over which makes things even harder.