264 comments

[ 2.9 ms ] story [ 279 ms ] thread
Neither statement have an agreed "context" from which the discussion is taking place, and flipping the statements may make the other seem irrelevant.
Not sure if you were serious or not but your comment seems like a nice example of what the article talks about
I don't think he's agreeing or disagreeing with the article, just providing a possible explanation for this behaviour. The two people arguing are ignoring the context, which is common in many debates. Especially with politicians - shift the context a bit and you're right even if what you're saying is unrelated to the original point.
The article chose pretty good examples, they are all of the form, "generally true statement" with a "specific, or even completely unrealistic, edge case disagreement". They all require no context to understand the exchange.

Debates, especially political debates, are purely about winning the debate. Context in a debate is particularly irrelevant.

I'm not sure I agree with "edge case disagreement". TLS, for example, has shown it's limits (e.g. CA hijacking) and was improved (e.g. CT). However, someone had to find those edge cases and discover the limitations of stated assertions: "2010 TLS was safe under the assumption that the CAs are not hijacked."
Ok. So, are you saying that we should stop using HTTPS and instead use HTTP? If you are not, what is your point? Is it not under the 100% correct but missing the point label this article is talking about?
Well, you could use HTTP over an IPSec tunnel with a pre-shared key (obviously distributed face-to-face), and that would have been resistant to a CA being hijacked.

However, nowadays, I believe with CT HTTPS is really safe. But again, someone had to nitpick on the security limitations of HTTPS for CT to be invented.

Could you enlighten me as to why my comment isn't relevant to this post or how I've missed the point?

I've read the post again in the best faith that I can give and I think I understand the point, I just thought it would be intersting to discuss the idea of "context" in conversation.

Instead of seeing the replies as pedantic seekers to logical truth they may just be misunderstood individuals who is talking with a different context. If we assume my comment as the first comment in his examples, I am equally at fault for not communicating my context clearly.

Unlike the author I don't find such interactions as frustrating, and hopefully I've effectively explain why in this comment.

Yes, this is certainly part of the problem; the "blind men discussing the elephant". We all have a different set of experiences of programming, but not all of us have a good sense for where the boundaries of our experience are. Something you think is ubiquitous may not be.
I think there is a name to this: it’s called dialectic/sophism. These arguers have no interest for the scope of the discussion, they just want to win the argument. I think it helps when you set the scope of the discussion clearly, at the beginning. edit: typo
"They just want to win the argument" is a good summary of what I understood from the article. There are people I regularly encounter who have to inject their opposition or correction to anything anyone else does or says, which feels like they are attempting to prove their superiority or correctness (but instead proving their failure to recognize the context of the original statement). Couching their point in the style "What about X?" instead of making a counter statement would be a more useful communication method IMO. (Edited to fix grammar)
Lots of programmers forget that they should also be engineers, and not only computer scientists (or wannabe computer scientists).

I can still remember how during the first programming class I took at uni 20 years ago the teacher told us that "engineering is all about compromises and especially about what compromises you should choose to make or not" (in that context she was talking about memory vs processor usage), and while I managed to barely pass her class that piece of advice has stuck to me ever since. Looking at things through the compromise lenses (for lack of a better phrase) would eliminate lots of misunderstandings rightfully pointed out by the OP in this article.

(comment deleted)
The failure of engineering in the presented hypothetical examples is a failure to understand the use case.

I say this because I remember a class I took in college where I built a chat application and the TA chided me for using a hashed message ID instead of using random number generation. I was concerned that eventually there would be collisions and that would lead a message to either be undelivered or delivered to two parties (depending on implementation). The TA said "yeah but that's an infinitesimal risk."

The problem with his view was that the intended user group would eventually see this failure occur. It's not an avoidable edge case, it's a bug that will impact the general use case. The failure could occur on an important message ("I'm gonna be at work late, can you pick up the kids") or a sensitive one ("I can't believe you cheated on me with our babysitter"), and the user would have no idea what happened.

The article mentions NSA hacking and aggressive computation on a small microprocessor, but those issues are both easily avoidable by the atypical user. Are you a spy? Don't rely on HTTPS. Are you building an embedded system? Learn how to use C++ instead of Python.

There is plenty of room within engineering to have sound practices that use computer science to mitigate edge cases. A problem arises when those edge cases don't affect the intended user, or are easily and obviously mitigated by the user choosing a better tool.

If the chance of a collision is literally infinitesimal then the failure will not occur, period.

In practice the chance may be just extremely low but then so is the chance that your hash algorithm causes a collision. In fact, that should be more likely for the same number of bits.

So would you accept that your solution is sound, from an engineering perspective, but could be considered overkill for a college class?
A sufficiently large and properly generated random number is as unlikely or less likely to collide than a sufficiently large hash.

However, using the random number is strictly simpler to implement, therefore it wins out from an engineering standpoint, unless you do not have access to proper RNG.

If the chance of a random number collision is low enough, it becomes likelier that a message will be undelivered or double-delivered due to hardware error (a "cosmic ray", though more likely thermal noise or radioactivity). Quantum computing in particular hugely relies on the observation that an infinitesimal chance of error is as good as a zero chance.

And of course, hashes can collide as well.

Using GUIDv4 presents an infinitesimal risk of collision, particularly given that GUIDv4 space is partitioned by the clock, and globally clocks are roughly synchronized.

It's the kind of edge case that you worry about when you are also optimistic that you might win the Powerball lottery in your lifetime. IOW: bad at math.

That's a good perspective. What's really lacking from so many of the "bad" comments is the context of the original comment. If you drop the context of someone using Python to process a moderate amount of text on a large, non-real-time system, then project your own context where it doesn't work, then sure python is not a good choice. If you can't agree on a basic context, or choose to force a context on them, then there's no compromise. Like in your teacher's example, you can't compromise between memory and cpu if you have no idea which you care about more.

They're mostly of the format "I like spoons because they can pick up liquids!", then the reply is "no forks are much better because they have tines to stab with!", without anyone saying if they want to eat soup or spaghetti.

