I believe you that it wasn't your intent, but the definition of flamebait isn't about intent, it's about effects [1]: what effect is a post likely to have? what subthread is it likely to generate? That's what determines the expected value of a post [2]. If you post things like "right wing waste of sperm", "vomit their hate", and so on, the likely outcome is a flamewar whether you intended it or not—and you're responsible for it whether you intended it or not. (And this case was not a borderline call!)

But you're also making a good point in your reply and I don't want you to feel like it hasn't been heard—especially because I think we mostly agree.

Emotions are important and need to be given a place. HN's rules are not intended to constrain everybody into a starched, repressed state, nor to exclude anyone for bringing up something unpleasant or something they feel strongly about. That would end in a kind of heat death. We're not interested in that. (And I agree that there's a class component to this.)

The question is how to express emotions in a way that leads to more curious, respectful conversation and not to a flamewar in which people just get mad and rush to defend their side and bash the other side. This is an open question—it's not something that we've figured out yet as a community or a culture or in terms of moderation. But FWIW, here's my current take.

It's much better if you express your emotion explicitly as something you are feeling. If you directly share what you're actually feeling, that will make your comment more interesting to other people and make it less likely to come across as an attack.

Many people (including me) have a hard time doing this, so instead of saying openly how we feel, we encode our feeling into a statement about a thing, an idea, a person or group—and then we bring our emotion in through the 'back door', by packing as much intensity as we can into our language. Sound familiar?

This feels safer because it's less vulnerable up front, but it's a recipe for internet disaster because people will get triggered by your intensity rather than hearing your actual feeling—and to be fair, it's not their fault, because you didn't really give them a chance.

To take a blunt and vulgar example, if I tell someone "you're a piece of shit", or even if I say about a third person, "they're such a piece of shit", I'm using intense language that is clearly coming out of my emotions, but I'm not actually sharing what I feel or why I feel it—I'm withholding the parts that have to do with me. If I could actually say what I'm feeling and maybe share some relevant experiences, then I would not be attacking anybody, and I'd be giving people information that maybe they could respond to on a more human level.

I actually hate what I'm saying here because personally all of my conditioning runs in the opposite direction—I don't want to relate to anybody, I don't want to share myself, and I certainly don't want to talk about my emotions. That's probably why I come to the internet in the first place, to get away from all of that; and to put it mildly, I'm far from alone in this. But as a community, I don't think we have much choice, because the only other options are "exclude all emotion" or "just vent", and neither of those works—at least not for HN.

This is one of those cases where it's super helpful to have a single variable that you're optimizing for and can follow wherever it leads. On HN, we're lucky to be in just such a situation: we're optimizing for curiosity and nothing else [3]. How does that relate to the above? Very directly: conversation gets more interesting when people share themselves, rather than just their opinions. This is better for curiosity than talking about who is a "waste of sperm" (to use your phrase) or a "piece of shit" (to use mine). So this is the direction we need to move, even though some of us might prefer not to.

[1] https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...

[2] https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...

[3] https://hn.algolia.com/?dateRange=all&page=0&prefix=true&sor...