Live data from Hacker News

Backend of Meta Threads is built with Python 3.10

twitter.com

441–450 of 458 posts

Re: Backend of Meta Threads is built with Python 3.10

#441

Earlier quoted context omitted.

It's not a straw man, I'm asking him where he stands. How far does he want to take it? You mentioned Elixir. You literally suggested a language that was created 6 years after Shopify began. You wouldn't pick Ruby, thats your choice. People are still making billions of dollars with it. So, since you took up the mantle, what language should they have used 17 years ago when they started the company?

> You wouldn't pick Ruby, thats your choice. People are still making billions of dollars with it. Not arguing with their results here. I am saying that they made it work despite how terrible it is. You have no guarantees about anything and you have to have much more tests than you would have in other languages just so you have basic stuff ensured. Not cool at all and I am saying this as a guy who made good money with…

> My main point here is that it's OK to admit at one point that the tech you used for a while has outgrown its usefulness. I understand and recognize some of the downsides but to me they are overblown.

My entire complaint is just that you want to say it's outgrown it's usefulness. That is such an absolutist view. And the fact you are even bringing rust into this is crazy. I know C, C++, ASM, GO, and a few other low level languages. Rust is harder to learn than all of them, even ASM. And Rust in some ways can be a dumpster fire when you have to unwrap everything. A very intelligent person can take months to be comfortable in Rust or be similarly comfortable in GO in a couple days.

It's such a dogmatic view to say Ruby has outgrown it's usefulness, that's fine though you are entitled to it. Ruby isn't going away, it'll still be there and I'm sure people will continue to make money with it.

Re: Backend of Meta Threads is built with Python 3.10

#442

Earlier quoted context omitted.

Respectfully disagree about not starting new Ruby projects now - can we still be friends? It works and is easy to get started for simple stuff, same with PHP for some folks or Django etc.

"Easy to start" is oversold in my experience. At one point you want more guarantees upfront.

More guarantees like how? Genuinely curious. I’ve been working with Nest.js lately and it’s good but rails is still more plug and play in my opinion.

Re: Backend of Meta Threads is built with Python 3.10

#443

Earlier quoted context omitted.

"Easy to start" is oversold in my experience. At one point you want more guarantees upfront.

More guarantees like how? Genuinely curious. I’ve been working with Nest.js lately and it’s good but rails is still more plug and play in my opinion.

More guarantees as in asserting on exact data shape which also includes some typing guarantees like "function argument 1 is always gonna be this struct" (basically a map with keys guaranteed to be present).

In Ruby you get nothing like that, all your function arguments are just variable names. This increases testing friction a lot. I've been all over the spectrum: from PHP and Ruby through Elixir (combining best of static and dynamic types IMO, though still flawed) to Golang and finally to Rust which is super strict. To me Elixir and Golang are close to perfect. Rust takes it too far and development velocity can suffer a lot until you become an expert (which can take quite a while).

Plug and play is nice but my opinion remains that it's oversold. Quickly whipping out prototypes is not the only virtue of a programming language (though technically that's a feature of Rails, Ruby's killer app, and not of Ruby itself).

Re: Backend of Meta Threads is built with Python 3.10

#444

Earlier quoted context omitted.

More guarantees like how? Genuinely curious. I’ve been working with Nest.js lately and it’s good but rails is still more plug and play in my opinion.

More guarantees as in asserting on exact data shape which also includes some typing guarantees like "function argument 1 is always gonna be this struct" (basically a map with keys guaranteed to be present). In Ruby you get nothing like that, all your function arguments are just variable names. This increases testing friction a lot. I've been all over the spectrum: from PHP and Ruby through Elixir (combining best of s…

The problem is that is only so helpful anyway because you have to send the data to the front end and then translate it back, and in my experience that is where most of the issue is. If you are building a front end facing site you are constantly going to be fighting with that.

Re: Backend of Meta Threads is built with Python 3.10

#445

Earlier quoted context omitted.

> You wouldn't pick Ruby, thats your choice. People are still making billions of dollars with it. Not arguing with their results here. I am saying that they made it work despite how terrible it is. You have no guarantees about anything and you have to have much more tests than you would have in other languages just so you have basic stuff ensured. Not cool at all and I am saying this as a guy who made good money with…

> My main point here is that it's OK to admit at one point that the tech you used for a while has outgrown its usefulness. I understand and recognize some of the downsides but to me they are overblown. My entire complaint is just that you want to say it's outgrown it's usefulness. That is such an absolutist view. And the fact you are even bringing rust into this is crazy. I know C, C++, ASM, GO, and a few other low l…

I just realized we're chatting in 4 separate spots, heh. So let's unite them.

> My entire complaint is just that you want to say it's outgrown it's usefulness. That is such an absolutist view.

I don't speak for all programmers and IT companies -- and neither do you. We are both right at the same time due to the fact that the world is big.

I've been in super small teams (think 3 people) all the way to 50+ and stricter typing is more and more sought after the bigger a team becomes. It's very hard to code confidently the weaker the typing of the language is after a project gets beyond a certain amount of coding lines. Every dev must spend extra time to self-onboard in the context of others' work before being able to meaningfully contribute.