This is spot on. As the old saying goes, "you can't have an argument about euthanasia with someone who thinks euthanasia is a musical group."
Every reviewer of their performances says, "They're killing it!"
>If you drop the context of someone using Python to process a moderate amount of text on a large, non-real-time system, then project your own context where it doesn't work, then sure python is not a good choice. If you can't agree on a basic context, or choose to force a context on them, then there's no compromise.

There may also be past traumatic experiences that are sought to be avoided. How many times does it take for some management to grab your local working python solution, slam it into production, and then complain when it falls apart? Even with a single such instance, you begin to look at things with the view that the context may be shifted away from the intention.

In such a situation, you are fully aware the context is locally with 1,000 files and not in some production environment with some 1,000,000,000, but you are rejecting the notion that those contexts can be so completely separated because a past instance showed such separations can be undone. Once bitten twice shy.

That's the eternal struggle in software engineering, I'm afraid. In my experience, there's no product that performs better with a more complete feature-set than the MVP from two years ago that exists only in the CEOs imagination, and was never really used by anyone. It takes a lot of knowledge and experience to understand why the very good solution that I run off my laptop once every week or two isn't at all the same as one that could handle hundreds of thousands of non-experts running it every minute.
(comment deleted)
Absolutely. In software engineering (a somewhat different field from computer science), the answer is almost always "it depends".
I think part of the problem is that school and college teach us to say "no" to something that's not always true. We're told a statement that's mostly true, and asked, "Is this true?" When we say yes, the professor says "No!" While a normal person, one with common sense, would say "Yes". This creates a habit of unnecessary attention to detail, nitpicking, and grasping at straws to come up with some reason why the other side is wrong.
> grasping at straws to come up with some reason why the other side is wrong.

It's an almost combative mindset to discussion. Where there is a victor, and a loser. Someone being right is almost a full stop to the discussion; they've won, so what more is there to say?

>I think part of the problem is that school and college teach us to say "no" to something that's not always true

It's mostly that we fail to frame the context of the statement when it's true and when it isn't.

In security stuff we often talk about threat model. The article mentions anonymity via HTTPS, which is never the case. You can remain anonymous from someone by using one-time pseudonym in Telegram. You can't remain anonymous from Telegram server without anonymizing your IP and phone number. You can remain anonymous from server with Tor, throwaway phone and prepaid SIM, but to remain anonymous from the NSA you need more steps like buying the SIM and phone with cash.

Things are complicated and we often assume the conditions without explicitly stating it. Some people think from the perspective of word case (next Snowden on a run) and some from their own (often privileged) position. Some argue from the viewpoint of a Chinese dissident, someone from western cryptoanarchist.

Risks are more often than not invisible so assessing them is extremely difficult. Security is often about margins, and I see a LOT of incompetence, e.g. encryption needs to be 256-bits and then key management (especially authentication) is hand waving.

IMO the fault is the upvoting culture. Back in the day when we used to have separate forums, someone who would post a question, could immediately be asked a followup question e.g. "what is your threat model". This helped set the context for all readers.

Once we moved into discussion with comments, we lost the story part, and people started to post "right" i.e. popular answers for upvotes without really focusing on relevance, like the author so eloquently puts it.

What doesn't of course help here is often the conversation is only part of larger puzzle. Maybe the NSA is part of OPs threat model and they didn't know it. E.g. if they're a sysadmin of large company. They're not a terrorist, they just manage systems of interest. That's where the conversation forks. And the more nuances the original discussion has, the faster the story is lost.

Furthermore, there's the endless amount of forum trolling that tries to drown insight amidst noise, memes, pop culture references and other thought terminating clichés that make you immediately turn on your heels, and look for insightful discussion under the next news story.

Then there's grass-roots marketing, disinformation, shilling etc propaganda, all which is specifically designed to have plausible deniability that makes it impossible to weed out.

Very true. Two very frequent argumentative errors in online comments are:

1) refuting argument with counterexample.

2) refuting causal argument with alternative cause.

Very few things in the world is universally true without exceptions or universal. Words all or everyone do not imply universal quantification (∀) in normal use of language.

Sorry, I can’t resist being pedantic on a post about pedantry. The symbol you used translates loosely as “there exists an x”; I’m pretty sure you meant the upside-down A (“for all/every x”)
Maybe the poster meant that the words don't imply ¬∃¬
Dunno. I went to two EE schools, and in many classes teachers stressed that to get results we need to make assumptions that are only partially true, to approximate, to skip over [irrelevant] details, etc. And this was very deliberate and stated upfront.

And, I still like to nitpick. :) Hmm. Maybe it's because you have to be aware of the details/limits to be able to figure out what approximations and simplifications are reasonable.

Maybe that's where the value of nitpicky mindframe lies.

This is genuinely one of the best posts I have ever read on here. Completely correct, very direct.

> In the real world being right is not a merit by itself

A lesson a lot of programmers could learn.

What is the point of this blog post? It appears to be about arguments in the Internet in general, but its implied point seems to be a rant against low-level programming.
I took it as an observation on internet arguments and not about the programming concepts that were presented as examples.
I don't think it had a focus on low level programming. It merely used people missing the difference between the domains best suited for each as an example of missing the point. Often the low level example was used as the example of someone missing the point. But I don't think that was intentional.
Its arguments are perfectly correct, however it exposes the state of mind that has lead us to javascript "apps" eating gigabytes of ram because they instantiate Chrome 3 times.

Yep, there's a price to pay when you're afraid of low level programming. Sadly you make us all pay that price.

That's quite a slippery slope though, from garbage collection straight to 3 instances of chrome.
That's the problem with being pedantic. Pedants are correct, but they're not curious, and they don't care about learning something because they lack humility (humility is difficult to learn and rarely encouraged).

A discussion, an argument or a debate is not meant to be some sort of confrontation quiz, where people who demonstrate they're right can win an audience. A real debate, argument or discussion is when an audience can listen, and ask questions to better understand what everybody is trying to say. A debate is a distributed way of thinking. Human thought only exists through language, un-worded ideas always die.

This mentality stems from how people views how democracy works. The Socratic method thoroughly shows that having an argument is about helping each other communicate their point of view. And this is exactly how states like Russia are able to undermine democracy, by sowing confrontation and polarization.

What is horrible is when this sort of polarization happens in your daily life, or in science or at work.

