8 ms·
Beam/Erlang/Elixir Concept Explanations
- lobo_tuerto 5y agoPlease someone update the link to the HTTPS version.
- Teifion 5y agoLike this? - https://beam-wisdoms.clau.se/en/latest/index.html https://beam-wisdoms.clau.se/en/latest/index.html
- colesantiago 5y agoVery curious about the recent surge of Elixir / Erlang posts on HN, is there a reason for this? How is the the job market surrounding this as well for Elixir / Erlang devs?
- Teifion 5y agoAs a sample size of 1 I can say I didn't have an issue finding an Elixir job and those I did speak to were keen to get an Elixir dev asap. For context I have a few years in Elixir and over 10 as a developer in general. Better yet, the jobs in question were remote only.
- linkdd 5y agoI don't really know about the job market, but Erlang/OTP has been a very fine piece of technology for the past 30 to 40 years. Elixir is quite new (2015) and with every release it gains in maturity, and the ecosystem is growing. IMHO, Mix was a game changer in terms of tooling. Also, with tools like Horde[0] and libcluster[1], it became very easy to setup an Erlang/Elixir cluster on Kubernetes. When you work with distributed systems, the OTP framework is a godsend, it's no surprise to me that it's finally getting traction. Also, I like to use Rambo[2] to call small go/rust binaries that I ship with my Docker images, useful for features where performance is important. [0] - https://hexdocs.pm/horde/readme.html [1] - https://hexdocs.pm/libcluster/readme.html [2] - https://hexdocs.pm/rambo/Rambo.html
- derefr 5y ago> Elixir is quite new (2015) I suppose you can say that; that’s when it 1.0ed. But Elixir was surprisingly stable pre-1.0; I was writing production Elixir 0.6 code at Spawngrid in 2012! Really, the 1.0 announcement felt more like a formality than anything; there was no discontinuous switch from “throwing features at the wall” to “considered engineering.” Changes to Elixir have always been considered — and props to Jose Valim for that! :)
- Zababa 5y ago> Elixir is quite new (2015) and with every release it gains in maturity, and the ecosystem is growing. One thing I really like is that it's considered mostly done. The community has the wisdom of not always trying to add new features and deprecating old ones. There's no 2.0 planned but that doesn't stop people from doing impressive work like Nx. I don't know about the ecosystem, but the language itself seem like a stable investment.
- ralmidani 5y agoI am starting my first Elixir role tomorrow. I come in with no real-world experience (edit: no real-world experience with Elixir specifically - I have a mid-senior level of experience using other languages), just some tutorials (Elixir Koans and Pragmatic Studio) which helped me submit a decent code sample. There aren’t a ton of Elixir roles, but hiring managers also recognize the shortage of devs so for a junior or mid-senior role they might overlook a lack of formal experience with the language. Elixir roles also seem to have pay scales as well as work arrangement flexibility that are higher-than-average. Geography-wise, I’ve noticed growing, “hipster” cities like Columbus (where I live), Denver, and Austin have a pretty decent share of the Elixir job postings (although, again, if you want to live elsewhere there are lots of fully-remote Elixir roles out there).
- derefr 5y agoMore demand than supply, definitely. It’s hard to hire Erlang/Elixir devs from outside. Some companies just avoid using the platform because of that, but others (like my own company, Covalent) hire devs who seem like they’re experienced in learning languages generally, and then train them in Erlang/Elixir internally. These devs don’t move around much, though — a company willing to do internal promotion/education is usually pretty good at retaining talent. So new companies looking for Elixir devs still don’t find as many as they’d like. (An interesting other side effect of this dynamic is that it’s easier to hire senior Erlang/Elixir people than junior ones, since most Elixir devs you’ll find that have ever used the language for anything serious, learned it at work, and so usually have a decent chunk of their career already behind them.)
- brightball 5y agoElixir shops are learning quickly that the best bet is probably to hire a senior dev that wants to learn and just give them a couple of weeks to learn. As for the surge in interest, I can’t speak for everybody but when I dove into the language I realized it addressed virtually every short term and long term problem that I’ve experienced in my programming career. The rules it sets out force things to be done in such a way that many issues are avoided as a by product. I find it balances all of my concerns better than anything else (productivity, performance, maintainability, scalability, learning curve, concurrency, stack simplification, capability, refactorability).
- dimitrios1 5y agoIf you are one of these shops please email me :) I have been dipping my toe in functional land through fantasyland / ramda
- javajosh 5y agoYeah, I'd be into that.
- tobinharris 5y agoWe do this. We're only a small 12-person software agency, we have two Elixir developers right now. When we hired the 2nd, we looked for someone who had good knowledge of Node, Rails, Laravel or whatever and were excited to learn Elixir/Phoenix. Then they completed a Udemy course and started practicing. It worked out pretty great!
- marcandre 5y agoI was hired by super.mx with 3 days of elixir under my belt. We're still hiring btw...
- lejboua 5y agoReally liked the recent podcast and hearing from you how you fixed those slow compilation times issues. Looking forward to hear more from you!
- 5y ago
- joelbluminator 5y agoI guess the reason is enough people upvote it? HN is pretty popular for nichier tech like Clojure, Julia etc. It gets as many votes as Java I think because the community in general likes reading about exotic stuff.
- ralmidani 5y agoAre Erlang/Elixir really that exotic? I interpret exotic in our context to mean a language aimed at academics and very advanced programmers but lacking mainstream appeal. Erlang/Elixir strike me as very pragmatic and, compared to Haskell/Lisp/Clojure/Scala/Julia/etc., they seem more beginner-friendly.
- joelbluminator 5y agoI don't think Erlang/Elixir is many people's first language, no. It's advanced. Someone who is doing their 1st programming project would be better off choosing javascript / php / ruby if they are building for the web. It's quite unlikely their first use cases will be 2 million concurrent web sockets. So given it's not mainstream and it has the advanced aura I think it's fair to call it exotic or " language aimed at academics and very advanced programmers but lacking mainstream appeal" as you just said.
- sergiomattei 5y agoI don't think Elixir is aimed at academics, though. It's very clear that it tries to be as pragmatic as possible.
- joelbluminator 5y agoYeah agree, you can erase academics from that sentence. Academics mostly use Python and R and Python is actually super pragmatic.
- ralmidani 5y ago
- toast0 5y agoI'm retired but look around a bit for interesting jobs using Erlang, and I don't see a whole lot of listings that mention it. More that mention Elixir. And one company (smarkets) that specifically calls out that they're not using it anymore. But, some of that is I think because, as others noted, it's hard to find Erlang developers, it's easier to target for good developers and convince them to learn Erlang on the job. So I'm guessing some places use it and don't mention it. I was working at an Erlang shop and out of all of our hires and interviews I did, we hired one person with Erlang experience (from a conference) and I recall interviewing one other candidate with experience. Oh and we had an intern who did a college course with Erlang, but interned in a client group that was limited to j2me (sorry!).
- atraac 5y agoAs far as I've seen, Elixir job market for Europe is almost nonexistent, sadly.
- joelbluminator 5y agoDon't upset the zealots by talking about reality please, you will get downvoted to oblivion.
- weatherlight 5y ago1) It’s worthy of the praise and attention, ( The BEAM is a marvel of engineering). 2) It’s just “exotic” enough for people who work in Java/Ruby/JS to be interested to read and upvote. The articles shared tend to be easy to understand and bite sized. 3) There’s enough demand out there and Elixir Devs are usually paid pretty well, that market( for the time being,) is pretty small.
- pessimizer 5y agoIt's not a particularly recent trend irt HN: https://www.flickr.com/photos/stilist/3348380060/ https://www.flickr.com/photos/stilist/3348380060/
- sharmin123 5y agoHow Does A Hacker Hack A Phone? How To Avoid Phone Hacking?: https://www.hackerslist.co/how-does-a-hacker-hack-a-phone-how-to-avoid-phone-hacking/ https://www.hackerslist.co/how-does-a-hacker-hack-a-phone-ho...
- AlchemistCamp 5y agoI like the teaching style and the lower-level BEAM focus. Bookmarked it!
- halotrope 5y agoI had a brief love affair with Elixir/OTP recently. The language ist beautiful, the platform very impressive. Genserver and the actor model are very powerful tools for concurrent systems and Phoenix is one of the best web frameworks I ever tried. BUT the tooling was a bit lacking (e.g JetBrains IDE, good debugging workflow), the library support was a bit spotty (e.g for Auth, everything high quality but often abandoned). Then if you use e.g GCP there is no real first class language support and if you deploy to Kubernetes then there is a lot of overlap with Beam/OTP for deployment management etc. this and I feel for most quick web development pure functional programming is too much mental overhead for me (maybe this comes down to practice). I feel way more productive with e.g Go or Node. I have mad respect for Jose Valim and the community for delivering such an exceptional project in a world saturated with languages and frameworks. But I fear its not for me. At least not yet.
- sidkshatriya 5y agoI have a problem with a lack of static types. Was that an issue for you?
- halotrope 5y agoIn fact yes. You can use Typespecs and I tried to make up for it with tests. However it did not really come close to the safety and convenience of static typing for me.
- Teifion 5y agoMy biggest issue with the language. I make use of typespecs where possible but it's a far cry from anything enforced.
- brightball 5y agoThis is always a preference issue. You get strong types but the nature of hot loading and communication across clusters doesn’t leading to static typing being a practical trade off. The moment you add it, you end up with a need for contract enforcement across nodes that changes most of what the platform is designed around. In practice, static typing just doesn’t add much other than headaches to a project of this style. Doesn’t mean you’re wrong for wanting them, just that the language might not be for you if you feel like you need them that much.
- zubspace 5y agoI would love to get into erlang and beam. As far as I know, Beam must be a great tool for servers and webservers in general. But can I use the language in other scenarios, too? For example commandline tools, desktop Gui's or games?
- Teifion 5y agoCommandline tools yes (though that's not it's strong point). Desktop GUIs could be done though I've not looked into it, if I were then I'd look at making a desktop Electron app and use something like Phoenix LiveView with that to create the GUI. Games are a tricky one, it all depends on what you are doing with the game. I develop a middleware server for an RTS and for that it shines but it would not suit the gameplay side of things very well (you can of course still use it for anything!). Repo for reference: https://github.com/beyond-all-reason/teiserver https://github.com/beyond-all-reason/teiserver
- toast0 5y agoCommand line can work, there's even escript for shorter tasks: "escript provides support for running short Erlang programs without having to compile them first, and an easy way to retrieve the command-line arguments." GUIs are a challenge, I think there might be some change since this thread in 2017 [1], but the most supported way is wxWidgets and the interface is most unErlanglike. I gather it's similar to GUI programming in c++/mfc style which I never could understand. I do have an erlang program with a small gui (just a fixed sized bitmap output window, no controls, no inputs, no text other than titlebar), and I made it work with wx, but it felt a lot nicer with ex11. ex11 is ancient, was an academic thesis project/proof of concept and is pretty much raw x11. Erlang and x11 work well together, Erlang is built for distributed systems and x11 is a distributed systems protocol. On the other hand, x11 doesn't include a widget library, the client has to bring one, ex11 has some widgets, but they're very basic. It also relies on x11 font rendering which is not very common anymore. If you wanted to build a mainstreamish GUI on ex11, you'd need to spend a lot of time on building a modern looking toolkit. (And make sure people have an X server) Games are outside of my ability, but while it's certainly possible, I think the confines of immutable data and lack of shared state would tend to make things cumbersome. Screen output would also be a challenge. It might make netcode easier, though, because of the general need to do explicit communication may mean you're already thinking about how things interact and can avoid some of the pitfalls of synchronization. [1] https://groups.google.com/g/erlang-programming/c/-0uH3DfnYvM/m/atmPRtJcBQAJ https://groups.google.com/g/erlang-programming/c/-0uH3DfnYvM...
- louissm_it 5y agoGreat resource, thank you. I've been slowly transitioning my programming time to Elixir/Phoenix the last couple years. Every couple weeks I dive in, but mostly going back to Rails. But recently with the `1.6.0-rc.0` release, this time it might stick. HEEx templates are fantastic, esbuild as the default is a really good choice, LiveView is getting some traction, and the packages seem to be picking up. Fantastic language & framework in general.
- fortran77 5y agoAs a long-time professional Erlang developer, I'm frustrated about "Rubyists" sticking their toe into the ecosystem via Elixir and then declaring they don't like it. In many ways, the shift to Elixir has been a bad thing.