I did an interview for the job I'm currently at, and we were discussing in it an architecture for live updating chats and I said I wouldn't reinvent the wheel and just use the approach Phoenix LiveView uses, which is to have a basic framework loaded client-side that would just apply diffs that comes from a websocket to the UI and have the chat update using those diffs. Turns out this is exactly the architecture they use in production.

People are reimplementing things that are first class citizens in elixir. Live content update, job runners, queues... Everything is built into the language. Sure you can do it all in typescript, but by then you'll be importing lots of libraries, reimplementing stuff with less reliability and offloading things like queues to third party solutions like pulsar or kafka.

People really should try elixir. I think the initial investment to train your workforce pays itself really quick when you don't have to debug your own schedulers and integrations with third party solutions. Plus it makes it really easy to scale after you have a working solution in elixir.

I agree in principle but I think that your average Python developer that thinks that Node.js is an improvement over Python is going to have seizures if they need to switch to Elixer. It's a completely different way of working.

I don't know... I'm your average python dev. I don't think nodejs is necessarily an improvement, but when I got to pick up a bit of elixir, and after struggling a bit with the many collection types and the pattern matching, when it clicked it was really eye-opening. So I don't think this is out of the league of the regular dev. I think if we were talking about Haskell that would probably apply, but elixir is fine. Even metaprogramming is very intuitive in elixir once you get the hang of it. It's just a very well designed language.

Indeed it is, and congratulations to making it to the other side of the ascent.

It's interesting, for some people Elixir really clicks, others can't make heads or tails of it. I don't mind Erlang either, but I understand that that is really an acquired taste.

Still, there is a long way for me to actually be productive with elixir. Sure I can now solve some advent of code challenges with it, but I still haven't done a proper project with Liveview and OTP. I've seen enough though to have me convinced this is the way.

I have always been interested in Elixir but have been putting off learning it because I don't see many job opportunities for it(at least here in Asia).

But your comment has convinced me to try it since I am having a bit of NextJS burnout.

you wouldn't need kafka or pulsar if you use elixir, why ?

I said you'd need those if you were coding jobs in typescript natively, without aid of cloud primitives like AWS SQS and Lambda, not with elixir.

sorry, maybe I wasn't clear enough when asking.

what about elixir that eliminates the need for kafka. simple queues I understand but kafka ?

Sure Kafka is used for much more advanced applications. In autonomous microsservices if I'm not mistaken these topics could be even used as the source of truth so that each specialized database could be reconstructed by replay. I'm saying that for simple topics that are just used to coordinate job queues, elixir can handle it just fine.

Persistent job queues?