The Secret Language Scaling WhatsApp and Discord

preview_player
Показать описание
Erlang's vm is criminally under appreciated. Elixir as well of course.

SOURCES

S/O Ph4seon3 for the awesome edit 🙏
Рекомендации по теме
Комментарии
Автор

theo should grow his mustache out and cosplay as dr eggman

swodaw
Автор

"It's gonna be elixir"
"And that language... is erlang"
"It's been used for a lot more, including my favourite language, elixir"
We got there eventually

gigibecali
Автор

The “let it crash” mantra can be considered to it’s origin as a telecom language. Dropping a phone call because of an error is preferrable to trying to fix it and letting the problem propogate up and crashing the whole system or leaving it in an unstable state.

JonGretarB
Автор

They didn't have the idea of virtual machines back then, lol. Kids. BEAM was a play on JAM (Joe's Abstract Machine), a precursor to BEAM. JAM was a play on WAM (Warren Abstract Machine) a prolog abstract machine. Before that there was Pascal a decade earlier

5:30 sounds like MULTICS.

Not knocking Erlang, but there was a lot going on in the world of CS that Erlang inherited and evolved into a unique solution for its problemspace

NuncNuncNuncNunc
Автор

Load balancing, including web server load balancing existed in the '90s, it didn't come about because of Ruby :) Man, you are making me show my age here now, darn youngin's that think everything happened during their life :P

ray
Автор

Discord's blog has an article about how they tried different data structures and used Rust to speed up Member List updates. It would be a nice part 2 to this video showing when Rust is worth it. Blog title "USING RUST TO SCALE ELIXIR FOR 11 MILLION CONCURRENT USERS"

Endelin
Автор

Great video! Erlang is a fantastic technology which definitely deserves more attention! And Elixir has brought some new energy to the whole ecosystem!

One remark about "let it crash", though. It's a common misconception, but it's not there to allow for avoiding proper handling of edge cases.

When you think of it in general, there are two types of errors: those you can avoid (logic aka programmer errors) and those you can't (hardware failures: disks malfunctioning, network packets dropped, etc.). ""Let it crash" utilises process supervision, i.e. restarts of some parts of an application. If data doesn't change and there's a logic error in the code (an edge case missed), then it's as likely to occur after a restart as it does in the first place, i.e. "let it crash" doesn't solve programmer errors, because trying again doesn't solve the problem in code. It's there for the errors one cannot avoid and cannot foresee, like corrupted network packets, faulty hardware, or others components' nondeterministic misbehaviour.

Happy to see Erlang and Elixir material on YouTube!

radekszymczyszyn
Автор

7:52 Using chat gippity to look up facts, big yikes

Per Wikipedia: Early programming languages with pattern matching constructs include COMIT (1957), SNOBOL (1962), Refal (1968) with tree-based pattern matching, Prolog (1972), St Andrews Static Language (SASL) (1976), NPL (1977), and Kent Recursive Calculator (KRC) (1981).

quinndirks
Автор

The real hero is Ejabberd, which singlehandedly gave rise to WhatsApp, Messenger, Google Push Notification, about every game chat (LoL). Damn they were good !

arthurchazal
Автор

My hat's off to the Swedish engineers for inventing something that satisfied an immediate need, and unforeseenly carried on to spark on further inventions. I was in an industry where parallel processing of data was almost required, this was the final years of the transputer. It was close, we could have chosen Erlang, but the processor speed slope took us to conventional toolchains and at first single thread workloads.

mattilindstrom
Автор

As per wikipedia, first languages to have COMIT (1957), SNOBOL (1962), Refal (1968) with tree-based pattern matching, Prolog (1972). It seems ChatGPT have a lot of hallucinations!

VijayKumar-dqxo
Автор

7:37 At a glance of that article, "Core Erlang" isn't normal Erlang; it's an intermediate representation produced by the compiler that programmers woudn't normally see.

SimonClarkstone
Автор

just saw your interview with josé valim, dived right into elixir, again but for real this time! so exciting

Gorabora
Автор

Oh man! You're right! I need to incorporate Flutter in my next project. Thanks for the vid!

zwanzr
Автор

prolog (72) was a year earlier than ml (73) and had pattern matching, plus there were apparently older languages on ibm mainframes that also had it - at least wikipedia says s, and i'm a lot more inclined to believe that than whatever chatgpt hallucinated, Theo pls (edit: oop, not the first to see that)

immaterial_vivi
Автор

Glad you are continuing to promote what is also my favorite stack I have ever worked with. I wish more companies took it seriously and it got the same support and recognition as other languages do.

beerrepository
Автор

Well Erlang was 1986, the "official" birthdate of the internet was 1983, so technically the internet existed before Erlang :) Now if you mean 'The Web' or the 'WWW' then yes, because WWW was 1989. It's a common mistake people make, The Internet != The WWW. The WWW runs on-top of The Internet.

ray
Автор

Pattern matching is fundamental to functional languages - much like inheritance for object oriented languages. Prolog and ML (72/73) had "modern" pattern matching.

manofacertainrage
Автор

Elixir is a brilliant introduction to functional programming IMO. The clean and reasonable syntax is great for those of us from a purely OOP background.

demolazer
Автор

Gleam is the best BEAM language!! Clean type system, ADTs/case statements, and a type-safe version of almost all the lovely BEAM stuff

RyanIsHoping