8 ms·
Elixir is truly an under-appreciated language. I've only toyed with it, and I'm really impressed with the whole ecosystem. Elixir, Phoenix, Ecto, Hex, etc all m
by FlyingSnake 9y ago
Elixir is truly an under-appreciated language. I've only toyed with it, and I'm really impressed with the whole ecosystem. Elixir, Phoenix, Ecto, Hex, etc all make a great ecosystem, and the awesomeness that is BEAM/OTP is just amazing. I loved the hot code deploys, and updating a system while it's running is something I've never seen before in action. Also Rustler is a great way to write CPU intensive NIF code too.
- dudul 9y agoHow is it "under-appreciated"? I feel like for such a young language it already has a great popularity.
- ch4s3 9y agoI'll take a crack at this. Elixir lays a really nice syntax, set of tools, and community over top of Erlang/OTP which are already amazing. While the language is new and increasingly popular, it is arguably not widely/well appreciated how nice and solid the language/ecosystem is at this point in its lifecycle.
- bpicolo 9y agoEcosystems grow a lot faster these days because there's tons of prior art.
- Existenceblinks 9y agoI can feel that this feeling comes from perceiving hard-core FP perspective. I could be wrong :)
- brianwawok 9y agoWhat percent of new code around the world is being written in it? .25% maybe? That seems not that appreciated to me.
- sjm 9y agoAgreed, it's just an absolute pleasure to use. I built a side-project powered by Elixir & Phoenix 1.2, I found it so surprisingly quick and easy to accomplish even complex functionality. Every time I implemented a new feature server-side it honestly felt like "Is that it? Really?"
- mattferderer 9y agoI believe the popular quote with Erlang is that Erlang makes hard things easy & easy things hard. Elixir was built around the idea of keeping the easy things easy. It does so by improving syntax, tooling, documentation & community in my opinion. I believe I first read this idea in the book, Elixir in Action.
- brightball 9y agoSame experience here. I have a process that I generally go through to compare languages...I rebuild my blog. It's an exercise that I've done many times and it gives me a time-boxed experience that compares work flow, database interaction, web requests, dealing with CSS/JS/assets, potentially caching, routes, email, search, etc. It's not a perfect measure but it does a solid job of giving me the whole experience of working with a language on something similar to day to day and separates the "this is viable as a tool" from "OMG! BENCHMARK!" type experiences. Doing this with Elixir and Phoenix was mind blowing. It was so clean, efficient to work with, efficient in performance and the design decisions around the language almost ensure you'll avoid entire classes of debugging / maintenance issues in the future. I was blown away. Wrote about it here: http://www.brightball.com/articles/insanity-with-elixir-phoenix-postgresql http://www.brightball.com/articles/insanity-with-elixir-phoe... Keep in mind, there are a number of things that I did there that could have been done better/cleaner. It was my first experience with the language.
- plainOldText 9y ago+1 for rustler. Writing NIFs (native implemented functions) in Rust can speed up your Elixir apps significantly. I think Rust & Elixir are a great duo.
- ch4s3 9y agoHave you written any Rust NIFs? What's the dev experience like?
- OvermindDL1 9y agoWith the Rustler Rust library, almost blissfully easy. I highly recommend it.
- ch4s3 9y agoI'll have to hit you up for advice on the forum when I try it out.
- plainOldText 9y agoYes, I have. I would say it's pretty easy. Had it not been for rustler I wouldn't have touched NIFs since I'm not a C programmer. Also, rustler supplies elegant building blocks, which makes it a straightforward experience. I've had a few issues with the version of rustler published on hex.pm not working with Erlang/OTP 20, and I've tried using the master repo as a dependency in my `mix.exs`, but that didn't work since rustler repo has an unusual directory structure which fails to compile. And then lo and behold, I've discovered how amazing the `mix` tool is and via `mix help deps` I've learned that you can actually check out a specific directory (via `sparse` option) from a remote repo as your dependency. Now my dependency listed in `mix.exs` looks like this: {:rustler, ">= 0.0.0", git: "https://github.com/hansihe/rustler.git", tag: "0.15.1", sparse: "rustler_mix"} ... and problem solved. I guess peeking at rustler's tests helped me a lot. All in all, the entire Elixir ecosystem is really elegant. Such a joy to write code now!
- ch4s3 9y ago
- raphy 9y agoI wonder how the popularity trend of Elixir has been lately. I know you can try to see it through GitHub or Google Trends, but as many members of the Elixir community use Slack I don't know if it's the best way to do it. One thing I'd like to see would be the evolution of downloads of the language and on Hex.
- sotojuan 9y agoIt's got HN hype and a lot of the negatives that come with that (awful learning materials by people who haven't used it in production) and a decent amount of real world use though nothing major for now.
- lukeasrodgers 9y agoI believe Discord uses Elixir, and I think that counts as "major."
- raphy 9y agoIt is also used by Pinterest and Square Enix, as they both open sourced some of the tools they use.
- oomem 9y agoYes, and they wrote some interesting blog posts about it: https://blog.discordapp.com/scaling-elixir-f9b8e1e7c29b https://blog.discordapp.com/scaling-elixir-f9b8e1e7c29b https://blog.discordapp.com/how-discord-handles-push-request-bursts-of-over-a-million-per-minute-with-elixirs-genstage-8f899f0221b4 https://blog.discordapp.com/how-discord-handles-push-request...
- brightball 9y agoLove Discord
- pmarreck 9y agoAlso, Bleacher Report is a pretty large site on it: http://www.techworld.com/apps-wearables/how-elixir-helped-bleacher-report-handle-8x-more-traffic-3653957/ http://www.techworld.com/apps-wearables/how-elixir-helped-bl... They went from 150 Rails servers to 5 BEAM servers "and could probably get away with two" (!)
- oulu2006 9y agoUpdating a system while running is something that has been around in the Lisp world for a while through the REPL. More recently it's a big part of the Clojure world -- I will usually NREPL into a running production system and "poke" around when there is a critical BUG that is only happening on production.
- merrvk 9y agoI have very much the same feelings, I've only really been using it the last few weeks but it's been an absolute pleasure to work with. Massive thanks to the devs who work on it.