I honestly started considering this a feature. I am a huge believer in "productive friction" - where some things are intentionally made annoying or hard so that humans avoid them - and this is a really good example.
15,015 karma · joined April 15, 2013
twitter: @jcdickinson element: @jonathan:dickinson.id email: similar to element
I honestly started considering this a feature. I am a huge believer in "productive friction" - where some things are intentionally made annoying or hard so that humans avoid them - and this is a really good example.
A message bus is often considered a clean way to deal with a cycle, and would exist outside the tree. I hear your point about the graph disappearing entirely if you use a message bus for everything, but this would probably either be for an exceptionally rare problem-space, or because of accidental complexity.
Message busses (implemented correctly) work because:
* If the recipient of the message is down the message will still get delivered when it comes back up. If we use REST calls for completion callbacks then the sender might have to do retries and whatnot over protracted periods.
* We can deal with poison messages. If a message is causing a crash or generally exceptional behavior (because of unintentional incompatible changes), we can mark it as poisoned and have a human look at it - instead of the whole system grinding to a halt as one service keeps trashing another.
REST/RPC should be for something that can provide an answer very quickly, or for starting work that will be signaled as complete in another way. Using a message bus for RPC is just as much of a smell as using RPC for eventing.
And, as always, it depends. The line may be somewhere completely different for you. But, and I have seen this multiple times, a directed cycle in a distributed system's architecture turns it into a distributed monolith: eventually you will reach a situation where everything needs to deploy at the same time. Many, many, engineers can talk about their lessons in this - and you are, as always, free to ignore people talking about the consequences of their mistakes.
Do you think there are risks involved with leaving (and hence returning to) the country on a Green Card?
What the actual... Lack of journalistic integrity rears its head once again. Executive function and social challenges do not make a person "not smart."
Going back to the core of the problem, I feel that this does need to be controlled. It's one thing to disability signal online to gain clout, it's a completely different thing to drain resources from genuinely disabled folks. Disabilities need to come with diagnoses.
So I did a bit of research into how this works in Zig under the hood, in terms of compilation.
First things first, Zig does compile async fns to a state machine: https://github.com/ziglang/zig/issues/23446
The compiler decides at compile time which color to compile the function as (potentially both). That's a neat idea, but... https://github.com/ziglang/zig/issues/23367
> It would be checked illegal behavior to make an indirect call through a pointer to a restricted function type when the value of that pointer is not in the set of possible callees that were analyzed during compilation.
That's... a pretty nasty trade-off. Object safety in Rust is really annoying for async, and this smells a lot like it. The main difference is that it's vaguely late-bound in a magical way; you might get an unexpected runtime error and - even worse - potentially not have the tools to force the compiler to add a fn to the set of callees.
I still think sans-io at the language level might be the future, but this isn't a complete solution. Maybe we should be simply compiling all fns to state machines (with the Rust polling implementation detail, a sans-io interface could be used to make such functions trivially sync - just do the syscall and return a completed future).
If it doesn't wipe your drive.
Still, interesting thought.
Short-term gains are great, though!
The only thing I was saying was exactly what I said, within the context of XMPP, XML compresses really well - I was reinforcing the parent comment. How that relates to metrics in other contexts wasn't what I was talking about at all. I generally avoid XML nowadays, and so your argument with me isn't something I would dedicate thought to in the first place. I see no point in taking anything from this nonsense.
If you are so bandwidth constrained that deflated XML won't do, then I doubt deflated JSON would be good enough either (and that exists anyway, Matrix).
Cynical: Valve doesn't sell hardware or operating systems, they sell games. These devices are merely another storefront.
Optimistic: Valve has also figured out how to turn good will into a commodity. Blowing cash on Steam sales is a bit of a cultural centerpiece of the PC gaming community.
Gabe has proven that you can make stupid amounts of money by [mostly] doing right by the consumer. I'm not sure if there's more to the secret source, her sauce, because we've yet to see another CEO pull their head out of their arse far enough to see how lucrative this approach can be: consumerism is fickle, fanaticism is loyal.
Jonathan Blow is sharpshooting and being intentionally difficult in order to sound smart (he really needs to engage in that behavior less, he's smart enough as-is). Virtually nobody bothers with Linux-native binaries for games. Compile your game for Windows, test it on Linux+Proton, find that it probably works fine, it's not hard.
There is the school of thought that Wine is merely the Linux gaming ABI, and I largely agree. Native Linux binaries "feels" better but doesn't bring much from a practical standpoint.
How many Elastic Searches will it take for people to realize that this is mandatory. Linux would not be where it is today were it not for some ideals wrangling.