You're casting too broad a net here. I don't think this article is about pedantry. There is a time and place to be pedantic, just arguably in none of the given examples. The place to be pedantic is to point out sloppy thinking. Sometimes you just need precision, and it's not enough to be "mostly right".
I don't think "pedant" as a personality trait encompasses people, who are only pedantic in necessary context. Your answer thus might be a bit... pedantic? ;)
So I could point out that you started your comment with “You’re”. This statement is 100% correct and it’s pedantic. I bet you can’t argue that(but it’s moot! what has it to do!? Whatever the context!)

I agree with you, the problem is not being able to synchronize with the goal or hierarchical chain of logic behind original statements, leading to remarks that are irrelevant, and I think it’s merely considered “pedantry” here by the looks of it.

I think this comes from a fundamental issue: the participant isn't ready and willing to understand the other participant in conversation. The goal of the participant is to smash and belittle the other person instead of trying to achieve consensus.

For example, observe more consensus-oriented cultures: You'll see people talkting to each other over and over until they chip away at the other partys position and reach a middling consensus to move ahead. It's a very slow process but generally achieves good results in practice. This is also how good functioning multi-party governments work, where parties slowly move towards an acceptable middle ground when building policy.

This breaks down if one of the parties isn't interested in building consensus - in a hyper-individualist viewpoint, the goal is to attack, bellitle and insult the other person to build your own following or ego. In that case, there's no useful resolution of that conversation - the goal of the pedant is to find something to attack and attack it with no wish to reach a productive objective. In that case, the only winning move is not to play. At least until that attitude doesn't reach your organization/government and makes the environment intolerable.

Such consensus seems to be motivated by necessity. A lot of partisanship under the guise of 'we have voting majority'
Bringing up Russia in the context of this discussion would be an example of this phenomenon methinks
The trouble is often the listener thinks the speaker is pedantic when the speaker thinks there's a very legitimate problem the listener is ignoring. Since we're using C(/C++) as an example, I'll take a bite out of the other page that just got re-posted today. [1] Is it "pedantic" to point out that &*p is undefined behavior if p is NULL? Or is it "pedantic" to point out that uint8_t isn't a substitute for unsigned char? Lots of people who see C as something resembling high-level assembly view arguments like this as pointless pedantry, often since they haven't really across cases where the distinction has mattered. Meanwhile those on the other side of the debate feel like they're not being heard and pull their hair out trying to get people to stick to the spec of the abstract machine rather than that of their hardware, because they think (rightly or wrongly) the next compiler version will likely break their code if the existing ones already haven't.

[1] https://news.ycombinator.com/item?id=22848423

Ya.

Your example makes me think of error tolerances, uncertainty, fuzz factors. Sometimes precision really matters.

FWIW, If you were reviewing my code, I'd readily adopt your method, if only to expedite convergence on a common understanding, and to signal I appreciate the input.

You’re on the other side of the table from the pedant in OP. You’d be responding to someone saying “It’s easy to avoid UB in C.” Meanwhile, you grep a couple popular projects and show trivially that accidental UB is extremely common in most codebases. The pedant in OP is saying, “you don’t need the guarantees provided in Rust because a careful C programmer can avoid UB, memory errors, etc.”
Is it possible they would be served by a different standard where C is a high-level assembly? Although admittedly, "&*p" to me reads as 'load p' and therefore undefined behaviour
The literal sequence "&*E" is actually equivalent to E even when E is a null pointer. The spec explicitly points this out.
Why does the spec mandate support for useless bad code instead of banning it?
1. Probably backwards-compatibility.

2. While you wouldn't write &*E by hand, it can easily arise from a macro expansion.

`E` is an lvalue --- a location that only becomes a load/store when it is converted to an rvalue or assigned to. `&` takes an lvalue and gives a pointer to that location, so `E` is eliminated without being converted to an rvalue or assigned to, so no harm done.

The real question if why have "lvalues" at all. If assignment always had to have a pointer on the left hand:

    &a := ..., b := ...
rather than:

    a = ..., , *b = ...
then this problem goes away.
Oh man, I wrote that as a shorthand for something like int& v = *p; foo(&v)... is there a difference in that case (C++ I guess)? I thought it was always illegal to dereference null pointers regardless of the specific token sequence or whether it's C or C++.
Yeah, I thought that's what you meant. C++ doesn't special case &٭. C didn't before C99 either I think. It's not the exact token sequence actually; &(٭E) does the same thing.
I believe C++ does special-case that, as *foo when foo is an empty lvalue and it’s trying to assign that to an rvalue that is undefined.
(comment deleted)
I love the way this would be just as good an example for the original article as those actualy given.
To me, this demonstrates how one can completely understand something at the abstract level, but so easily "forget" when working at the object level, even when the object level discussions are related to an article about the abstract concept.

The various forms of communication between humans are chock full of opportunities for error, and I doubt there's many people that would deny it, but when a conversation is occurring at the object/instance level, and an instance of one of these abstract errors occur, enthusiasm for acknowledging it generally seems to have diminished significantly.

I think it would be incredibly useful if we could find a way to overcome this issue, kind of like error correction in TCP, but for human communication, or even discuss the notion.

Might it be interesting and fun, and maybe even yield practically useful ideas, if now and then HN was to experiment with taking an instance of one of these abstract problems we discuss every day (this one, nuclear power, climate change, wealth disparity, political polarization, etc), and rather than having our normal casual conversations (the contents of which often appear in thread after thread), instead approach it from an engineering perspective, crowdsourcing various ideas for both the diagnosis/analysis of the problem, as well as solutions (including implementation, where possible)?

@dang -2, again.

Is this not getting a little bit ridiculous? Pray tell, what guidelines have I violated this time, while everyone else is behaving perfectly fine?

Shall we continue to ignore the elephant in the room? It's fine by me, I actually get a kick out of it.

"The various forms of communication between humans are chock full of opportunities for error." Don't let it get you down.
Oh, it doesn't get me down at all, quite the opposite. It's not myself I'm worried about, it's broader mankind.

Take my suggestion at the end - does it not seem odd in the slightest that one of the highest concentrations of powerful minds on the internet seems to be more interested in complaining and pointing fingers, little different than any other social media site, rather than trying something new?

