1. 10

    Helpful hint: you can turn slack notifications off.

    1. 9

      When I did this my coworkers got super mad I wasn’t answering things promptly.

      1. 3

        Do they get mad when you try to negotiate for “Do No Distract” times in the day?

        1. 4

          We didn’t have a culture where people actually followed that. You could have a do not disturb time but people would interrupt you anyway. A couple of us started making fake meetings just to get some time to code.

          1. 3

            Ouch. It’s telling when things get that bad.

            1. 2

              A couple of us started making fake meetings just to get some time to code.

              It’s a good trick, I’ve been doing this for years so I could make sure I got lunch and time to do work.

              1. 3

                Wow. These comments, and the recent thread about maybe not working long hours, paint a bleak picture of current work practices in the US.

          2. 4

            get better co-workers

            1. 1

              I actually got the different answer. I was using slack as a message queue, when I saw a coworker that I wanted to distract, I’d slack them (via the app) and wait for an answer, but they actually prefered me to come to talk to them and bother them.

              I found this weird but complied…

            2. 7

              If you read the article, notifications are only a very small part of the problem. The author was speaking about wide scale effects happening at the organization level.

              1. 3

                This. So much this. I know that the discussion can take different forms and sometimes there are also larger organizational issues at play. But with that said, I think people often forget that they can disable notification on devices. I’ve seen co-workers across two companies leave notifications on for every single message in a channel (yes, you read that correctly) and with sound nonetheless. It baffles me.

                macOS comes with a built-in Do Not Disturb mode. Slack lets you configure your notifications so that you’re not getting notifications for each single message across a bajillion channels.

                [Slack] normalizes interruptions, multitasking, and distractions, implicitly permitting these things to happen IRL as well as online. It normalizes insanely short reply times for questions. In the slack world people can escalate from asking in a room to @person to @here in a matter of minutes. And they’re not wrong to – if your request isn’t handled in 5 minutes it’s as good as forgotten.

                Somewhere along the way we forgot that interruptions are toxic to real work. It wasn’t always this way. On day 1 of my first trading job the only instruction I received was ‘when the market is open, mute your phone.’ The subtext was ‘or else’. If someone said this to me today I’d give them a hug, and I’m not a hugger.

                I think people need this reminder today. Outside of work I see people with group chats on their phones (be it Facebook, Twitter, Hangouts, whathaveyou) that bleeps and bloops without rest. I can’t imagine living in that world.

              1. -3

                authors of popular databases who discuss their sexist ideas openly, neo-reactionaries leading functional programming conferences.

                How dare people discuss controversial and offensive ideas openly? They should be forced underground so those ideas can fester without any external contradiction or moderation.

                And of course people with weird, icky politics should be censored from purely technical events. Who knows what kind of whacky fascist programming paradigms they might force on us otherwise?

                1. 29

                  This is an incredibly bad faith excerpt to take out of context. The author was discussing doubts they had about attending the Recurse Center, and:

                  A bigger part was the mission itself: “to get dramatically better at programming”. Did I even want to get better at programming?

                  A lot of bad things in the world have been created by programmers: software for operating drones that bomb civilians, data-mining that violates privacy, companies that “disrupt” by dropping vast amounts of capital in to a market without any intention of building a sustainable business. A lot of bad people love programming: open source thought leaders who harbor deeply racist views, authors of popular databases who discuss their sexist ideas openly, neo-reactionaries leading functional programming conferences. The norms of programmer culture still revolve around using needless complexity as a cloak of wizardry.

                  As @vyodaiken says, you’re demonstrating the toxic behavior the author is wary of.

                  1. 5

                    This is such a misguided fear (even though the author says it wasn’t realized in reality anyway) - lot’s of bad people love mathematics, science and music too, it’s no reason to question the value of those pursuits.

                    1. 13

                      That’s the nature of fear. I don’t know how to interpret your comment except as a criticism for the author talking about something she honestly felt, then talking more about it later when the fear wasn’t realized. How is this a problem?

                      Tons of people worry about the impact of their work and whether they are on a path that is ultimately doing more good than harm for the world. Is the author not allowed to worry about that too? Is she not allowed to talk about it?

                      I’m trying to give you the benefit of the doubt, but I don’t understand what else your comment could be saying.

                      1. 0

                        It is more about me being puzzled by the train of thought. I understand wondering if programming is worthwhile, but I don’t understand how the actions of others have any relevance at all.

                        edit: I guess you could make the case harm is an inevitable outcome of programming.

                      2. 4

                        A misguided fear? The Recourse Center has designed social rules to prevent behavior we know is endemic in technical (and business) forums. The author appreciated the results of those rules. But she’s “misguided” ! In what way? Is it your contention that there is not an endemic toxic culture in tech forums? Are all those women just making it up? Is Yarvin’s hobby of smirking racism something we are obligated to ignore? How do you get to decide the validity of what other people experience?

                        1. 2

                          Misguided that the actions of others has bearing on your own personal value that can be derived.

                          1. 1

                            It has a bearing on whether I want to put up with it

                      3. 2

                        I wasn’t responding to that part of the article; I was responding to the part of the article I had an opinion on. What is your rule for when people are allowed to respond to things? Do they have to fully agree or disagree with the entire article first?

                      4. 17

                        And of course people with weird, icky politics should be censored from purely technical events. Who knows what kind of whacky fascist programming paradigms they might force on us otherwise?

                        How dare women suggest tech and especially programming is a potentially hostile environment one might not want to enter! Preposterous. It is just “locker room talk” for programmers! Either learn to deal with it or stay out of our tree house, you icky girl!

                        Why? Why would you focus on that sentence in a post full of great sentences about positive aspects of the Recurse Center?

                        1. 19

                          Reminds me of a quote from Lean Out

                          Women in tech are the canary in the coal mine. Normally when the canary in the coal mine starts dying you know the environment is toxic and you should get the hell out. Instead, the tech industry is looking at the canary, wondering why it can’t breathe, saying “Lean in, canary. Lean in!” When one canary dies they get a new one because getting more canaries is how you fix the lack of canaries, right? Except the problem is that there isn’t enough oxygen in the coal mine, not that there are too few canaries.

                          (from Sunny Allen’s essay What We Don’t Say)

                          1. 6

                            Lot’s of people have a knee jerk reaction because a lot of this stuff sounds like “remove undesirables from society/jobs/conferences”, and puts the power of who is undesirable into the hands of some questionable people.

                            It wasn’t the point of the post though, so i agree with you.

                            1. 8

                              Got another Lean Out quote for you cause they’re just so damn relevant. This one from Sexism in Tech by Katy Levinson.

                              In the least three years, I was asked not to use the words “sexism” or “racism” when speaking on a diversity panel because it might make the audience uncomfortable.

                              Which throws into especially stark relief wyager’s comment that sparked all of this discussion, since “both sides”[1] are equally worried about censorship. But one group actually gets to say racist, sexist, discriminatory stuff and remain in charge. The other can hardly speak on panels and post on their blogs without the whole world jumping down their throats.

                              So yeah, the knee jerk reaction you mention rings a little shallow to me.

                              [1] I know, “both sides” is highly misleading, but it captures the duality on display here.

                              1. 5

                                The other can hardly speak on panels and post on their blogs without the whole world jumping down their throats.

                                You mean like how people tried to ban Moldbug (presumably who the OP was talking about) from LambdaConf?

                                1. 4

                                  With something akin to backchanneling over weird views on a blog totally unrelated to his behavior in conferences, too. Another I cited previously was Opalgate where a guy that didn’t agree with trans people on Twitter got hit by a storm of folks in his project wanting him ejected. They didn’t contribute anything to it like he regularly did but did demand it adopt all their political positions after ejecting its main contributor. The venom was intense with much talk of things like burning bridges and them trying to set him up to look like he supported child molestors or something.

                                  And these are supposedly the oppressed people who have to worry about “the whole world jumping down on their throats.” The people who eject any folks who disagree with their beliefs from their own projects, conferences, and this thread. You and their other targets don’t look very powerful and oppressive from my vantage point. They were wielding more power in each of these circumstances.

                                  1. 5

                                    You want people who Yarvin declares are inferior to politely accept his views? Why should they?

                                    1. 6

                                      We separate things based on context. In conferences, he had caused no trouble at that point. The reports at the time said he just went to give talks and be helpful. On his blog or personal life, he says or does things I don’t agree with. More than many others but still same thing: many people disagreeing with many things. I’d rather have him at the conference because I don’t ban people I disagree with. If he misbehaves at conferences, then we deal with him.

                                      My opponents have a different view. They think everyone should believe/do certain things and not believe/do other things. They should be compatible with those in every forum. If they aren’t in even one place, they are to be shamed in or ejected from every place. He was just one example of that behavior. He was an easy target since his crazy views wouldn’t bring lots of sympathy. In the Opal example, the project had been welcoming and nice to everyone with the violation being a maintainer’s actions on Twitter. Nothing stopped people from participating in the project and no evils were done in it. The maintainer did violate a rule of their politics in one public forum, though. So, an entire group of them hit that project, ordered the ejection of that member, ordered total compliance with their beliefs, trolled the hell out of them, and of course offered nothing to the project in code or other support.

                                      I’d rather stop that kind of stuff. It’s just domination rather than anything moral or productive. We can either let a small group of people enforce their arbitrary views on everyone with no discussion or dissent allowed like they desire. Alternatively, we accept everyone under rules the various groups have a consensus on where good things we agree on are encouraged and bad things are prohibited. That maximizes the overall good and productive things we do. That’s my stance. It’s also what we usually do at Lobsters. It’s also what most successful companies and democratic governments do. What my opponents who eject people at conferences ask for is more akin to a dictatorship or theocracy since discussion/dissent is considered evil to be punished.

                                      1. 7

                                        I have somewhat similar thoughts as you, but here’s a thought experiment for you that might help put some things in perspective. Let’s say you are running a conference. You are invested in it and hope for it to succeed, and you have some or all power in determining who is invited to speak. After the CFP ends, you like Foobar’s talk and invite them. Sometime later, you post the list of speakers. To your surprise, a lot of people are upset about Foobar’s invitation because Foobar maintains a very controversial blog that makes a lot of people uncomfortable.

                                        You decide to stick to your guns. You definitely appreciate that Foobar expresses controversial views and understand that it makes a lot of other people uncomfortable, but you determine that since Foobar’s controversial views are not related to the conference topic, and therefore, they should still be allowed to speak. So you communicate this to all the would-be conference goers and other invited speakers.

                                        I think this is all pretty reasonable actually, although I do understand why some might object to this type of decision making on ethical grounds. But here’s the kicker. At this point, you hear back from N of the invited speakers and M of the people that would otherwise buy tickets. All of them feel strongly enough that they refuse to attend your conference.

                                        So here’s the question: how big does N and/or M need to be for you to retract your invite to Foobar? Are you so ethical as to allow the conference to fail? Or are you so pragmatic as to let it succeed? Perhaps a little of both?

                                        I think the point of this thought experiment is to demonstrate that morals/ethics aren’t necessarily the only thing at stake here. In particular, you could even be in violent agreement with Foobar but still rescind their invitation for practical reasons alone because you want the conference to succeed. I personally don’t have a strong answer to my thought experiment either, so this isn’t a “gotcha” by any means and probably more of a rhetorical proposition than anything else.

                                        1. 2

                                          (Sorry for delay. I was getting overwhelmed between work, email, and foums exploding. Trying to reply to everyone.)

                                          Alright, before the thought experiment, I’ll note that the situation with that conference was a bit different per initial reports I read. The conference wasn’t experiencing a huge loss hinging on accepting or taking such people. Many people liked the presenters’ talks. Instead, a handful of political activists worked behind the scenes convince the people running it to eject a person they didn’t like regardless of what the conference thought. They probably said a lot of the same kinds of things, too, since an organizer would be receptive to them. This kind of behavior is a major reason I’m holding the line resisting the political or meta stuff such people want to work with.

                                          Alright, now to your exploration which is more than reasonable: it’s something I’ve worried about myself.

                                          “At this point, you hear back from N of the invited speakers and M of the people that would otherwise buy tickets. All of them feel strongly enough that they refuse to attend your conference.

                                          It really comes down to the philosophy of the organizers I guess. There’s a few routes they might take:

                                          1. Ideological. Do what’s perceived as right regardless. In this case, they should include their politics in their marketing to give clear signal of what’s expected. They should block or eject anyone not compatible even if the talk fails. The example you gave is one where the talk could fail. On other end, certain conferences in highly-liberal areas might fail if not doing enough to address their concerns like inclusive language.

                                          2. Impact and/or financial success. This philosophy says do what it takes to succeed financially or just in terms of conference activity. Nothing else matters. You gave one example where a conference might have to eject folks controversial among highly-liberal people to get attendees. I’ll also note this same rule would justify reinforcing ills of society like racism or sexism at conferences under “don’t rock the boat” concept. Lecturing or politicizing typical bunch of Silicon Valley or enterprise developers, esp the privileged males, will only irritate them with lost sales. This priority is a double-edged sword.

                                          3. In the middle. The great thing about real life is most stuff is a spectrum with tradeoffs. That’s the hard thing but also good here. An example is an organizer might set ground rules that reduce bad behavior instead of force politics front and center. Another example is ignoring diversity or bad behavior on the sales team at conferences or in meetings for enterprise segment to drive up sales since buyers often want to know their partners are “like them” or some crap. Whereas, the backend, developers or community side, can be really diverse without the haters even knowing they’re supporting an organization that heavily invests in developming minority talent. This is one of my hypothetical schemes rather than something I’ve observed outside Fortune 500 trick of having immigrants doing lots of work in background.

                                          So, I see some possibilities here where the conference organizers’ priorities seem to be the biggest factor in whether they should accept or block someone. They might block some but not others depending on level of extremism. They might rule exclusively on behavior instead of beliefs. The crowd they’re serving might like behaviors like sexism or hate it with serving the crowd being morally context-sensitive.

                                          I write off top of my head for honesty. I wrote that before I got to your last paragraph. I was about to say I don’t really have an answer for you past the conditional framing above. Too dependent on circumstances or whose in control. Seems you didn’t have one either, though. It is a very important consideration, though, since conferences are usually created to accomplish specific things instead of brag they were compatible with ideology of a person or group. Most of them anyway.

                                        2. 4

                                          My opponents have a different view. They think everyone should believe/do certain things and not believe/do other things. They should be compatible with those in every forum.

                                          It is possible that there is a belief, or set of beliefs, which are sufficiently sociopathic that they disqualify people who hold them from a platform in any context? Is there some value for X that if someone publicly and explicitly said “X” you would refuse to support them in any way?

                                          I hope it’s uncontroversial that the answer to both of those questions should be “yes”. In making that affirmation we’ve established that the set of things exists. Now the discussion shifts to which things belong in the set. Reasonable people can make reasonable arguments for this or that belief. I think it’s completely understandable that Moldbug’s feudalist racism would cross the threshold for a lot of reasonable people.

                                          Put more succinctly: a society isn’t obligated to give a platform to the intolerant in deference to the abstract right of free expression. Rather the opposite: a society is made better through a vigorous assault on intolerance, in whatever form it blossoms.

                                          1. 2

                                            You might separate things by context but I don’t. People are not compartments. You might think other people should separate by context and not consider that e.g X is a holocaust denier when X speaks on functional programming. Great but don’t dare demand I do the same. That would be super presumptuous. BTW you appear to believe some organized group is after you. I’m unaware of any such group.

                                            1. 1

                                              e.g X is a holocaust denier when X speaks on functional programming. Great but don’t dare demand I do the same.

                                              I always challenge people who say that to list all of their political beliefs on the major topics that provoke controversy somewhere to link in their profile. We’ll just link it before any comment they make so the person replying can see the entire political spectrum of who they’re talking to plus what they’re saying in that moment as one thing. Then, like you said, they can want to interact with that person in their entirety or ignore all value they may have contributed over one thing they didn’t like. I think we should heed Richelieu’s warning instead.

                                              “BTW you appear to believe some organized group is after you. I’m unaware of any such group.”

                                              I just cited a few. The Yarvin thing was a small group of political activists trying to get rid of someone they didn’t like in a shady way. The Opal scandal was Ehmke’s posse pummeling that project on Github with no problems within it. Ehmke’s been in quite a few of these with an openly-stated mission to force her brand of politics (“social justice”) in every forum using her Code of Conduct as leverage. Two people involved in those actions are active in this forum with both voting for a similar CoC here. Ehmke later griped about the hate she and her white-hating buddies receive online and at Github saying it was because she’s trans rather than shoving her politics down the throats of everyone she meets. I particularly loved how they bragged about hiring “token, white people” on their team. Nobody could even joke about that if they said black. Anyway, I called Ehmke out on that submission for trying to pretend her politics had nothing to do with it. Then, some organized group was after me with the community at least being more impressive in how that was handled than most forums those kind of people hit.

                                              (Edit to emphasive these are loosely-organized, small groups that know how to say the right things hitting people not usually expecting it or knowing how to react. They create PR nightmares with passive-aggressive sophistry, basically.)

                                              So, yeah, there’s definitely organized groups doing the exact thing I’m worried about with some here that have done it on previous forums. They always prop up the rules they use as leverage by saying they’re just trying to stop discrimination or hate speech but (a) they get to define what is or isn’t and (b) their own actions are quite discriminatory against other groups with inconsistent enforcement. Even minority members that disagree with them get hit as happened on HN same week where I got slowbanned for quoting women disagreeing with women. Give them an inch in a new place, they’ll take a mile. I’m not giving them an inch.

                                              Note: There’s plenty of similar stuff happening at college campuses across the states, too. A lot of folks doing this sort of thing come out of them. Hard to combat since dissenting speech is considered hate speech or otherwise put down.

                                              1. 5

                                                That’s not a challenge, it is an example of sealioning. I don’t have any obligation to provide you with an algorithm or to be consistent or to satisfy your sense of what’s right. My right to not read Pound’s poetry because he was a fascist or to read Celine’s early work because it is so eloquent even though he became a fascist, or to refuse to attend a conference where Yarvin speaks or to prefer the rules of Recourse center doesn’t depend on your stamp of approval. Sophie didn’t make any demands of you. On the contrary, you are demanding that she not express opinions that make you uncomfortable. Get over yourself. Go explain why Yarvin’s work is so damn great that you don’t care that he’s a smirking racist or cheer for the pseudo-science of the Google Manifesto all you want. You have the right to speak. You do not have the right to demand others approve or refrain from criticizing or even shunning you.

                                2. -1

                                  Why would you focus on that sentence

                                  Because I didn’t have anything to say about the other ones. Do you think I’m obligated to address every sentence in an article if I want to address any of them?

                                3. 7

                                  The fact that we almost know who she was talking about proves that they can currently discuss these ideas openly mostly fine.

                                  So these people express their opinions, and others are like “well now I don’t want to talk to them”. If you(*) want to barrage people with your unpopular opinions, people will stop wanting to hang out with you .

                                  I understand the fear of being shut out of social events like conferences. But they’re social events, so if you make yourself unliked… No amount of rulemaking will solve that, I think.

                                  The bad faith logical inverse if your argument is “everyone should be friends with everyone. No matter how much disagreement with social issues are present, someone should always be allowed to be present. This includes allowing to bully other members of the community without repurcussions ever.”

                                  It’s the bad faith interpretation, but one that some people will make.

                                  (*) Impersonal you

                                  1. 5

                                    “So these people express their opinions, and others are like “well now I don’t want to talk to them”. “

                                    These people express opinions but want anyone disagreeing to shut up. That’s been present in replies on most threads here where people did. Allowing only one side to speak while defining any disagreement as an attack or hate is political domination.

                                    “This includes allowing to bully other members of the community without repurcussions ever.””

                                    There’s the word games your side is famous for. vyodaiken did it earlier redefining a rhetorical disagreement as an attack on one side but not the rhetoric of the other side that painted everyone without qualification with negative labels. In your case, the people whose politics I oppose here regularly define any disagreement as hate speech, offensive, bullying, behaviors not to be tolerated, and so on. Not all of them do but many do. You all redefine the words from the neutral, tolerable thing they are (eg disagreement or political bickering) to a new word we all have a consensus against (eg bullying, hate speech). Then, you’re arguments for action focus on the new word with its meaning whereas what was actually going on is a lesser offense which wouldn’t be justified.

                                    So, what people supporting Sophie actually want is anyone on their side able to express their opinions without disagreement and without repurcussions ever. Whereas, anyone disagreeing with it is automatically labeled as something far worse, dismissed immediately, and for some ejected if allowed by rules. That’s always worth fighting against even if wyager’s parody was as poor a wording strategy as Sophie’s own overly-broad, only-negative portrayal of programmers.

                                    1. 3

                                      She never advocated censorship. She never said “most programmers” or “all programmers”. So your response is obviously not directed at her words but at something else.

                                      1. 1

                                        as Sophie’s own overly-broad, only-negative portrayal of programmers.

                                        Again, this is an opinion unsupported by the data. The examples were specific, and real. The concerns are non-trivial, and real. You’re making something about you that isn’t about you.

                                        1. 0

                                          That’s always worth fighting against even if wyager’s parody was as poor a wording strategy as Sophie’s own overly-broad, only-negative portrayal of programmers.

                                          wyager is arguing that people with bad values should be allowed space in public or in others’ private spaces, which is a bad value. Majority supremacists, patriarchal maximalists, authoritarians, etc. should not be allowed safe spaces, and should never be accommodated.

                                          From your characterizations of the author’s post and how they portrayed programmers, it’s clear you’ve either not read it and are arguing from ignorance, or you have read it and are arguing in bad faith, since the passage is clearly contextualized as part of explaining an internal struggle about how best to grow as a human being.

                                          1. 4

                                            From your characterizations of the author’s post and how they portrayed programmers, it’s clear you’ve either not read it and are arguing from ignorance, or you have read it and are arguing in bad faith

                                            I’ve read it. Part of learning a field and growing as a human being is a fair assessment of what’s going on in it good and bad. Author’s concerns in that section solely focus on the bad… the worst of it actually… with the people side being like talking points out of one part of a political debate. Outside of those, I usually see a wide range of claims about programmers, jobs, effects on world, etc. Author is setting up false, strictly-negative premises in either ignorance or bad faith, maybe even unintentionally due to bias, then struggling to work from within the moral straight-jacket she put on. Totally unnecessary if starting from a more accurate worldview that includes the positive and neutral people and programs.

                                            Note that I liked all the stuff about RC in the article. I enjoyed the article right up to that point. I just mentally deleted that part so I could just think about the rest which was most important parts. As in, more corroboration and anecdotal evidence in favor of RC visits. Then, the debate started.

                                            1. 1

                                              Note that I liked all the stuff about RC in the article. I enjoyed the article right up to that point. I just mentally deleted that part so I could just think about the rest which was most important parts.

                                              I feel like you’re attempting to speak in good faith, so I’m going to do the same.

                                              This point I’ve highlighted here, that you “just mentally deleted that part”, is an example of privilege in action*. You have never had your life or well-being threatened by people or organizations like the ones the author calls out, and you have never had to be concerned with whether or not they were active or influential in the spaces you inhabited. Other people are not so lucky, and have learned from difficult experience that they need to be aware of their surroundings and who might be in them, or else they may be injured or otherwise harmed.

                                              Some people, especially those who come from outside the main software development industries, have heard only that IT/tech has a huge problem with sexism and toxic masculine culture. Some people are members of the marginalized groups whose well-being is directly threatened by the personal values of community leaders of some of the popular software communities, as named by the author of the post. The Recurse Center attracts a lot of people from diverse and non-technical backgrounds, and many of those people share the concerns that the author had, and would appreciate having them explicitly dispelled with regards to RC, as the author did.

                                              So the least that those with privilege, like you and I have, can do, is not make it harder for those less fortunate to engage with the playground we have (programming) that also gives us power and status. It’s bad form to raise barriers against those with a harder lot in life than we have. These kinds of messages, from “the other side” as it were to those people who might be afraid of what they’ll find when they get there, are super important. And it’s not about you, or me, or anyone here, unless they’re part of the problem. It’s for other people like the author or who might be thinking about getting into a tech career by applying to RC, but who have heard the industry has some problems.

                                              *) note that you have this privilege, even if you are not privileged in other ways (eg, you were born into a poor family, etc.). life is complicated.

                                              1. 1

                                                Since you’re being in good faith, do read this next like I’m just bluntly saying something instead of losing my shit or being loud. ;)

                                                “You have never had your life or well-being threatened by people or organizations like the ones the author calls out, and you have never had to be concerned with whether or not they were active or influential in the spaces you inhabited. “

                                                You’re assuming I don’t understand the concept because I’m presumably white male. My first school experience was being attacked or mocked because I was a “nerd.” All but a few people excluded us which happened varying degrees whole time in school. That included “minorities.” They all do to nerds what they claim others do to them, including violence by alpha males but not police. They might interrogate or arrest them if something happened involving computers if said nerd is known programmer or hacker.

                                                Next, I was white in a black-run, mostly-black school where they added to mockery or exclusion the fact that we were shouted down if disagreeing with any issue (especially racial) plus randomly attacked. I doubt most of these people talking about their minority concerns have been held down on a bus while black people take turns beating them with the smirking driver not reporting it. Attempts like that were too common for me until I learned kickboxing and paranoid vigilance, esp wide turns around corners. Still had to dodge fights due to rule white people can’t be allowed to win against black people either at all or too much. Varied. My friends and brothers who went to other black schools endured the same where just bending over a water fountain could be too much vulnerability. I avoided bathroom stalls, too, after seeing what that led to.

                                                I also got to be a man in places run by women who favored women. Essentially, whoever stayed in their good graces talking about what they talked about, being an insider, laughing at anti-male jokes, and so on had more privileges in those places. That would benefit grades, get more work hours, increase odds of promotion, even get some guys laid with those opposing sexism shamed. Unlike women on average, it’s been a while since I dealt with that but happening again in my current company. Highly-political, card-playing woman took over a specific department I was almost transfered to. After exit-interviewing her ex-employees, I blocked transfer fast before expected changes happened: she hired mostly black folks like her (esp exploitable youth), promoted only the older black women exactly like her kissing up instead of mix of races/genders who outperformed them, and politics over performance further destroyed that departments’ numbers with them saying nonsense about why. Current team is good with mix of straight/gay/lesbian, white/black, and liberal/moderate/redneck. Usually fun, interesting group with occasional in-fighting due to differences all apologize for after.

                                                That covers structural racism and sexism which the type of politics I fight denies even exists for whites or men despite supporting data. We get no help. What about “neo-reacitonary?” Well, I am an outspoken liberal and Union man who defends decent Muslims and calls out police corruption on the side in the rural South deep in Trump, meth, and capitalist country. Interesting enough, one insult they fling at me here is probable Hillary supporter while people I argue with on liberal forums assume I’m a right-winger. Biases… Being outspoken in rural spots led me to have to negotiate with people intent on beating or killing me right there if I got too many words wrong. Rare people but non-passive outsiders will run into them. Most online “activists” on social media talk about threats which I find are folks talking shit online or with prank calls that don’t on these issues result in hospitalizations or anything almost ever. Just irritating trolling by jerks shielded by anonymity. Pales in comparison to what even a trip for groceries can cost a white person in impoverished areas in or around Memphis, TN. The First 48 was banned from there over too much stuff to cover. Some police are gang members, too, so gotta act in a way to reduce risk of their attention.

                                                Since you admitted it, you might have privilege of growing up as or hanging with white people that didn’t face racism, sexism, or drug heads’ threats on regular basis. Lot of us in poor areas, minority-controlled areas, areas of opposing politics, isolated areas… these are some where many say they have similar experiences to me. We find it strange people “speaking for oppressed” as they might say ignore existence of probably millions of us due to skin color or gender. Especially rural whites given their high rates of both drug addiction and suicide, too. My friends and family have had to fight those.

                                                Alright, what about someone like Sophie or I who are concerned with environments where we might be facing racists or sexists that hate our group? Well, I agree with you entirely that it can be reassuring to see someone bringing that up saying it doesn’t happen at a specific location. Going from an all-black school to a mixed school where they didn’t hate us was… it was heaven. We had fun together! Likewise, groups with fair/excellent women or being around civil Southerners who only get X-ist if explicitly talking politics. I’d definitely want to know every place or group where I could avoid groups I mentioned first in favor of others if that was best I could hope for.

                                                That said, remember how it started was exclusively portraying the field based on worst of the worst. I don’t do that. Since we’re at that point, I’ll tell you the violent people I met were single digit percentage of each area, the negative bias was huge, there were coping mechanisms to get me past some of it, there were neutral/decent people, and some were so fair or good they inspired me to be more skilled or tough. If I talk about a field, I try not to throw them under the bus entirely or I take the counterpoint I had coming for screwing up due to emotion winning or whatever. You’ll see that in programming with C or PHP languages where I’m a strong opponent but don’t pretend they’re 100% bad even if many developers do damage. Likewise, following my politics, I’m still getting along with and exchanging tips with specific Lobsters who were strongly opposing me in prior political debates.

                                                So, what she was doing isn’t the only way to respond. It was a weaker, overly-broad, politically-charged claim that got low-value reactions followed by a whole battle that distracted from her main points. She set her post up to fail to quite a degree. I’d have told her to be more fair and accurate since bringing politics in is putting a spotlight and a metaphorical scope on you. The negative responses left over would have to be haters or themselves prioritizing some politics. Easy to dismiss when they have little to no ground to stand on. Those of us in minority positions unfairly have to be careful about our claims since they’ll get more scrutiny and attack.

                                                Since she probably made up her mind, I just mentally deleted it like I trained myself to do when saying something to that person won’t change their views IRL. Focus on good, shrug off perceived bad if not an intentional attack, and go on from there. It’s how we integrate and survive down here in our powder keg of diversity. Works fine, too, with most of us getting along well enough. :)

                                                “These kinds of messages, from “the other side” as it were to those people who might be afraid of what they’ll find when they get there, are super important.”

                                                This I disagree on if they’re aiming to affect policy or law anywhere. I’ve already seen it happen in many places with ultra-liberal universities being good examples. In those, allowing it to go too far without participation shifted power to those groups. Those groups built on their politics and power until they regularly belittle whites or males in various ways. They also try to silence disagreement on political issues saying it’s not about them. Well, if we stand to lose anything (even rep or jobs) by decree, then it is about us and we should at least weigh in. I don’t gripe about the reasonable stuff where each person has a view they can state, chance at the job, etc. I’m usually backing it.

                                            2. 2

                                              I’m sure all the people hit with the bad value hammer will disappear into the ether once you get your (apparently unauthoritarian) way.

                                              1. 1

                                                Your false equivalence, that being intolerant of intolerance and hatred, is also cowardly stated using passive aggressive style, as well as sarcasm. That is, you are acting like a coward, lest I be accused of not speaking my point forcefully enough.

                                                1. 0

                                                  I find passive aggressive sarcasm allows for remarkable concision, but whatever. I don’t respect you and your group as the arbiters of good and bad values and all people like you have done is make me care substantially less about being labeled a patriarchal maximalist or whatever you’d like. Many people I know feel similarly. We’re not going to leave the field if you succeed in banning us from the recurse center

                                                  1. 0

                                                    Hey, have fun hanging out with Nazis, then.

                                                    1. 0

                                                      Enjoy weilding whatever power that label still has while it has any at all.

                                                      1. 1

                                                        I don’t want to wield power. I want to not be around assholes. Are you really saying you’d rather hang out with white supremacists and gamergater pigs, than take a stand and say, “Those values are not welcome?” How is this even a question?

                                        2. 12

                                          Great illustration of what she wanted to avoid.

                                          1. 8

                                            I don’t get why people don’t want to talk about this? I don’t necessarily agree with wyager, but this type of discourse is pretty healthy IMO. It’s precisely why I prefer this site to HN, because that comment would surely have been censored by the moderators.

                                            1. 5

                                              It’s also completely off topic in the context, which is about using programming for good, and it’s really obnoxiously phrased to boot. Which does matter.

                                              1. 6

                                                In your opinion it is obnoxious, I didn’t find it so bad, but maybe that is just me.

                                                1. 16

                                                  Obnoxious is a bit subjective, but his comment is destructive (as opposed to constructive), and that’s an objective observation.

                                                  How dare people discuss controversial and offensive ideas openly?

                                                  This is sarcastic and demeaning.

                                                  They should be forced underground so those ideas can fester without any external contradiction or moderation.

                                                  Sarcastic and a strawman.

                                                  And of course people with weird, icky politics should be censored from purely technical events.

                                                  Sarcastic and a strawman.

                                                  Who knows what kind of whacky fascist programming paradigms they might force on us otherwise?

                                                  Sarcastic and a strawman.

                                                  Here is a what a more honest, direct version of the post would be:

                                                  I think people should be allowed to express controversial and offensive ideas openly. Otherwise, they’re pushed underground where they fester, instead of being brought out into the light where they are exposed to moderation and contradiction.

                                                  But that wasn’t the comment we got, and for good reason. The more direct version wouldn’t be posted because it is immediately obvious that it isn’t related to this topic. The response to it might be

                                                  The author is just talking about what makes her uncomfortable in most programming community spaces, and why the Recurse center was so valuable for her. She isn’t making an argument or saying you need to feel the same way.

                                                  Thus it is clear that the comment, even in a less caustic form, isn’t particularly relevant. I mean, look at the originally quoted snippet in wyager’s post: it’s just a list of facts.

                                                  1. 0

                                                    “controversial and offensive” is a fluid social contract that changes with audience and context. The big problem is nobody can ever agree on what is controversial and offensive. At the same time people’s nuanced opinions are routinely caricatured as the most extreme version (in both directions, and I’m guilty of it too) then paraded on social media to people with no context.

                                                    1. 3

                                                      I try my best to avoid the words controversial and offensive. Constructive and destructive are less weighed down with baggage and relativity (though there is always room for people to mess with words). Constructive moves the conversation forward. Destructive moves it backwards.

                                                      At the same time people’s nuanced opinions are routinely caricatured as the most extreme version […] then paraded on social media.

                                                      Yeah, I’m a bit detached from it since I don’t use Twitter or Facebook, this being a primary reason. It’s a good example of destructive conversation. Nobody ever learns from it, nothing really improves.

                                                    2. -5

                                                      I’m very sorry I didn’t use the exact rhetorical style you were hoping for. In the future I will avoid using sarcasm and any other rhetorical technique that you don’t like is “destructive”.

                                                      1. 5

                                                        God forbid you say what you mean.

                                                        Come off it, you know it isn’t about what I happen to prefer. If you don’t know better, then you should.

                                                  2. 3

                                                    Hm, I suppose it did completely derail this thread

                                                2. 10

                                                  I doubt it. She’s making political points in the post instead of just talking about good things at Recurse Center. She’s putting it front and center in people’s minds as they read. Anyone reading it deserves to respond to that. That automatically means a thread might get political. It’s definitely her intention.

                                                  Predictably, someone responded to it with thread turning to the tangent. Ive had enough politics for the week, though. So, just pointing out the obvious that statements like hers with accusations against a bunch of programmers or political statements will definitely get a reaction. She couldve got the points across without that but wanted it political.

                                                  1. 10

                                                    She’s not allowed to talk about politics? She makes a fairly common point: she finds the environment around programming often unpleasant or hostile and she wanted to avoid that. So she did. Many people, including myself, are put off by people who sound like that Google Memo person or worse and try to avoid it. If that makes other people uncomfortable, that’s too bad.

                                                    1. 8

                                                      wyager is allowed to counter her politics if she is going to bring it up. It’s not “what she was trying to avoid.” It’s what she or anyone else should expect saying what she did. All Im saying.

                                                      Your initial comment read like one should be able to make negative, political characterizations of programmers with no reply expected.

                                                      1. 10

                                                        I guess for me it’s not who’s “allowed” to “counter” things or not, but is this actually a useful discussion? The comment reads to me as a wordy way of saying “I disagree with your politics”, which, ok, but what does that add? When I read the original post I could already guess some people would disagree, sure. A person doesn’t have to reply to every in-passing comment they disagree with on the internet. It wasn’t even the main point of the post!

                                                        I’ve noticed more discussions here lately being sort of tangential sniping threads. I posted an article a few weeks ago and the entire discussion was a thread about whether people like PDFs. Ok, fine, but I posted a research paper, and the fact that you don’t like PDFs isn’t really on-topic, novel, or interesting. And then there was one last week where someone didn’t like that the title of an article ended with a question mark. I think we could use less of that kind of thing.

                                                        1. 2

                                                          I’ve noticed more discussions here lately being sort of tangential sniping threads. I posted an article a few weeks ago and the entire discussion was a thread about whether people like PDFs.

                                                          I agree with this. It happens in political threads so much I voted against politics in meta. I can’t overemphasize that since, yet again, one disagreement with a political point in a submission created another situation like this. I basically just represent the dissenting side if they’re getting dogpiled or call out double standards when people pretend it’s about logic or civility rather than politics.

                                                          I totally agree, though, about the sniping thing with me preferring some kind of rule against it if not politics in general. Maybe in addition to. It should make for a quality improvement. I’m still fine with tangents, though, so long as they’re adding insight to a discussion like the meta stuff I try to do connecting sub-fields.

                                                        2. 7

                                                          But he didn’t counter her politics, he attacked her. She didn’t call for suppressing anyone’s speech. She simply said she found a certain common mode of speech in tech, a mode I find offensive too, to be unpleasant and wanted to avoid it. There is no sensible way to take issue with that.

                                                          1. 7

                                                            She said this about programming:

                                                            “A lot of bad things in the world have been created by programmers: software for operating drones that bomb civilians, data-mining that violates privacy, companies that “disrupt” by dropping vast amounts of capital in to a market without any intention of building a sustainable business. A lot of bad people love programming: open source thought leaders who harbor deeply racist views, authors of popular databases who discuss their sexist ideas openly, neo-reactionaries leading functional programming conferences. “

                                                            She painted a picture of programming as if it was mostly bad things done by bad people. She painted the picture that people going to thought leaders, doing database work, or getting involved in functional programming were only going to be dealing with the worst. You’d think the profession was one of most horrible ever invented reading that stuff. Don’t ask that she properly qualify that: take her word for it without any of your own comments or reactions. She is attacking most programmers with a programmer, @wyager, reacting to that statement.

                                                            When a man here said something similarly negative about tech industry, several of us countered him pointing out how he was vastly overstating the problem projecting the worst groups onto the average or majority in a way that was unfair to them. Like her, he exclusively considered the bad things and people in tech when judging the field instead of the vast amount of decent or productive things programmers have done many of whom were OK people. We also suggested maybe he avoid the worst if we couldn’t get rid of them since they were ultimately unnecessary to interact with being a drop in the bucket of the many people and resources out there. I don’t remember all these people being there supporting his view shocked anyone disagreed with him. This one was a woman with different set of politics. Let’s see what happened.

                                                            So, wyager responds with a political comment that looks very motivated by emotion lacking qualifiers, consideration to others, or evidence much like Sophie’s. While Sophie’s ad hominem is allowed to stand, you imply his rhetoric shouldn’t be present at all. @jules deconstructs his aiming for purely logical or information content with some strawman which was not done to Sophie’s (or most here with similar viewpoints). @mjn said it was not adding anything new which was true about Sophie’s (or most here with similar viewpoints). These replies are exclusively given to people whose politics each person disagrees with but not people doing same things whose politics each agrees with. They’re held to a lesser standard. So, rather than it being what it appears, these comments aren’t really about addressing civility, information vs rhetorical content, and so on. You all mostly ignore those attributes for comments supporting your type of views while downvoting for opposite naturally leads to dominance of your side in those threads. As in, it’s political maneuvering by folks of one type of views against another rather than quality assurance with any consistency.

                                                            Here’s a few where those writing thought wyager and others disagreeing were supposed to nod saying it makes sense with what happens next being too ironic and obvious:

                                                            “How dare women suggest tech and especially programming is a potentially hostile environment one might not want to enter!” (fwg) (my emphasis added)

                                                            “But one group actually gets to say racist, sexist, discriminatory stuff and remain in charge. The other can hardly speak on panels and post on their blogs without the whole world jumping down their throats.” (jules) (emphasis added)

                                                            “I’m not allowed to respond about politics?” (wyager)

                                                            “I missed the part where anyone asked for you to be deprived of that right.” (vyodaiken)

                                                            You must have missed yourself and the others basically telling him to shut up, the downvotes adding up by a vocal minority, and wyager’s thread collapsing into oblivion where it isn’t seen unless we expand it. Quite unlike most low-info-content, political comments here that are in favor of view’s like Sophie’s not disappearing. Doesn’t look like Sophie or other women with her views would be facing the “hostile environment” with “censorship” and people “deprived” of the right to speak. That contrived scenario is instead what people that agree with her were doing to others who express themselves in a similarly low-evidence, rhetorical way like Sophie or some of their crowd, but with different views. Some of these talk about how everyone is out to get people on their side of spectrum in the same thread where they disappear their opponents’ claims. As opposed to just disagreeing or discussing. Then, they defend the low-quality, repetitive, rhetorical statements of people like Sophie on the same threads since they agree with their views.

                                                            Gotta love politically-motivated double standards for discourse that exclusively benefit one side. Also, people talking about how folks on their side have a lot to worry about as sub-threads their opponents make sink and disappear with some clicks. That’s just too rich in reality distortion.

                                                            1. 6

                                                              You are completely inverting what is happening. Sophie Haskins wrote her opinion. A lot of people here are apparently very angry and want her to shut up. They position their arguments as if she argued for censorship which is a lie and are attempting to shout her down. If you disagree with her opinions, you could say: “My experience is that most programmers are nice” or “It doesn’t matter to me if people who have interesting technical ideas are racists” or otherwise - you know - disagree. But you are not doing that. Instead you are offended that she expressed her opinion and are inventing this whole oppressive regime that wants to suppress your opinions. There is a difference between freedom of speech and impunity. If people want to express racist opinions, for example, they don’t have a right to have other people applaud or pass over in silence or even listen to them. This is exactly the issue of the Google Memo. Its author is free to proclaim all sorts of men’s rights and racist claptrap on his own time, but he has no right to either have his coworkers refrain from reacting to it or have his employer decide that offensive speech in the workplace is ok. The toxic atmosphere of many tech forums is a reality. You should make an effort to understand what Sophie Haskins actually wrote instead of leading a Crusade for the right to be socially acceptable while denigrating others.

                                                              1. 2

                                                                “You are completely inverting what is happening. Sophie Haskins wrote her opinion.”

                                                                Her opinion did not happen in isolation. You yourself mentioned that along with some other people. She is part of a group of people that are concerned with and speaking out about bad actors in tech. That’s all I’m certain about right now. Instead of being fair as you expect of me, she paints an exclusively-negative picture of tech’s contributions and the kind of people in it. As she wonders/worries aloud, what she describes is pretty far from reality of a diverse field with all kinds of people in it that mostly don’t do horrible stuff. Majority just support businesses that provide some value to consumers in the economy. Many are also volunteers in FOSS on code or communities. Many other writers whose work was submitted, including about every woman, had a more balanced view in their writing. The exceptions were those all-in on a specific brand of politics that frames tech in terms of race and gender. She writes more like them.

                                                                “Instead you are offended”

                                                                I’m neither offended, nor did I reply to her. I countered you, not her. I discussed other things as people brought them up. People like her trash-talking whole fields is something people do all the time in many ways. I don’t get offended so much as roll my eyes just to maintain peace of mind if nothing else. Whereas, people expecting nobody to reply to or counter a false, negative claim does concern me. That’s allowing one side to discuss but suppressing another in a place where that can define community norms. I often get involved when that happens. All I was doing initially before other claims appeared.

                                                                Now, you’re talking about racism, denigration, etc that we shouldn’t tolerate. The first to do that was Sophie in her unfair characterization of the field. If you think that’s unfair perception, then you can test if that kind of comment is acceptable to people with opposing views in this thread by going to any forum where they’re dominant submitting this version of Sophie’s claims: a white male is concerned about about going to a workplace, conference, or CompSci courses at specific colleges because “there are some bad programmers” who “hate men” behind filesystem development, “hate whites” organizating at major colleges, and support “radical views” leading community teams of major projects. Each of these people exist in the field with groups of people backing them who will shout down or eject opponents within their area of influence. So, the person you’ll ghost-write as is a non-radical, friendly, white male who is concerned about getting into programming should they run into those people they’ve read about. They just worded it like Sophie did in their context.

                                                                What do you think would happen? We can guess based on prior replies to claims like that. Detractors would show up in large numbers immediately citing evidence showing most people aren’t like what he worries about. They’d say he shouldn’t denigrate entire groups like women or non-whites based on behavior of a small amount. Some would say racism against whites or sexist against men are impossible based on their redefinitions of those words that make it maybe impossible. Others would say it’s unrealistic worrying to point he should know better or even distracts from “real” problems (i.e. their worries). Probably some evil, political intent since only a X-ist would say it. If he said that wasn’t his intention, they’d force him to be clear on a version they were cool with. They’d tell him he should phrase his writing more appropriately so others who are different feel safe in that space. That he must think in terms of how people might read that. The person would be dismissed as a racist, sexist idiot as they dogpiled him like many others have.

                                                                When this woman did it, we’re supposed to assume the best with no concerns about larger implications of what she’s saying in terms of what’s in her head or perception of what she writes. Countering it on just incorrectness like we’d do anything else is now not just dismissing bad ideas or statements: it’s “toxic behavior” that needs to be stamped out. Nah, someone said some political BS on the Internet with disagreement of various quality following. Something we do for any kind of claim here. She doesn’t deserve special treatment or defense of her poor arguments/methods any more than a male does.

                                                                To males, you usually have quick, small rebuttals of ideas you disagree with (esp on tech) where you didn’t do a full exploration of everything they might be thinking before you countered. It’s pretty clear you do a quick take on what they might mean, compare it to your own beliefs, and fire an efficient response. Most people do that most of the time I’d guess. You’re doing the opposite here. Whereas, I’m treating her equally to anyone else by protecting dissent and countering her overly-negative claims like I already did to a man who did the same thing before. Like I’ve done to a lot of people’s claims here and everywhere else. Clearly a political bias in action on other side if expecting her claims to get a level of acceptance or no critique that’s not expected of men here or for other topics. I say they all get treated the same from agreement to critiques or we don’t discuss that stuff at all.

                                                                I’ve said enough for this part of this thread as both our views are plenty clear.

                                                              2. 5

                                                                She painted a picture of programming as if it was mostly bad things done by bad people . . . You’d think the profession was one of most horrible ever invented reading that stuff.

                                                                This is not a reasonable conclusion to draw from the passage you quoted.

                                                                1. 1

                                                                  She painted a picture of programming as if it was mostly bad things done by bad people. She painted the picture that people going to thought leaders, doing database work, or getting involved in functional programming were only going to be dealing with the worst. You’d think the profession was one of most horrible ever invented reading that stuff. Don’t ask that she properly qualify that: take her word for it without any of your own comments or reactions. She is attacking most programmers with a programmer,

                                                                  This conclusion is bonkers.

                                                            2. 2

                                                              She’s not allowed to talk about politics?

                                                              I’m not allowed to respond about politics?

                                                              1. 3

                                                                I missed the part where anyone asked for you to be deprived of that right.

                                                            3. 1

                                                              I doubt it. She’s making political points in the post instead of just talking about good things at Recurse Center. She’s putting it front and center in people’s minds as they read.

                                                              Those “political points” are some of the more important “good things” about the Recurse Center.

                                                            4. -5

                                                              is there a latin phrase for “does your mom know you’re gay?”

                                                          1. 1

                                                            Benchmarking perhaps?

                                                            If you are trying to determine truly which algorithm is faster X or Y…. you had better be sure you are measuring the algorithm not merely whether the caches are hot or not, since the cache effects will dominate.

                                                            Besides you can emulate the effect by filling the caches with other stuff. Just takes longer but still can be done.

                                                            1. 1

                                                              can you get that kind of timing though? All those exploits seem to measure how long clflush takes. I don’t see how you get the same info without it

                                                              1. 4

                                                                Hmm. I thought it was via checking the timing to access a permitted addressable location, but used indirect addressing to load that permitted location into cache based on an indirect value that you are not permitted to access.

                                                                If…

                                                                • you allowed to access location BaseAddress to BaseAddress + 256 * CacheLineSize,
                                                                • you evict all of the allowed range from cache (or flush it from cache, either will do)
                                                                • but you want to know the value of byte at the protected address pointerToByte
                                                                • then attempt to load BaseAddress[ *pointerToByte * CacheLineSize]
                                                                • Which will segfault since you’re not allow to dereference pointerToByte
                                                                • but you had masked and ignored the fault
                                                                • but the damage to the cache has already been done
                                                                • and then walk down for I = 0 to 255 checking the time to access BaseAddress[ I*CacheLineSize]
                                                                • all of which are permitted

                                                                If the time to access BaseAddress[ I0 * CacheLineSize] is significantly faster than the other 255 timings… you know *pointerToByte had value I0

                                                              1. 11

                                                                That’s such a good idea that mainframes have been doing it for a long time: Channel I/O. It’s part of why their throughput was so much higher with 90+% utilization versus single digits that happen a lot with GHz PC’s. The CPU’s for computation just keep running on whatever is ready to compute while the I/O processors soak up all the interrupts running their I/O programs (i.e. channel programs) for that. I read somewhere they also used tricks such as self-modifying code to presumably make them use less RAM or cache. I recommended for years to bring back channel I/O in simplified form so we could use different assurance techniques and hardware mitigations for the two, different styles of programs on top of the performance and simplicity benefits. Embedded is already doing it now with some a mix of high-performance and low-power microcontrollers in one SOC talking this use case.

                                                                Another architecture in high-assurance security that tried to isolate interrupts from main CPU a bit was SEED architecture (see Section 3) used in Sandia Secure Processor, aka “Score” Processor, that natively ran Java bytecode in fault-handling fashion.

                                                                1. 3

                                                                  good point. It’s just that ubiquitous multi-processors makes this relevant to microprocessors again. SOCs with specialized i/o or specialized compute (for dsp) processors have been around for a long time. The problem they always face, however, is due to impedence between the OS for the compute processors and the OS on the microcontrollers both in terms of programming environment and just moving data and control back and forth. IBM did not have that problem with their i/o channels. Also: I don’t want the i/o processors to absorb the interrupts, I want the interrupts to go away. (It is kind of amazing how the last 30 years of microprocessor design has been a rediscovery of all the techniques used in mainframes).

                                                                  1. 1

                                                                    Yesh, the mismatch was a big problem. That still seems true with new work on network-plane functions and OS’s. Im interested in what you think of SEED given your idea of little controllers plus FIFO queues is similar to theirs. Hell, unless I speed-read it wrong, both of yours might be combined where you isolate the main CPU’s while the I/O cores do something like SEED with consistency with main CPU’s data types, memory layout, etc.

                                                                1. 5

                                                                  It seems like all of these issues could be resolved if the processor’s microcode (or the OS’s kernel) had explicit control over cache invalidation. Any microarchitecture researchers here that can comment on the existence of or any research on explicit cache control?

                                                                  I’ve always wondered why the cache can’t be controlled explicitly, even in user mode code. It seems like a lot of performance is probably left on the table by having it automated. It’s like how using garbage collection (GC) can simplify code, but at the cost of throwing away information about memory usage and then having the GC try to guess that information in real time.

                                                                  1. 7

                                                                    My understanding (from David May’s lectures and asking lots of questions) is that memory caches are far too much on the hot path (of everything, all the time) to be controlled by microcode.

                                                                    I remember he mentioned some processor (research? not mainstream, I think) being made with a mechanism wherein you could set a constant in a special register that would be added to the low bits of every physical address before it hit the cache system, so that you could have some user level control of which addresses alias each other. But I got the impression from that conversation that nobody had ever really seriously considered putting anything more than one adder’s worth of gate delays for user control of a cache system because it’s so important to performance and nobody could think of amazingly useful ways that running code could customise cache behaviour that can’t already be achieved well enough anyway using CPU features like prefetches or by cleverly changing the layout of your data structures.

                                                                    1. 1

                                                                      I could image separate load/store instructions for uncached memory access, for example. ARM already has exclusive load/store in addition to normal ones.

                                                                    2. 1

                                                                      The architecture of snooping caches is ridiculously baroque.

                                                                      1. 1

                                                                        Why is that? Afaik the only alternative is directory-based which has higher latency but scales better.

                                                                        1. 1

                                                                          You could design for non-coherent caches with software controlled cache line sync. Most data is not shared but the overhead for shared data is imposed on all transactions.

                                                                          1. 1

                                                                            Software control is probably even slower. One problem is that the compiler has to insert the management instructions without dynamic information like a cache, which means a lot of unnecessary cache flushing.

                                                                            If you go for software controlled, I would rather bet on fully software managed scratch pad memory. There seems to be no consensus how to use that well though.

                                                                            1. 1

                                                                              Very few memory locations are shared - probably fewer should be shared. Snooping caches are designed to compensate for software with no structure to shared variables.

                                                                      2. 1

                                                                        Looking at the Spectre proof of concept code, it looks like there already actually is a way for user mode code to explicitly invalidate a cache line, and it’s used in the attack.

                                                                        Perhaps a microcode patch could use this feature of the cache to invalidate any cache lines loaded by speculative execution?

                                                                      1. 2

                                                                        A competent CPU engineer would fix this by making sure speculation doesn’t happen across protection domains. Maybe even a L1 I$ that is keyed by CPL.

                                                                        I feel like Linus of all people should be experienced enough to know that you shouldn’t be making assumptions about complex fields you’re not an expert in.

                                                                        1. 22

                                                                          To be fair, Linus worked at a CPU company,Transmeta, from about ‘96 - ‘03(??) and reportedly worked on, drumrolll, the Crusoe’s code morphing software, which speculatively morphs code written for other CPUs, live, to the Crusoe instruction set.

                                                                          1. 4

                                                                            My original statement is pretty darn wrong then!

                                                                            1. 13

                                                                              You were just speculating. No harm in that.

                                                                          2. 15

                                                                            To be fair to him, he’s describing the reason AMD processors aren’t vulnerable to the same kernel attacks.

                                                                            1. 1

                                                                              I thought AMD were found to be vulnerable to the same attacks. Where did you read they weren’t?

                                                                              1. 17

                                                                                AMD processors have the same flaw (that speculative execution can lead to information leakage through cache timings) but the impact is way less severe because the cache is protection-level-aware. On AMD, you can use Spectre to read any memory in your own process, which is still bad for things like web browsers (now javascript can bust through its sandbox) but you can’t read from kernel memory, because of the mitigation that Linus is describing. On Intel processors, you can read from both your memory and the kernel’s memory using this attack.

                                                                                1. 0

                                                                                  basically both will need the patch that I presume will lead to the same slowdown.

                                                                                  1. 9

                                                                                    I don’t think AMD needs the separate address space for kernel patch (KAISER) which is responsible for the slowdown.

                                                                            2. 12

                                                                              Linus worked for a CPU manufacturer (Transmeta). He also writes an operating system that interfaces with multiple chips. He is pretty darn close to an expert in this complex field.

                                                                              1. 3

                                                                                I think this statement is correct. As I understand, part of the problem in meltdown is that a transient code path can load a page into cache before page access permissions are checked. See the meltdown paper.

                                                                                1. 3

                                                                                  The fact that he is correct doesn’t prove that a competent CPU engineer would agree. I mean, Linux is (to the best of my knowledge) not a CPU engineer, so he’s probably wrong when it comes to get all the constraints of the field.

                                                                                  1. 4

                                                                                    So? This problem is not quantum physics, it has to do with a well known mechanism in CPU design that is understood by good kernel engineers - and it is a problem that AMD and Via both avoided with the same instruction set.

                                                                                    1. 3

                                                                                      Not a CPU engineer, but see my direct response to the OP, which shows that Linus has direct experience with CPUs, frim his tenure at Transmeta, a defunct CPU company.

                                                                                      1. 5

                                                                                        frim his tenure at Transmeta, a defunct CPU company.

                                                                                        Exactly. A company whose innovative CPU’s didn’t meet the markets needs and were shelved on acquisition. What he learned at a company making unmarketable, lower-performance products might not tell him much about constraints Intel faces.

                                                                                        1. 11

                                                                                          What he learned at a company making unmarketable, lower-performance products might not tell him much about constraints Intel faces.

                                                                                          This is a bit of a logical stretch. Quite frankly, Intel took a gamble with speculative execution and lost. The first several years were full of erata for genuine bugs and now we finally have a userland exploitable issue with it. Often security and performance are at odds. Security engineers often examine / fuzz interfaces looking for things that cause state changes. While the instruction execution state was not committed, the cache state change was. I truly hope intel engineers will now question all the state changes that happen due to speculative execution. This is Linus’ bluntly worded point.

                                                                                          1. 3

                                                                                            (At @apg too)

                                                                                            My main comment shows consumers didnt pay for more secure CPU’s. So, that’s not really a market requirement even if it might prevent costly mistakes later. Their goal was making things go faster over time with acceptable watts despite poorly-written code from humans or compilers while remaining backwards compatible with locked-in customers running worse, weirder code. So, that’s what they thought would maximize profit. That’s what they executed on.

                                                                                            We can test if they made a mistake by getting a list of x86 vendors sorted by revenues and market share. (Looks.) Intel is still a mega corporation dominating in x86. They achieved their primary goal. A secondary goal is no liabilities dislodging them from that. These attacks will only be a failure for them if AMD gets a huge chunk of their market like they did beating them to proper 64-bit when Intel/HP made the Itanium mistake.

                                                                                            Bad security is only a mistake for these companies when it severely disrupts their business objectives. In the past, bad security was a great idea. Right now, it mostly works with the equation maybe shifting a bit in future as breakers start focusing on hardware flaws. It’s sort of an unknown for these recent flaws. All depends on mitigations and how many that replace CPU’s will stop buying Intel.

                                                                                          2. 3

                                                                                            A company whose innovative CPU’s didn’t meet the markets needs and were shelved on acquisition.

                                                                                            Tons of products over the years have failed based simply on timing. So, yeah, it didn’t meet the market demand then. I’m curious about what they could have done in the 10+ years after they called it quits.

                                                                                            might not tell him much about constraints Intel faces.

                                                                                            I haven’t seen confirmation of this, but there’s speculation that these bugs could affect CPUs as far back as Pentium II from the 90s….

                                                                                        2. 1

                                                                                          The fact that he is correct doesn’t prove that a competent CPU engineer would agree.

                                                                                          Can you expand on this? I’m having trouble making sense of it. Agree with what?

                                                                                    1. 3

                                                                                      AMD claims “zero vulnerability due to AMD architecture differences”, but without any explanation. Could someone enlighten us about this?

                                                                                      1. 10

                                                                                        AMD’s inability to generate positive PR from this is really an incredible accomplishment for their fabled PR department.

                                                                                        1. 7

                                                                                          The spectre PoC linked elsewhere in this thread works perfectly on my Ryzen 5. From my reading, it sounds like AMD processors aren’t susceptible to userspace reading kernelspace because the cache is in some sense protection-level-aware, but the speculative-execution, cache-timing one-two punch still works.

                                                                                          1. 4

                                                                                            From reading the google paper on this it’s not quite true but not quite false. According to google AMD and ARM are vulnerable to a specific limited form of Spectre. They’re not susceptible to Meltdown. The google Spectre PoCs for AMD and ARM aren’t successful in accessing beyond the user’s memory space so it’s thought that while the problem exists in some form it doesn’t lead to compromise as far as we currently know.

                                                                                            1. 2

                                                                                              aren’t successful in accessing beyond the user’s memory space so … it doesn’t lead to compromise as far as we currently know.

                                                                                              Well, no compromise in the sense of breaking virtualization boundaries or OS-level protection boundaries, but still pretty worrying for compromising sandboxes that are entirely in one user’s memory space, like those in browsers.

                                                                                            2. 4

                                                                                              I just found this in a Linux kernel commit:

                                                                                              AMD processors are not subject to the types of attacks that the kernel page table isolation feature protects against. The AMD microarchitecture does not allow memory references, including speculative references, that access higher privileged data when running in a lesser privileged mode when that access would result in a page fault.

                                                                                              1. 4

                                                                                                Which is a much stronger statement than in the AMD web PR story. Given that it is AMD, I would not be surprised if their design does not have the problem but their PR is unable to make that clear.

                                                                                              2. 2

                                                                                                AMD is not vulnerable to Meltdown, an Intel-specific attack.

                                                                                                AMD (and ARM, and essentially anything with a speculative execution engine on the planet) is vulnerable to Spectre.

                                                                                                1. 4

                                                                                                  Seems like this is not an ARM or an AMD bug. If so, good news for them and a second even bigger wakeup call for Intel after the management processor debacle.

                                                                                                  1. 2

                                                                                                    How do you judge ARM unaffected? I saw the patch regarding AMD but there is a diff regarding ARM floating around that could be tied to this: https://lwn.net/Articles/740393/

                                                                                                    1. 1

                                                                                                      It sounds like ARM is affected, but the impact is not as severe: http://lists.infradead.org/pipermail/linux-arm-kernel/2017-November/542751.html

                                                                                                      Their benchmarks say that syscalls roughly doubled in cost, but unlike the Intel bug, the cache remains intact. The Intel bug is particularly bad because the page cache has to be fully flushed on each userspace/kernel transition.

                                                                                                      1. 3

                                                                                                        A bit nitpicky, but my read of that is that the bug itself is equally present on ARM as on Intel (unlike AMD, which isn’t affected), but due to ARM’s virtual memory design it’s possible to implement the workaround (PTI) with less of a performance hit. Which is a better outcome for ARM, but more like luck than better QA, since those architectural features on ARM weren’t designed for the purpose of implementing something like PTI, they just happen to be useful for it.

                                                                                                        1. 1

                                                                                                          Ah, you’re right, where I said “bug” I meant “bugfix”.

                                                                                                  1. 6

                                                                                                    I would say Stephen Kell’s work on the “lurking Smalltalk within Unix” has been on my mind the most.

                                                                                                    His papers are full of great information and thoughtful arguments (full list on his personal site). At times, they can be dense, and they might take a few readings to absorb, but that’s true of anything worth reading. It’s all “systems” research and not particularly mathematical, so there shouldn’t be any fundamental barriers.

                                                                                                    I think it is worth comparing Unix to SmallTalk/Lisp. The latter systems definitely have a “purity” to them, but people sometimes overlook that Unix can do the same things. His work on liballocs is about reflection over C data types in Unix processes. It has some philosophical similarity to DTrace.

                                                                                                    FWIW it also reminds me of one of my blog posts, where someone suggested a Lisp-ish solution, and my response is that “Unix can already do that”. [1]

                                                                                                    I think what I like about his work is that it’s inherently “conservative”, trying to understand what existing systems already do – which is surprising in many cases! I think a lot of papers are suggesting new things without adequately understanding what practitioners already do.

                                                                                                    http://www.cl.cam.ac.uk/~srk31/#onward15

                                                                                                    http://www.cl.cam.ac.uk/~srk31/research/papers/kell15towards-preprint.pdf

                                                                                                    Videos:

                                                                                                    https://www.youtube.com/watch?v=saIFAQdxD-U&feature=youtu.be

                                                                                                    https://www.youtube.com/watch?v=LwicN2u6Dro

                                                                                                    [1] http://www.oilshell.org/blog/2017/01/13.html

                                                                                                    1. 3

                                                                                                      Stephen Kell is doing some really interesting stuff, but seems to be largely overlooked. I posted the video accompanying the paper here a bit ago, glad to see another “fan” (if that is the right word).

                                                                                                      1. 1

                                                                                                        Totally out of step so ignored.

                                                                                                    1. 6

                                                                                                      The outstanding thing about this failure is that it was widely and loudly predicted.

                                                                                                      1. 6

                                                                                                        It hasn’t improved much IMO.

                                                                                                        Haskell is normally extremely strong when it comes to well-designed and reusable abstractions. Unfortunately that appears to be more or less absent from the Haskell crypto libraries. There are a few different monad classes for pseudorandom number generation, for example, and all of them are overcomplicated. I often end up just rolling my own (monad, not PRNG) when I need clean random number generation.

                                                                                                        There are a few decent libraries available for sundry concrete cryptographic tasks, but well below par for the Haskell ecosystem.

                                                                                                        In fairness, cryptography libraries are bad across almost all languages, but I expect more from Haskell.

                                                                                                        1. 4

                                                                                                          Is it fair to suggest that Haskell expects more from you, too? I mean, you’re certainly welcome to contribute.

                                                                                                          1. 3

                                                                                                            In fairness, cryptography libraries are bad across almost all languages, but I expect more from Haskell.

                                                                                                            Why? Does Haskell have any special features that make it fundamentally easier to correctly implement cryptography algorithms compared to other high-level languages? Parametricity doesn’t particularly help when all your routines map tuples of integers to tuples of integers.

                                                                                                            1. 4

                                                                                                              Does Haskell have any special features that make it fundamentally easier to correctly implement cryptography algorithms compared to other high-level languages?

                                                                                                              Yes, e.g. QuickCheck, QuickSpec, LiquidHaskell, etc.

                                                                                                              1. 4

                                                                                                                These get you some of the way but there’s a whole class of dude channel attacks we have very little ability to reason about in Haskell. Timing is something I have no idea how to talk about how to make a constant time Integrr multiplication algorithm and be sure it is constant time.

                                                                                                                My dream for this sort of work is a inline-rust package, in the vain of inline-c, so we get memory safety but also a language which better allows timing analysis.

                                                                                                                1. 2

                                                                                                                  inline-rust is something I want in every programming language. :)

                                                                                                                  I think it’s possible that a subset of Haskell in which you only use primitive types and primops (like Word32# and MutableByteArray# and so on) and can’t have any laziness anywhere (because no values are ever boxed) might be more amenable to timing analysis.

                                                                                                                  I’m not sure if there is a pragma or Language setting in GHC that can automatically enforce that everything in a given file uses only primitives and primops.

                                                                                                                  1. 2

                                                                                                                    Check out Jasmin for language implementing high-assurance crypto. Once again, it’s achieved with a language quite opposite of Haskell’s high-level style.

                                                                                                                    1. 2

                                                                                                                      That would be cool indeed—but I can already viscerally imagine the impact on build times from invoking the Rust compiler via Template Haskell… :)

                                                                                                                    2. 3

                                                                                                                      In 2017, QuickCheck is by no means specific to Haskell. Nowadays you can find property-based testing libraries and frameworks for just about any language.

                                                                                                                      As for LiquidHaskell, the real verification is performed by an external SMT solver. So again I don’t think this constitutes a Haskell-specific advantage.

                                                                                                                    3. 3

                                                                                                                      Because Haskell libraries are, in general, much higher quality than libraries in other ecosystems I use. Correctness also isn’t the concern — I have little doubt that the crypto libraries are correct. The concern is usability. Most of the Haskell crypto libraries are clumsy, typically because they just wrap some C library without providing any additional abstractions.

                                                                                                                      1. 2

                                                                                                                        So you are confident the underlying C library is correct?

                                                                                                                  1. 1

                                                                                                                    This week I was reading about the theoretical underpinning of recursive definitions: fixed points. Whenever you define something recursively, you are technically taking a fixed point of a continuous function (yes, you read that correctly!). There is some really cool math behind this called domain theory.

                                                                                                                    Recursive definitions don’t need fixed points. c.f. Roza Peter Recursive functions. Recursion is a simple thing. It’s weird how people take pride in making the simple seem utterly complex. See https://plato.stanford.edu/entries/recursive-functions/ for a nice summary.

                                                                                                                    1. 6

                                                                                                                      Unless you want to implement recursive functions in a pure language. Because you need to have evaluated the function and bound the result to a name in order to bind the name when it occurs within the body, you have a bit of a chicken-egg problem. But you can use the Y combinator (which is really about finding fix points) and a modified version of the recursive function definition to achieve general recursion in a pure (read: lambda calculus) setting (of course, it is usually implemented with mutable cells, as far as I’m aware).

                                                                                                                      It’s not “making something complex out of something simple”, it is an important part of the history of computer science, the discovery that allows Lambda Calculus to achieve general computation and be Turing complete.

                                                                                                                      Getting into the complicated roots that gave rise to something simple != ruining something simple.

                                                                                                                      tl;dr: being dismissive and elitist isn’t a good look

                                                                                                                      1. 3

                                                                                                                        Peter’s work is in mathematics, not programming languages. It is set in the context of an arithmetic approach to computability which is equivalent in expressiveness to the lambda calculus, but much more clear and simple. I wonder how much of the neglect of the Skolem/Peter line of work is due to a preference for complexity, and how much is due to Peter’s gender, but whatever the cause: in mathematics, it is possible to choose to define recursion from basic principles without getting into the complexities that grafting recursion on to lambda calculus entails. The way recursion works in programming languages is, in my opinion, better represented in terms of recursive arithmetic than in the lambda calculus. If you think of a computable function something that can be defined by an algorithm, the apparent paradox of recursion in LC evaporates.

                                                                                                                        No criticism of the poster - that’s the orthodox point of view. But to me it’s a wrong turn.

                                                                                                                        1. 2

                                                                                                                          It would help in a rebuttal like this if you gave examples of people doing exactly what you’re describing. I imagine it’s been done if it’s much easier. Then, any readers more knowledgeable about math or formal methods might look into such things more. We might get another interesting post out of it.

                                                                                                                          1. 1

                                                                                                                            Recursion has been a known technique in mathematics for a very long time. It generally does not involve taking a fixed point on a continuous function and has nothing to do with “domain theory” except in very specialized circumstances. I think that the main result of type-theory/formal methods has been to create an obscure, specialist vocabulary.

                                                                                                                            1. 1

                                                                                                                              Domain theory and fixed points on ωCPOs are only needed in the context of polymorphism. Simply-typed lambda calculus has set theoretic models, after all. I doubt very much that the “arithmetic approach to computability” treats polymorphism.

                                                                                                                              1. 2

                                                                                                                                That’s great. It is interesting that the approach taken to computability by Skolem, which is the primary basis of Godel’s proof, now merits skeptical quote marks!

                                                                                                                          2. 1

                                                                                                                            I wonder how much of the neglect of the Skolem/Peter line of work is due to a preference for complexity, and how much is due to Peter’s gender, but whatever the cause: in mathematics, it is possible to choose to define recursion from basic principles without getting into the complexities that grafting recursion on to lambda calculus entails.

                                                                                                                            Does the Skolem/Peter line account for polymorphism and higher-order functions? If not then there’s no need for the conspiricy theories. They are where the tricky bits of of programming language semantics start, after all. Programming language theorists didn’t make their subject complicated just for the hell of it.

                                                                                                                            1. 1

                                                                                                                              Conspiracy theory? Give me a break. The original claim was: “ Whenever you define something recursively, you are technically taking a fixed point of a continuous function (yes, you read that correctly!).”

                                                                                                                              If it had been: “Whenever you define something recursively in typed lambda calculus (or similar) , you are technically taking a fixed point “, I would not have commented.

                                                                                                                      1. 14

                                                                                                                        “Some security people have scoffed at me when I say that security problems are primarily “just bugs”.”

                                                                                                                        I scoff at him telling me the covert, timing channels caused by Linux threads running on multicore CPU’s with caches are just bugs. They’re actually a side effect of a CPU design that gives Linux much of its desired performance in most scenarios. It’s simultaneously a vulnerability in some others. Stopping them, if even possible, would require more breaking changes to the Linux kernel. I even tried keeping the shared caches off in one or more designs. Anyone seeing the results knows he’d never modify the kernel to force that by default.

                                                                                                                        Some other problems start at the API level where UNIX architecture itself adds risks that a security-focused kernel wouldn’t. Changing it would require changing Linux’s behavior in ways unacceptable to Linus. Yet again, he’d be full of shit if he equated dealing with those security risks with just fixing some bugs in existing, backward-compatible kernel.

                                                                                                                        EDIT: Note that there is overlap between correctness/safety and security. Many if not most security problems do start out as mere bugs in requirements, design, or code. Others take intentional design, though, to work around a malicious, intelligent attacker trying to turn everything against you. Malice poses more issues than accidents. Some even require fundamentally different architectures.

                                                                                                                        1. 5

                                                                                                                          Etiquette aside, I’d still say such things are “just bugs”. I suppose different people use the word differently, but to me it’s basically “behaviour/outcome/situation generally agreed to be undesirable”. I think there’s general agreement that vulnerability to timing attacks is undesirable. In your example, it sounds like fixing those bugs would break backwards compatibility and lower performance; two things which are also generally agreed to be bad and hence are (just) bugs.

                                                                                                                          When we have to make tradeoffs, the best approach is often to report the bug (so we have a historical reference to point to and add subsequent ideas to), mark it as “won’t fix” and move on. This seems to be what Linus is doing, but using more offensive language (which is an important, but orthogonal, debate).

                                                                                                                          1. 15

                                                                                                                            Traditionally, we called something a bug if it was a mistake we didn’t want. If it was there by design, it wasn’t a bug. The shared resources that give rise to covert channels weren’t bugs. They were straight-up design decisions thought to be beneficial. You’re right about making and documenting tradeoffs. We need to do both. I think the general usage of bug is more narrow to most developers, though, versus what you or Linus described. It’s almost always what they didn’t want.

                                                                                                                          2. 3

                                                                                                                            I’m not sure what your point is. All engineering involves tradeoffs. Performance versus covert channels enabled by shared caches is an easy tradeoff in a general production operating system. Using POSIX versus some non-standard API is a similarly easy tradeoff. The security issues POSIX introduces are a penalty for making an operating system that runs useful applications.

                                                                                                                            1. 2

                                                                                                                              He equated security vulnerabilities with bugs. I countered they’re different with some vulnerabilities not seen as bugs but intentional design decisions. That was the point.

                                                                                                                              1. 4

                                                                                                                                But in this case, the “hardening” was looking for things that were almost certainly mistakes - bugs. There are security problems caused by deliberate design decisions too I agree.

                                                                                                                          1. 22

                                                                                                                            Is anybody else getting tired of this guy? It seems like he gets a pass for being an asshole because he’s been an asshole for longer than people have cared about being an asshole. This behaviour would violate the code of conduct of any sensible project.

                                                                                                                            1. 20

                                                                                                                              Yeah you can be direct without being a dick. “I won’t merge something that breaks the kernel, please find some other way.” would have worked just fine.

                                                                                                                              1. 18

                                                                                                                                And in fact, that’s how it works most of the time.

                                                                                                                                Linus’ reputation as an asshole is due, in part, to selection bias, and the high profile of Linux. Thousands and thousands of merges go into the kernel all the time without a problem, and without Linus going off on a rant.

                                                                                                                                I don’t work on the kernel, but my observation has been that the big blow ups seem to only come after people repeatedly break the rules. I won’t say Linus handles it well, but I don’t think he’s as bad as some maintainers in some smaller open source communities.

                                                                                                                                1. 6

                                                                                                                                  It’s survivor bias, not selection bias. He also owes a lot of it to businesses that got his kernel out there plus make up a lot of contributions. It’s not as if him being an asshole combined with some FOSS contributors that loved that asshole equals success of Linux.

                                                                                                                                  1. 6

                                                                                                                                    Not that it makes a difference, but I believe I was correct in calling it selection bias. Nobody will post to Lobste.rs or write an article when Linus is being nice, so in general people only see the bitchy posts, hence the bad reputation.

                                                                                                                                    1. 7

                                                                                                                                      I don’t think that’s strictly true.

                                                                                                                                      I think there are a few salient points here:

                                                                                                                                      • If you just go by his posts that make it to lobste.rs/hacker news/reddit, you’ll get an extremely skewed view of Linus’s attitude. The vast majority of his communications are somewhere between polite and blunt. (Remember, his job basically entails reading and writing emails all day every day, and he writes something social-media worthy at most monthly.) To the best of my knowledge, he’s never exploded at a kernel newbie, only at long-time kernel hackers.
                                                                                                                                      • That said, his attitude is still incredibly problematic. It’s been demonstrated to drive away talented developers. It drives away new developers, even if they are not themselves directly getting yelled at by Linus.
                                                                                                                                      • Linux’s success is a complicated beast dependent on a whole host of factors, including to varying extents all of good timing (a few years later and BSD would have made it through its legal troubles), technical talent, corporate support, sheer dumb luck. Linus’s attitude certainly had an impact, but where it slots in that long list is impossible to say; I think it was a negative factor and thus, based on Linux’s evident success, had a relatively low impact, but obviously that’s pure speculation.
                                                                                                                                      1. 2

                                                                                                                                        Even adding in that first bullet from you and jlarocco, I think I still agree with about everything you said. It’s consistent with my position that he goes too far with the bad stuff.

                                                                                                                                    2. 5

                                                                                                                                      I have never ever behaved this way to my colleagues, and I suspect you haven’t either. So to call it selection bias is to ignore that he’s doing something that the vast majority of us would be fired for. It’s not okay to rarely shout down your coworkers. Sure it’s better to do it rarely than every single day, but the fact that we keep examples of this is a clear example that he has no checks and balances.

                                                                                                                                      1. 1

                                                                                                                                        And generally these are people who have a corporate position that makes them believe they are entitled to break the rules.

                                                                                                                                    3. 45

                                                                                                                                      The only thing I’m getting tired of is people pulling the odd email out of thousands and wringing hands over how mean Old Man Linus is.

                                                                                                                                      Maybe folks should reflect on how, after 25 years of loud and blatant protestations by Linus, fucking morons keep trying to merge the same types of userspace breaking bugs.

                                                                                                                                      Maybe, sometimes, a broader more accepting tent isn’t the answer.

                                                                                                                                      1. 27

                                                                                                                                        If Linus being famously mean for 25 years hasn’t produced a productive culture, perhaps it’s time to try a new approach.

                                                                                                                                        1. 26

                                                                                                                                          But it has produced a plenty productive culture - a culture that produces a better end product than many more professional environments, in fact.

                                                                                                                                          1. 5

                                                                                                                                            Professionally “rewarding”, still toxic at the personal end. It’s mentioned in this article mentioned at the main link.

                                                                                                                                            1. 3

                                                                                                                                              Professionally “rewarding”, still toxic at the personal end. It’s mentioned in this article mentioned at the main link.

                                                                                                                                              And little of value was lost. This is how Sarah Sharp tried to publicly humiliate the guy with a wife and daughter - https://lwn.net/Articles/559077/ :

                                                                                                                                              *Snort*. Perhaps we haven’t interacted very often, but I have never seen you be nice in person at KS. Well, there was that one time you came to me and very quietly explained you had a problem with your USB 3.0 ports, but you came off as “scared to talk to a girl kernel developer” more than “I’m trying to be polite”.

                                                                                                                                              I disagree with labelling things and people as “toxic” in general, but I’ll choose Linus over Sarah any day: https://linux.slashdot.org/story/15/10/05/2031247/linux-kernel-dev-sarah-sharp-quits-citing-brutal-communications-style

                                                                                                                                              1. 12

                                                                                                                                                Did we read the same mail? Did you read any of the quoted parts from Linus? A guy that refuses to even consider treating people with respect is a clear-cut asshole. I’d much rather work with someone that talks about treating people with dignity than someone that refuses to consider the concept seriously.

                                                                                                                                                1. [Comment from banned user removed]

                                                                                                                                                  1. 16

                                                                                                                                                    You got it backward. Linus is the special snowflake here if he can continue to be that unnecessarily-abusive publicly with no consequences just because his work just happened to get popular in that way. Expecting people to deliver constructive criticism or not chase away good talent is the default for those managing good teams in most places. A manager/leaser simply getting off on abusing those doing work is adding nothing of value to the project in doing so.

                                                                                                                                                    Instead of a snowflake, people just expect to be treated with decency by default with shitflakes like Linus able to get away with being exceptional jerks.

                                                                                                                                                    1. [Comment from banned user removed]

                                                                                                                                                      1. 2

                                                                                                                                                        That would be a good trait if he had it. Instead, he’s still pushing monoliths in unsafe languages with limited metaprogramming. Took forever to get it reliable versus Minix 3’s a few developers in a few years. So much for his decisions being merit-based. ;)

                                                                                                                                                        1. 3

                                                                                                                                                          he’s still pushing monoliths in unsafe languages with limited metaprogramming

                                                                                                                                                          Linux is modular.

                                                                                                                                                          There was no serious alternative to C back in 1991 and, as much as I love metaprogramming, it increases the amount of surprises for the programmer.

                                                                                                                                                          Took forever to get it reliable versus Minix 3’s a few developers in a few years.

                                                                                                                                                          It’s easy to be reliable when your biggest deployment is on Intel’s spy chip.

                                                                                                                                                          Minix was little more than an emulator pet for a few CS students, before that. Low on drivers, low on performance, low on functionality. You might as well compare Linux with L4…

                                                                                                                                                          1. 4

                                                                                                                                                            It’s modular in kernel mode for full compromise and crash potential. There were a bunch of memory-safe languages used in other OS’s before 1991, esp from Wirth, whose safety could be selectively disabled. Worst case compile them to C to leverage compilers while dodging programmer-related problems like some projects did.

                                                                                                                                                            “It’s easy to be reliable when your biggest deployment is on Intel’s spy chip.”

                                                                                                                                                            DOD is one of Red Hat’s biggest customers and sources of funding for contributions to Linux. Lots of kernel bugs were also found by analysis and testing tools from CompSci similarly funded by US-government. I agree that helps but a company just freeloaded off Minix 3. Should’ve went with GPL.

                                                                                                                                                            “Minix was little more than an emulator pet for a few CS students, before that. Low on drivers, low on performance, low on functionality. “

                                                                                                                                                            You should’ve seen the first Linux. It was similar but crashed more. Meanwhile, several years earlier than 1991, QNX folks were building a microkernel-based UNIX that became reliable as hell, fast, and deterministic. The Playbook versus iPad comparisons were the first I got to see with multimedia after BeOS. In both, the multithreading without stalling abilities were mindboggling versus the better-funded, older competition. My Linux systems can still come to a crawl over misbehaved applications to this day. Things that the others made highly unlikely with better architecture.

                                                                                                                                                            You’re arguments were who used it and features that came with labor put in. Either one of those put into better architecture would’ve made an even better Linux. So, they’re neutral points. Mine was Linus wouldn’t listen anyway. If you believed him in Linus vs Tannenbaum, things like the Playbook w/ QNX and BeOS would’ve been impossible to program easily or perform well. Way wrong cuz he’s about politics and arbitrary preferences as much as merit. Like most developers.

                                                                                                                                          2. 18

                                                                                                                                            It has, though?

                                                                                                                                            What I meant was that newcomers seem to be ignoring 25 years of norms and others being surprised when those newcomers–who are doing dumb things–are told to knock it off.

                                                                                                                                            1. 6

                                                                                                                                              Yeah, With “productive”, which seems to have been a really poor word choice, I meant one that didn’t have to teach the same thing over and over in the way you described. Sorry to you and the other responders for the confusion.

                                                                                                                                              1. 2

                                                                                                                                                Thanks for the clarification, and agreed.

                                                                                                                                            2. 13

                                                                                                                                              Linux is the most successful, widespread operating system kernel of all time. You can say the man’s rude, but you can’t say the results demonstrate unproductivity.

                                                                                                                                              1. 2

                                                                                                                                                The others from Microsoft, Apple, and IBM also were driven by assholes who were greedy on top of it. Just throwing that in there even though Im anti-Linus in this debate.

                                                                                                                                            3. 21

                                                                                                                                              There’s honestly no good reason to be hostile. It doesn’t actually help reduce the problem, evidenced by the fact that what he has done hasn’t worked. Instead they need processes for check in, code reviews, and linters. Linus should be delegating more as well if this is bothering him so much.

                                                                                                                                              1. 4

                                                                                                                                                That’s not a theory supported by the evidence.

                                                                                                                                                1. 3

                                                                                                                                                  What he’s done hasn’t worked. Most contributions are from businesses. Many good talent say they avoid it. That seems to be evidence of something. Meanwhile, the Rust crowd managed to get piles of people early on for one of the hardest-to-learn languages I’ve seen in a while. They used the opposite approach. Now, two projects or even ten aren’t a lot of datapoints for an empirical assessment of which method is working. Oh, what can we do to see how much or how little damage Linus is doing to kernel in terms of lost contributions?

                                                                                                                                                  Oh wait, it turns out researchers in universities have been doing both observational studies and surveys on large numbers of organizations and people for decades covering this very thing. A key question was which management styles have most positive impact. One thing that’s pretty consistent in the research is that people working for assholes were much more likely to half-ass their work on purpose, dodge doing work, or even sabotage that person where possible. People working for those that treated them with respect or constructive criticism did better work. That kept being a result of most studies. Crazy to ignore decades of consistency in human behavior when trying to decide how best to treat them in a FOSS project for achieving goals such as more contributors, higher-quality contributions, and so on.

                                                                                                                                                  The theory supported by the evidence is that Linus’ style when doing what’s in the OP is unnecessarily rude and destructive. The evidence says he’ll loose a lot of talent since that talent just needs a worthwhile project to work on rather than his project. Just like he feels he doesn’t need them. Objectively, such a result is bad for the project if one wants it to improve. He might be willing to sacrifice features, QA, and so on for the personal enjoyment of those insults. That is what he’s doing. Anyone defending him shouldn’t pretend otherwise. Instead, they should shift to their actual argument of “I know we’re losing contributors that could’ve made the Linux kernel even better. The main reason is Linus’s personal preference. We think that’s a good status quo to maintain because…” That does look to be a harder position to defend, though, on either technical or moral grounds.

                                                                                                                                                  1. 1

                                                                                                                                                    Just to say, would be nice if you posted source of the research you’re referencing.

                                                                                                                                                    1. 3

                                                                                                                                                      I’m too much of an overloaded procrastinator to give it to you. I’d have to resurvey it as I bet the Web 1.0 sites are gone, new ones have formed, and I’ll have to dig through tons of noise. I do plan to either find or do another meta study on that in future since it’s so critical. For IT, I always told people to read the PeopleWare book and Dale Carnegie’s How to Win Friends and Influence People. Lots of managers hand out the latter believing it’s great advice. Implies they think blunt assholes are non-ideal. The No Asshole Rule book also cited a bunch of studies on effects of people being assholes downward or upward in an organizations recommending against it.

                                                                                                                                                      I do need to recollect the studies, though. Plus do a new bookmarking solution I’ve been procrastinating on since Firefox is full to point it constantly looses bookmarks lol.

                                                                                                                                            4. 8

                                                                                                                                              Linux would not be what it is today if they would be “merge-first-fix-later” type code-conducted safe place for noobs to mess around in.

                                                                                                                                              1. 16

                                                                                                                                                If you’re going to be derogatory, safe space is properly mocking.

                                                                                                                                                There is a near infinite gap between “let the noods do whatever they want to the codebase” and “don’t degrade people’s character because they submitted a PR you dislike”.

                                                                                                                                                I guess some people are just more tolerant of a project leader taking their anger and frustration out on people trying to get involved?

                                                                                                                                                1. 20

                                                                                                                                                  The problem isn’t that he wouldn’t merge the person’s code. The problem is the unprofessional way that he treats other people. The fact that you think the problem is that he wouldn’t merge the code is either deeply concerning or purposefully avoiding the issue.

                                                                                                                                                  1. 7

                                                                                                                                                    If you actually read the damn thread, you see that Linus actually explained this pretty clearly: http://lkml.iu.edu/hypermail/linux/kernel/1711.2/01357.html

                                                                                                                                                    The person decides to ignore Linus and Linus gets angry, I really don’t see a problem here.

                                                                                                                                                    1. 2

                                                                                                                                                      Ok, I read the full thread. It’s more reasonable in the other parts. Kees seems to have put some work into making it acceptable. Later on, I see someone do what Linus should’ve done in the first place in giving specific details about where he’s coming from in a way that wouldn’t have bothered me as a contributor:

                                                                                                                                                      http://lkml.iu.edu/hypermail/linux/kernel/1711.2/03732.html

                                                                                                                                                      After seeing that, I’m more annoyed by whoever was half-assing security contributions to the kernel so much that it will be hard for worthwhile contributions to get in.

                                                                                                                                                      1. 1

                                                                                                                                                        Yeah, same here - I think there are just special snowflakes who think that human psychology has anything to do with whether or not the kernel is going to continue running reliably for me, the kernel user. Guess what snowflakes, nobody cares about the feelings if the product doesn’t work.

                                                                                                                                                        Not to mention, this is only the squeaky wheel - Linus has been nice and professional and accommodating many, many times over. Many more times over, in fact. It just never makes the news ..

                                                                                                                                                    2. [Comment removed by author]

                                                                                                                                                      1. 3

                                                                                                                                                        I’m not used to navigating the CVE database, is there an easy way to restrict issues to just the Linux kernel?

                                                                                                                                                    3. 6

                                                                                                                                                      Nope. I think he’s great. And I’m very glad that he is stewarding the Linux project to this day. Whether you think its ‘nice’ or not, his management of the Linux kernel has produced superlative results - and sometimes, in the thick of the mob, you have to be an asshole to get people to work the way they need to work to continue producing quality results.

                                                                                                                                                      What I am sick of, is petulant snowflakes who think they know better than Linus how to manage the 1000’s of developers that want to have their fingers in the pie. The kernel doesn’t care about your feelings, and neither do 99.9999% of the kernels really important people: its users.

                                                                                                                                                      1. 4

                                                                                                                                                        Since when did asking to be treated with the bare minimum of basic human decency become a “special snowflake” thing? Nobody wants Linus to write “You’re so wonderful, and special, and beautiful, but I cannot accept this patch because, despite how wonderful and unique it and you are, it just won’t work with Linux’s performance requirements.”

                                                                                                                                                        NOBODY is asking for that. So I don’t get why I keep seeing “special snowflake” thrown around. I guess it’s just a strawman? (OH WAIT I GET IT NOW!)

                                                                                                                                                        Notice how your comment is verging on “nobody can critique the way Linus runs the project (that we all rely on in myriad ways)”. Aren’t snowflakes the ones who want to shut people down and stop discussion? Isn’t it the “snowflakes” that want to prevent people from having to hear mean things? (Like, stop taking your anger out on contributors because you’re not 7 anymore).

                                                                                                                                                        Doesn’t it kind of seem like–and bear with me here, I know it hurts–that you’ve become the special snowflake? Stifling discussion, needing a space where someone you look up to is immune to criticism, insulting people who are just trying to have a conversation?

                                                                                                                                                        Isn’t it your post that seems to be the petulant one here?

                                                                                                                                                        1. 2

                                                                                                                                                          Since when did asking to be treated with the bare minimum of basic human decency become a “special snowflake” thing?

                                                                                                                                                          Precisely at the point where well-established ground rules, respected by the rest of us, were continually broken with no regard for the work load incurred, nor the hassle of having to deal with all the noise. Or did you miss the part where known, functional, productive policies were repeatedly ignored in the rush to get this patch included in the next release?

                                                                                                                                                          Its one thing for a contributor to feel like they should be treated with respect as a special snowflake whose feelings are more important than the work, or in this case non-work, that they are contributing to the lives of others; its another thing to respect the very foundations of the activity from which one is attempting to derive that respect in ones own life.

                                                                                                                                                          Perhaps you missed the part where this could have been a disaster for the Linux kernel, and a lot of time was wasted having to deal with it, since the original developer decided to ignore the policies, well-since established as being necessary to the task of managing the Kernel patch integration process?

                                                                                                                                                          “nobody can critique the way Linus runs the project (that we all rely on in myriad ways)”

                                                                                                                                                          Well, whether you like it or not, its the truth: Linus has guided the way through decades of these kinds of events, and we have an extraordinarily powerful tool that has revolutionised computers as a result. Perhaps you ought to consider whether the quality of your own work and contributions might improve if you harden up a little and don’t take offence so easily. Time and again, this proves to be true - in the real world and in this fantasy land we’re currently sharing as participants in this thread.

                                                                                                                                                          The poster involved in this incident seems to have accepted that they were, in fact, violating a fundamental policy of the Linux kernel developer group, and has addressed the issue in a way that moves things forward - how, exactly, would Linux kernel development be pushed forward by your insistence at being treated like a snowflake?

                                                                                                                                                          A mistake was made - the policy was not followed - and Linus jumped on the guy. He’ll never do it again, many many others have also learned the importance of the check-in policy (Rule #1: Don’t Break The Kernel.) and he doesn’t seem at all worse for the wear, personally, as a consequence; its really only folks such as yourself who are getting so easily upset about this, because Linus somehow doesn’t conform to your particular cultural ideal.

                                                                                                                                                          Perhaps you haven’t been following Linux kernel development for long, or with much attention - there are many, many counter-cases of Linus having great relations with the developer group, which don’t seem to figure into your equation that “Linus is rude”. He’s precisely rude when he needs to be, and an awesome, polite, respectful individual, all the while. Please try to avail yourself of that truth before you continue ad-hoc insults and insinuations against random Internet strangers. It hurts my feelings to be challenged by an ignoramus.

                                                                                                                                                          Doesn’t it kind of seem like–and bear with me here, I know it hurts–that you’ve become the special snowflake?

                                                                                                                                                          Are you assuming that I wouldn’t want to be called a snowflake when appropriate? Because, I’m quite a snowflake, and often, when its appropriate or otherwise. Absolutely nothing with being called one, when you are one. Or, is there some other kind of kettle we should be boiling for tea?

                                                                                                                                                      2. 2

                                                                                                                                                        If a security vulnerability is introduced by design it’s still a bug. It just means the mistake was made at design time as opposed to implementation time.

                                                                                                                                                        1. 2

                                                                                                                                                          In all sincerity here, what would it mean for a person to say, “I’m not going to tolerate this behavior?”

                                                                                                                                                          Linus would still own the Linux trademark. He’d still control the mainline kernel repo. The “lieutenants” that manage various areas of the kernel would still control those areas and report to him. It seems very unlikely that they would support a coup. (Anyone who had a major problem with Linus’ behavior wouldn’t have lasted long enough to get one of the top positions.)

                                                                                                                                                          As a user, you can choose not to use or support Linux. But as a user, you don’t get to change the way the project runs.

                                                                                                                                                          I think the most extreme option you’d have would be to fork the source code and try to attract both a large developer community and a large user base on the basis of running a more inclusive community. But there’s a chicken-and-egg problem to that approach.

                                                                                                                                                          There’s an implicit hypothesis that says, “A more inclusive community will produce a better kernel.” Let’s assume that proves to be true. Some users would switch on that basis alone, but most will wait to see practical benefits. Since it would still take time for a fork to produce tangible benefits, you’d have to attract developers and users with the promise alone. We have a small set of cases to examine, where a major open source project was forked with the intention of creating a better community. It appears that the majority of users will hang back with a “wait and see” approach.

                                                                                                                                                          I really don’t know what kind of negative feedback anyone could apply to Linus that would have an effect.

                                                                                                                                                          1. 1

                                                                                                                                                            Working code doesn’t care about your feelings. Working code is completely orthogonal to human emotions. My computer runs whether I’m crying or not.

                                                                                                                                                          2. 0

                                                                                                                                                            This behaviour would violate the code of conduct of any sensible project.

                                                                                                                                                            Maybe you should run a kernel made by the CoC crowd. I’ll stick with the foul-mouthed guy.

                                                                                                                                                            1. 5

                                                                                                                                                              The only one I know off top of head is Redox OS since it used Rust CoC. It’s got potential but is alpha software. All the rest that are good seem to be made with different philosophies with a range of civility.

                                                                                                                                                              I am interested if anyone knows of another usable OS made with all activity enforced with a CoC a la Rust/Redox. At least the basic console or GUI apps so it’s usable for some day to day stuff.

                                                                                                                                                                1. 1

                                                                                                                                                                  Good catch. This one…

                                                                                                                                                                  “There can be no place within the FreeBSD Community for discriminatory speech or action. We do not believe anyone should be treated any differently based on who they are, where they are from, where their ancestors were from, what they look like, what gender they identify as, who they choose to sleep with, how old they are, their physical capabilities or what sort of religious beliefs they may hold. What matters is the contribution they are able to make to the project, and only that.”

                                                                                                                                                                  …is where the politically-motivated try to find a lot of wiggle room for censorship as beliefs vary. One reason I collect these is so we can look back at data in commits or on forums to see what impact they have. Note I said OS that was made with the activity enforced this way. Some could have it added as an evolution of moderation policies well after it’s a successful project that was built on a different philosophy. How long has that CoC been in FreeBSD?

                                                                                                                                                                  1. 4

                                                                                                                                                                    How long has that CoC been in FreeBSD?

                                                                                                                                                                    It’s relatively new - it was announced in July 2015. Even before the CoC was added a few developers were ejected for abusive behaviour (I’m not going to dig those out, but you can find references online).

                                                                                                                                                                    1. 2

                                                                                                                                                                      Ok, so it’s not an example of an OS developed under the CoC. It was a highly-mature OS that probably started with really different kinds of people just because they were the norm for early days of BSD’s and Linux. With your comment, they were just using common sense of ejecting folks who were obviously abusive without anything more formal or constraining. That still leaves Redox as the only one I know that had the policy and supporters of it from the start.

                                                                                                                                                                      The main way I think this can be tested is with frameworks or libraries that are in same language and crowd. Basically, keep the situation as close as possible so about the only strong variable is community style. Should be easier with libraries or frameworks since they’re more accessible to new contributors. People are always doing more of those.

                                                                                                                                                          1. 6

                                                                                                                                                            The fact is that Torvalds is correct. He ’s pushing back against the kind of stupid bureaucratic messing about that passes for engineering in many large organizations.

                                                                                                                                                              1. 19

                                                                                                                                                                This is a fantastic and insightful analysis. You could debate it, of course, but the fact that Lisp emerged when the alternatives were so low-level is amazing; the comparison to calculus is a good one.

                                                                                                                                                                1. 3

                                                                                                                                                                  Following the Maxwell equations analogy: if Lisp is analogous to vector calculus, today we have programming language analogues of tensor calculus, differential geometry, de Rham cohomology, etc.

                                                                                                                                                                  1. 3

                                                                                                                                                                    Which languages are they? Almost all currently-used languages I can think of come from the Algol stable, rather than Lisp; to use the analogy they are built from counting pebbles rather than vector calculus. Clojure and Elixir seem like the only counterexamples I can recall.

                                                                                                                                                                    1. 6

                                                                                                                                                                      Tensor calculus makes finer distinctions that vector calculus (at least as taught to engineers) totally glosses over: contravariant vs. covariant indices, tensors vs. pseudotensors vs. tensor densities, etc. These distinctions are useful, because they prevent you from wasting time saying things that are geometrically and physically nonsense. Does this remind you of a certain language feature that causes endless online debates, and neither Clojure nor Elixir has?

                                                                                                                                                                      If Lisp is analogous to a tool that was good enough to formulate classical electrodynamics, then we today have analogues of tools that are good enough to formulate general relativity, quantum mechanics, etc.

                                                                                                                                                                      1. 2

                                                                                                                                                                        Does this remind you of a certain language feature that causes endless online debates, and neither Clojure nor Elixir has?

                                                                                                                                                                        Wait, I thought Clojure does have contracts

                                                                                                                                                                        1. 3

                                                                                                                                                                          Runtime-enforced contracts at best distinguish wanted from unwanted meanings. They don’t distinguish the presence from the absence of a meaning (i.e., nonsense). For if there were no meaning, there would be no program to run.

                                                                                                                                                                          1. 2

                                                                                                                                                                            The way I think of it is that runtime-enforced contracts allow you to fail quickly in response to bad data. Check a POST body against a JSON schema and return 400 if it doesn’t match, and the like. Compile-time “contracts” (i.e. types) allow you to be certain that the data you are handling in a given function or module is valid.

                                                                                                                                                                            Runtime contracts could be seen as protecting against defects in the type system. “Integer” may be the most limiting type expressible in a given language, but a contract can say “this value is between 0 and 9.”

                                                                                                                                                                            1. 1

                                                                                                                                                                              Compile-time “contracts” (i.e. types)

                                                                                                                                                                              “Compile-time contracts” needn’t be types. It could be something you proved on your own the traditional way, i.e., using paper and pen. Why limit yourself to the subset of mathematics that one specific tool (a type checker) can handle?

                                                                                                                                                                              Runtime contracts could be seen as protecting against defects in the type system. “Integer” may be the most limiting type expressible (…)

                                                                                                                                                                              This is a virtue, not a defect. At some point you start hitting diminishing returns when you try to prove everything with types. Other mathematical tools are more flexible and scale better to more complex scenarios.

                                                                                                                                                                              1. 4

                                                                                                                                                                                To be frank, I don’t trust paper and pen proofs. You can prove something ten ways from Sunday, and then get a NULL pointer where you don’t expect it and blow up. I think of the Knuth quote, “Beware of bugs in the above code; I have only proved it correct, not tried it.” That’s not to say that verification and proof outside of the code is valueless (certainly not), but if I’m relying on it I would also encode my assumptions in runtime contracts if they exceed the power of the type system to encode.

                                                                                                                                                                                1. -4

                                                                                                                                                                                  To be frank, I don’t trust paper and pen proofs.

                                                                                                                                                                                  This is only natural if you don’t know mathematics. The fix is obvious: learn mathematics.

                                                                                                                                                                                  1. 9

                                                                                                                                                                                    I’ve got a PhD in mathematics and therefore the number of mistakes I’ve made in so-called “proofs” is staggering.

                                                                                                                                                                                    1. 6

                                                                                                                                                                                      There’s a reason we left pen and paper proofs for mechanically-checked proofs with minimal TCB’s. People were screwing up too much. You should thoroughly read this paper by Guttman:

                                                                                                                                                                                      http://www.cypherpunks.to/~peter/04_verif_techniques.pdf

                                                                                                                                                                                      Key except illustrating the problem:

                                                                                                                                                                                      “The problems inherent in relying purely on a correctness proof of code may be illustrated by the following example. In 1969, Peter Naur published a paper containing a very simple 25-line, text-formatting routine which he informally proved correct. When the paper was reviewed in Computing Reviews, the reviewer pointed out a trivial fault in the code which, had the code been run rather than proven correct would have been quickly detected. Subsequently, three more faults were detected, some of which again would have been quickly noticed if the code had been run on test data.

                                                                                                                                                                                      The author of the second paper presented a corrected version of the code and formally proved it correct (Naur’s paper only contained an informal proof). After it had been formally proven correct, three further faults were found which, again, would have been noticed if the code had been run on test data.

                                                                                                                                                                                      This episode underscores three important points made earlier. The first is that even something as apparently simple as a 25-line piece of code took some effort (which eventually stretched over a period of five years) to fully anaylse. The second point is that, as pointed out by DeMillo et al, the process only worked because it was subject to scrutiny by peers. Had this analysis by outsiders not occurred, it’s quite likely that the code would’ve been left in its original form, with an average of just under one fault for every three lines of code, until someone actually tried to use it. Finally and most importantly, the importance of actually testing the code is shown by the fact that four of the seven defects could have been found immediately simply by running the code on test data.”

                                                                                                                                                                                      Mathematics alone won’t help if one is verifying algorithms and/or code. There’s many ways to screw up. The correct solution might have to take a heavy amount of proofs that are then thoroughly checked by human minds and/or tools. Most people working alone on pencil and paper might be making serious mistakes that will end up in the codebase.

                                                                                                                                                                                      See also my submission Don’t Trust the Math:

                                                                                                                                                                                      https://pastebin.com/zz7YZZUk

                                                                                                                                                                                      1. 2

                                                                                                                                                                                        These are different problems. Paper and pencil proofs are to convince people and to understand the principles. Mechanical proofs are for details - but they can be wrong on bigger issues. The big limitation right now is we don’t have good ways of thinking about complex state systems mathematically.

                                                                                                                                                                                      2. 6

                                                                                                                                                                                        I majored in mathematics and don’t think it obviates the need for careful testing.

                                                                                                                                                                                        1. 5

                                                                                                                                                                                          “Mathematics” does not govern software. Software and hardware do. There are edge cases that writing a mathematical proof (on paper!) does not cover. Many of them. That’s the meaning of the Knuth quote I included above. Unless you think he doesn’t know math, either.

                                                                                                                                                                                          1. 2

                                                                                                                                                                                            I’d argue that people govern software - people, in all their irrational, legally mandated requirements that have to be satisfied before they’ll sign the functional acceptance agreement!

                                                                                                                                                                                          2. 5

                                                                                                                                                                                            Condescension is not knowledge. Real mathematicians know that proofs can be wrong. Real engineers/scientists know that correct proofs may be for mathematical models that miss some aspect of the physics. Being able to use some terms from category theory doesn’t make you qualified to be in either one of those categories.

                                                                                                                                                                              2. 6

                                                                                                                                                                                Lambda functions are fairly widely implemented in most mainstream languages by now (C#, C++ IIRC, Rust, PHP)

                                                                                                                                                                                While they are still mostly Algol-like, I believe that a lot of the things LISP invented/discovered have slowly bled into other languages we use today.

                                                                                                                                                                                1. 4

                                                                                                                                                                                  I believe that a lot of the things LISP invented/discovered have slowly bled into other languages we use today.

                                                                                                                                                                                  What did you had in mind? As far as I can tell most of the languages we use today lack those iconic lisp traits:

                                                                                                                                                                                  • homoiconicity
                                                                                                                                                                                  • hygienic macros
                                                                                                                                                                                  • interactive development - here I’m referring to the situation where there is runtime error and lisp system stops, lets you fix the code, recompile only the changed parts and continue instead of forcing you to fix and restart whole interaction
                                                                                                                                                                                  1. 1

                                                                                                                                                                                    Maybe ultra-high-level programming, memory safety, garbage collection, and DSL’s could be on the list of what went mainstream. If looking at LISP machines, keeping your whole stack in high-level languages as much as possible. There’s containers and VM’s for that now. They were also among earliest IDE’s with interactive development and debugging. Just a few ideas that popped into my head rather than solid since the lineage of programming languages is wide enough for me to forget or just not know something in a quick post. :)

                                                                                                                                                                                2. 1

                                                                                                                                                                                  Odd then that not only has the vast majority of scientific computing bypassed Lisp, but the higher level mathematical tools are mostly built on Algol descended languages.

                                                                                                                                                                              3. 1

                                                                                                                                                                                The other one that came out a few years after McCarthy was META II:

                                                                                                                                                                                https://en.wikipedia.org/wiki/META_II

                                                                                                                                                                                He liked that language for similar reasons in terms of DSL building or just expressing transformations. Kay ended up merging LISP variants and META successors in his later work in STEPS project.

                                                                                                                                                                                http://www.vpri.org/pdf/tr2007008_steps.pdf

                                                                                                                                                                              1. 1

                                                                                                                                                                                Programming is hard. Concurrency is easy to screw up. Single thread of execution with callbacks is a nightmare. Mutexes can be sources of deadlock or fail to protect critical regions or both, if not used carefully. Lock free is much more conceptually simple than claimed. The earliest lock free data structures - which are still in wide use - are flip buffers. What you need for flip buffers to work is some relatively weak memory ordering from the processor - so that “transitive visibility of stores – i.e. stores that are causally related appear to execute in an order consistent with the causal relation. “ - or a memory barrier instruction that will do the same thing. Set all the data structures in the buffer to EMPTY. The single producer is the only thread allowed to write FULL and it will only do so if it reads EMPTY. The single consumer thread is the only one that can write EMPTY and it will only do so if it reads FULL. Efficient, simple, and good programming discipline. If you need multiple consumers/producers, probably you’d be better off with a server architecture but one mutex on each end solves the problem too. If you don’t design to avoid contention, your program will run badly.

                                                                                                                                                                                1. 1

                                                                                                                                                                                  Not politically correct on lwn to mention rtlinux.

                                                                                                                                                                                  1. 1

                                                                                                                                                                                    I was waiting for them to start dropping names of various vendors the whole time I was reading it. The author didn’t drop names of any companies, though. That includes the real-time Linuxes, separation kernels, and so on. The rationale is stated in the categories where author believes they’re a problem for various reasons. Then, moves on to speculative, especially-FOSS solutions to solve those perceived problems.

                                                                                                                                                                                    So, maybe author is being impractically idealistic instead of politically correct. In real world, we just use something that’s worked before which fits our needs. Those products are usually in the categories author is ignoring.

                                                                                                                                                                                    1. 2

                                                                                                                                                                                      It’s kind of amazing to see mention of RTLinux derivatives that don’t offer on modern systems as good a response time as what we got on 100MHz Pentiums in the 1990s.