14 November 2022

I Think that I've Found Your Problem

Elon Musk tried to pretend to be smart on Twitter again, this time by stating what the problem is with performance on the Android Twitter app.

Musk claimed that the app was doing thousands of RPC (Remote procedure calls), and one of the senior engineers working on the app noted that the app did not use RPCs at all, they use the REST API, not the RPC API. (At least according to the discussion thread on this story.  My only distinction with regard to computer programming is that it is so ugly that it might cause cancer ……… In tardegrades.)

Musk fired the engineer in a tweet.

When Elon Musk promised to improve Twitter's technical performance at the weekend, it was one of the company's own engineers who rubbished the new CEO's claims. Then a stampede of software engineers trundled in to support their comrade.

The famed SpaceX and Tesla entrepreneur posted a tweet on Sunday "to apologize for Twitter being super slow in many countries. App is doing >1000 poorly batched RPCs just to render a home timeline!"

Soon after, Twitter software engineer Eric Frohnhoefer decided to embark on a bit of career roulette. "I have spent ~6yrs working on Twitter for Android and can say this is wrong," he posted.

Musk returned: "Then please correct me. What is the right number?"


Asked again about the "right number" of RPCs, Frohnhoefer replied flatly: "Zero. The apps don't make RPC calls."

Though it was pointed out that it might not be a good idea to criticize your boss on a public platform, Frohnhoefer did have his supporters.

Responding to Musk's original post, software engineer Ben Leib said: "As former tech lead for timelines infrastructure at Twitter, I can confidently say this man has no idea wtf he's talking about."

Sasha Solomon, staff software engineer and co-tech lead of the core API platform team at Twitter, waded in, referring to the dramatic number of job losses among the technical teams. "You did not just layoff almost all of infra and then make some sassy remark about how we do batching[?]"

"Like did you bother to even learn how GraphQL works[?]," she said, referring to the query language which provides an approach to requesting data over HTTP.

Software engineer legend Grady Booch even joined the debate, saying the discussion provided "more evidence that @elonmusk is profoundly incompetent when it comes to leading an organization built around a software-intensive web-centric system at global elastic scale."


In news that will surprise no one, the Tesla tycoon earlier today said Frohnhoefer was fired, and the engineer confirmed, tweeting what appears to be him locked out of his company-issued Mac.

Elon, please just shut the f%$# up, and limit yourself to asking about the TPS reports.


Anonymous said...

Not to spoil the party but

1. GraphQL is a pile of shit that is currently super-fashionable, probably BECAUSE it solves a problem (limited connections to a single host) that hasn’t existed since HTTP/2 was invented

2. One thing GraphQL is super-good at? Breaking HTTP caching. Which means instead if your app furiously requests the same data over and over, instead of getting data served from the browser’s cache with, at most, a few byte round trip to get a 304 NOT MODIFIED (yup, your copy of that is up to date), you do a round trip to the server and grab the whole payload again, because your request gets stirred together with whatever else other parts of the application happen to be asking for at around the same time, making the new request not match anything in the cache.

3. What that leaves us with is (imagine Beavis and Butthead voice) “Heh, he said RPC! Like it’s 1995 or something.” I.e. a pointless quibble over terminology. You’re making a ton of unnecessary, expensive calls over the wire, and the thing you can come up with is to get snarky over the fact that the thing at the other end of the wire is not called a “procedure”? You SHOULD get fired for that.

His terminology may be antiquated, but I suspect Musk’s analysis is on the money - and I am not a Musk fan.

-Tim (I gave up trying to get this thing to accept my Google credentials and not black hole my comments)

Matthew Saroff said...

RPC is still used today, and is something very specific.

Musk got it wrong, and fired the people at his company who noted it, including (later links) people on the Twitter Slack who observed this.

He's a probably mentally ill snowflake.

Anonymous said...

You are calling a server asking it to send you some data. The fact that the thing you call is not called a procedure, and doesn’t use a particular RPC protocol is well and truly beside the point. Round trips are round trips, and GraphQL is a great way to generate lots of pointless ones.

Post a Comment