How bizarre do things have to get on this planet before a little curiosity starts to form about how we got where we are today, and if perhaps there's something HN could do to get us out?

I've seen ironic trend of calling someone else's assertion "pedantic" as another way to polarize and shut down debate. That "confrontation quiz" attitude is very real, and it's often a way to avoid actually listening to someone else so you get to be correct.
It's almost like there is a handbook out there somewhere on "how to win an argument on the internet" where people are using manipulative tricks to try to shut down debate and appear as the "victor".
Indeed, this submission is a textbook example, perhaps involuntarily, but still:

1) Pick an uncontroversial good cause: "Excessive pedantry is bad."

2) Associate all the arguments you want to make with the good side and the counterarguments with pedantry.

3) In the reader's mind, subconsciously all your arguments are now associated with the good side.

This is how advertising works, but the method seems to infiltrate (again, perhaps unintended) more and more technical articles.

Schopenhauer wrote a good one, his 38 Stratagems from The Art of Controversy, all of them still very relevant. e.g. I see #32 all the time:

If you are confronted with an assertion, there is a short way of getting rid of it, or, at any rate, of throwing suspicion on it, by putting it into some odious category; even though the connection is only apparent, or else of a loose character. You can say, for instance, "That is Manichaeism," or "It is Arianism," or "Pelagianism," or "Idealism," or "Spinozism," or "Pantheism," or "Brownianism," or "Naturalism," or "Atheism," or "Rationalism," "Spiritualism," "Mysticism," and so on. In making an objection of this kind, you take it for granted (1) that the assertion in question is identical with, or is at least contained in, the category cited—that is to say, you cry out, "Oh, I have heard that before"; and (2) that the system referred to has been entirely refuted, and does not contain a word of truth.

The Stratagems summarized in point form http://www.mnei.nl/schopenhauer/38-stratagems.htm

Unabridged https://www.gutenberg.org/files/10731/10731-h/10731-h.htm#li...

Oh fantastic- thanks for these. I see # 6 a lot too, especially generalizing what somebody says (eg: universal health care) into a much larger category (eg: universal socialism) that includes a lot of negative components (eg: deadbeats, corrupt governments, unremovable presidents/generals).
Welcome. :-) That could be #32 also: "I like the idea of universal health care, it's.." "That is Socialism!"
This trick works particularly well when your opponent doesn't know what that category is, but doesn't want to look stupid by admitting it.
This interesting aspect of the situation to me is: how many people have actually read such handbooks, versus how many people behave in these ways?

If hardly anyone has read these books, yet the behaviors can be easily observed in massive quantities, perhaps there is some other underlying cause.

I had a similar thought while reading this article.

A case that the article itself is "100% correct but [missing] the point" can also be made. Perhaps the speaker nitpicking garbage collectors works in a problem space prone to dangling references, which would make a "pedantic" point actually very relevant, at least to that speaker. Shutting that person down isn't helpful to that person, though perhaps in context a large number of other people would rather stay on topic.

Context and empathy are helpful. In most cases, clarification of context, especially through follow-up questions, can keep conversation healthy.

Idealistic argumentation in favor of being pedantic:

Pedantic is about being correct. There are too many misconceptions and misunderstandings around. * Being pedantic is an effort to reduce them.

So if people are pedantic out of idealism, I do not mind it. Here on hacker news it comes often in the form of a side comment "nitpick this and this is actually Y" Which I like.

It is only annoying, if people are pedantic "to win the argument" which never helps the discussion.

* even in our language. like the word atom, for example. It means undividable, but today we clearly know atoms are dividable. And millions of other examples. So a discussion never leads to anything, if all the people involved are overly pedantic ...

>Pedantic is about being correct. [...] Being pedantic is an effort to reduce them.

At the risk of my comment being pedantic about "pedantic", the context of how "pedantic" is typically thrown around is to alert readers of a hyper-correction that doesn't matter to the discussion.[0]

For example, if I say that some smarthome intelligent light switches sometimes have a 1/2 second lag instead of being "instant on" which is jarring to the user experience, a debater in pedantic mode would then say something like "even a regular dumb light switch isn't truly instant because of General Relativity, it _still_ takes picoseconds to propagate the flick of the switch action to the state change in the light radiation, blah blah blah"

That so-called "correction" is _true_ but not material to the actual type of discussion. The discussion was consumer UI and not physics. If the context is UI, it's actually ok to be a little sloppy with what "instant" means.

The underlying issue is that each commenter cannot write <billions qualifiers> before each statement. Therefore, the qualifier words we omit lets others pounce on a seemingly glaring hole in the argument (i.e. not reading with charity) and reply with something pedantic.

[0] Excerpt from MW dictionary https://www.merriam-webster.com/dictionary/pedantic#faqs:

>Is pedantic an insult? Pedantic is an insulting word used to describe someone who annoys others by correcting small errors, caring too much about minor details,

Ok, so lets be pedantic about pedantic about the argument pedantic ...

I know. Thats why I said:

" it comes often in the form of a SIDE COMMENT "nitpick this and this is actually Y" Which I like."

And "So a discussion never leads to anything, if all the people involved are overly pedantic ..."

I see what you did there.
Made an argument, a bit in the form of "devils advocate"?
Correct vs curious. Brilliant. Thank you.

What's the opposite of pedantic? "Colloquial"? Please tell me.

Whatever we end up calling it, both Adam Gordon Bell and Ezra Klein are superior.

While listening to Abstraction and Learning with Runar Bjarnason https://corecursive.com/027-abstraction-with-runar-bjarnason... I was struck by how AGB is able to adopt Bjarnason's worldview and explore it. While I was busily compiling a list of all the ways I disagreed.

I'd like to become more like AGB.

Ezra Klein routinely does this. He's so cordial, respectful of his guests. He genuinely enjoys wearing other people's beliefs for the purpose of discussion. I got so much out of his interviews with Grover Norquist and George Will. I'm still surprised.

Klein's recent interview by Ben Shapiro (for his book Why We Are Polarized) is a master class in not being baited, staying on message, using measured humor to push back, and somehow engaging one's debate partner in a positive constructive enjoyable manner. https://www.youtube.com/watch?v=pMOUiWCjkn4

I have no idea how Ezra Klein does it. Practice, temperament, experience?