Of course this curve tapers off eventually and some teams become super well-oiled machines -- that's a fact. But we don't live in an ideal reality; people leave, some get sick and are gone for 2-3 weeks, others get reallocated to other projects. Things happen and the ideal stable-ish state of a team is rarely achieved.

Having stronger stricter typing gives peace of mind when coding. It does reduce prototyping (and sometimes the day-to-day) speed but from one scale and up it is worth it and that cost is quickly surpassed by confident and quick delivery of features or bugfixes in the mid-term.

> And the fact you are even bringing rust into this is crazy.

Oh I agree. Rust can be infuriatingly hard and slow to progress with. I've made the mistake to try and prototype one thing with Rust and I lost one small business opportunity because of that. Won't ever do that again. Believe me, I've experienced this craziness first-hand and I agree with you there.

> It's such a dogmatic view to say Ruby has outgrown it's usefulness. Ruby isn't going away, it'll still be there and I'm sure people will continue to make money with it.

Maybe it's dogmatic to you because you imagine that if I was right Ruby would be no longer widely used and since you are not seeing that, you thus think me wrong? Well if so, (1) the world is big and even if Ruby is being gradually shown the door it can take decades until you and I notice, (2) your assertion that Ruby is not going anywhere is 100% true but does not contradict anything I've said because there's a place for everyone in the IT sphere and that still does not mean people are not seeing cracks in Ruby's perfect image (people from Twitter and Shopify have expressed displeasure with it a good amount of times in the past... and now I regret I never kept the archive links because I always get asked for source and can no longer provide it -- sigh).

BTW many people came to Elixir from Ruby and said they're never going back unless they have to build an MVP in a weekend -- they would go back only for that.

> Maybe there wouldn't be a product at all with GO or Elixir. It's hard to say.

I am not claiming either way. Don't imagine me such an extremist, please -- I am not. I am only saying "OK you did it with PHP, Ruby or Python, the tech did the job okay-ish but it's beginning to suck for you -- why are you so averse to admitting that it's time for a change?". I got a very cynical answer and at the risk of you thinking me even more extremistic I'll name it: a lot of programmers love cozy jobs and they might hate what they do daily but they still love the wages and are not gonna rock the boat. Obviously I can't claim any percentages but I've been around and I've met plenty of such guys and girls. So IMO you should factor that into your analysis.

Inertia and network effects do exist and sadly they often have nothing to do with the quality of the thing they are carrying (think of all the sucky software we all must use if we want to communicate with others -- that's a good example of inertia / network effects not being correlated with the quality of software).

> We can disagree about usefulness I guess. Ultimately Ruby has worked just fine.

Due to tenacious teams. Not due to Ruby's technical virtues which are not that many. I admire people who can make anything work but I've also drank beer with some of them and they said that some days they think of committing suicide (I hope they were joking but they genuinely looked and sounded unhappy). I am talking PHP, Python, Ruby, Javascript.

> They didn't report massive issues, and the DB is going to be the bottle neck way before Ruby, so I just don't see an issue.

I remember the times in several apps I consulted for, long ago. We had good metrics systems in all of them and we had DB requests go from 5ms to 50ms and ActiveRecord itself (when subtracting the DB times) has routinely eaten 150ms to 250ms, sometimes more. I am aware that these issues have been fixed a while ago but it did leave a sour taste in my mouth and I can't just non-critially accept a claim that the DB dominates every latency in Rails world. Maybe it's true nowadays but during the dark times of Rails 2.x and 3.x it definitely was not.

Now Elixir... the last companies I contracted with we were talking 10-100 microseconds of Elixir code and 5+ ms of DB requests. Pretty neat.

...And then I consulted for two Golang projects where we had something like 100 to 400 nanoseconds of app code and 5+ ms of DB requests. Insane.

So I don't disagree with you on the concept but I do disagree somewhat that Ruby / Rails is not a resource hog. At one point it definitely was and it was humanly noticeable even.

But I can concede that nowadays this is very likely no longer true. I got no beef with any tech, I am simply a guy who is always looking for something better and thus I don't get attached to any tech. Elixir has served me very well in the last 7 years (together with Golang and Rust sprinkled in) but if e.g. Rust gains Erlang's / Elixir's transparent concurrency / parallelism abilities and fault tolerance and speed of development then I'd have zero qualms abandoning Elixir.

> So, wait, all apps are trivial in nature and can be built in less than a week?

Come on now, you are starting to sound like you want to misrepresent what I am saying. :) I was talking about quick MVPs / prototypes. Of course beyond those everything else is very different.

> So if you aren't building a trivial app but instead building something that takes 6 months in Ruby you'd be spending nearly 12 months in go.

You assume the curve of Elixir or Golang is linear; it's not. It's an asymptote.

To give you a contrived example:

- Month 1: Rails app at 20%, Elixir app at 10%

- Month 2: Rails app at 35%, Elixir app at 25%

- Month 3: Rails app at 45%, Elixir app at 40%

- Months 4 to 6: Rails app at 55%, Elixir app at 60%

