779 karma · joined May 14, 2021
Funnily enough, there are contingents of people who exclusively use paper plates and plastic cutlery. I think there's an interesting parallel there. Those kinds of people simply do not want the effort and cost of maintenance. I'm not particularly sympathetic to this mindset in either case, but still.
(struct { fn run }).run
How ridiculous that this is required to do something so simple.Netty is also a struggle to inspect so perhaps I just struggle with deep abstraction in general? I find code to be far better documentation than actual documentation, particularly when so much of it is along these lines:
/**
* Gets the next string.
*
* @return Returns the next string, or null.
*/
public abstract @Nullable String getNextString();
This documentation is entirely unnecessary because everything it says is present within the method signature. But say you have an abstract method that users override to handle incoming data, often documentation will not contain things like: whether the ByteBuffer is a slice or the whole buffer at a particular offset; or whether the buffer is a copy or a view; etc. So I end up doing a lot of defensive copying which is possibly unnecessary, but because it's very difficult to figure out where that buffer is coming from without first trudging through a seemingly endless forest of abstractions first.This has consequences for config parsing, for example, where a particular subsection (sub-object? keyed struct?) may be optional, so it being missing is perfectly legal. But if you use try?, then there's no way to distinguish between it simply being missing and it being present but malformed. It unfortunately seems like the only other options in Swift is to propagate the error, or revert back to verbose try-catch blocks.
Whereas, in Zig, you can do inline catching and care about the error only as much as you want to, for example:
// This is equivalent to Swift's try
const i: ?i32 = try someThrowingFunc();
// This is equivalent to Swift's try?
const i: ?i32 = someThrowingFunc() catch null;
// This is a yielding inline catch block that does not care about the error
const i: ?i32 = someThrowingFunc() catch brk: {
logger.warn("Something went wrong!");
break :brk null;
}
It's not perfect, I don't love the block-label-break thing, but I much prefer this if only because then the variable can be defensively const, which I do not believe is possible with the kind of code snippet you provided. Also, instead of breaking out, it could capture and return the error or return a new error. It's incredibly versatile.While that's true, that comes from the secularisation of law and the emergence of the concept of the nation distinct from the King. Prior to this, to break the law was to insult the King. This dynamic was at the forefront of the trial of King Charles I, who argued that he could not have committed treason since treason was to act against the King - the King was the nation.
That said, I do take your point that different places in the world have/had different approaches to law. I talk more about Anglosphere-law because that's ultimately what's won out, particularly with the system of the sovereign nation states.
1. In your example, the group of buddies all created the rules and consented to them. This is not true for laws which instead invent concepts like the social contract to justify itself.
2. When you break the law, say murder, the ultimate victim is the state. The person you murdered is just evidence in the state's case against you. This is why there are Victims Right's movements. This is not really true with such buddie rules: breaking them may hurt your friends' feelings, but there wont really be an equivalent to it harming the social fabric.
3. Laws imply law enforcement, which implies use of force. Are you and your buddies willing to enforce your rules on each other with lethal force?
Agreed, though they aren't necessarily using that term in recent years. Nowadays they tend to use terms that evoke "echo chamber" without actually saying it, like "woke mind virus" and "groupthink". And while I agree with some of the other comments that "echo chamber" has since been more used to refer to algorithms, this might be a result of being on Hacker News, which is an echo chamber in itself. I do have a somewhat instinctual aversion to the term "echo chamber" though given its prolific use as a thought-terminating cliche.
You claim I'm being disingenuous and then say this as if I haven't been this entire time referring to historic injustices AND THEIR ONGOING LEGACIES. Nah, y'all just prefer to selectively ignore that part.
> Trust between nations is a concept that exists, but it's not the same thing as trust between individuals.
And here's an example of the above: you reject my claim that trust between nations and trust between individuals are comparable and within the same category because it's not literally the exact same thing. Okay, let's follow your logic: trust between people and their institutions are not the same concept; trust people family members and friends are not the same concept; trust people have in their tools or craft is not the same concept. It is not useful or relevant to compare any of this because if it's not literally the exact same thing in the exact same context, it's irreconcilably different.
> You have taken the idea that reparations are right
Not quite. I am arguing for reparations as a form of devil's advocacy (relevant: https://news.ycombinator.com/item?id=44364746). What I've been doing in this thread is questioning your (and others') unwavering loyalty to finance obligations regardless of whether they span centuries to where there's no overlap whatsoever between those who agreed to the obligations, those who are paying for it, and those who are receiving it. You do not bat an eye at this, and you seem somewhat exasperated at needing to explain it, asserting the apparent obviousness of it. But when it comes to material human suffering and the legacies of injustice that can still be felt and witnessed today, the idea of attempting to remedy this does not compute.
---
Put simply, you are so entirely entrenched in this "don't therefore can't" mentality that you cannot comprehend alternatives. It's like when people cannot comprehend hypotheticals: What if you didn't work here? But I do. Yes, but what if? But I do work here. Societies could, if they wanted to, see past injustice as something contemporary society has an obligation to resolve... we don't do this because we've chosen not to, not because it's impossible to do so. And the choice to do so or not is a moral decision. Ditto with choosing to prioritise financial obligations over remedying human suffering. I'm sorry that you are unable to see this. I'm not going to entertain this conversation further.