Maybe the key is to just be curious, like you suggest.

> What's the opposite of pedantic? "Colloquial"? Please tell me.

It's surely not the answer you want, but 'unpedantic'.

If we can extend to more than one word you could describe someone as not being too concerned with the finer detail or nit-picking, or as 'glossing over' minor errors or trivialities.

The opposite of pedantic would be "not afraid of being wrong", and also aware that truth can be subjective and never absolute.

Science and knowledge are dynamic, not static. It's hard to make science and knowledge more accurate, but it's counter-productive to not challenge old ideas, even if those ideas work well.

Pedantic, in my view, are conservative. Unpedantic is more progressive.

Socratic method is not about two equals having discussion where both have different ideas. It is about one person (teacher) questioning another persons ideas. It is fundamentally unequal methodology.
It can be executed by a teacher, but the method and Socratic circles are based around peer-level interlocutors. An initial questioner may exist and that is not regarded as an elevated role, merely a way to gain experience in starting off a Socratic circle.
It can be but it seems to have a strong negative effect.

I've tried it numerous times when I see something as clearly being A but someone else sees it as clearly being B. Once my initial attempts to explain why I see it as A fail, I start asking why they see it as B to understand their view point. The goal is one of three outcomes.

* Find an error in my logic. Oh, it clearly is B.

* Find an error in their logic. See, it clearly is A.

* Find a point of disagreement other than A vs B that explains the outcome. I think X, which is why I see A, but if you think Y, then I can understand why you see it as B.

But in all cases, this sort of questioning a person's logic is viewed as a strong negative of just not dropping a subject. Some instances it may be better to drop it, but when it comes to specs in what I'm building for work, just dropping a disagreement in what the intention of the widget can lead to coding the wrong widget. There seems to be a needed charisma to keeping someone engaged and one that deeply irks me is that part of this charisma seems driven off of factors that we cannot control and which we condemn discriminating upon (meaning there is active subconscious discrimination that shouldn't be happening, but because people don't realize things like how taller people are treated with more authority or how we assume better of more attractive people, the discrimination is overlooked).

You can not make that conclusion from your method. While B has to explain in details every step and fact, A does not. It is assumed that if no error was found in B, A must be true. Therefore, B must be flawless to pass, but A can have pretty much any amount of logical or factual errors in it - as long as they are not directly visible.

> There seems to be a needed charisma to keeping someone engaged

Of course people stop to be engaged the moment they realize what is going on, whether they are able to argue back and move the needle or not. And even when they are able to clearly explain what is going on, they may decide that the most rational move in that moment is for them to disengage without accusing you or furthering conflict.

>You can not make that conclusion from your method.

I think you are missing the general idea and being stuck on the details which I highly simplified. The step after identifying the difference in logic is to work back from there and establish a full chain of reasoning we both agree upon, but I cut that out in my half sentence description.

>Of course people stop to be engaged the moment they realize what is going on

So the people who have an interest in convincing me (as I'm the one building the application) have no desire to do convincing when they realize I'm trying to understand their rationale? Why? I have learned to document it well when it happens, so when the project does fail I can show their manager exactly where I built what was asked for, noted my concerns with the design, and showed where they disengaged from addressing those concerns and desired for me to just do as they asked.

1.) The issue I was pointing out at was that one of ideas has to pass much different standard then the other. You are looking at differences only in one place, not at the other.

B being faulty does not imply A being correct. B having small problem does not imply A does not have even bigger problem.

2.) What I mean is that people conclude that you play politics with rules. You don't put your ideas under the same rigorous test. That is where disengagement typically starts.

Then it makes sense to go either your way or my way, but depending on politics of the situation (who is going to be responsible, who is stronger politically). How I think your idea would be had it gone through the same test should be factor, but if that part runs without you. It does not make sense to play one sided questioning game for the person you are negotiating with.

Your idea can make the project fail too and from the point of view of the other person, was not really tested. And then if you are accountable I drop my idea and let you do your thing. If I am accountable, you did not done nothing to covince me you are right.

Through it is also unlikely that the project would fail of a single reason. So I don't think the documentation would be much of the threat. We write minutes from non conflict non hostile meetings all the time, so it does not sound like much would be changed. Not that it would be used the way you suggest often. Unless other person works in some kind of toxic company, they are fine explaining their reasoning to manager. It is quite likely they discussed your questions even before they decided to disengage.

Well the Socratic method frequently results in aporia or puzzlement for both parties and doesn’t necessarily resolve conflicts in business. When you need to discover the next step or a new direction among cooperating people it’s food for thought, but for negotiating hidden conflicts of client work a more robust method is needed.

Discrimination is a tool, being seen as ugly or short in a position of success implies you overcame difficulty and played right can enhance a specific image or personality aspect you want to use as a technique for influencing clients. That game will always coexist with high level abstracted method like the Socratic.

> Pedants are correct, but they're not curious

Pedants are often more curious than you are, as they were presumably curious enough at some point to look up the thing they’re being pedantic about.

This presumes that the person making the first statement was unaware of the pedantic part... that's the point of the pedant "missing the point"
> states like Russia

I wouldn't say Russia has a monopoly on this

A debate is a distributed way of thinking.

This is a beautiful way of putting it, but IME rarely do actual debates actually rise to this level. Typically, they just amp up our confirmation biases and cause people to dig in.

I've had a few beautiful debates/discussions with friends in my life where we took sides on some issue and by the end, had both switched sides. These are great, because we're both cracking up by the end, but they've been incredibly rare. They require a way of exploring topics in a way that doesn't require/trigger ego investment and some adherence to the principle of charity[1].

Hell, I'm practically demonstrating the wrong way to do it in this very post. ;)

[1] https://en.wikipedia.org/wiki/Principle_of_charity

I think you can explain the problems with "pedantic" arguments in a lot more rigid way.

The "technically correct" arguments are ignoring certain information that the OP argues is extremely important: How likely a certain situation is to appear in practice and how expensive or resouce-consuming a certain user actions is.

Therefore, while the facts they state (dangling pointers may happen, people can protect against buffer overruns in C) are technically not wrong, their conclusion "therefore, garbage collectors / buffer protection make no difference" is plain wrong because it ignores the difference that likelihood and cost would make.