- Months 7 to 9: Rails app at 80%, Elixir app at 90% and starting to work on final touches.

And so it went the few times I had the privilege of witnessing parallel Rails and Elixir development (including rewriting a few Rails apps to Elixir's Phoenix). The Rails guys knew their stuff pretty well and I liked working with them -- but even they admitted that they are regularly blocked on too many checks in tests or in the controllers themselves due to much weaker typing. (Though there were other reasons as well but hey, this comment became an essay already.)

---

I understand that you are skeptical. A lot of us cope with the fear of missing out by simply denying there's something to miss out on. Plus we can't be everywhere all at once so we eventually find our own corner and become experts there. All of that is completely fine and I am not judging; we can't all chase some theoretical perfection, plus when we hit 32-35 y/o the reality of "this is still just a job even if I like programming" sets in and we are all very excused for not researching and knowing every single alternative of doing things.

If I am reading you correctly, you disagree that the older tech (Ruby included) has outgrown its usefulness. Ultimately I don't think we disagree with each other because we are both right at the same time: maybe where you work and the people you communicate with Ruby / Rails are still deemed super good at what they do, they get the job done, the product brings enough revenue to drown out the drag that Rails can be and everyone is happy. Cool, more power to you. I however changed sub-careers in programming several times in a row and I am solving for tangibly different problems than what most Rails companies I've met back in the day did. And I've had a lot of financial success with Elixir, Golang and Rust, and my customers were super appreciative of the work done. Even now I am tutoring people who have 30+ years of programming experience and they are very happy with Elixir in particular.

We being in different bubbles is 100% fine. The world is big and rich and interesting. I am not disparaging your choice. Hopefully I am offering you an alternative take from another vantage point instead.

Re: Backend of Meta Threads is built with Python 3.10

#446

Earlier quoted context omitted.

More guarantees as in asserting on exact data shape which also includes some typing guarantees like "function argument 1 is always gonna be this struct" (basically a map with keys guaranteed to be present). In Ruby you get nothing like that, all your function arguments are just variable names. This increases testing friction a lot. I've been all over the spectrum: from PHP and Ruby through Elixir (combining best of s…

The problem is that is only so helpful anyway because you have to send the data to the front end and then translate it back, and in my experience that is where most of the issue is. If you are building a front end facing site you are constantly going to be fighting with that.

Yep, agreed, and I am saying that as a guy who still prefers server-side rendering.

Stuff like Elixir's LiveView and its imitators (like PHPx and I think C#'s Blazor?) are where things get better but since I am not interested in frontend, I leave that work to other people.

Re: Backend of Meta Threads is built with Python 3.10

#447

Earlier quoted context omitted.

They ended up compiling PHP to assembly! Facebook is a company that will go to ridiculous lengths to avoid rewrites.

Every company should go to ridiculous lengths to avoid rewrites. Rewrites of significant tech (as a proxy, lets say 100+ kloc) spell doom. Doom.

It’s definitely not for the timid or mediocre

Re: Backend of Meta Threads is built with Python 3.10

#448
post #227

Earlier quoted context omitted.

Rewriting in hip-tech-du-jour is for startups with lots of funding and little of traction. Why would a massively successful company toss a stick in their own spokes by tearing the product to ground?

But it's actually a _really bad_ strategy for a startup! It'll be realized the moment you try to hire for hip-tech-du-jour. Most likely, you don't even have the problem that hip-tech-du-jour claims to solve.

TIL what hip-tech-du-jour is lol

Re: Backend of Meta Threads is built with Python 3.10

#449

Earlier quoted context omitted.

Every company should go to ridiculous lengths to avoid rewrites. Rewrites of significant tech (as a proxy, lets say 100+ kloc) spell doom. Doom.

Every company? What about banks that have old codebases running on Cobol? I'm also very skeptical about big bang rewrites, but there are points where you need to migrate off certain tech. Ideally you can make that transition piece by piece though, but that also introduces its own set of problems (now you have two systems and the new one has to inherit some of the baggage of the old one in order to be compatible).

This is exactly the kind of innovation I see coming out this current AI boom we're in. Take legacy codebases and spit out complete rewritten versions in whatever language that not just translates, but takes it much further and re-interprets it on top of modern architecture designs. It completes it with tests and a basic UI, or whatever makes sense for the project.

Those systems are well understood and well tested, so it's not cost effective at the moment to embark on a complete rewrite. Current AI coding systems are also very unreliable, so it's just a matter of time before those two meet on the graph and voila, another boom in moving the legacy world into safe languages.

Re: Backend of Meta Threads is built with Python 3.10

#450

For the “Python isn’t fast enough for production backend” crowd from the same company that brought you the largest social network built on PHP + MySQL.

Any language will be fast enough with enough modern hardware.

But it’s not “just Python”.

The OS state that needed to be loaded is not Python.

The network gear firmware is not just Python.

The databases are not Python.

Where it becomes just Metas Python is after a whole lot of other necessary work is done by other smarter people (the ones who master the physics of building the machines), not just some dweebs who got pulled the internet onto the host.

These articles are just primate rage bait

Post reply on HN