This points out an oddity but doesn’t propose a better solution. It’s just supply and demand. To be consistent in pay, you can pay people in San Francisco and Ukraine the Ukraine prices, in which case you will only have a Ukraine office. You can also pay people in San Francisco and Ukraine the San Francisco prices, in which case you are probably spending a lot more money than you need to. Which would you do, if you were running the company?
I wonder how he was keeping his binary trees balanced. All the ways to do it seem fairly tricky to come up with on your own.
Kind of off topic but I love the “gripping hand” sci fi reference ;-) https://en.wikipedia.org/wiki/The_Gripping_Hand
“If you implement REST, you use content negotiation, and thereby eliminate versioning and typing issues.”
This sounds like the “no true Scotsman” fallacy. Hardly anyone who implements a REST API does this, because it’s a big pain in the ass. But really, you are free to develop your applications however you want. Using Relay and GraphQL doesn’t lock you into any platform - it’s just open source technology. Facebook does not “charge rent” if you use a different query language instead of a REST API.
This sounds like the “no true Scotsman” fallacy
How is it a “no true Scotsman”? REST has a fairly precise definition. That (many|most|a lot of) people ignore details of the precise definition doesn’t change that.
In technology, we should be well past the attractive fiction that the party who invented something has final say over what it is. It’s hard to think of a single technology which hasn’t at some point in its history been embraced-and-extended into something unrecognizable, even for cases like HTML where that usually gets retroactively ratified.
That doesn’t mean the “embracers and extenders” get to call their new “thing” the old “thing” with impunity though. And it hardly means that people who actually care about the definitions of things should just throw their hands up and say “nothing has a definition”.
I think people have to accept that terms are actually populist, and you have to sort of give in to current understood meaning. “Nice” used to mean “foolish”. “Fathom” used to mean “encircle in arms”. “Naughty” used to mean “you have nothing (naught)”.
What makes a word “real”? feels someone relevant, and is an interesting talk.
REST has a fairly precise definition.
Dang, I have been searching for one for around a decade, can you link? Every authoritative definition of REST I have ever seen conflicts with all the other authoritative definitions of REST. Heck, I wish there was a clear winner just among version specification methods: URL, Request Header or Content Type.
Please excuse the friendly snark, but REST is hardly well defined… let alone implemented.
The canonical reference is Chapter 5 of Roy Fielding’s PhD thesis (he coined the term). He also wrote a smaller blurb some years later summarizing his opinion of how the term is commonly misused.
Thanks, I was aware of his thesis and that he coined it – but the term has been hijacked by many claiming to be the one true king. The clarification link was great, but I am not certain how relevant it is today to people consuming “REST” services.
You can spin it as a problem that lots of people are implementing “REST” wrong and should stop calling it that, which is perfectly fair… but useless, as people who have “REST”-similar (although often horribly broken and surprising) will continue to say “Use our great REST API”.
but the term has been hijacked by many claiming to be the one true king.
And? Just because a bunch of people hijacked a term doesn’t mean people who know what the term actually means should just stand around with their hands in their pockets and say nothing.
I admire you fighting the good fight! Sadly, I think like “literally” – we might have already lost this one and need to keep our eyes peeled for the next word definition battleground. At the end of the day, it is about communication and that means shared definitions.
Ah yeah I think you edited your comment after I replied, so it wasn’t as clearly a rhetorical question when I replied (or else I just misread it).
I agree, I think putting any kind of real meaning onto REST is kind of a lost cause at this point in practice. When I read someone say they have a “REST API”, I just read it as “API”, with the adjective adding no further information.
EDIT: Indeed, I edited after the fact (your reply came in fast).
Interestingly, the clarification post you linked by Roy Fielding seems to conflict with some of the things in the article.
From Linked Post:
Most alleged “REST” implementations underuse content negotiation, and underestimate the degree to which REST is intertwined with HTTP. But REST comes from Roy Fielding, a principal author of the HTTP spec. It’s not a coincidence.
From Roy Fielding:
A REST API should not be dependent on any single communication protocol
One needs to really, really read into that to reach the conclusion that an “Accept: v=2” header is correct REST and a “?v=2” URL param is incorrect REST.
Actually, his thesis seems to imply the opposite, that version is supposed to be part of the resource identifier. The Accept header should be used instead for deciding whether you want json or xml.
(It doesn’t help that the thesis is quite verbose, but not always specific.)
Slack is pretty nice for modern groupware. It just doesn’t do the “workflow” type stuff this article describes. Instead it makes the fluid unformal parts like plain old chatting work better.