I think this can often be traced back to inexperience: The "X can happen / people could do Y" arguments can be make simply with book knowledge - in contrast, you typically gain knowledge about likelihoods and costs from actual experience working in projects.

> Pedants are correct, but they're not curious, and they don't care about learning something because they lack humility (humility is difficult to learn and rarely encouraged).

Those are some very broad claims. Apply whatever interpretation of "broad" you feel is appropriate.

Well, that happens for some of the comments, but not for all of the comments. You just have to write your comments well. If we just all wrote our comments well it would show the author how his post is pointless /s
The rationalist community has a kind of meta-rule that contributions to a debate should be at least two of {true, necessary, kind}. For necessary you can often also read useful.

Once you're out of high school debate club, it's a good principle that if the only thing in favour of a statement is "it's true", err on the side of not saying it.

Interesting that truth isn't a requirement, especially given we're talking about rationalists. In what situations do they welcome false contributions?
I think the idea is that it's forgivable to make mistakes, as long as you aren't also being unpleasant.
Edit: Sorry, I just realized I misread something. What I was pondering was what "necessary" meant in this case, but I think my brain is tired right now!
I'm not sure what you mean by 'mistaken unpleasantness', but getting at the truth, however unpleasant, is a far higher and more widespread norm in the rationalist community.
From https://slatestarcodex.com/2014/03/02/the-comment-policy-is-... :

{necessary, kind}:

> Recognizing that nobody can be totally sure what is or isn’t true, if you want to say something that might not be true – anything controversial, speculative, or highly opinionated – then you had better make sure it is both kind and necessary. Kind, in that you don’t rush to insult people who disagree with you. Necessary in that it’s on topic, and not only contributes something to the discussion but contributes more to the discussion than it’s likely to take away through starting a fight.

{true, kind}:

> Annnnnnd sometimes you might want to share something that’s not especially relevant, not the most important thing in the world – but if you do that it had better be both true and kind. No random interjection of toxic opinions that are going to cause World War III. No unprovoked attacks.

(personal comment - the recent HN thread on castle Guedelon, where a bunch of experimental archaeologists are building a medieval-style castle, was perhaps not "necessary" or "relevant" on a tech forum, but it was kind in that I very much enjoyed the half hour I was reading about it. Since there were no false claims about castles on that page, I'd count that as "true and kind".)

For good measure, {true, necessary}:

> Nobody can be kind all the time, but if you are going to be angry or sarcastic, what you say had better be both true and necessary. You had better be delivering a very well-deserved smackdown against someone who is uncontroversially and obviously wrong, in a way you can back up with universally agreed-upon statistics.

My guess would be when you are stating opinions.
A statement like "I am happy to see you!" should fit the description of necessary, kind and untrue.
Well because I can imagine a lot of things that are true but not necessary nor kind. Likewise, I don't know how you would classify opinions as true or false.
> In what situations do they welcome false contributions?

I think the point was more that being quiet is an option.

Quoting from the SSC policy:

>Recognizing that nobody can be totally sure what is or isn’t true, if you want to say something that might not be true – anything controversial, speculative, or highly opinionated – then you had better make sure it is both kind and necessary. Kind, in that you don’t rush to insult people who disagree with you. Necessary in that it’s on topic, and not only contributes something to the discussion but contributes more to the discussion than it’s likely to take away through starting a fight.

Just a guess, but -

1. Good-faith efforts at contribution where a person happens to be wrong? (happens to the most conscientious of us)

2. Instances where the speaker has made their confidence level explicitly known? ("Just a guess...", "I am not a lawyer, but...", "I'm not certain, but my understanding is that..." etc)

> at least two of {true, necessary, kind}

Are "necessary" and "kind" lies acceptable?

Since they are necessary, there's no option to avoid them anyway ? (otherwise they wouldn't be necessary). So you'd rather accept them.
That is true, but I suppose the issue arises from people who cannot make an accurate assessment on the "necessary" front.
Not an Engineer? Because I used to find myself in meetings, trying to express why its a colossal mistake to introduce application runtime libraries into a kernel, driver or critical engine. I was on the other side of this argument at times like that - expressing the obvious and true, perhaps unkindly. And getting nowhere as I could be dismissed as a pedant or as naive (by newly graduated 20-somethings).
That would be "true" and "necessary", no?
Thanks, yes, but it it was also thankless. You get marked as a 'pendant' and 'uncooperative'.

Being patronized by the OP was neither true, kind nor necessary. It is another misdirection of the sort they describe, this one attacking the (imaginary) opponent with a strawman or false dichotomy? Anyway, I'll shut up now.

This is terrific. Any chance you have a link to such a meta-rule?

Is LessWrong one of these rationalist communities? Here's their relevant FAQ: https://wiki.lesswrong.com/wiki/FAQ#Site_Etiquette_and_Socia...

The reason I ask: My local political party recently adopted a geek-style Code of Conduct. Huge help. But as you can imagine, our policy debates remain suboptimal, sometimes getting rather acrimonious. Neither our bylaws or Robert's Rules of Order say much about playing nicely. Maybe some experience, advice from rationalists would help.

