Too weak for someones hobby project, strong enough for global scale.
Too weak for someones hobby project, strong enough for global scale.
The same is true here. They spent so much money getting Instagram to scale. They created Cinder to try and fold their hacks/tweaks back into Python. Spinning up some Rust/Java/Nim/Zig/Pony/Whatever stack sounds like it'd be fun... but spinning up a stack with which you're already VERY familiar, sounds like a money-maker.
I'm totally agreeing btw, I realize this came off like it might be a counterpoint.
It's not only available in the U.S. It's available in 100 countries. There's more to "global" than the E.U.
Something, something privacy regulations.
My personal suspicion is that the secret sauce is simply to have a sufficient budget to hire an army of code quality engineers. I could be wrong, though.
The first one is a big productivity booster as it shows you bugs before you commit them.
Here's a post about this, not exactly new but still describing the general principles very well: https://instagram-engineering.com/static-analysis-at-scale-a...
Sadly, all the attempts I've had with static analysis in Python screamed that while the language and tools make a valiant effort at supporting a reasonable set of annotations, 8-9 years after PEP 484, the libraries are simply not yet ready for it (not even, in many cases, the standard library).
Unit tests, staging environment, effective log aggregation are all important tools, of course.
Nah, asyncio on uvloop is plenty fast.
That being said, my personal experience suggests that both are really hard in Python, and not independent.
When people are hyper critical of Python I feel it’s typically they haven’t seen real professional Python before and just throw scripts around… if you work with some hardened Python pros you pick up the tricks really quickly and it’s very enlightening.
I’ve always struggled to find all of those tricks in one online resource personally.
The biggest pain with it is of course refactoring. It's tedious, but I think still comes out ahead in terms of productivity for high level stuff.
You have years of experience but couldn't point to anything in particular?
Heck, I like python and I can complain about dynamic typing issues in for loops, or that they are adding features like generators/decorators that make code more difficult to understand, which goes against the zen of python.
(But I still think python is great)
Those features are 20ish years old which made the word "adding" seem a little weird. Interestingly the Zen of Python itself is not much older than generators.
My questions remain, though.
Team best practices, enforcement of coding style and technique, good project management, infrastructure, and team cohesion etc.
And weeding out bad engineers who think that "switching to a new [language|framework|religion]" will solve all problems.
10+ years ago Facebook itself did a remarkable job of scaling up, with hardly any outages, a PHP LAMP stack thingy to one of the hugest traffic websites in the world. Meanwhile back then Twitter mucked around with every novel technology they could find or invent, and had constant outages.
Also Google didn't "switch to Golang." There's plenty of C++, Java, Python there. I worked there for 10 years and encountered only a handful of Go projects. Lots of cloud services in C++.
Would I personally choose Python for a project? No, I don't like it, and I work in Rust full time because I prefer it. But if I worked at Meta / Instagram and had a team of Python engineers and existing libraries & infrastructure, this would be the right approach.
I think this is just an Instagram skin with some feature flags.