1. 19

    As with most of Gary Bernhardt’s writing, I loved this piece. I read it several times over, as I find his writing often deeply interesting. To me, this is a great case study in judgement through attempting to apply Americanized principles to speech between two non-Americans (a Pole and a Finn) communicating in a second language.

    There are several facets at play here as I see it:

    1. There’s a generational difference between older hackers and newer ones. For older hackers, the code is all that matters, niceties be damned. Newer hackers care about politeness and being treated well. Some of this is a product of money coming in since the 90s, and people who never would’ve been hackers in the past are hackers now.

    2. Linux is Linus’ own project. He’s not going to change. He’s not going to go away. If you don’t like the way he behaves, fork it. Run your own Linux fork the way you want, and you’ll see whether or not the niceties matters. Con Kolivas did this for years.

    3. There are definitely cultural issues at play. While Linus has a lot of exposure to American culture, he’s Finnish. Finnish people are not like Americans. I find the American obsession with not upsetting people often infuriatingly two-faced, and I’m British. I have various friends in other countries who find the much more minor but still present British obsession with not upsetting people two-faced, and they’re right.

    Go to Poland, fuck up and people will tell you. Go to Germany, do something wrong and people will correct you. Go to Finland, do something stupid getting in the way of a person’s job and probably they’ll swear at you in Finnish. I’m not saying this is right, or wrong, it’s just the rest of the world works differently to you, and while you can scream at the sea about perceived injustices, the sea will not change it’s tides for you.

    Yes Linus is being a jerk, but it’s not like this is an unknown quantity. Linus doesn’t owe you kindness. You don’t owe Linus respect either. If his behaviour is that important to you, don’t use Linux.

    1. 16

      Finnish people are not like Americans. I find the American obsession with not upsetting people often infuriatingly two-faced […]

      • I think this is a false comparison of some sort. Americans worrying doesn’t say anything useful about Finns.
      • I emphatically disagree that Linus is representative of the social culture around me in Finland.
      • Nonviolent, clear communication is not the same thing as avoiding difficult subjects. It’s the opposite!
      1. 5

        I think this is a false comparison of some sort. Americans worrying doesn’t say anything useful about Finns.

        In my experience of dealing with Finns, they don’t sugar coat things. When something is needed to be said, the Finns I’ve interacted with are extremely direct and to the point, compared to some other cultures. Would you say that’s fair?

        I emphatically disagree that Linus is representative of the social culture around me in Finland.

        I didn’t say that he’s representative of Finnish culture. He’s a product of it. He wasn’t raised American. He didn’t grow up immersed in American culture and values. It would be unrealistic to expect him to hold or conform to American values.

        Nonviolent, clear communication is not the same thing as avoiding difficult subjects. It’s the opposite!

        Definitely! Out of interest, what are your thoughts on this in terms of applicability to his communication style? I’m fairly certain there’s a general asshole element to his style, but I wonder how much (if any) is influenced by this.

        1. 1

          He didn’t grow up immersed in American culture and values. It would be unrealistic to expect him to hold or conform to American values.

          As an Italian, I can say that after the WWII, US did a great job to spread their culture in Europe.
          Initially to counter the “Bolsheviks” influx, later as a carrier for their products.

          They have been largely successful.
          Indeed, I love Joplin just like I love Vivaldi, Mozart and Beethoven! :-)
          But we have thousands years of variegate history, so we are not going to completely conform anyway. After all, we are proud of our deep differences, as they enrich us.

          1. 2

            At the risk of getting into semantics, Finland was much more neutral post WWII than other European nations due to realpolitik.

            Also, there is something to say for Italian insults, by far some of the finest and most perverse, blasphemous poetry I’ve ever had the pleasure of experiencing. It’s the sort of level of filth that takes thousands of years to age well :)

            1. 3

              Actually the Invettiva is a literary gender on its own, that date back to ancient Greek.

              In Italian, there are several passages of Dante’s Divina Commedia that belong to the genre and are spectacular examples of the art you describe.

              But since we are talking about jerk, I will quote Marziale, from memory: 2000 years later we still memorize his lines at school

              Os et labras tibi lingit, Menneia, catellus.
              Non miror, merdas si libet esse cani.

              Nothing Linus can say will ever compete! ;-)

              1. 1

                Os et labras tibi lingit, Menneia, catellus. Non miror, merdas si libet esse cani.

                Google translates this as

                Your mouth and lip licking, Menneas, catelle. I am not surprised, merda, if you like to be for the dog.

                Which I assume is horribly wrong. Is it possible to translate for us non-worldly folks who only know English? :-)

                1. 2

                  The translation from Latin is roughly

                  The little dog licks your mouth and lips.
                  Not a surprise: dogs like to eat shits.

                  It’s one of Martial’s Epygrams.
                  Not even one of the worse!

                  It’s worth noticing how nothing else remains of Menneia. And the same can be said of several people targeted by his insults.

                  1. 1

                    Hah, that’s great. Thank you!

      2. 9

        speech between two non-Americans (a Pole and a Finn) communicating in a second language.

        How is that relevant? On my current team, we have developers from Argentina, Bosnia, Brazil, China, India, Korea, and Poland, as well as several Americans (myself included). Yet as far as I can recall from the year that I’ve been on this team so far, all of our written communication has been civil. And even in spoken communication, as far as I can recall, nobody uses profanity to berate one another. To be fair, this is in a US-based corporate environment. Still, I don’t believe English being a second language is a reason to not be civil in written communication.

        1. 7

          You’re comparing Linux, a Finnish-invented, international, volunteer-based non-corporate project to a US-based corporate environment, and judging Linus’ communications against your perception of a US-based corporate environment. You’re doing the same thing as the author, projecting your own values onto something that doesn’t share those values.

          Additionally, by putting the words I’ve said, and following that up with a reference to a US-based corporate environment, you’ve judged the words of a non-American who wasn’t speaking to you by your own US-based corporate standards.

          I hope that helps you understand my point more clearly. My point isn’t that Linus does or doesn’t act an asshole (he does), but that expecting non-Americans to adhere to American values, standards or norms is unrealistic at best, and cultural colonialism at worst.

        2. 8

          For older hackers, the code is all that matters, niceties be damned. [..]
          Some of this is a product of money coming in since the 90s, and people who never would’ve been hackers in the past are hackers now.

          No, people who would’ve never been hackers in the past, are not hackers now either.
          And hackers have always cared about more than code. Hacking has always been a political act.

          Linus is not a jerk, his behaviour is pretty deliberate. He does not want to conform.
          He is not much different from Dijkstra, Stallman or Assange.

          Today, cool kids who do not understand what hacking is, insult hackers while calling themselves hackers.

          Guess what? Hackers do care about your polite corporate image as much as they do care about dress code.

          There are definitely cultural issues at play.

          Not an issue. It’s a feature! Hackers around the world are different.

          And we are proud of the differences, because they help us to break mainstream groupthink.

          1. 2

            Hacking has always been a political act.

            This is a really interesting idea! I’m seeing this kind of idea more and more these days and I haven’t been able to work out what it means. I guess you don’t mean something as specific as “Hacking has always been in favour of a particular political ideology” nor something as general as “Hacking has always had an effect on reality”. So could you say something more precise about what you mean by that?

            1. 3

              This is a good question that is worth of a deep answer. I’ll rush a fast one here, but I might write something more in the near future.

              All hacks are political, but some are more evidently so. An example is Stallman’s GNU GPL. Actually the whole GNU project is very political. Almost as political as BSDs. Another evidently political hack was done by Cambridge Analytica with Facebook’s user data.

              The core value of hackers activity is curiosity: hackers want to learn. We value freedom and sharing as a mean to get more knowledge for the humanity.

              As such, hacking is always political: its goal is always to affect (theoretically, to improve) the community in one way or another.

              Challenging laws or authorities is something that follows naturally from such value, but it’s not done to get power or profit, just to learn (and show) something new. This shows how misleading is who distinguish hats’ colours: if you are an hacker you won’t have problems to violate stupid laws to learn and/or share some knowledge, be it a secret military cablage, how to break a DRM system or how to modify a game console: it’s not the economical benefit you are looking for, but the knowledge. The very simple fact that some knowledge is restricted, forbidden or simply unexplored, is a strong incentive for an hacker to try to gain it, using her knowledge and creativity.

              But even the most apparently innocent hack is political!
              See Rust, Go, Haskell or Oberon: each with its own vision of how and who should program and of what one should expect from a software.
              See HTTP browsers: very political tools that let strangers from a different state run code (soon assembly-like) on your pc (ironically with your consent!).
              See Windows, Debian GNU/Linux or OpenBSD: each powerful operating systems which their own values and strong political vision (yes, even OpenBSD).
              See ESR appropriation of the jergon file (not much curiosity here actually, just a pursuit for power)!

              Curiosity is not the only value of an hacker, but all hackers share such value.

              Now, this is also a value each hacker express in a different way: I want everyone to become an hacker, because I think this would benefit the whole humanity. Others don’t want to talk about the political responsibility of hacking because they align with the regime they live in (be it Silicon Valley, Raqqa, Moscow or whatever), and politically aware hackers might subvert it.

              But even if you don’t want to acknowledge such responsibility, if you hack, you are politically active, for better or worse.

              That’s also the main difference between free software and open source software, for example: free software fully acknowledge such ethical (and thus political) responsibility, open source negate it.

              1. 1

                Hacking has always been a political act.

                So if I understand you correctly you are saying something much closer to “Hacking has always attempted to change the world” than “Hacking has always been in support of a political party”.

                1. 1

                  Politics is to political parties, what economy is to bankers.

                  If you read “Hacking has always been a political act” as something related to political parties, you should really delve deeper in the history of politics from ancient Athens onwards.

                  “Hacking has always attempted to change the world”

                  No.
                  This is a neutral statement that could be the perfect motto/tagline for a startup or a war.

                  Hacking and politics are not neutral. They are both strongly oriented.

                  Politics is oriented to benefit the polis.
                  Indeed, lobbying for particular interests is not politics at all.

                  Hacking is not neutral either.
                  Hacking is rooted in the international scientific research that was born (at least) in Middle Age.

                  Hackers solve human problems. For all humans. Through our Curiosity.

                  1. 2

                    IMO, you’re defining “Hacking is political” to the point of uselessness. Basically, nothing is apolitical in your world. Walking down the street is a political statement on the freedom to walk. Maybe that’s useful in a warzone but in the country I live in it’s a basic right to the point of being part of the environment. I don’t see this really being a meaningful or valuable way to talk about things. I think, instead, it’s probably more useful for people to say “I want to be political and the way I will accomplish this is through hacking”.

                    1. 2

                      Basically, nothing is apolitical in your world.

                      Read more carefully.
                      Every human action can serve the polis, but several human actions are not political.

                      Hacking, instead, is political in its very essence. Just like Science. And Math.

                      Maybe it’s the nature of knowledge: an evolutive advantage for the humanity as a whole.
                      Or maybe it is just an intuitive optimization that serves hackers’ curiosity: the more I share my discoveries, the more brains can build upon them, the more interesting things I can learn from others, the more problem solved, the more time for more challenging problems…

                      For sure, everyone can negate or refuse the political responsibility that comes from hacking, but such behaviour is political anyway, even if short-sight.

                      1. 2

                        I just don’t see it. I think you’re claiming real estate on terminology in order to own a perspective. In my opinion, intent is usually the dominating factor, for example murder vs manslaughter (hey, I’m watching crime drama right now). Or a hate crime vs just beating someone up.

                        You say:

                        As such, hacking is always political: its goal is always to affect (theoretically, to improve) the community in one way or another.

                        But I know plenty of people who do what would generally be described as hacking with no such intent. It may be a consequence that the community is affected but often times it’s pretty unlikely and definitely not what they were trying to do.

                        1. 1

                          Saying that “intent is usually the dominating factor” is a political act. :-)

                          It’s like talking about FLOSS or FOSS, like if free software and open source were the same thing. It’s not just false, it does not work.

                          Indeed it creates a whole serie of misunderstanding and contraddictions that are easily dismissed if you simply recognise the difference between the two world.

                          Now, I agree that Hacking and Engineering overlap.
                          But they differ more than Murders and Manslaughters.

                          Because hackers use engineering.

                          And despite the fact that people abuse all technical terms, we still need proper terms and definitions.
                          So despite the fact that everyone apparently want to leverage terms like “hacking” and “freedom” in their own marketing, we still need to distinguish hackers from engineers and free software from open source.

                          And honestly I think it’s easy to take them apart, in both cases.

                    2. 1

                      Could you help me understand better then your usage of the word “politics” because I don’t think it’s one that I am familiar with.

                      1. 1

                        Good question! You caught me completely off-guard!
                        Which is crazy, given my faculty at University was called “Political Science”!

                        I use the term “Politics” according to the original meaning.

                        Politics is the human activity that creates, manages and preserves the polis.

                        Polis was the word ancient Greeks used for the “city”, but by extension we use it for any “community”. In our global, interconnected world, the polis is the whole mankind.

                        So Politics is the set of activities people do to participate to our collective life.

                        One of my professors used to define it as “the art of living together”.
                        Another one, roughly as “the science of managing power for/over a community”.

                        Anyway, the value of a political act depends on how it make the community stronger or weaker. Thus politics is rarely neutral. And so is hacking.

                        1. 2

                          Thanks a lot. That does make things clearer. However I am still confused why under the definition of “Politics is the human activity that creates, manages and preserves the polis.” I admit that I don’t understand what ‘Saying that “intent is usually the dominating factor” is a political act’ but at least I now have a framework in which to think about it more.

            2. 4

              That’s very good explanation. I might add:

              • The author has the luxury of not having to worry about people dying because they didn’t get the message.
              • The author has the luxury of only caring about the message being understood by his own cultural sub-group.

              Linus has none of these luxuries. He cannot err on the side of being too subtle.

              This blog post is just another instance of an American that believes that the rest of the world has to revolve around his cultural norms.

              1. 7

                I think the author did a pretty good job of editing the message in such a way that it was more clear, more direct, and equally forceful, while ensuring that all of that force was directed in a way relevant to the topic at hand.

                (Linus has strong & interesting ideas about standardization & particular features. I would love to read an essay about them. The response to a tangentially-related PR is not a convenient place to put those positions: they distract from the topic of the PR, and also make it difficult to find those positions for people who are more interested in them than in the topic of the PR.)

                The resulting message contains all of the on-topic information, without extraneous crap. It uses strong language and emphasis, but limits it to Linus’s complaints about the actually-submitted code – in other words, the material that should be emphasized. It removes repetition.

                There is nothing subtle about the resulting message. Unlike the original message, it’s very hard to misread as an unrelated tangent about standardization practices that doesn’t address the reasons for rejecting the PR at all.

                The core policy being implemented here is not “be nice in order to avoid hurting feelings”, but “remove irrelevant rants in order to focus anger effectively”. This is something I can get behind.

              2. 2

                I find the American obsession with not upsetting people often infuriatingly two-faced, and I’m British.

                […]

                Go to Poland, fuck up and people will tell you. Go to Germany, do something wrong and people will correct you. Go to Finland, do something stupid getting in the way of a person’s job and probably they’ll swear at you in Finnish.

                Just wanted to point out that America is a huge country and its population is not homogenous. For example, you could have replaced Poland, Germany, and Finland with “Boston” and still have been correct (though, they’d just swear at you in English 🙂).

                I think because most American tech comes out of San Francisco/Silicon Valley that it skews what is presented as “Americanized principals” to the international tech community.

                1. 2

                  Just wanted to point out that America is a huge country and its population is not homogenous.

                  Down here in the South, they have an interesting mix of trying to look/sound more civil or being blunt in a way that lets someone know they don’t like them or think they’re stupid. Varies by group, town, and context. There’s plenty of trash talking depending on that. Linus’s style would fit in pretty well with some of them.

                2. 1

                  If his behaviour is that important to you, don’t use Linux.

                  Rather don’t develop the kernel. One can use Linux without having ever heard the nettle Torvalds (the majority I guess)

                1. 2

                  in many cases Git is an adequate substitute for a VCS, you just have to augment it with an out-of-band definition of which tree is the ‘definitive’, and settle who gets to define what ‘a version’ means

                  Agreed, and in fact I think this is what makes git better than a version control system. It exposed the underlying good parts of VCS that we actually want.

                  1. 2

                    Firstly, yes, some pretty bad mistakes here.

                    Secondly, if it’s as easy to fix as OP makes out then he/she could have submitted a PR instead of writing a blog post. That would have actually got the message to the right people.

                    1. 3

                      Not quite a PR but there has been an issue for it since 2016 https://github.com/Microsoft/microsoft-r-open/issues/20

                    1. 6

                      This is your code. Read it: it’s exactly what’s going to happen. No mysticism.

                      if (-1 == pledge("stdio", NULL))

                      1. 3

                        A message veiled into a personal learning story to make it more palatable. I would not care much, but it scratches an itch.

                        We got a slight tests vs. type checking going in the middle of the lines. These subjects should not be dumped together because you may also do Python without any tools and get along just fine.

                        My opinion about types and type checking has changed as well, but it has grown to very different direction than the posters. I also have had some sort of enlightenment going along. I am a die-hard dynamic-typing proponent. I did not need a static type system, and I neither needed tests. The author had to work with something else than Python to form his opinion. I had to go into other direction, deeper into Python and finally into my own improved variation of Python.

                        If type checking is sound, and if it is decidable, then it must be incomplete. I’ve realized this is really important as the set of correct and useful programs that do not pass a type checker is large. Worse, often these are the most important sort of programs that spares a person from stupid or menial work.

                        “If it compiles, it works” and “type system make unit tests unnecessary” are hogwash. It doesn’t really matter how much you repeat them or whether you clothe them into a learning story. There was a recent post pointing out how difficult it is to construct a proof that some small program is actually correct. This means you cannot expect that program works or is correct despite that it types correctly in any language.

                        There is an aspect that is required for making computation and logical reasoning possible in the first place. That is in recognizing variant and invariant parts of the program. I’ve realized that spamming variants is the issue in modern dynamically typed languages. That cannot be solved by adding type annotations because you still have tons of variables in your code that could theoretically change. And you really have to check whether they do, otherwise you have not verified that your program is correct.

                        Statically typed languages commonly do better in keeping variances smaller, but they are also stupid in the sense that they introduce additional false invariants that you are required to satisfy in order to make the type checking succeed. And you cannot evaluate the program before the type checker is satisfied. This is an arbitrary limitation and I think people defending this for any reason are just dumb. Type checker shouldn’t be a straitjacket for your language. It should be a tool and only required when you’re going to formally verify or optimize something.

                        During working on software I’ve realized the best workflow is to make the software work first, then later validate and optimize. Languages like Python are good for the first purpose while some ML-variants are good for the middle, and for the optimization C and similar are good. So our programming languages have been written orthogonal, to cross with the workflow that makes most sense.

                        1. 20

                          the set of correct and useful programs that do not pass a type checker is large

                          If it’s large then you should be able to give a few convincing examples.

                          1. 5

                            I haven’t had the problem the quote implies. The basic, type systems were about enforcing specific properties throughout the codebase and/or catching specific kinds of errors. They seem to do that fine in any language designed well. When designers slip up, users notice with it becoming a best practice to avoid whatever causes protection scheme to fail.

                            Essentially, the type system blocks some of the most damaging kinds of errors so I can focus on other verification conditions or errors it can prevent. It reduces my mental burden letting me track less stuff. One can design incredibly-difficult, type systems that try to do everything under the sun which can add as many problems as they subtract. That’s a different conversation, though.

                            1. 1

                              This set includes programs that could be put to pass a type checker, given that you put extra work into it, or use a specific type checker for them. Otherwise that set is empty: For every program you can construct such variation where the parts that do not type check are lifted outside from the realm of the type checker. For example. stringly typed code.

                              The recipe to construct a program that does not pass a type checker is to vary things that have to be invariant for the type checker. For example, if you have a function that loads a function, we cannot determine the type for the function that is produced. If the loaded function behaves like an ordinary function, it may result in a dilemma that you may have to resolve either by giving it some weird different type that includes the idea that you do not know the call signature, or by not type checking the program.

                              Analogous to the function example: If you define creation of an abstract datatype as a program, then you also have a situation where the abstract datatype may exist, but you cannot type the program that creates it, and you will know the type information for the datatype only after the program has finished.

                              And also consider this: When you write software, you are yourself doing effort to verify that it does what you want. People are not very formal though, and you will likely find ways to prove yourself that the program works, but it does not necessarily align with the way the system thinks about your program. And you are likely to vary the ways you use to conclude the thing works because you are not restricted to just one way of thinking about code. This is also visible in type systems that themselves can be wildly different from each other, such that the same form of a same program does not type in an another type system.

                              I think for the future I’ll try to pick up examples of this kind of tricky situations. I am going to encounter them in the future because in my newest language I’ll have a type inference and checking integrated into the language, despite that the language is very dynamic by nature.

                              There is some work involved in giving you proper examples, and I think people have already moved to reading something else when I finish, but we’ll eventually resume to this subject anyway.

                              1. 6

                                Looking forward to seeing your examples, but until then we don’t have any way to evaluate your claims.

                                About your function loading example, that may or may not be typeable, depending on the deserialisation mechanism. Again, can’t really say without seeing an example.

                                1. 6

                                  When you write software, you are yourself doing effort to verify that it does what you want.

                                  That’s exactly why I find type systems so useful. I’m doing the effort when writing the code either way; types give me a way to write down why it works. If I don’t write it down, I have to figure out why it works all over again every time I come back to the code.

                              2. 6

                                A message veiled into a personal learning story to make it more palatable.

                                Why do you think this is veiled message instead of an actual personal story?

                                1. 5

                                  If type checking is sound, and if it is decidable, then it must be incomplete.

                                  Only if you assume that some large set of programs must be valuable. In my experience useful programs are constructive, based on human-friendly constructions, and so we can use a much more restricted language than something Turing-complete.

                                  1. 1

                                    If type checking is sound, and if it is decidable, then it must be incomplete.

                                    That’s not a bug. That’s a feature.

                                    If you can implement a particular code feature in a language subset that is restricted from Turing completeness, then you should. It makes the code less likely to have a security vulnerability or bug. (See LangSec)

                                  1. 4

                                    … was when OS X was released.

                                    1. 12

                                      I think I’ve read this paper a half dozen times now after seeing someone or other wax lyrical about it online. And I just don’t get why people like it so much. Which means either I’m too much of an insider and this is old news, or I don’t appreciate what I don’t know.

                                      Part of the problem is that it seems to overstate its contributions. It isn’t really “identifying” causes of complexity. Fred Brooks pointed out essential vs accidental complexity back in 1975, and there’s been a steady stream of articulation ever since. To any Haskeller the point that complexity comes from state is old news. Relational algebra is ancient. At best OP is laying things out in a new way.


                                      This time I figured I’d speed up my rereading time by instead chasing down past threads. And I discovered a decent summary. This was helpful, because it helped me to focus on the ‘causes of complexity’ portion of OP.

                                      Causes of complexity according to OP:

                                      • State (difficulty of enumerating states)
                                      • Control (difficulty of choosing an ordering)
                                      • Concurrency
                                      • Volume
                                      • Duplicated/dead code, unnecessary abstraction

                                      Compare the list I made a couple of years ago:

                                      • Compatibility. Forcing ourselves to continue supporting bad ideas.
                                      • Vestigial features. Continuing to support stuff long after it’s been obsoleted by circumstances. Simply because it’s hard to detect obsolescence.
                                      • People churn. Losing institutional fingerspitzengefühl about the most elegant place to make a given change. Or knowing when some kludge has become obsolete.

                                      Comparing these two lists, it looks like there’s a tension between the top-down and bottom-up views of software management. In the bottom-up view people seem to think about software like physics, trying to gain insight about a system by studying the atoms and forces between atoms. You tend to divide complexity into state and order, essential and accidental. Reductionism is the occupational hazard.

                                      In my top-down view I tend to focus on the life cycle of software. The fact that software gets more complex over time, in a very tangible way. If we could avoid monotonically adding complexity over time, life would be much better. Regardless of how many zeroes the state count has. In this worldview, I tend to focus on the stream of changes flowing into a codebase over time, alongside the stream of changes happening to its environment. This view naturally leads me to categorize complexity based on its source. Is it coming from new feature requirements, or changes to the operating environment? How can I keep my raft slender as I skim the phase transition boundary between streams?

                                      The blind spot of the bottom-up view is that it tends to end up at unrealistic idealizations (spherical cows as @minimax put it in this thread). The blind spot of the top-down view is that there’s a tendency to under-estimate the complexity of even small systems. Blub. The meme of the dog saying “this is fine” while surrounded by flames.

                                      It seems worth keeping both sides in mind. In my experience the top-down perspective doesn’t get articulated as often, and remains under-appreciated.

                                      1. 5

                                        Here’s my take on it: https://news.ycombinator.com/item?id=15776629

                                        I also don’t think it’s a great paper. It’s long on ideas but short on evidence, experience, and examples. I don’t think you’re missing anything.

                                        1. 4

                                          I have a similar take to you. I think it’s one of those papers that is easy to get excited about and everyone can agree that complexity is bad and all that. But I have not seen any successful application of the ideas in there. The author’s haven’t even successfully implemented the ideas beyond a little prototype, so we don’t have any idea if what they say actually pans out.

                                          And to toss my unscientific hat into the ring: IME the biggest source of complexity is not programming model but people just not being disciplined about how they implement things. For example, I’m currently working in a code base where the same thing is implemented 3 times, each differently, for no obvious reason. On top of that, the same thing is some times and id, sometimes the id is a string and sometimes an int, and sometimes the string is a URL, and it’s never clear when or why. This paper is not going to help with that.

                                          1. 2

                                            If what you say is true, then the success of LAMP stacks with associated ecosystems for new people and veterans alike might make it high on “evidence, experience, and examples.” That architecture worked for all kinds of situations even with time and money limitations. Except that the specific implementation introduces lots of the complexities they’d want people to avoid. So, maybe instead the Haskell answer to a LAMP-style stack or something like that fitting their complexity-reduction ideas.

                                            Although the others shot it down as unrealistic, your characterization seems to open doors for ways to prove or refute their ideas with mainstream stuff done in a new way. Maybe what they themselves should’ve have done or do they/others do later.

                                            1. 4

                                              Yes, so depending on the scope of their claims, it’s either trivial and doesn’t acknowledge the state of the art, or it’s making claims without evidence.

                                              Appreciating LAMP is perhaps nontrivial. Google services traditionally used “NoSQL” for reasons of scaling, but the relatively recent development of Spanner makes your architecture look more like LAMP.

                                              But either way I don’t think that LAMP can be “proven” or “refuted” using their methodology. It’s too far removed from practice.

                                          2. 4

                                            In my top-down view I tend to focus on the life cycle of software. The fact that software gets more complex over time, in a very tangible way. If we could avoid monotonically adding complexity over time, life would be much better.

                                            Thanks for the interesting commentary. Some parts definitely resonated, particularly about the half-features and difficulty of knowing how and where to make the right change.

                                            This is only the germ of an idea, but it is perhaps novel and perhaps there is an approach by analogy with forest management. Periodic and sufficiently frequent fires keep the brush under control but don’t get so big that they threaten the major trees or cause other problems.

                                            Could there be a way of developing software where we don’t look at what is there and try to simplify/remove/refactor, but instead periodically open up an empty new repo and move into it the stuff we want from our working system in order to build a replacement? The big ‘trees’ of well understood core functionality are most easily moved and survive the burn, but the old crufty coupling doesn’t make the cut.

                                            Some gating on what would be moved would be needed. The general idea though is that only sufficiently-well-understood code would make it across to the new repo. And perhaps sufficiently reliable/congealed black boxes. It would interplay a lot with the particularly language’s module/package and testing systems.

                                            The cost would be periodic re-development of some features (with associated time costs and instability). The benefit would be the loss of those code areas which accrete complexity.

                                            1. 2

                                              Yes, definitely worth trying. The caveat is that it may be easy to fall into the trap of a full rewrite. There’s a lot of wisdom encoded in the dictum to avoid rewrites. So the question becomes: how would you make sure you don’t leave behind the most time consuming bugfixes you had to make in production on the old repo? Those one-liners that took a week to write?

                                            2. 3

                                              This paper was written in 2006, two years before Applicatives were introduced. The Haskell community’s understanding of how to best structure programs has been refined a lot in that time and I think you underestimate the insights of this paper even if it is only a refinement of Brooke’s ideas from 40 years ago.

                                              1. 1

                                                Thanks, I hadn’t seen that paper. What made you cite it in particular?

                                                1. 1

                                                  It’s where Applicatives were introduced, as far as I know.

                                                  1. 7

                                                    Can you describe the connection you’re making between Applicatives and this paper?

                                                    1. 1

                                                      I got the impression that akkartik was saying that OOTP hadn’t added much new. My claim is that the fact that Applicatives were only introduced 10 years ago shows that the bar for novelty is actually quite low.

                                              2. 1

                                                “This was helpful, because it helped me to focus on the ‘causes of complexity’ portion of OP.”

                                                That’s the part I read in detail. I skimmed the second half saving it for later since it was big. The first half I liked because it presented all those concepts you listed in one location in an approachable way. It seems like I learned that stuff in pieces from different sub-fields, paradigms, levels of formality, etc. Seeing it all in one paper published ahead of some of these things going into mainstream languages was impressive. Might have utility to introduce new programmers to these fundamental concepts if nothing else I thought. Understanding it doesn’t require a functional programming or math back ground.

                                                Ok, so that’s their requirements. Minimax mentions things like business factors. You mention changes with their motivations. I’ll add social factors which includes things that are arbitrary and random. I don’t think these necessarily refute the idea of where the technical complexity comes from. It might refute their solutions for use in the real world such as business. However, each piece of the first half is already getting adoption in better forms in the business world on a small scale. There’s also always people doing their own thing in greenfield projects trying unconventional methods. So, there’s at least two ways their thinking might be useful in some way. From there, I’d have to look at the specifics which I haven’t gotten to.

                                                I do thank you for the Reddit search given those are about the only discussions I’m seeing on this outside here. dylund’s comments on Forth were more interesting than this work. Seemed like they were overselling the positives while downplaying negatives, too, though.

                                              1. 5

                                                You may not need Server Sent Events, either, depending on what “real time” means to you - sometimes it really means “less than a minute”, or just “faster than our competitor”. I’d always start with polling, unless I was sure it wasn’t going to work.

                                                1. 2

                                                  I’ve also been wondering whether one can poll with HTTP persistent connections that delay the response for as long as possible. What do you think?

                                                  1. 2

                                                    What you’ve described is what the author of the article (and others) call long polling. It definitely works! There are some downsides especially for mobile devices, but it’s definitely a viable approach in many situations.

                                                    1. 3

                                                      Yeah, it’s what everyone was using before SSE came out.

                                                      Long polling is strictly worse. It’s just like SSE, except the connection is restarted on every message.

                                                      1. 1

                                                        I’d appreciate it if you’d describe why it’s worse. Why does the connection need to be restarted? An HTTP persistent connection wouldn’t need to be restarted would it? You’d need to send the HTTP header again but not the TCP handshake.

                                                        1. 1

                                                          Er, I don’t mean the TCP connection, that can be kept alive, sure. Yes, the HTTP request (which is a “connection” conceptually on both sides) is restarted.

                                                          1. 1

                                                            Interesting. Is it really so expensive restarting an HTTP connection?

                                                            1. 2

                                                              Technically not very expensive, but a) just feels like a horrible hack and b) pretty much always requires custom state tracking (like requesting messages since a timestamp) – with SSE, you only need that if you want resuming. You have an open stream on the server side, you just write into it whenever you want and data comes out on the other end.

                                                1. [Comment removed by author]

                                                  1. 5

                                                    Nix images that run processes inside sandboxes (chroot + cgroups.)

                                                    Sounds amazing! Do you have a write up of how you do that?

                                                    1. 3

                                                      At the risk of me-tooism, I’d really like to hear more about that too, if possible :-)

                                                      1. [Comment removed by author]

                                                        1. 1

                                                          Thanks!

                                                    2. 2

                                                      I’d love to do that but this doesn’t solve the bin-packing of services that I need at scale…

                                                    1. 7

                                                      Massive kudos to this guy for not putting up with this SJW madness. I wish him all the best!

                                                      We at suckless are heavily opposed to code of conducts and discriminatory organizations of any shape or form.

                                                      1. 11

                                                        Suckless takes a similarly principled stand against runtime config files.

                                                        1. 8

                                                          How does suckless oppose discrimination?

                                                          1. 13

                                                            It’s very simple. Any non-technological matters during software development move the software away from its ideal form. Thus, to make your software suck less, you only take the best developers no matter what race, gender, heritage, etc. these persons have.

                                                            We do not believe in equal status (i.e. e.g. forcibly obtaining a 50/50 gender ratio), as this immediately leads to discrimination. We do however strongly believe in equal rights, naturally. You also naturally cannot have both.

                                                            1. 94

                                                              Any non-technological matters during software development move the software away from its ideal form.

                                                              Suckless makes a window manager: a part of a computer that human beings, with all their rich and varying abilities and perspectives, interact with constantly. Your choices of defaults and customization options have direct impact on those humans.

                                                              For example, color schemes determine whether color-blind people are able to quickly scan active vs inactive options and understand information hierarchy. Font sizes and contrast ratios can make the interface readable, difficult, or completely unusable for visually impaired people. The sizes of click targets, double-click timeouts, and drag thresholds impact usability for those with motor difficulties. Default choices of interface, configuration, and documentation language embed the project in a particular English-speaking context, and the extent to which your team supports internationalization can limit, or expand, your user base.

                                                              With limited time and resources, you will have to make tradeoffs in your code, documentation, and community about which people your software is supportive and hostile towards. These are inherently political decisions which cannot be avoided. This is not to say that your particular choices are wrong. It’s just you are already engaged in “non-technical”, political work, because you, like everyone else here, are making a tool for human beings. The choice to minimize the thought you put into those decisions does not erase the decisions themselves.

                                                              At the community development level, your intentional and forced choices around language, schedule, pronouns, and even technical terminology can make contributors from varying backgrounds feel welcome or unwelcome, or render the community inaccessible entirely. These too are political choices. Your post above is one of them.

                                                              There is, unfortunately, no such thing as a truly neutral stance on inclusion. Consider: you wish to take only the best developers, and yet your post has already discouraged good engineers from working on your project. Doubtless it has encouraged other engineers (who may be quite skilled!) with a similar political view to your own; those who believe, for instance, that current minority representation in tech is justified, representing the best engineers available, and that efforts to change those ratios are inherently discriminatory and unjust.

                                                              Policies have impact. Consider yours.

                                                              1. 7

                                                                I don’t know if that was your goal, but this is one of the best arguments for positive discrimination I’ve read. Thanks for posting it, and also thanks for noting that all decisions have some inherent politics whether we like it or not.

                                                                Unfortunately there is simply no solution: positive discrimination is opposed to meritocracy. Forced ratios are definitely an unethical tool, as they are a form of discrimination. However, this unethical tool brings us to a greater good, which is a final product that incorporates diversity on its design and accommodates more users, which is a desirable goal on itself, for the reasons you explained.

                                                                1. 4

                                                                  color schemes determine whether color-blind people are able to quickly scan active vs inactive options and understand information hierarchy. Font sizes and contrast ratios can make the interface readable, difficult, or completely unusable for visually impaired people. The sizes of click targets, double-click timeouts, and drag thresholds

                                                                  Let me see if I understand what you’re saying. Are you claiming that when color schemes, font sizes and drag thresholds are chosen that that is a political decision? I think that many people would find that quite a remarkable claim.

                                                                  1. 3

                                                                    It’s impossible to not be political. You can be “the status quo is great and I don’t want to discuss it”, but that’s political. The open source “movement” started off political - with a strong point of view on how software economics should be changed. In particular, if you say a CoC that bans people from being abusive is unacceptable, you are making a political statement and a moral statement.

                                                                    1. 3

                                                                      It’s impossible to not be political

                                                                      Could I ask you to clarify in what sense you are using the word “political”?

                                                                      Merriam-Webster (for example) suggests several different meanings that capture ranges of activity of quite different sizes. For example, I’m sure it’s possible to act in a way which does not impinge upon “the art or science of government” but perhaps every (public) action impinges upon “the total complex of relations between people living in society”.

                                                                      In what sense did you use that term?

                                                                      1. 4

                                                                        Let’s start off with a note about honesty. FRIGN begins by telling us “We do not believe in equal status (i.e. e.g. forcibly obtaining a 50/50 gender ratio)” as if someone was proposing the use of force to produce a 50/50 gender ratio - and we all know that wasn’t proposed by anyone. There’s no way to discuss this properly if people are going to raise false issues like that. What comment’s like FRIGN’s indicate is an unwillingness to have an open and honest conversation. The same bogus rhetoric is at the heart of Damore’s memo: he claims to be in favor of equal rights and just against mythical demand for 50/50 gender equality so that he can oppose obviously ineffective affirmative action programs at Google where 80% of technical staff are male (Damore’s misappropriation of science is similarly based on an objection to a position that nobody ever argued.).

                                                                        The next point is that some people are objecting that a CoC and a minority outreach program are “political”. That’s true, but it involves the use of the more general meaning of “political” which the Collins dictionary provides as “the complex or aggregate of relationships of people in society, esp those relationships involving authority or power”. If we are using that definition, of course a CoC and a minority outreach program are political, but opposition to a CoC and a minority outreach program fits the definition as well. If you have an opinion one way or another, your opinion is political. You can’t sensibly use this wide definition of political to label the effort to adopt a CoC and to recruit more minorities and then turn around and claim your opposition to those is somehow not political. So that’s what I mean by “it is impossible to not be political”. The question is a political question and those who try to claim the high ground of being objective, disinterested, non-political for their side of the question are not being straightforward (perhaps it’s just that they are not being straightforward with themselves).

                                                                        1. 3

                                                                          I agree that a CoC, a minority outreach program, and opposition to a CoC all impinge upon “the complex or aggregate of relationships of people in society, esp those relationships involving authority or power”.

                                                                          Would you also agree that there is a popular ideological political movement in favour of CoCs (some combination of the feminist, civil rights and social justice movements)? Perhaps there is also a popular ideological movement against CoCs (some combination of MRAs and the alt right). Are you also claiming that if one claims a “neutral” stance on CoCs one is de facto supporting one of these ideologies?

                                                                          1. 3

                                                                            I’m not sure it is possible to have a neutral stance. In fact, I doubt it.

                                                                            1. 1

                                                                              Interesting! Do you also doubt it is possible to take any action that is neutral with regard to a political ideology?

                                                                              1. 3

                                                                                You are introducing something different. I don’t think you have to line up with one “side” or another, but you can’t avoid being a participant.

                                                                                1. 1

                                                                                  You said “It’s impossible to not be political” so I’m trying to understand what you mean by that. So far I’m not clear whether you think every action is political. I’d appreciate it if you’d clarify your position.

                                                                                  1. 2

                                                                                    I’m making a very concrete assertion, which I sense does not fit into your schema. My assertion is that there is no neutrality on workplace equality and inclusion for anyone involved in the workplace. Anyone who, for example, participates in an open source development effort has a position on whether efforts should be made to make it more inclusive even if that position is “this is not important enough for me to express an opinion.”

                                                                                    1. 1

                                                                                      Thank you for clarifying. When you originally said “It’s impossible to not be political” I got the wrong impression.

                                                                                      Do you also hold the same point of view when it comes to roughly comparable statements in other spheres? For example ‘Anyone who eats has a position on vegetarianism even if that position is “this is not important enough for me to express an opinion.”’?

                                                                  2. 1

                                                                    You’ve been quoted by LWN: https://lwn.net/Articles/753709/

                                                                  3. 11

                                                                    AKA shut up and hack? :)

                                                                    1. 1

                                                                      The suckless development process has no non-technical discussions?

                                                                      How are the best developers identified?

                                                                      1. 8

                                                                        just curious, why would you need to identify the best developers? Wouldn’t the quality of their code speak for that?

                                                                        1. 5

                                                                          I also fail to see what the reasoning is. Just send your code, get the non technical discussions out.

                                                                          1. -1

                                                                            Apparently, quoting @FRIGN from above, “to make your software suck less.”

                                                                          2. 8

                                                                            How are the best developers identified?

                                                                            I think this is a totally reasonable question, and one I’d like to see the answer too–if for no other reason than it might help those of us on other projects find more objective metrics to help track progress with.

                                                                            Do you all at suckless use something like:

                                                                            • defect rate
                                                                            • lines of code/feature shipped
                                                                            • execution time
                                                                            • space in memory, space in storage

                                                                            Like, what metrics do you use?

                                                                            1. 7

                                                                              You know, suckless is not a big company and the metrics that can be applied are more of a heuristic. A good developer is somebody who e.g. supplies a patch with a bug report, provides feedback to commits, makes contributions to the projects, thinks his commits through and doesn’t break stuff too often and does not personally identify with their code (i.e. is not butthurt when it’s not merged).

                                                                              What needs to be stressed here is that the metric “lines of code” is completely off. There are horrible programmers who spit out lots of code and excellent ones who over time drop more lines than they add. Especially the latter group is very present among us and thus the LOC-metric will only give false results. Same with execution time, you find that when not enough time is spent on a problem you end up solving it wrong, in the worst case having to start all over.

                                                                        2. 5

                                                                          By being very diverse and doing fackelmärsche of course. https://suckless.org/conferences/2017/

                                                                          1. 3

                                                                            @FRIGN What’s the purpose of this “torchlight hike” in the context of producing code that sucks less? Don’t you see that the activities you choose to have during your conferences are a cultural stance, and because of that, can be perceived as exclusive by programmers that don’t recognize themselves in these activities?

                                                                            1. 0

                                                                              I get your point, but must honestly say that your argument sadly aligns with the ever-excluding and self-segregating destructful nature of cultural marxism. By eating food together at the conferences, do we exclude anorexics that might otherwise be willing to attend such a conference? I don’t drink any alcohol and never have. Still, it was not a problem when we went to a local Braukeller and some people drank alcohol and others like myself didn’t.

                                                                              The fundamental point I think is that one can never fully and analytically claim that a certain process is completely unaffected by something else. If we dive down into these details we would then move on and say that the different choice of clothings, hairstyle, means of travel and means of accomodation all affect the coding process at suckless. This can be taken further and further with no limit, as we all know about the butterfly effect. At some point it is just not measurable any more.

                                                                              If you ask me, this is a gross overstretching of what I said. There are quite a lot of people who do not attend the conferences but still work together with us on projects during that time. What really matters is that we e.g. do not ignore patches from these people or give them less relevance than those of others. To pick the example up: The torchlight hike did not affect any coding decision in a direct way, but it really bonded the team further together and was a very nice memory of this conference that I and the others are very fond of from what I’ve heard. On top of that, during the hike we were able to philosophize about some new projects of which some have become a reality. The net-gain of this event thus was positive.

                                                                              In classical philosophy, there are two main trains of thought when it comes to evaluating actions: Deontology and Teleology. Deontology measures the action itself and its ethical value, completely ignoring the higher goal in the process. Teleology is the opposite, evaluating actions only by their means to reach a goal, completely ignoring the value of the action itself. The best approach obviously should be inbetween. However, there is a much more important lesson that can be taken from here: When evaluating a decision, one needs to realize what they are measuring and what is unimportant for a decision. What I meant is that to reach the goal of software perfection, the gender and other factors of the submitters do not matter. So even though we here at suckless have a goal, we are not teleologists, as we just ignore the factors that do not matter for coding.

                                                                              It is an ethical question which norms you apply to a decision.

                                                                              If we look at organizations like Outreachy, one might be mistaken to think that they are deontologists, striving to improve processes. However, after closer inspection it becomes clear that this is not the case and they are actually working towards a certain goal, increasing the number of trans and minority people in such communities. No matter how you think about this goal, it makes one thing clear: When you are working towards such a goal and also do not ignore irrelevant factors in your norms (and they in fact do by not ignoring e.g. race and gender), you quickly end up discriminating against people.

                                                                              I hope this clears this up a bit, but as a short sentence, what can be taken from here is: When discussing ethical matters, it’s always important to make clear which norms are applied.

                                                                              1. 2

                                                                                fackelmärsche

                                                                                I’m not going to wade into anything else on this, but I’d like to just take a second and let you know that, while you may not mean it in this way the phrase “cultural marxism” is very, very often used as a stand in for “jews”. Some links for the record:

                                                                                https://www.splcenter.org/fighting-hate/intelligence-report/2003/cultural-marxism-catching

                                                                                https://newrepublic.com/article/144317/trumps-racism-myth-cultural-marxism https://www.smh.com.au/world/cultural-marxism--the-ultimate-postfactual-dog-whistle-20171102-gzd7lq.html

                                                                                1. 3

                                                                                  It’s not my fault that some idiots don’t understand this term or it’s critical analysis. Cultural marxism, as the term implies, is the classical theory of marxism applied to culture. It has nothing to do with jews directly, it’s just an idea. If you know any better term to describe it, please let me know.

                                                                                  Anyway, in the philosophical realms it’s known as ‘Critical Theory’, which originated in the Frankfurt School. However, nobody knows this term.

                                                                                  Unless a better term is found, I disregard your argument and won’t accept your attempt to limit language of perfectly acceptable words to describe an idea. At the end of the day, terminology must be found that adequately describes what a certain idea is, and I see no reason why this should be wrong.

                                                                                  Regarding the torch hike: Yes, marching with torches was abused by the NSDAP as a means of political rallying. However, at least in Germany, it is a much older and deeper-reaching tradition that dates back hundreds of years.

                                                                                  1. 0

                                                                                    You have amply demonstrated that you don’t know anything about the topic. You could start with the decent Wikipedia article. https://en.wikipedia.org/wiki/Frankfurt_School

                                                                                  2. 2

                                                                                    wow, uh, kind of a weird red flag that pointing this out is getting seriously downvoted. I picked these links pretty quickly, and anybody who comes behind and reads this and wonders how serious this is, do yourself a favor and image search and see how many memes have the star of david, greedy merchant, world strangling octopus or any of a number of openly anti-semitic imagery. Its not hidden, its not coy. If you’re tossing “cultural marxism” around you’re either willfully ignoring this or blatantly playing along. Its not a thing in the world. There are no leftists (at all) who call themselves “cultural marxists”, and in fact there is a sizeable faction of marxists who are openly disdainful of any marxism that eschews political struggle. The new republic article linked above goes into this, Perry Andersons “Considerations on Western Marxism”, a well known, well regarded text across a number of marxist subsects, is explicitly based on this. Anyway, enjoy contributing to a climate of increasing hostility toward jews. good stuff.

                                                                                    edit: have some fun with this https://www.google.com/search?q=cultural+marxism&client=firefox-b&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjz2tWrhvnaAhUJ7YMKHVgcCccQ_AUIDCgD&biw=1247&bih=510#imgrc=_

                                                                                    1. 1

                                                                                      The term ‘Cultural Marxism’ describes very well what it is, and not all leftists are cultural marxists. The classical theory of marxism, roughly spoken, is to think of society as being split in two camps, the Proletariat and the Bourgeoisie, eternally involved in a struggle, where the former is discriminated against and oppresed by the latter.

                                                                                      Cultural Marxism applies these ideas to society. In the Frankfurt School it was called ‘Critical Theory’, calling people out to question everything that was deemed a cultural norm. What is essentially lead to was to find oppressors and oppressed, and we reached the point where e.g. the patriarchy oppressed against women, white people against minorities, christians against muslims and other religions and so forth. You get the idea. Before you go again rallying about how I target jews or something please take a note that up to this point in this comment, I have just described what cultural marxism is and have not evaluated or criticized it in any way, because this here is the wrong platform for that.

                                                                                      What you should keep in mind is that the nature of cultural marxism is to never be in a stable position. There will always be the hunt for the next oppressor and oppressed, which in the long run will destroy this entire movement from the inside. It was a friendly advice from my side to you not to endulge in this separatory logic, but of course I understand your reasoning to the fullest.

                                                                                      Just as a side note: I did not see you getting ‘seriously’ downvoted. What do you mean?

                                                                                      1. 2

                                                                                        It’s uncommon to find such a well-put explanation; thanks for that.

                                                                                        There will always be the hunt for the next oppressor and oppressed, which in the long run will destroy this entire movement from the inside.

                                                                                        If the movement runs out of good targets (and falls apart because they can’t agree on new ones), wouldn’t that imply that it will self-destruct only after it succeeds in its goals? That doesn’t sound like a bad thing.

                                                                                        1. 1

                                                                                          I’m glad you liked my explanation. :)

                                                                                          That is a very interesting idea, thanks for bringing this thought up! It’s a matter dependent on many different factors, I suppose. It might fall apart due to not being able to agree on new targets or when everybody has become a target, but it is a very theoretical question which one of these outcomes applies here.

                                                                                        2. 1

                                                                                          Did you actually read any of the links I posted? Specifically the New Republic and SPLC links? I don’t know how else to say this and you pretty much side stepped what I said the first time so I’ll try to reiterate it: There is no such thing as “Cultural Marxism”. At all. Its not a descriptive category that any marxist actually self applies or applies to other marxists. I’m fully aware of the Frankfurt School, Adorno, Horkheimer, etc. I’ve read some of them and many, many of their contemporaries from Germany, people like Karl Mannheim. I read marxist publications everyday, from here in the states and from Europe. I’m a member of an explicitly marxist political party here in the states. I can’t emphasize this enough, “cultural marxism” isn’t real and is roughly on par with “FEMA camps”, “HARRP rays” and shape shifting lizard jews, meaning; its a far far right wing paranoid fantasy used to wall off people from other people and an actual understanding of the material conditions of their world. I also didn’t say, specifically in fact pointing out that I wasn’t saying this, that you were “targeting jews”. That being said, if you use a phrase that has its origins in anti-semitic polemics, is used explicitly and over-whelmingly by anti-semites, than that is on you. (Did you take a look at the linked image search? Does that sort of thing not give you pause?) To say that you “just described what cultural marxism is” is also inaccurate, you absolutely used it in a descriptive way

                                                                                          I get your point, but must honestly say that your argument sadly aligns with the ever-excluding and self->segregating destructful nature of cultural marxism.

                                                                                          White supremacist organizing is experiencing an enormous upsurge, not only here in the states but in Europe as well. From Le Pen to AfD to SVO in Austria and on and on. These people are not interested in polite conversation and they’re not using “cultural marxism” as a category to illuminate political opponents, its meant to denigrate and isolate, ironically given thats exactly what Neo Nazis and white supremacists here in the states accuse left wingers and “SJWs” of doing.

                                                                                          I appreciate that you’re discussing this peacefully but I’m going to bow out of this thread unless you’re interested enough to take some time and read the links

                                                                                          FWIW these also dismantle the trope and point out pretty much exactly what I’m saying around anti-semitism: https://www.vice.com/en_us/article/78mnny/unwrapping-the-conspiracy-theory-that-drives-the-alt-right https://www.theguardian.com/commentisfree/2016/feb/22/chris-uhlmann-should-mind-his-language-on-cultural-marxism

                                                                                          1. 2

                                                                                            I took some more time to read it up and from what I could see, I found that indeed cultural marxism has become more of a political slogan rather than a normal theoretical term in the USA.

                                                                                            Here in Germany the term “Kulturmarxismus” is much less politically charged from what I can see and thus I was surprised to get this response after I just had “translated” this term into English. It might be a lesson to first get some background on how this might be perceived internationally, however, it is a gigantic task for every term that might come around to you.

                                                                                            So to reiterate my question, what term could be better used instead? :)

                                                                                            1. 1

                                                                                              interesting that it has a different grounding/connotation in Germany, but then again I’m not surprised since thats where its supposed to have originated from. I’ll reread your other posts and come up with a response thats fair. Thanks for taking the time to read those links.

                                                                                          2. 1

                                                                                            Generally people who use “cultural marxism” as a pejorative are sloganeering. The idea of an “eternal struggle” is completely foreign to any kind of marxism which is based on a theory that classes come out of the historical process and disappear due the historical process. Marxism claims that the proletariat and bourgeosie are temporary divisions that arise from a certain type of economic organization. Whatever one thinks of that idea, your characterization of Marxism is like describing baseball as a game involving pucks and ice. Your summary of “cultural marxism” is even worse. Maybe take a class or read a decent book.

                                                                              2. 17

                                                                                I’m not going to remove this because you’re making a public statement for suckless, but please don’t characterize positions you disagree with as madness. That kind of hyperbole generally just leads to unproductive fights.

                                                                                1. 9

                                                                                  Please don’t remove anything unless it’s particularly vulgar…

                                                                                  1. [Comment removed by author]

                                                                                    1. 3

                                                                                      hey that’s my account you’re talking about!

                                                                                  2. -1

                                                                                    Removing differing viewpoints? It is precisely this kind of behavior that maddens people who complain about SJW, who (the SJW) seem unable to take any discussion beyond calling their opponent’s position “evil”, “alt-right”, “neo-nazi”, or, if they are exceptionally well-spoken, “mad”.

                                                                                    1. 14

                                                                                      No, removing abuse and hyperbole that acts as flamebait regardless of the political opinions expressed. So far I’ve removed one post and hope not to remove more.

                                                                                      1. 2

                                                                                        It’s hard for me to see a reason to remove things when we have the voting system in place, neither are perfect but one is at your sole discretion whereas the other is the aggregate opinion of the users.

                                                                                        1. 21

                                                                                          Voting isn’t a replacement of moderation. It helps highlight and reward good comments and it can punish bad comments, but it’s not sufficient for running a community. I’m trying to head off places where people give up on argument and just try to hurt or tar the people they disagree with because it doesn’t lead to a good community. Lobsters is a very good place for discussing computing and I haven’t seen that in communities this size with hands-off moderation (but I’d love counter-examples to learn from!) From a quick query, we’ve had comments from 727 unique users in the last 30 days and there’s around 15k unique IPs in the logs per weekday, so people are constantly interacting with the others who don’t know their background, don’t share history, can’t recognize in-jokes, simply don’t have reason to trust when messages are ambiguous, let alone provocative. Friendly teasing like “ah yeah, you would think that” or “lol php sucks” that’s rewarding bonding in a small, familiar group hurts in a big one because even if the recipient gets the joke and laughs along or brushes it off as harmless, it’s read by thousands of people who don’t or can’t.

                                                                                          1. 2

                                                                                            Lobsters is a very good place for discussing computing and I haven’t seen that in communities this size with hands-off moderation

                                                                                            I support your position on sub-topic but even my Trial you linked to shows a bit otherwise on just this point. This site has more flexible, hands-off moderation than many I’ve seen with this much political dispute. Even in that link, we saw an amount of honest, civility, and compromise I don’t usually see. There’s been quite a bit better results in this thread than usual elsewhere. There seems to be enough community closeness despite our size that people are recognizing each others positions a bit. Instead of comments, you can actually see it by what’s not said more since it’s prior ground we’ve covered. The others are learning as discussion furthers. Then, there’s the stuff we don’t want which seems to be basically what those individuals are intending in a way that has nothing to do with site’s size.

                                                                                            So, I support you getting rid of just pure abuse, trolling, sockpuppeting, etc. I don’t think we’ve hit the full weaknesses and limited vision of large sites yet despite our increase in comments and views. We’re still doing a lot better than average. We’re still doing it with minimal intervention on things like politics relative to what I’ve seen elsewhere. I think we can keep at current moderation strategy for now because of that. For now.

                                                                                            Just wanted to say that in the middle of all this.

                                                                                            1. 0

                                                                                              Voting isn’t a replacement of moderation. It helps highlight and reward good comments and it can punish bad comments, but it’s not sufficient for running a community.

                                                                                              I’m not sure if I see why it’s not a good replacement. To me, I see voting as distributed moderation and the “real” moderation is automatically hiding (not removing) comments when they fall below a threshold.

                                                                                              I’m trying to head off places where people give up on argument and just try to hurt or tar the people they disagree with because it doesn’t lead to a good community.

                                                                                              I think this method relies on an accurate crystal ball where you can foresee people’s actions and to an extent, the reactions of the people reading the comments.

                                                                                              I’d have to question what you mean by “a good community”, it seems like it’s just a place where everyone agrees with what you agree with and those that disagree aren’t heard because it risks offending those that do agree.

                                                                                              I think the best discussions on here are because we have many people with wide and varied opinions and backgrounds. The good comes from understanding what someone else is saying, not excluding them from the discussion. The only places I see that warranted is where someone has said something purposely and undeniably vile.

                                                                                              1. 8

                                                                                                The automatic hiding of low-scoring comments is also a “sole discretion” thing; jcs added it and I tweaked it a few months ago. The codebase enforces a lot of one moderator’s ideas of what’s good for a community in a hands-off way and the desire to do that motivated its creation.

                                                                                                I strongly agree that a community where everyone agrees with the moderator would be bad one, even if I am that moderator. It’s tremendously rewarding to understand why other people see things differently, if for no other reason than the selfish reason that one can’t correct learn or correct mistakes if one never sees things one doesn’t already agree with.

                                                                                                I think the crystal ball for foreseeing problems is experience, from many years of reading and participating in communities as they thrive or fail. I think it’s possible to recognize and intervene earlier than the really vile stuff because I’ve seen it work and I’ve seen its absence fail. I keep asking for examples of excellent large communities without active moderators because I haven’t seen those, and after a couple decades and a few hundred communities I see the anthropic principle at work: they don’t exist because they self-destruct, sink into constant vileness, or add moderation. At best they have maintain with signal-to-noise ratios far below that of Lobsters where the thoughtful commentary is crowded out by trolling, running jokes, ignorance, and plan low-quality comments because it doesn’t seem worth anyone’s while to care when posting.

                                                                                                But moderation is not a panacea in and of itself. Without good experience, judgment, and temper a bad moderator swiftly destroys a community, and this is a very common way communities fail. If it helps any, the author of the comment I removed agrees that it wasn’t done to suppress their opinion.

                                                                                                1. 1

                                                                                                  The benefit I see from moderation being part of the codebase is that it’s public, predictable and repeatable (it terms of reliability). When you take moderation decisions into your own discretion many of these virtues are lost.

                                                                                                  As for experience, I think that’s tricky because it can easily lead you to making the same mistake twice. It’s also made of your personal experiences and you’re using that to curate the discussion of other people, I would caution that it’s another method of controlling dialog (perhaps subconsciously) to what you find acceptable, not necessarily what’s best for everyone.

                                                                                                  1. 3

                                                                                                    The benefit I see from moderation being part of the codebase is that it’s public, predictable and repeatable (it terms of reliability). When you take moderation decisions into your own discretion many of these virtues are lost.

                                                                                                    Most of them go into the Moderation Log. I’ve been watching it since the jcs days since it’s what folks are supposed to do in a transparent, accountable system. Gotta put effort in. I haven’t seen much of anything that bothered me. The bans and deletes I’ve been able to follow @pushcx doing were trolling, alleged sockpuppeting, and vicious flamewaring. Some I couldn’t see where I’d rather the resource go off the front page rather getting deleted so someone looking at logs could see it for whatever it was. Nonetheless, his actions in the thread about me, the general admining, and what I’ve seen in moderation have been mostly good. A few really good like highlighting the best examples of good character on the site. I think he’s the only one I’ve seen do that on a forum in a while.

                                                                                                    You have little to worry about with him in my opinion at the moment. Do keep an eye on the comments and log if you’re concerned. Scrape them into version storage if concerned about deletions. What goes on here is pretty public. Relax or worry as much as you want. I’m more relaxed than worried. :)

                                                                                                    1. 3

                                                                                                      Yeah, I agree on the pitfalls of experience. As SeanTAllen noted in a separate branch of this thread a minute ago, there’s “but you didn’t say” and other wiggle room; I think that’s where automatic moderation falls down and human judgment is required. Voting has its own downsides like fads, groupthink, using them to disagree (which is all over this thread), in-jokes, a drifting definition of topicality, all the parallels to the behaviors of political rhetoric, etc. Lobsters has never been voting only and I don’t see a compelling reason to change that. jcs’s involvement in the site was steadily declining so I’m certainly more actively moderating, but I don’t see that as a change in character. I guess what it comes down to is that I agree with you about what successful communities do and don’t look like, but I haven’t seen one that works on the model you’ve outlined and I don’t see that kind of fundamental change as a risk worth taking.

                                                                                          2. 1

                                                                                            So FRIGN writes to oppose “SWJ madness”, and you chime in to complain that “SWJ” calls opponents “mad”. Are you calling FRIGN “SWJ” or what? It’s kind of hard to discern your point in that cloud of grievance.

                                                                                            1. 1

                                                                                              “SJW” for “social justice warrior.”

                                                                                              @COCK is sarcastically non-replying because you typo’ed.

                                                                                              1. 2

                                                                                                Not exactly, I was sarcastically non-replying because I assumed he was intentionally misunderstanding me. I assumed this because I didn’t see any ambiguity in my answer. On later inspection I noticed the ambiguity so I gave an actual reply:

                                                                                                https://lobste.rs/s/nf3xgg/i_am_leaving_llvm#c_yzwuux

                                                                                                1. 1

                                                                                                  The interesting thing is how people agreeing with Mr. cock pile on the insults against the people who they complain are insulting them by forcing them to sign on to codes of conduct which prohibit insults. It’s almost as if there was a good reason for those codes.

                                                                                                  1. 1

                                                                                                    I doubt the irony is lost on anyone supporting a CoC.

                                                                                                2. -1

                                                                                                  Yes, I’m calling FRIGN a “SWJ”.

                                                                                                  1. -1

                                                                                                    Yes, well, one sympathizes with your plight.

                                                                                                    1. 2

                                                                                                      Ah now I see the ambiguity: “people who complain about SJW, who…” the “who” referred to the “SJW”, not the “people”

                                                                                                3. 1

                                                                                                  The only comment that was removed was against FRIGN point of view. Nobody is removing differing point of view, just enforcing civil discussion.

                                                                                              2. [Comment removed by author]

                                                                                                1. 4

                                                                                                  “We at suckless are heavily opposed to code of conducts and discriminatory organizations of any shape or form.”

                                                                                                2. 4

                                                                                                  It’s responses like yours that really make the case for codes of conduct.

                                                                                                  1. 2

                                                                                                    Are you speaking for the group or is that your own opinion? Knowing that the group aligns itself with that position would certainly make me not interested in working with it or contributing.

                                                                                                    1. 6

                                                                                                      To be fair, suckless is not well-organised enough to be a group that can have a single opinion to be spoken for.

                                                                                                      That said, FRIGN is a prominent contributor and I from what I’ve seen most contributors are heavily on the side of “the code will speak for itself”.

                                                                                                  1. 20

                                                                                                    I’m sad after reading these comments.

                                                                                                    I understand and respect his decision, and these comments themselves are the very evidence why he is right. How about having OpenSource simply about openness and source? Why do politics and ideologies have to always appear?

                                                                                                    Maybe a new manifesto is needed, much like the Agile manifesto:

                                                                                                    • Individuals and interactions over group identities and categories of people
                                                                                                    • Working software over ideologies and codes of conduct
                                                                                                    • Respecting each other regardless anything
                                                                                                    1. 22

                                                                                                      Why do politics and ideologies have to always appear?

                                                                                                      Ideologies are always there. You only notice them when they’re different from your own.

                                                                                                      1. 22

                                                                                                        Perhaps the point is that some people would like a safe space for focusing on technical matters rather than every single open source and free software community getting politically co-opted into a culture war.

                                                                                                        Wanting a community focused on technical work and otherwise treating people equitably isn’t “apolitical”, you’re right, but that doesn’t make it invalid.

                                                                                                        I choose to focus on helping people who came from a similarly disadvantaged background as myself but that’s something I do on my own time and money. I don’t impose it on the software communities I participate in.

                                                                                                        I think we need the diversity of participants in free software represented in the communities and organizations. Were that the case, I think I would see more diversity in organizational structures, conduct standards, explicit goals, etc. What I perceive is a corporate-funded monoculture that is getting a bit creepy in the demands placed on others that don’t want to participate.

                                                                                                        I’m also starting to notice a social intelligence / neurotypical punching-down in these threads where someone who is less adept at adopting the politically convenient argot of the day gets excoriated for trying to express their discomfort in their own words. It makes me deeply uncomfortable how the members of this community conduct themselves in these threads.

                                                                                                        Some of my favorite communities are very engaged with the issues of access in ways that are in keeping with the zeitgeist (e.g. Rust) and do great work in part because of that. Some of my other favorite communities have a different emphasis or approach. I’d like them to co-exist peaceably and for people to do what they are most passionate about, whatever form that takes.

                                                                                                        1. 8

                                                                                                          You may be right. But what I wanted to express is: I have my ideologies, just like anybody else does, but I believe that open source should only have one ideology, which is about software, collaboration, and not people, or other ideologies. For my taste even the GNU project is too political in many aspects, but on the other hand they have some great pieces of software and those are often governed and built in a great atmosphere. (I can recall a single notable “scandal” that reached me, but the community was generally welcoming, as it is for most software projects.)

                                                                                                          Edit: Or to rephrase it even more: ideology is a system of thought covering most aspects of (human) life. I beleive everyone has a personal world view, that is closer to some pre-canned ideology than to others. Yet software projects should have ideologies of software lifecycle, not of human lifecycle, and those can be very well separated, as my personal life and life at my work can also be separated.

                                                                                                          The etiquette of the global human civilization should be enough to cover the human-human interaction part of the collaboration, as it is for professional interaction in my experience with colleagues from all over the world. We share our vision about software, quality, and work together, while we may disagree on plenty of things, which have no place in the discussion about a software project.

                                                                                                          1. 1

                                                                                                            Ideologies are always there. You only notice them when they’re different from your own.

                                                                                                            This is a really interesting claim that I’m seeing more and more! I’d love to find some sources that explain the justification for it.

                                                                                                          2. 6

                                                                                                            I’m genuinely sorry about that. :(

                                                                                                            Unfortunately, some topics always bring out discussion that highlights the leaky abstraction of other lobsters as purely technical beings.

                                                                                                            It’s the strongest argument against certain forms of content here.

                                                                                                            1. 3

                                                                                                              One of the goals of open source movements is bringing in new people. I don’t think that’s a particularly contentious goal.

                                                                                                              Outreachy is one organization that embodies particular ideas about how best to do that. It’s true those ideas are politically charged, but they’re in service of a goal that is agreed upon. So you can’t effectively pursue the goal of getting new people into open source without taking some kind of stance on the political questions.

                                                                                                              Some political questions (what is the optimal US tax policy) are more or less irrelevant to open source. But others are so pervasive that they can’t be ignored, except by creating a tacit consensus. Even the idea that we should respect each other creates conflicts where people have sufficiently different ideas about what respect means.

                                                                                                              1. 2

                                                                                                                These goals promote the production of “high quality programs” as well as “working cooperatively with other similarly minded people” to improve open-source technology.

                                                                                                                source: https://en.wikipedia.org/wiki/Open-source_software_movement

                                                                                                                Bringing a specific political agenda to an open source project violates the similarly minded people, or can have the effect of pushing away differently minded people. This is not what respect means in my opinion. I have worked a lot wit differently minded people, and we got along, as we were focusing on the goals. The goals were creating software, not changing society or a community. This moving goalposts is what is bad for OpenSource in my opinion.

                                                                                                                1. 10

                                                                                                                  “Apolitical” open source has turned out to be overwhelmingly white and male - significantly more than even the broader software industry. Reference.

                                                                                                                  I don’t think there’s any evidence that this demographic skew is deliberate. However once a group is dominated by a certain demographic then it’s easy for people to get the message that this is “not for them”, even if noone says this (and especially if some “bad apples” do).

                                                                                                                  I believe that there’s nothing about being white and male that makes the best possible open source software developers, so this demographic skew is a bug not a feature. I believe that the best possible open source community is the one with the biggest group of committed (to creating open source) people involved.

                                                                                                                  With this in mind, what can be done to encourage more diversity and bring more people in? There’s no evidence that the status quo (“focus on tech”, etc) will change by itself.

                                                                                                                  pushing away differently minded people

                                                                                                                  The only people the LLVM CoC will push out is people who repeatedly violate it (and by doing so that person is pushing out other people). Outreachy is bringing people in, it doesn’t push anyone out.

                                                                                                                  Someone decided to leave because aspects of the project no longer meshed with their political world view. You see this as “pushed out”, but I don’t really see who is pushing them here (unless there are some CoC violations we don’t know about or something, but AFAIK there aren’t).

                                                                                                                  1. 1

                                                                                                                    Open source is an explicitly political idea to start.

                                                                                                              1. 25

                                                                                                                This seems a good time to promote a paper our team published last year (sorry to blow my own trumpet :P ): http://soft-dev.org/pubs/html/barrett_bolz-tereick_killick_mount_tratt__virtual_machine_warmup_blows_hot_and_cold_v6/

                                                                                                                We measured not only the warmup, but also the startup of lots of contemporary JIT compilers.

                                                                                                                On the a quad-core i7-4790 @ 3.6GHz with 32GB of RAM, running Debian 8:

                                                                                                                • C was the fastest to start up at 0.00075 secs (+/- 0.000029) – surprise!
                                                                                                                • LuaJIT was the next fastest to start up at 0.00389 secs (+/- 0.000442).
                                                                                                                • V8 was in 3rd at 0.08727 secs (+/- 0.000239).
                                                                                                                • The second slowest to start up was HHVM at 0.75270 secs (+/- 0.002056).
                                                                                                                • The slowest overall to start up was JRubyTruffle (now called TruffleRuby) at 2.66179 sec (+/- 0.011864). This is a Ruby implementation built on GraalVM (plain Java on GraalVM did much better in terms of startup).

                                                                                                                Table 3 in the linked paper has a full breakdown.

                                                                                                                The main outcome of the paper was that few of the VMs we benchmarked reliably achieved a steady state of peak performance after 2000 benchmark iterations, and some slowed down over time.

                                                                                                                1. 1

                                                                                                                  I saw a talk about this. Very cool stuff! It is a good antidote to the thrall of benchmarks.

                                                                                                                  1. 1

                                                                                                                    Cool work! You should make that a submission on its own in the morning in case someone misses it due to a filter. For instance, people who don’t care about Python specifically like main post is tagged with. Just programming, performance, and compiler tags should do. Good news is a lot of people still saw and enjoyed it per the votes. You definitely deserve an “authored by” submission, though. :)

                                                                                                                    1. 3

                                                                                                                      It was on the lobsters front page about six months ago. https://lobste.rs/s/njsxtv/virtual_machine_warmup_blows_hot_cold

                                                                                                                      It was a very good paper and I personally wouldn’t mind seeing it reposted, but I don’t actually know what the etiquette for that is here.

                                                                                                                      1. 1

                                                                                                                        I forgot. My bad. I should probably do a search next time.

                                                                                                                  1. 8

                                                                                                                    This is an amazingly astute analysis.

                                                                                                                    Posted by Neelakantan Krishnaswami

                                                                                                                    Ah, that explains it! I’d forgotten Semantic Domain was Neil’s blog until I saw the byline.

                                                                                                                    1. 1

                                                                                                                      Glad you said something because skimming the post titles brought me to a few with submission potential. Ill look at them when off work. Author often partners with another favorite PLT researcher of mine whose on DeepSpec team.

                                                                                                                    1. 1

                                                                                                                      According to them, “FP is easier to reason about” is true even though they couldn’t prove the IP programs correct

                                                                                                                      Do you mean “prove the FP programs correct”?

                                                                                                                      1. 1

                                                                                                                        Isn’t the conclusion basically Immediate Mode GUI?

                                                                                                                        1. 4

                                                                                                                          I’m skeptic, but I think they can pull it off.

                                                                                                                          In the end, they only need to reach half of Intel’s performance, as benchmarks suggest that macOS’ performance is roughly half of Linux’ when running on the same hardware.

                                                                                                                          With their own hardware, they might be able to get closer to the raw performance offered by the CPU.

                                                                                                                          1. 7

                                                                                                                            they only need to reach half of Intel’s performance, as benchmarks suggest that macOS’ performance is roughly half of Linux’ when running on the same hardware

                                                                                                                            I’m confused. Doesn’t that mean they need to reach double Intel’s performance?

                                                                                                                            1. 11

                                                                                                                              It was probably worded quite poorly, my calculation was like:

                                                                                                                              • Raw Intel performance = 100
                                                                                                                              • macOS Intel performance ~= 50
                                                                                                                              • Raw Apple CPU performance = 50
                                                                                                                              • macOS Appe CPU performance ~= 50

                                                                                                                              So if they build chips that are half as fast as “raw” Intel, but are able to better optimize their software for their own chips, they can get way closer to the raw performance of their hardware than they manage to do on Intel.

                                                                                                                            2. 7

                                                                                                                              Why skeptic? They’ve done it twice before (68000 -> PowerPC and PowerPC -> Intel x86).

                                                                                                                              1. 4

                                                                                                                                And the PPC → x86 transition was within the past fifteen years and well after they had recovered from their slump of the ‘90s, and didn’t seem to hurt them. They’re one of the few companies in existence with recent experience transitioning microarchitectures, and they’re well-positioned to do it with minimal hiccups.

                                                                                                                                That said, I’m somewhat skeptical, too; it’s a huge undertaking even if everything goes as smoothly as it did with the x86 transition, which is very far from a guarantee. This transition will be away from the dominant architecture in its niche, which will introduce additional friction which was not present for their last transition.

                                                                                                                                1. 2

                                                                                                                                  They also did ARM32->ARM64 on iOS.

                                                                                                                                  1. 3

                                                                                                                                    That’s not much of a transition. They did i386 -> amd64 too then.

                                                                                                                                    (fun fact, I also did that, on the scale of one single Mac - swapped a Core Duo to a Core 2 Duo in a ’06 mini :D)

                                                                                                                                    1. 1

                                                                                                                                      My understanding is that they’re removing some of the 32-bit instructions on ARM. Any clue if that’s correct?

                                                                                                                                      1. 1

                                                                                                                                        AArch64 processors implement AArch32 too for backwards compatibility, just like it works on amd64.

                                                                                                                                        1. 1

                                                                                                                                          As of iOS 11, 32-bit apps won’t load. So if Apple devices that come with iOS 11 still have CPUs that implement AArch32, I’d guess it’s only because it was easier to leave it in than pull it out.

                                                                                                                                          1. 1

                                                                                                                                            Oh, sure – of course they can remove it, maybe even on the chip level (since they make fully custom ones now), or maybe not (macOS also doesn’t load 32-bit apps, right?). The point is that this transition used backwards compatible CPUs, so it’s not really comparable to 68k to PPC to x86.

                                                                                                                                            1. 1

                                                                                                                                              I of course agree that this most recent transition isn’t comparable with the others. To answer your question: the version of macOS they just released a few days ago (10.13.4) is the first to come with a boot flag that lets you disable loading of 32-bit applications to, as they put it, “prepare for a future release of macOS in which 32-bit software will no longer run without compromise.”

                                                                                                                                2. 3

                                                                                                                                  I didn’t know this. Do you know which benchmarks show macOS at half of Linux performance?

                                                                                                                                  1. 3

                                                                                                                                    Have a look at the benchmarks Phoronix has done. Some of them are older, but I think they show the general trend.

                                                                                                                                    This of course doesn’t take GPU performance into account. I could imagine that they take additional hit there as companies (that don’t use triple AAA game engines) rather do …

                                                                                                                                    Application → Vulkan API → MoltenVK → Metal

                                                                                                                                    … than write a Metal-specific backend.

                                                                                                                                    1. 1

                                                                                                                                      I guess you’re talking about these? https://www.phoronix.com/scan.php?page=article&item=macos-1013-linux

                                                                                                                                      Aside from OpenGL and a handful of other outliers for each platform, they seem quite comparable, with each being a bit faster at some things and a bit slower at others. Reading your comments I’d assumed they were showing Linux as being much faster in most areas, usually ending up about twice as fast.

                                                                                                                                  2. 3

                                                                                                                                    The things they’re slow at don’t seem to be particularly CPU architecture specific. But the poor performance of their software doesn’t seem to hurt their market share.

                                                                                                                                  1. 22

                                                                                                                                    Comments really aren’t a “code smell.”

                                                                                                                                    1. 16

                                                                                                                                      Nothing stinks quite like uncommented complicated code.

                                                                                                                                      1. 7

                                                                                                                                        Exactly! Margaret Hamilton’s code itself, whom the author cites, is full of comments. Possibly more comments than source code. Which, if you’re sending a ship with the processing power of a toothbrush to the Moon, is a great idea.

                                                                                                                                        1. 10

                                                                                                                                          This code is not readable on it’s own, if it was possible to use variable and function names most of those comments could be removed. It’s also quite likely that every detail of the program was decided before writing the code. In a modern codebase things are always evolving and comments can get left behind.

                                                                                                                                          1. 5

                                                                                                                                            This is my fear with comments. I code in a team of 2, so we don’t really comment stuff. I know it’s bad, but I’m a team of two, we kind of know the whole code anyway.

                                                                                                                                            We also don’t write tests. We’re bad people.

                                                                                                                                            1. 4

                                                                                                                                              Oh man, save yourself some pain and write unit tests. You don’t need 100% test coverage, even non-zero coverage of basic functionality will save you so much time. If you don’t know how to use test frameworks then you don’t have to bother, just write one big main file with a function per test you want to do, and call them all in main. That’s basically what test frameworks are, so if you need a low barrier to entry then don’t bother learning one yet, just do something. If you program in a language with a REPL you can literally just save the stuff you use to manually test into a file so you don’t have to type it more than once.

                                                                                                                                              I personally couldn’t develop without unit tests. You can test the application and do something that hits the code path you just changed, which is time consuming and tedious, especially to do repeatedly, or you can write a little bit of code that calls the code and run it with zero effort every time all the time for the rest of forever. Even a small sanity test of the happy path is better than nothing, you can at least check your code doesn’t blatantly fuck up with normal input and save yourself the round trip through the application.

                                                                                                                                              If I had to code without unit tests I’d quit. And I have worked on teams that didn’t want to unit test, so I had out-of-tree tests I wrote for myself. The amount of bugs I fixed a couple hours after someone else committed was mind boggling.

                                                                                                                                              1. 4

                                                                                                                                                How do you even develop without unit tests?

                                                                                                                                                I’d avoid this kind of shaming, especially since the commenter has already noted (in a self-deprecating manner) that they’re aware of the stigma associated with not using tests.

                                                                                                                                                If the intent is to encourage the use of tests, I would put your last paragraph first and focus on how it would help GP.

                                                                                                                                                1. 3

                                                                                                                                                  Revised, thank you for the feedback. 😊

                                                                                                                                                2. 2

                                                                                                                                                  Depends on the language and coding style though. I wrote a 25000 line game in C++ without a single test, and I never had a regression. I obviously had occasional bugs in new code, but they’re unavoidable either way. Now my preferred language is Haskell, and I feel the need for tests even less. I generally prefer correct-by-construction to correct-by-our-tests-pass. My purpose isn’t to discredit tests though, just that not every codebase has as much need for them.

                                                                                                                                                  1. 2

                                                                                                                                                    I’m just self taught and kind of out of my depth on it. I had a dev friend who did integration tests, and they were really brittle and slowed us down a lot. Are unit tests not as bad at slowing down a small team of two devs who are both self taught? We’re good / mediocre / we build good stuff (I consider ourselves hackers) but we don’t have a ton of time.

                                                                                                                                                    1. 1

                                                                                                                                                      Unit tests don’t have to slow things down like integration tests. In your situation, I’d wait until the next bug comes up, then instead of fixing the bug immediately, I’d write a test that reproduces the bug. Usually doing that helps narrow down where the bug is, and after fixing it, the test passes and (here’s the cool part) you will never see that bug again

                                                                                                                                                      1. 1

                                                                                                                                                        That’s what i was told about integration tests, but I had to set up all these extra dependencies so that the integration tests continued to work every time we added an external service… we’d have to mock it or shit would break.

                                                                                                                                                        I’m assuming since Unit tests don’t run like that, they don’t have external dependencies like that? You’d mock on a component by component basis, and wouldn’t have to mock unrelated shit just to keep them running… hmm… maybe i will.

                                                                                                                                                        Any unit testing video series I could watch as a noob to get started you’d recommend? Or anything like that?

                                                                                                                                                    2. 1

                                                                                                                                                      I second saving yourself pain with writing tests! I’ve avoided lots of rakes with a handful of tests

                                                                                                                                                  2. 2

                                                                                                                                                    What makes everybody think that the programmers who change code so that it no longer matches the comments they just used to understand it will somehow write code so clear you don’t need comments to understand it?

                                                                                                                                                    1. 1

                                                                                                                                                      Often people write code like total = price * 1.10 #This is tax which can be rewritten as total = price * TAX A lot of comments like that can be removed by just putting them in the actual code.

                                                                                                                                                      1. 2

                                                                                                                                                        I’m not suggesting it can’t be done I’m suggesting it won’t be done

                                                                                                                                                  3. 4

                                                                                                                                                    I’ll also correct the article to say a team did the code and review per the reports I read. She describes it here in “Apollo Beginnings” as a team with a lot of freedom and management backing with unusual requirement to get software right the first time. Unfortunately, a rare environment to work in.

                                                                                                                                                  4. 5

                                                                                                                                                    You can’t write test coverage for a comment. You can’t have your compiler warn you that a comment is inaccurate.

                                                                                                                                                    If you have no tests, and your code is full of dead paths, you can’t even percieve the risk posed by an errant, out of date, or unintentionally misleading comment.

                                                                                                                                                    Sometimes they’re necessary. But the best default advice to a ‘mediocre’ developer is to write better code, not add more comments.

                                                                                                                                                    1. 5

                                                                                                                                                      You can’t write test coverage for a comment. You can’t have your compiler warn you that a comment is inaccurate.

                                                                                                                                                      https://docs.python.org/3/library/doctest.html

                                                                                                                                                      If you have no tests, and your code is full of dead paths, you can’t even percieve the risk posed by an errant, out of date, or unintentionally misleading comment.

                                                                                                                                                      If you have no tests or comments you have no way of knowing whether your code is actually matching your spec, anyway.

                                                                                                                                                      Sometimes they’re necessary. But the best default advice to a ‘mediocre’ developer is to write better code, not add more comments.

                                                                                                                                                      That’s like saying that the best default advice to a ‘mediocre’ developer is to write less buggy code, not add unit tests.

                                                                                                                                                      1. 2

                                                                                                                                                        doctest is great for testing comments that include code, but nothing else… If a comment says “Framework X is expecting variable foo in JSON format inside the array bar.” I would be inclined to believe it at first and then test the hypothesis that the comment is wrong. That’s the danger of comments.

                                                                                                                                                        1. 1

                                                                                                                                                          A couple of times today I caught myself committing deleted or changed lines without deleting or changing the associated comment. Luckily I could go back and fix things so that the comments weren’t complete nonsense. Sometimes though they escape detection.

                                                                                                                                                      2. 2

                                                                                                                                                        Once the code is cleaned as much as possible and still is hard to understand, or if something is tricky, comments help a lot!

                                                                                                                                                        I guess the author talked about comments that could be removed by making the code cleaner.

                                                                                                                                                        Maybe it depends on what motivates one to add comments, there might be good reasons as well.

                                                                                                                                                        1. 2

                                                                                                                                                          True.

                                                                                                                                                          But Comments that are wrong or out of date stink like dead rats.

                                                                                                                                                          I view asserts as “executable comments” that are never out of date. Sometimes they are wrong… but testing will tell you that.

                                                                                                                                                          If a plain comment is wrong… nothing will tell you except a very long, very Bad Day at work.

                                                                                                                                                          1. 7

                                                                                                                                                            But Comments that are wrong or out of date stink like dead rats.

                                                                                                                                                            Valuable comments are something along the lines of “this looks weird, but I did it because of [historical reason that is likely to be forgotten] even though [other implementation] looks like the more obvious solution at first glance; it wouldn’t have worked because [rationale].”

                                                                                                                                                            The longer I spend working with old codebases, the more I’ve come to treasure such comments. But comments that just explain what the code is doing rather than why are suspect.

                                                                                                                                                          1. 14

                                                                                                                                                            Questions (and answers) like this really ought to start with a definition of what they mean by “Agile”.

                                                                                                                                                            The top voted answer appears to be critiquing a very rigid Capital-A-Agile methodology, but none of it comes through to me as a valid critique of a more general lower-case-a-agile methodology: deploy regularly, tight feedback cycles with users, integrate feedback.

                                                                                                                                                            1. 10

                                                                                                                                                              I guess these discussions are always a bit futile, because “Agility” is by definition a positive property. It’s a tautology really.

                                                                                                                                                              Most criticism of agile methods are more focussed on a specific implementation (scrum at company X), and the usual response is “this is not true agile”.

                                                                                                                                                              1. 7

                                                                                                                                                                “this is not true agile” I’ve been guilty of this in the past. Agile is good, therefore if what you’re describing to me isn’t good then it’s not true agile.

                                                                                                                                                                But after years of Scrum at various shops, sometimes under the guidance of pricey “Scrum coaches” consultants I’m totally burnt out and disillusioned by it.

                                                                                                                                                                As you say agile is by definition positive but beyond this, I think there are still a lot of good ideas and principles in the early agile movement just not in the Scrum process itself (which doesn’t predate Agile) and what it has come to represent.

                                                                                                                                                                1. 6

                                                                                                                                                                  I would define Agile as “follows the principles of the Agile Manifesto”. This implies a few things:

                                                                                                                                                                  1. The Manifesto devalues things like comprehensive documentation. This can be criticized and discussed.

                                                                                                                                                                  2. Scrum is only one possible instance of Agile. Not necessarily the best, maybe not even a good one. I would suspect that people discussed that to death already when Scrum was fresh.

                                                                                                                                                                  3. You can do Scrum without Agile. Scrum is usually defined superficially. This means there is a lot of room for variation including stuff which undermines the Agile intentions. Second, it helps the consulting business, because how could you get Scrum right except by oral teachings of certified people?

                                                                                                                                                                  1. 1

                                                                                                                                                                    The Manifesto devalues things like comprehensive documentation. This can be criticized and discussed.

                                                                                                                                                                    This aspect is a bit peculiar. Do they devalue software-documentation? (which is how I understood this principle). Or maybe it can be thought of a devaluation of a requirements-library/document. I came to terms with this principle in the sense, that it meant as an advice to avoid wasteful, up-front documentation, because clearly you cannot build a good product without documentation.

                                                                                                                                                                    1. 1

                                                                                                                                                                      From the manifesto:

                                                                                                                                                                      That is, while there is value in the items on the right, we value the items on the left more.

                                                                                                                                                                      It’s not “documentation doesn’t matter”, it’s “deliver something that works or your documentation is pointless”.

                                                                                                                                                                    2. 1

                                                                                                                                                                      The key bit of superficiality that reduces Scrum’s value is that people ignore the fact that Scrum does not mandate a process:

                                                                                                                                                                      It is the opposite of a big collection of interwoven mandatory components. Scrum is not a methodology. What is Scrum?

                                                                                                                                                                      Scrum is not a process, technique, or definitive method. Rather, it is a framework within which you can employ various processes and techniques. Scrum Guide

                                                                                                                                                                      They take the initial process guide, defined in Scrum as a starting point to test, reflect, and improve upon, and treat it as a big collection of interwoven mandatory components. It makes middle management feel good as they get to hold meetings, see progress, and implement a buzzword, but avoids all of the valuable parts of Scrum.

                                                                                                                                                                    3. 3

                                                                                                                                                                      Bertrand Meyer has some criticisms (and compliments) of the core ideas, especially user stories vs requirements.

                                                                                                                                                                      1. 1

                                                                                                                                                                        thank you for that link. Would prefer text over video, but if it is Meyer, I’ll try to make room for it.

                                                                                                                                                                        1. 1

                                                                                                                                                                          Yeah, I feel the same way. He apparently has a book on the same topic, but I haven’t read it.

                                                                                                                                                                          1. 1

                                                                                                                                                                            okay, I haven’t watched it fully, but skipped over a few parts ,but I made sure to look at the user storeis and requirements parts. I am a bit torn on his view, because I can relate to his feeligns as a software user, that many times his user-story was forgotten and he attributes this to not generalizing them into requirements. However, I wonder if the lack of a requirements document is really the reason. Also, I think he must have forgotten how unusable a lot of requirements-backed software has been.

                                                                                                                                                                            I share his sentiments on design and architecture work. However, good teams with good management have always made it possible to fit such work into the agile workflow. I attribute to agile consultants, that throughput and “velocity” have been overemphasized to sell agile, when it should much more be about building good products.

                                                                                                                                                                            He lost me when he commented on test-driven development.

                                                                                                                                                                          2. 1

                                                                                                                                                                            His book is called “Agile! The good, the hype, and the ugly”, it’s brief, insightful, and well worth a read.

                                                                                                                                                                      2. 5

                                                                                                                                                                        I would argue that what you’re talking about there is more the consequences of adopting continuous integration and making deployments less painful, which one might call operational agility, but it has very little to do with the Agile methodology as such, at least from what I can see.

                                                                                                                                                                        1. 6

                                                                                                                                                                          Nope. Having tight feedback cycles with users is a core principle of Agile. Continuous integration on its own has nothing to do with user feedback, and doesn’t necessarily cause responsiveness to user feedback.

                                                                                                                                                                          1. 1

                                                                                                                                                                            The Agile Manifesto does not mention tight cycles, only “customer collaboration”.

                                                                                                                                                                            1. 2

                                                                                                                                                                              the Agile Principles (you have to click the link at the bottom of the manifesto) make multiple references.

                                                                                                                                                                              1. 1

                                                                                                                                                                                Can you explain? I don’t see the words “tight”, “feedback” or “cycles” here http://agilemanifesto.org/principles.html

                                                                                                                                                                                1. 1

                                                                                                                                                                                  Presumably: The main difference between collaboration with customers (vs contract negotiations) is that rather than getting a single document attempting to describe what the customer wants up front (feedback cycle = one contract) you continually work with them to narrow down what they actually want (shorter/tighter than that).

                                                                                                                                                                                  1. 1

                                                                                                                                                                                    the first principle, satisfy the customer through early and continuous delivery of valuable software, implies it. the third, deliver working software frequently, implies it. the fourth, business people and developers must work together daily, is an out-and-out statement of it.

                                                                                                                                                                              2. 1

                                                                                                                                                                                In my experience CI&CD is more useful for bugs than features. If you are coming from waterfall I understand where the connection between CI/CD and agile comes in.

                                                                                                                                                                                1. 2

                                                                                                                                                                                  Regardless of your experience and opinion of utility, those strategies are core to Agile and have obvious analogues in other industries that Agile draws inspiration from. They aren’t unique or novel products of Agile, but I think it’s fair to say that’s how they reached such widespread use today. It’s definitely incorrect to say they have little to do with Agile methodology.

                                                                                                                                                                            2. 3

                                                                                                                                                                              After having been making the error of using the word “agile” in the latter generic sense for some time, I came to realize that pretty much nobody does it. When you say “Agile” business people automatically think “Scrum” and it works (still) as a magical incantation. When you try to talk about the actual merits of agile approaches (plural) they tend to phase you out and think you’re trying to look smart without knowing anything.

                                                                                                                                                                              1. -2

                                                                                                                                                                                The top voted answer appears to be critiquing a very rigid Capital-C-Communism ideology, but none of it comes through to me as a valid critique of a more general lower-case-c-communism ideology: democratic, common ownership of the means of production, state and classlessness

                                                                                                                                                                                1. 3

                                                                                                                                                                                  here

                                                                                                                                                                                  He is so “crazy” that one of his former colleagues has a totem that they use to mock him in his absence? Fascinating.

                                                                                                                                                                                  1. 4

                                                                                                                                                                                    I would just keep in mind that Michael is a member of this community when making comments like this.

                                                                                                                                                                                    1. 2

                                                                                                                                                                                      I think being skeptical is fine, and perhaps even warranted. However, the top level link /seems/ like a fairly reasonable read to me. Judge it on its content.

                                                                                                                                                                                      1. 5

                                                                                                                                                                                        I think the problem is he speaks pretty authoritatively despite his expertise being based on just his experiences, or his perception of his experiences. It sounds good, but a lot of things sound good and are only occasionally true, not always true.

                                                                                                                                                                                        I used to think he was just idiosyncratic til I had an experience that contradicted his claims, and then he just said “wait til you enter the real world.” I’m actually a few years older than him I believe. He’s incapable of imagining that things may be different. Even if he were right, it’s a very rigid view that doesn’t account for contrary evidence. I’m wary of trying to learn anything from people like that.

                                                                                                                                                                                      2. 2

                                                                                                                                                                                        He showed himself to be pretty out there at Google, when he rage-quit with a particularly nutty letter to the entire company after not getting a promotion. Lots of bits of that letter were memes when I left Google (“I have T7-9 vision!”).

                                                                                                                                                                                        1. 2

                                                                                                                                                                                          He showed himself to be pretty out there at Google, when he rage-quit with a particularly nutty letter to the entire company after not getting a promotion.

                                                                                                                                                                                          It wasn’t about not getting a promotion. I was marked down in “Perf” for speaking up about an impending product failure. (Naively, I thought that pointing out the problem would be enough to get it fixed. It was obvious to me what was about to go wrong– and I was later proven right– but I lacked insight into how to convince anyone.) I found out years later that I was put on a suspected unionist list. Needless to say, the whole experience was traumatic. There’s a lot that I haven’t talked about.

                                                                                                                                                                                          The mailing list activity… I’m embarrassed by that. I did not handle the stress well.

                                                                                                                                                                                          Lots of bits of that letter were memes when I left Google (“I have T7-9 vision!”).

                                                                                                                                                                                          Isn’t it a sign of success, if people are talking about your mistakes several years later?

                                                                                                                                                                                        2. 1

                                                                                                                                                                                          Personally I think Michael O Church is a genius but I’m keenly aware that there’s a fine line between genius and madness. /u/churchomichael is not Michael O Church but seems to be another very intelligent writer but without the anger and national and international politics interest.

                                                                                                                                                                                          1. 1

                                                                                                                                                                                            doing some digging he seems….. crazy.

                                                                                                                                                                                            I’ve had a lot of difficult experiences, some related to the political exposure that comes from being outspoken in a treacherous industry. I’ve needed treatment for some of the after-effects.

                                                                                                                                                                                            Like, he got banned from Hacker News, and also Wikipedia.

                                                                                                                                                                                            And Quora, too! Wikipedia I actually deserved; that was 2006 and I was being a jerk. The Quora ban was specifically requested by Y Combinator after they bought it.

                                                                                                                                                                                            He just seems to spend an insane amount of time writing ranty comments/articles/etc online and not much else.

                                                                                                                                                                                            It’s not that much of my time.

                                                                                                                                                                                            See /u/churchomichael

                                                                                                                                                                                            That’s not me. I’m as surprised as you are that someone would name his account in homage to me. There are also Reddit accounts (and even a subreddit!) that exist to mock me.

                                                                                                                                                                                            Dude just seems to want to complain.

                                                                                                                                                                                            No, I’d like to fix things, but the odds of that are very, very poor.

                                                                                                                                                                                            He has 45 suspected sockpuppet accounts on Wikipedia

                                                                                                                                                                                            Yeah, most of those accounts don’t exist. That’s a hit piece. I’m embarrassed by some of what I did on Wikipedia in 2003-6, but I never had 45 alternate accounts, though I did use so-called “role accounts” back when it was accepted.