(HN's guidelines would also be a good start for my purposes. https://news.ycombinator.com/newsguidelines.html)

The article falls into the same error of misrepresenting opposing views.
Explain? To my mind, the article explains a problem, that two opposing views can both be technically correct, but one view is often useful and second, disagreeing opinion, is just contrary.

Your comment seems to fall into the second category: just contrary disagreement.

Not the OP, but I agree with them: the appropriate response to

> Processing text files with Python is really nice and simple.

is not something silly about C, it is "It is, but the packaging system is an effing nightmare, have you tried Ruby?"

I will almost always get a least one developer making exactly the argument in the example whenever I suggest Python, so their point stands. When I proposed Django, getting a Rails counter proposal doesn't fall into the "100% correct but misses the point entirely", it is entirely on the nose.

So your counterpoint is ironically similar to the articles point.

Explain? To my mind, the article explains a problem...

The article seems to explain a problem, but what it's really doing is expressing some opinions, misrepresenting opposed opinions as strawmen and going meta to further attack them.

The criticism of the contrary opinions is not wrong, it's technically correct, just misses completely the point since it doesn't respond to the strongest version of the objections, just to the weakest ones.

These are not straw man arguments. I have actually dealt with all three of these examples in my career. The python one is particularly relevant to me, but I’ve had push back on running our API over HTTPS “because if they want to hack you they will anyway so why pay the extra cost”.
Not three, four. No idea about Python text, I don't know what the https fuss is about either. But the other two things are not how I've seen them discussed, and I've seen them many times.

I'm in favor of GCs and guards. What I'm against is that some languages removed the option to manage memory manually when it makes sense and disabling guards once the code is debugged. Those were the terms and, in that context, the objections make sense: there are cases when it's important to know in advance that the GC'd won't get in the way.

Java was the start of all that crap, with all sort of restrictions: every function must be a method, you can't precompile, no pointers, everything GC'd...

From the article:

"The one thing that school trains you for is that being right is what matters. If you get the answers right in your test, then you get a good grade. Get them wrong and you don't. Maybe this frame of mind "sticks on" once you leave school, especially given that most people who post these kinds of comments seem to be from the "smarter" end of the spectrum (personal opinion, not based on any actual research). "

A similar sentiment by Paul Graham here: http://www.paulgraham.com/lesson.html

This is true, but as a counterpoint, most math and science exams in high school give you partial credit for trying to reason through the problem even if the final answer is wrong. I had one physics teacher who would sometimes give full credit even if the final answer was wrong due to an arithmetic error. She was awesome; I still think of her as an inspiring figure.
Thanks for this, it seems a lot of discussions miss the point.

"You can achieve the exact same thing in C, you just have to be careful."

Of course you can. You can also drive at 160km/h safely or use an axe to chop onions in your kitchen "you just need to be careful" (with the subtle implication of "I can be careful, can you?". Narrator: no, you can't, you aren't as careful as you think)

And the other favourite of mine "HTTPS self-signed certs are useless, you're not authenticating the origin" while forgetting about the whole encryption thing. Yeah.

We're at a point in the diversity of tooling in software that subjectiveness is a genuine reason to choose one thing over another. Nitpicking fine points of performance is a very common way to miss the point. I could totally achieve the same thing in C, I just don't want to.
>> "HTTPS self-signed certs are useless, you're not authenticating the origin" while forgetting about the whole encryption thing.

The problem is that not validating the origin can make you vulnerable to a MitM attack. If the attacker can place themselves between you and the server, the attacker could intercept the real certificate from the origin server (containing the real public key) and then instead of forwarding you the origin server's certificate, the attacker could forward their own malicious certificate to you (containing the attacker's own public key) but pretending to be the origin server. Because the attacker's certificate would be self-signed, the browser cannot automatically authenticate that the certificate and public key provided actually belong to the (also self-signed) origin server and not some random attacker.

Then when the encryption begins, there will be encryption (that's true) but the encryption will happen between you and the attacker's machine and this is why it defeats the point.

It does not defeat the point if your attack vector is closer to your connection than closer to your server (e.g. untrusted connection). And in this case you can be your own CA and verify your own certificate.

It does not defeat the point because your regular HTTP server can be MitM in the same way so not having self-signed HTTPS because of that is moot.

So again, you're missing the point.

>> And in this case you can be your own CA and verify your own certificate

If you want encryption for yourself only when accessing your own website, sure you can add yourself as a CA in your own browser and then you also get he benefit of authentication... That is a very niche use case though; not a typical/general use case. Also where the attacker is located doesn't matter. If your browser doesn't have the origin server's CA added in its certificate list then the attack can also be done in close proximity to your machine (e.g. WiFi endpoint). So while not always incorrect, your argument is generally incorrect.

>> It does not defeat the point because your regular HTTP server can be MitM in the same way so not having self-signed HTTPS because of that is moot.

For a typical use case, you add almost no security by having a self-signed certificate compared to using plain HTTP. The only difference between an attacker who is able to carry out a MitM attack over HTTP vs an attacker who can do the same attack over self-signed HTTPS is a few additional lines of code in the attacker's software to proxy the fake certs; basically they can break it just as easily just by having better software. It doesn't matter at all where the attacker is located; whether closer to the server (like an employee of an ISP) or the user's machine (like near a WiFi endpoint).

Reading this part about garbage collection:

Being able create things on a whim and just drop them to the floor makes programmers a lot more productive than forcing them to micromanage the complete life cycle of every single resource.

I realized... It would be REALLY nice to have a garbage collector for the physical things in my house. Even some sort of tried-and-true algorithm to direct me would be nice.

EDIT: (this actually started as a sincere though off-topic comment on my part)

I have observed during this "shelter in place" that one way to be organized around the house is to be around the house (in this case 24/7).

And now I have 3 algorithms to think on. I think it might be nice to be nagged periodically with a certain request from a certain direction. Part scheduled cleaning, part LRU, part where does that live, etc.

It is possible! Unlike in the programming world, true parallel garbage collection has been mastered for centuries in the physical world. However, there is of course no free lunch. You have to pay people to come over and clean your house.

Failing that, you can "write your own" by simply allocating a block of time every day to cleaning up. Doesn't get more "tried-and-true algorithm" than that.

Imagine though (all we can do in the current situation) that the garbage collector comes in at seemingly randomnpoints during the day and just as you're about to use the restroom goes in and locks the door behind them to clean the restroom.
At first I thought you were talking about your mom/spouse but then I realized it's a computer analogy :)
There is an algorithm for this in the form of an old saying: "a place for everything, and everything in its place".
Even some sort of tried-and-true algorithm to direct me would be nice.

I actually heard about this recently -- you throw out everything you haven't used in the last year.

A physical garbage collector? I've actually got one. It's my dog. (Only works in the kitchen, though. Maybe it needs debugged?)
A GIGO queue? :)
It appears that https://en.wikipedia.org/wiki/Perfect_is_the_enemy_of_good is a very relevant concept here, and is the principle behind the rebuttals to the arguments in each section.

I feel that arguing for perfection is (arguably) part of a broader problem with internet discussion - and discussion in general. I've personally termed it "sniping" but there may be an existing agreed-upon term.

Essentially, this is when a commenter takes one flaw or issue in a larger and reasonably sound argument - and runs with it. In context, focusing on this flaw is "missing the point" as the rest of the argument does not rest on the assertion being "sniped". But - if you make enough noise about it - you may be able to confuse people into thinking otherwise, and making the argument seem fundamentally flawed.

Although it gets tiring after some point, I very much appreciate all the "snipers" out there: They taught me a lot.

I often do training for my customers (cloud technologies) and they expressed appreciation for me exposing the limitations of certain technologies / techniques.

I love snipers too.

I have some broad idea about a topic I am not experienced. I expose it and I have immediately 25 different objections.

I examine the objections and there are 5 really good I had never thought about.

That is amazing, the fastest feedback loop in the world. The only problem is getting affected by the feelings people expose when they reply. But with text is easy.

I do that on real life with Masterminds. You have to train people to be respectful with other people's ideas(they are not naturally). If you do, it is one of the most powerful tools in the world.

Ah this reminds me of a fellow at work. He's always correct, and the worst type of correct: technically correct.
It is more immaturity than education, though. Age makes most people appreciate diversity and act collaboratively, instead of antagonising.
I think you picked up some downvotes for saying it's age, rather than experience, that gets people to appreciate diversity and act collaboratively.

I hope that the irony of that (and my own comment), in regards to this article, is not lost on those who downvoted you.

On HN you can click [-] to simply hide any statement that's beside the point ;)
I personally don’t find some of these examples problematic at all. A discussion doesn’t have to be so directed (relevant in a defined context) to be useful or interesting.

The first example might just end right there with no further discussion if the context is not expanded.

Discussions are beautiful like that, they start somewhere and can end up at a completely different place.

Anyone knows a non-technical version which conveys the same point as this article?
So the author is pro garbage collectors and anti C. What a novelty on HN!

If you discourage the pedantic counter comments, all you do is push a single narrative that slowly becomes the truth.

Reminds me of one my all-time favorite bits of movie dialog, which I keep in my mental back pocket as a sort of reminder:

“Am I wrong? Am I wrong?”

“You’re not wrong, Walter, you’re just an asshole.

Being correct is really important sometimes. The blog's last example really hit home to me. For my last job I had to process six million records a minute on a shitty embedded CPU and Python (normally my go-to) completely barfed when I got to the domain-specific logic.

While pedants on the Internet can be frustrating, we shouldn't generalise when there are many situations where we should be both precise and relevant. HN encourages curious discussion and I think that's an apt description of the discourse that I enjoy most here. Precision can generate curious conversation.

People are naturally competitive and often antagonistic. But what are those discussions really about? In order to decide on a suitable programming language for a project, more methodic approaches are useful, like a list of requirements with ratings for each candidate. Debates usually just let the more stubborn and irrational participant win.
I see this incredibly often in medicine-- particularly from nurses, midlevels and patients when they don't have great relationship with the physician. Myself included (although I try to have a good relationship and communication I don't bat 100). People tend to latch on to what they know or think they know, and it's very hard to get them focusing on the more important issue that may be at odds with that. As an example-- I trained at a place where a patient disagreed with his doctor's assessment (something about lung fluid analysis). The patient cited a well-respected journal article that guided standard of care. But, the patient didn't realize something. The doc treating him authored that article.

We see stuff like that routinely-- evidence gets misinterpreted and people get angry because their sources (but not their interpretation) may be excellent.

At the same time, it goes the other way too.

I cannot believe the number of doctors that I visited when I first got GERD, and all my questions were shot down while they prescribed PPI upon PPI. It only made my condition worse by the year.

Finally, I decided enough is enough, and did my own research, happened upon naturopathic materials, and experimented in a logical fashion (eliminating one trigger at a time, trying a new natural cure at a time) till I chanced upon probiotics - specifically Yakult which works best for me, and have been living a normal life since then.

The kicker is that if I had taken this approach from the start, my stomach and quality of life would have been much better from the start.

Sure, it's anecdotal, but it's a counter-example to your assertion which, frankly, smacks of derision for the thinking patient. You have to remember that doctors, like those in any other profession, come in a spectrum of qualifications, capabilities, and empathy.

Physicians are human and subject to their own biases and mistakes. I could go on about how helpful patient/nursing/midlevel input is and has been to me personally in my career. But the point I'm trying to make here is that the shallow vs deep thinking shows up in medicine at obvious points and causes problems.
We also have our own biases. That physician has probably seen 100s of patients who have self-diagnosed something that turned out to be wrong, whereas the physician is usually correct about diagnoses. In this instance, the self-diagnosis was correct and the physician was wrong, but I would bet this is the exception, rather than the rule.
> I trained at a place where a patient disagreed with his doctor's assessment (something about lung fluid analysis). The patient cited a well-respected journal article that guided standard of care. But, the patient didn't realize something. The doc treating him authored that article.

Sounds like the article needed revising.

A discussion with started with the first statement and response, and then went on with the statements they listed under "ignores all the larger context of the issue" looks pretty decent to me.

It might turn out that the second person thinks one or more of the bullet points is false, and both sides might learn something.

I agree! I love playing devil's advocate. People tend to focus too much on "who is right" and get annoyed. For me, it's about learning. It's about challenging my and my peer's assumptions and finding what are the limits of the assertion.

The article is a good invitation to reflection, but an alternative title could be "let's discover the relevant context together".

It is much easier to play devils advocate then having opinion you advocate for. And it is overly easy to use devil advocate tactic to make it hard to keep original topic, to force people to go to lengthy tangents or otherwise prevent them to actually make the statement they were aiming for.

If I intend to discuss complex enough real world problem in good faith, especially one with unclear parameters, devils advocate basically makes it impossible.

I agree, but I would put it differently. It is a lot easier to advocate a conclusion with full control over the assumptions, than discovering the boundary assumptions where the opinion no longer holds.

For example, it is easy to argue for "HTTPS is more secure than HTTP". But what I am often interested in -- as a curious and skilled IT person, and not a lambda user -- is what attack models does HTTPS defend against. Remove assumptions one by one, when does HTTPS offer equivalent security to HTTP.

This is not just nitpicking, but extremely relevant for our profession. TLS has gotten under quite a lot of fire lately, so sooner or later, someone somewhere will discover those hidden assumption. I rather it happens on a public forum.