1. 17
    1. 8

      And despite all of this, most shells have true and false as built-in commands anyway…

      $ type true
      true is a shell builtin
      

      which, imo, gives another twist to the whole debate, since useless changes are made to a “useless” (since to my knowledge the binary itself isn’t used) program. The most it can offer us, is a self-reflective lesson in the Unix ideals and their betrayals.

      1.  

        Shell builtins aren’t used for exec calls and their ilk, no? So if you want to use false as the login shell for a an account, you’d need the “real” /bin/false?

        1.  

          Fair enough, that’s true (pardon the pun). I was only thinking about a shell scripting environment.

          On the other hand, who knows how long it will take until systemd or some other do it all system totally takes over account management, making false and true superfluous in that department too.

        2.  

          They’re built-ins on most fully featured interactive shells (bash, zsh, etc.), but on many systems the default shell-script interpreter /bin/sh is a more minimalist shell where they aren’t built-ins. That’s the case on at least Debian (dash) and FreeBSD (ash). So the default for shell scripts on such systems is that true actually does run /bin/true.

          1.  

            The dash on my system (void, and another one running ubuntu and a server running debian(!)) claims that true was a built in command. Before writing my comment, I checked bash, where I already knew it was true, ksh on an OpenBSD system and dash on my laptop. Even the shell on my android phone (I belive the default one in /system/bin/sh) has the two program as built in components.

            I haven’t tried ash, but it seems to me that it’s becoming ever rarer, even if a more minimalist shell might theoretically use the binaries directly.

            1.  

              Oops, my mistake, sorry. I had checked before posting that comment, but checked incorrectly. I did this (starting in a zsh shell):

              mjn@mjn:~% which true
              true: shell built-in command
              mjn@mjn:~% ls -l /bin/sh
              lrwxrwxrwx 1 root root 4 Jun 28  2017 /bin/sh -> dash
              mjn@mjn:~% sh
              $ which true
              /bin/true
              

              But I didn’t realize that the difference here is due to which, rather than true, going from builtin in zsh to not builtin in dash. Seems that making which a builtin is zsh-specific behavior, and the POSIX way to get info on how a command will be executed is command -V.

      1. 11

        Awk and the various members of the Unix shell family?

        1. 6

          Yup, I’ve looked at at 5-10 shell implementations, and all of them are essentially AST interpreters + on-the-fly parsing/evaluating.

          Just like Ruby was an AST interpreter that recently became a bytecode interpeter, R made the same jump recently:

          A byte code compiler for R

          https://scholar.google.com/scholar?cluster=1975856130321003102&hl=en&as_sdt=0,5&sciodt=0,5

          1. 1

            Do you happen to know how recently they’ve switched? (And an example of a large project written purely (or almost purely) in that language?) Thanks.

            1. 5

              Ruby switched in 2007, i used it for a few years before that and the speedups were quite dramatic. See https://en.wikipedia.org/wiki/YARV for a bit more info.

              1.  

                Cool! That links to some benchmarks which saves me from trying to do them.

                Looks like its only about 4x on average which is hopeful (for having no bytecode).

              2. 3

                It looks like it’s around R release 2.13 and 2.14, which was around 2011. R is from the early/mid 90’s, similar to Ruby, and I think they both switched to bytecode compilers at around the same time.

                https://csgillespie.github.io/efficientR/7-4-the-byte-compiler.html

                https://cran.r-project.org/src/base/R-2/

                R is for data analysis, so it’s hard to say what a “large project” is. It’s also a wrapper around Fortran numeric libraries in the same way Python is a wrapper around C (or NumPy is a wrapper around Fortran.)

                There are thousands of libraries written in R:

                https://cran.r-project.org/web/packages/available_packages_by_date.html

                1.  

                  Thanks! This actually looks like a pretty good example. That website even lists package dependencies so I can try to find a long chain of pre-2011 dependencies.

            2. 4

              Unix shell, for sure. GNU awk and mawk compile to bytecode. Not sure about nawk, though the regexp implementation in nawk uses bytecode.

              1. 2

                GNU awk and mawk compile to bytecode

                Really? That seems wierd, since gawk is both slower than nawk and mawk. Or is it because of the features the GNU project added, that it’s overall slower?

                1. 6

                  One big difference is that gawk operates on sequences of Unicode characters, while mawk and nawk operate on sequences of bytes. If your text is all ASCII, setting your locale to ‘C’ will cause gawk to also operate on bytes, which should close at least some of the performance gap. But gawk’s Unicode support can be nice if you have UTF-8. mawk and nawk will often still produce the right result on UTF-8 input, especially when non-ASCII characters are only passed through unmodified. But sometimes you get:

                  $ echo $LANG
                  en_GB.UTF-8
                  $ echo "ÜNICÖDE" | gawk '{print tolower($0)}'
                  ünicöde
                  $ echo "ÜNICÖDE" | nawk '{print tolower($0)}'
                  �nic�de
                  $ echo "ÜNICÖDE" | mawk '{print tolower($0)}'
                  �nic�de
                  
              2. 1

                Thanks for the example. I don’t know how they work internally. Although to me, they are in the write-more-primitives-in-a-faster-language category. The primitives being the external commands called (maybe awk a bit less?).

                Are there examples of multi-layered library (or use) for awk and shell?

                Edit: typo

                1. 2

                  What does “multi-layered push” mean?

                  As for awk, when I use it, I never shell out. If I need to shell out from awk, I just write the whole thing in Go or something. So I just use the primitives exposed by awk. Though, before Go, I shelled out of awk more often.

                  1. 1

                    multi-layered push

                    Oops, that’s the wrong words. That’s what I get for alt-tabbing between the comment window and a shell.

                    I mean something like calling a library which calls another library which calls another library, with all intermediate libraries written in awk (or shell). (Or the same thing with functions if there are layers one on top of each other. By this I mean functions in one layer treats functions in the previous layer as primitives).

                    As for awk, when I use it, I never shell out.

                    That would be a good example then if you also have at least two layers of functions (although more would be nice).

              1. 15

                PicoLisp is an interesting example of a purely interpreted language, though it doesn’t meet your request for a popular interpreter. It uses dynamic variable binding, which was historically a common feature of the directly-walking-sexpressions approach to interpreting Lisp.

                Emacs’s Elisp used to be implemented similarly, but now has a byte-compiler. Earlier than that, almost all Lisp and Scheme systems used to include a directly-walking-sexpressions interpreter for use at the REPL because compilers had too high latency to use interactively. But compilers have gotten fast enough that many systems have switched over to just using a compiler everywhere, to avoid having maintain a separate interpreter. One that still has both an interpreter and a compiler is Chez Scheme, which is now open source (and like all Scheme interpreters, it does lexical variable binding). The interpreter has lost most of its reason for existence though: historically, the Chez business model was that the interpreter, Petit Chez, was free and cross-platform, while platform-specific native-code compilers were sold as products.

                1. 10

                  Emacs’s Elisp used to be implemented similarly, but now has a byte-compiler.

                  Though Emacs has a byte compiler, it’s not used exclusively. Nearly every Emacs setup runs a mix of interpreted and compiled code, so Emacs may contain the most widely-used non-bytecode interpreter in the world.

                  1. 2

                    This is very interesting to learn. Are there large pure PicoLisp projects? Do you happen to know what’s the last version of ELisp that was still interpreted? I’ve never looked but I’m guessing Emacs is mostly written in ELisp?

                    Edit: Ok, so I just looked at some PicoLisp source for PilBox and it seems to me that the call graph is pretty shallow. That is, functions in these libraries call primitives but not each other very much. That and using its Java FFI for Android is really cool! But doesn’t quite help with examples of what I’m trying to find (tricks to get around the speed issue from nesting in direct AST interpretation).

                      1. 1

                        On a related note, femtolisp was used in Julia compiler. They rewrote Julia in mostly Julia. So, I’m not sure how much femotlisp is in there now.

                        1. 2

                          Thanks!

                          even though many primitives (e.g. filter and for-each) are written in the language instead of C.

                          This sounded promising but then it went on to

                          femtolisp uses a bytecode compiler and VM

                          which is unfortunate for the current question. Otherwise, Julia should have certainly been a large enough example of a femtolisp program.

                          1. 1

                            I seem to recall that femtolisp was a straight up interpreter at one point in time, but I think I may be confusing that with the tiny implementation, which I’d guess is less used than femtolisp itself, and therefore purely academic in nature. :)

                          2. 2

                            On a related note

                            I’m not sure how this is at all related, to be honest. :)

                            1. 1

                              Yeah, I read it too quickly or forgot no bytecode by the time I replied. My bad. Least author found the link interesting.

                      1. 1

                        Does anyone use J? When I looked it up it looks like a code golf language.

                        1. 3

                          @hwayne has done two write-ups on it he submitted here to Lobsters:

                          Handwriting Programs in J

                          Calculating Burn Rates in J

                          1. 3

                            It’s terse but useable. The environment/REPL is quite nice. I wrote a post about the J FFI a while back.

                            1. 2

                              The environment/REPL is quite nice.

                              Less famously than the symbols/terseness, this has been a big part of the APL-family ethos over the years too, which is an interesting combination. There’s an anecdote claiming that the original APL having a conveniently interactive time-sharing interpreter, in the era when most stuff was run as batch jobs, was even the main reason APL became established within IBM:

                              The history of APL at IBM has been a curious one. In the early days, those of us who believed in APL were regarded as being a little (perhaps more than a little) strange. Since much of the strangeness was concentrated in IBM Research, this was tolerated. Practical people (the kind of people who make sales and meet payrolls) expect research people to be strange and are usually disappointed when they’re not. So the strange people in Research were written off as overhead and left to amuse themselves with their incomprehensible, impractical symbols.

                              What that particular Research group did, of course, was produce the most solid, dependable, useful time-sharing system anyone had ever seen. I wish I could tell you what it felt like in those early days to have the use of a system that was up twenty-four hours a day, seven days a week. No one had ever known such a luxury. People who didn’t bother to investigate never believed us when we told them about it.

                              But some people did investigate what the researchers had developed and started to use it to do IBM’s key bread-and-butter applications. This way of doing business was so productive that it spread like wildfire. By the time the practical people found out what had happened; APL was so important a part of how IBM ran its business that it could not possibly be uprooted.

                              1. 1

                                Do you know how to access a global variable from a library? Such as extern WINDOW *stdscr;.

                                1. 1

                                  Unfortunately I don’t know of a way, other than wrapping it in a C function to return the pointer, sorry.

                              2. 2

                                I have a simple lbfgs ported to J. If anyone is interested, https://gist.github.com/jxy/9db97e44708d0946c3da2d7e82fefcd0

                                1. 2

                                  It makes a fantastic calculator.

                                1. 3

                                  This post was discussed to some extent in this thread just as a pointer.

                                  1. 4

                                    This is a problem with any language or library. You need to know what is available in the Python library and what it does to use it effectively. You need to know the binaries in /bin to use the shell effectively. And so on.

                                    It’s just like learning a human language: Until you use the vocabulary enough to get comfortable, you are going to feel lost, and spend a lot of time getting friendly with a dictionary.

                                    1. 8

                                      This is a problem with any language or library. You need to know what is available in the Python library and what it does to use it effectively. You need to know the binaries in /bin to use the shell effectively. And so on.

                                      I think this probably misses the point. The Python solution was able to compose a couple of very general, elementary problem solving mechanisms (iteration, comparison), which python has a very limited vocabulary of (there’s maybe a half dozen control constructs, total?), to quickly arrive at a solution (albeit while a limited, non-parallel solution, one that’s intuitive and perhaps 8 times out of 10 does the job). The standard library might offer an implementation already, but you could get a working solution without crawling through the docs (and you could probably guess the name anyways).

                                      J required, owing to its overwhelming emphasis on efficient whole-array transformation, selection from a much much much larger and far more specialized set of often esoteric constructs/transformations, all of which have unguessable symbolic representations. The documentation offers little to aid this search, complicating a task that was already quite a bit less intuitive than Python’s naive iteration approach.

                                      1. 5

                                        For a long time now, I’ve felt that the APL languages were going to have a renaissance. Our problems aren’t getting any simpler, so raising the level of abstraction is the way forward.

                                        The emphasis is on whole array transformation seems like a hindrance but imagine for a second that RAM becomes so cheap that you simply load all of your enterprise’s data in memory on a single machine. How many terrabytes is that? Whole array looks very practical then.

                                        For what it’s worth, there is a scheme to the symbols in J. You can read meaning into their shapes. Look at grade-up and grade-down. They are like little pictures.

                                        J annoys me with its fork and hook forms. That goes past the realm of readability for me. Q is better, It uses words.

                                        What I’d like to see is the entire operator set of, say, J brought into mainstream languages as a library. Rich operations raising the level of abstraction are likely more important than syntax.

                                        1. 5

                                          J annoys me with its fork and hook forms. That goes past the realm of readability for me.

                                          In textual form I agree. The IDE has a nice graphical visualization of the dataflow that I find useful in ‘reading’ that kind of composition in J code though. I’ve been tempted to experiment with writing J in a full-on visual dataflow style (a la Max/MSP) instead of only visualizing it that way.

                                          1. 2

                                            I find it a lot easier to write J code by hand before copying it to a computer. It’s easier to map out the data flow when you can lay it out in 2D.

                                            1. 1

                                              Have you looked at Q yet?

                                            2. 1

                                              That would be a very useful comparison of the usability of a compact text syntax vs visual language. I imagine that discoverability is better with a visual language as by definition it is interactive.

                                            3. 2

                                              I started implementing the operators in Scala once - the syntax is flexible enough that you can actually get pretty close, and a lot of them are the kind of high level operations that either already exist in Scala are pretty easy to implement. But having them be just a library makes the problem described in the article much much worse - you virtually have to memorize all the operators to get anything done, which is bad enough when they’re part of the language, but much worse when they’re a library that not all code uses and that you don’t use often enough to really get them into your head.

                                              1. 1

                                                It could just be a beginning stage problem.

                                                1. 1

                                                  It could, but the scala community has actually drawn back from incremental steps in that direction, I think rightly - e.g. scalaz 7 removed many symbolic operators in favour of functions with textual names. Maybe there’s some magic threshold that would make the symbols ok once we passed it, but I can only spend so much time exploring the possibility without seeing an improvement.

                                                  1. 1

                                                    Oh. I’d definitely go with word names. Q over J. To me, the operations are the important bit.

                                          2. 5

                                            The difference is that Python already is organized by the standard library, and has cookbooks, and doesn’t involve holistically thinking of the entire transformation at once. So it intrinsically has the problem to a lesser degree than APLs do and also has taken steps to fix it, too.

                                            1. 2

                                              How easy is it to refactor APL or J code? The reason I ask is that I have the same problem with the ramdajs library in JavaScript, which my team uses as a foundational library. It has around 150 functions, I don’t remember what they all do and I certainly don’t remember what they’re all called, so I often write things in a combination of imperative JS and ramda then look for parts to refactor. I’m interested to hear whether that’s possible with APL, or whether you have to know APL before you can write APL.

                                          1. 2

                                            This captures pretty well what my problem with J has been too. I wonder to what extent it’s largely just the size of community though. Judging by the revision history, the NuVoc reference pages were almost entirely written by 4 people. Given a few more, you could imagine a more extensive set of resources on the wiki or elsewhere. It also lacks as a result the most common way people pick up useful code snippets and partial solutions in other languages, an extensive set of StackOverflow answers.

                                            1. 3

                                              I wonder to what extent it’s largely just the size of community though. Judging by the revision history, the NuVoc reference pages were almost entirely written by 4 people.

                                              I think that summarizes the problem quite well: the language itself is great, but the support network isn’t yet there. It’s compounded by the fact you really need to know some idioms to build complex sentences with, a problem most other languages don’t have. I might try to whip up some verb classifications.

                                              1. 4

                                                This honestly is reminding me of people coming to FORTH. We’ve tried to improve the situation in Factor by having namespaces and examples, but I’m still used to those new to the language writing amazingly unidiomatic code because they didn’t know that a word existed in some vocabulary somewhere. I wonder if there’s a generic solution to this type of problem with “weird” languages.

                                                1. 4

                                                  Cookbooks are great help for this

                                                  Lots of problems end up needing to be solved. Sure, there’s stuff like finding the mean. But I’m thinking maybe one level up. Parsing out tuples from a string in a file efficiently. Having a basic state machine simulating… Bank accounts maybe? Making some circles on a screen to visualize some data

                                                  Some tools are for different domains than others but most of us are aiming to ship things for “real people” so having proper end to end examples can show new people good ways to organize their code.

                                                  Purescript by Example does this pretty well, with “real” motivating examples the entire time, and showing how to take advantage of Purescripts goodness even with JavaScript being used for heavy lifting.

                                                  I learned so much watching other people code JQuery stuff too. Real examples. It’ll show larger architecture patterns that type signatures can rarely capture

                                            1. 9

                                              I know some devs who only code at work and are fine. But if there were two identical candidates (a myth, I know) except one had side projects, guess who I pick?

                                              1. 7

                                                I’m not sure it’d be an easy choice for me, though a lot depends on how you resolve that bit about the “identical candidates”. To really generalize, my interactions with people who have side projects are that they learn a bunch of stuff outside of work that could be useful for work, but often would prefer to be doing those side projects too, so might be less focused and/or prone to bikeshedding. I include myself in the 2nd category, fwiw: I learn a lot of things “on my own time” but I’m not necessarily the world’s best employee if you just want to hire someone to produce code.

                                                If you had people with identical starting technical skill, but one had side projects, my no-other-information guess might even be that the person without side projects would be a more productive employee initially. It’s also probably true that they’d be less likely to keep up to date and/or proactively recommend new things unless there was an explicit framework in place to make that happen on work time. But I’m not sure that’s obviously worse in terms of what a company is looking for out of an employee.

                                                1. 10

                                                  If they have identical technical skill and only one has technical side projects, the other is obviously more talented, because they picked up identical technical skills without spending out-of-work time on it.

                                                2. 3

                                                  The one that had hobbies that improved their ability to communicate and work in a team? Maybe even to give and receive constructive criticism, and to compromise?

                                                  That can be satisfied by coding projects, sure. If they’re, for example, participating in an open source project by actively participating in the mailing list or forum, and managing tickets or incoming patches. A solo side-project is the opposite of this, though. Anything where the candidate is spending their time being the sole person making decisions and in control won’t help them with teamwork. If they’re not going through code and architecture reviews, there’s an excellent chance it won’t help them be better coders, either.

                                                  On the other hand, board gaming, team sports, playing D&D, or any number of things will help candidates with the stuff that will make them really productive employees. The kind that isn’t just an additive part of your team, but a potential multiplicative part.

                                                  1. 1

                                                    If they’re not going through code and architecture reviews, there’s an excellent chance it won’t help them be better coders, either.

                                                    I don’t think this is true at all. Sure, it is a whole lot easier to improve when you have an experienced mentor pointing out ways that you can do better. But there are plenty of ways to advance as a programmer without someone else coaching you. Reading quality books and source code written by programmers that are better than yourself is a great way to fill that gap; and arguably something you should be doing even if you have a mentor. At the end of the day programming is no different than any other skill, the key to improving is practicing purposefully, practicing routinely, and taking plenty of time to reflect on that practice. If you’re not willing to do those things you’re not going to be very good even if you have someone telling you how to improve.

                                                    1. 3

                                                      Sure. It’s even possible to improve all on your own, without books or mentors, as long as you’re consistently pushing yourself out of your comfort zone, consistently failing, and consistently reflecting on your experiences and what weaknesses are best addressed next.

                                                      But that’s remarkably hard. Solo projects are great at getting you more familiar with a language, or more familiar with some specific libraries, but they’re just not the right tool if you want to improve your craft.

                                                      If you want to learn how to play violin, then sure you can try buying one, trying to play, and never performing. Reading an introductory text might help a bit. But it’s going to be much faster and better to learn from someone who knows how to play the violin, to perform so you’re confronted with feedback from uninterested parties, and to go back to the drawing board and repeat the process. You can improve at chess by reading books, but if you’re not playing games your progress will be slow. If you’re only playing games against people of similar and lesser skill than you, you’re unlikely to learn much at all.

                                                      Having teammates or other people who are better than you, and who are willing to thoughtfully critique your work and suggest improvements, is the most tried-and-true method of improving your skill at something.

                                                      Failure and feedback are the best tools we have. And they’re usually not provided by solo projects.

                                                      1. 1

                                                        Oh yeah, it’s a million times harder to go at it alone. And I suppose any solo project that would provide a good platform for improving, like writing an open source framework/library or building a complex application that makes it into production and has users, will eventually become collaborative. Because once you have users you’ve got to write some sort of documentation for them and they’re going to be telling you about all the issues they run into and all of the improvements they want made.

                                                1. 19

                                                  A major reason I use Debian is that, as a user, I consider 90% of software lifecycles to be utterly insane and actively hostile to me, and Debian forces them into some semblance of a reasonable, manageable, release pattern (namely, Debian’s). If I get the option to choose between upstream and a Debian package, I will take the latter every single time, because it immediately has a bunch of policy guarantees that make it friendlier to me as a user. And if I don’t get the option, I will avoid the software if I possibly can.

                                                  (Firefox is the only major exception, and its excessively fast release cadence and short support windows are by far my biggest issue with it as a piece of software.)

                                                  1. 4

                                                    I never really understood why short release cycles is a problem for people, but then I don’t use Debian because of their too long ones. For example, the majority of Firefox’s releases don’t contain user-visible changes.

                                                    Could you elaborate what your problems with Firefox on Debian are? Or why software lifecycles can even be hostile to you?

                                                    1. 7

                                                      I’m with you. I update my personal devices ~weekly via a rolling release model (going on 10 years now), and I virtually never run into problems. The policies employed by Debian stable provide literally no advantage to me because of that. Maybe the calculus changes in a production environment with more machines to manage, but as far as personal devices go, Debian stable’s policies would lead to a net drain on my time because I’d be constantly pushing against the grain to figure out how to update my software to the latest version provided by upstream.

                                                      1. 3

                                                        I’ve had quite a few problems myself, mostly around language-specific package managers that break something under me. This is probably partly my fault because I have a lot of one-off scripts with unversioned dependencies, but at least in the languages I use most (Python, Perl, R, shell, etc.), those kinds of unversioned dependencies seem to be the norm. Most recent example: an update to R on my Mac somehow broke some of my data-visualization scripts while I was working on a paper (seemingly due to a change in ggplot, which was managed through R’s own package manager). Not very convenient timing.

                                                        For a desktop I mostly put up with that anyway, but for a server I prefer Debian stable because I can leave it unattended with auto-updates on, not having to worry that something is going to break. For example I have some old Perl CGI stuff lying around, and have been happy that if I manage dependencies via Debian stable’s libdevel-xxx-perl packages instead of CPAN, I can auto-update and pull in security updates without my scripts breaking. I also like major Postfix upgrades (which sometimes require manual intervention) to be scheduled rather than rolling.

                                                        1. 1

                                                          Yeah I don’t deal with R myself, but based on what my wife tells me (she works with R a lot), I’m not at all surprised that it would be a headache to deal with!

                                                      2. 7

                                                        Every time a major update happens to a piece of software, I need to spend a bunch of time figuring out and adapting to the changes. As a user, my goal is to use software, rather than learn how to use it, so that time is almost invariably wasted. If I can minimize the frequency, and ideally do all my major updates at the same time, that at least constrains the pain.

                                                        I’ve ranted about this in a more restricted context before.

                                                        My problem with Firefox on Debian is that due to sheer code volume and complexity, third-party security support is impossible; its upstream release and support windows are incompatible with Debian’s; and it’s too important to be dropped from the distro. Due to all that, it has an exception to the release lifecycle, and every now and then with little warning it will go through a major update, breaking everything and wasting a whole bunch of my time.

                                                        1. 4

                                                          Due to all that, it has an exception to the release lifecycle, and every now and then with little warning it will go through a major update, breaking everything and wasting a whole bunch of my time.

                                                          I had this happen with Chromium; they replaced the renderer in upstream, and a security flaw was found which couldn’t be backported due to how insanely complicated the codebase is and the fact that Chromium doesn’t have a proper stable branch, so one day I woke up and suddenly I couldn’t run Chromium over X forwarding any more, which was literally the only thing I was using it for.

                                                          1. 2

                                                            Ha, now I understand why I use emacs. It hasn’t changed the UX in years, if not decades.

                                                          2. 4

                                                            Because you need to invest into upgrading too much of your time. I maintain 4 personal devices with Fedora and I almost manage to upgrade yearly. I am very happy for RHEL at work. 150 servers would be insane. Even with automation. Just the investment into decent ops is years.

                                                            1. 2

                                                              For me there is an equivalence between Debian stable releases and Ubuntu LTE ones, they both run at around 2 years.

                                                              But the advantage (in my eyes) that Debian has is the rolling update process for the “testing” distribution, which gets a good balance between stability and movement.

                                                              We are currently switching our servers from Ubuntu LTE to Debian stable. Driven mostly by lack of confidence in the future trajectory of Ubuntu.

                                                          1. 3

                                                            I wish more folks involved in packaging for Linux distros were familiar with Homebrew. Obviously not everything Homebrew does is applicable to Debian, but the ability for folks to show up and easily contribute new versions with a simple PR is game changing. Last night I noticed that the python-paramiko package in Debian is severely out of date, but the thought of trying to learn the various intricacies of contributing to Debian well enough to update it is turns me right off.

                                                            1. 15

                                                              As an upstream dev of code that’s packaged with Homebrew, I have noticed that Homebrew is by far the sloppiest of any packagers; there is basically no QA, and often the packagers don’t even read the instructions I’ve provided for them. I’ve never tried it myself, but it’s caused me a lot of headaches all the same.

                                                              1. 2

                                                                I just looked at the packaging information for paramiko and I have more questions than before:

                                                                How does this setup even work in case of a security vulnerability?

                                                                1. 4

                                                                  Unfortunately, Debian has still a strong ownership model. Unless a package is team-maintained, an unwilling maintainer can stall any effort to update a package, sometimes actively, sometimes passively. In the particular case of Paramiko, the maintainer has very strong opinions on this matter (I know that first hand).

                                                                  1. 1

                                                                    Strong opinions are not necessarily bad. Does he believe paramiko should not be updated?

                                                                  2. 3

                                                                    How does this setup even work in case of a security vulnerability?

                                                                    Bugs tagged as security problems (esp. if also tagged with a CVE) get extra attention from the security team. How that plays out depends on the package/bug, but it can range from someone from the security team prodding the maintainer, all the way to directly uploading a fix themselves (as a non-maintainer upload).

                                                                    But yeah in general most Debian packages have 1-2 maintainers, which can be a bottleneck if the maintainer loses interest or gets busy. For packages with a lot of interest, such a maintainer will end up replaced by someone else. For more obscure packages it might just languish unmaintained until someone removes the package from Debian for having unfixed major issues.

                                                                1. 5

                                                                  I myself has noticed that Debian packaging is really hard to get right as a newcomer.

                                                                  It’d be great if their was both simpler tooling a more concise guides on getting started. A PDF with 50+ pages/slides of information isn’t a good quick start format.

                                                                  1. 5

                                                                    A coworker once spent a couple of months trying to get a package upsteamed to Debian. By far the hardest part was waiting for the upstream maintainers to comment on the package. It took weeks to get any kind of feedback at all. By that time my teammate had completely forgotten all the packaging details but fixed the comments anyway. After not hearing back about the fixes for another couple weeks he just gave up. Someone else ended up finishing the packaging.

                                                                    1. 5

                                                                      A few of these are mentioned in the article under the “Things for Debian to improve” section. I think improvements here could help reduce friction at the margins, but not sure they address the more fundamental disconnect. For example tooling/docs improvements would make it easier for the subset of upstream developers who value a Debian-style packaging system but currently don’t bother with it due to annoyances on that front, which is definitely not nothing. But it wouldn’t fix the problem with regard to upstream developers whose release cycle just doesn’t fit the Debian packaging model at all.

                                                                  1. 2

                                                                    Great article. Solid overview of the pros and cons of the quite different approaches of the Debian-packaging and npm-style worldviews. Lots has been discussed elsewhere, but I think this pulls together a measured overview that tries to seriously understand why each of them is the way it is, what could be improved in each without undermining their core benefits, and what are more fundamental difficulties in getting the two approaches to work together well.

                                                                    1. 1

                                                                      Nice, I was actually starting to look at centralising my cloud services on an openbsd computer at home, this could do quite nicely.

                                                                      1. 4

                                                                        Warning: every time I see self-hosted email posted to HN there’s piles of people showing up talking about how bad it went. Esp message delivery not being reliable due to both infrastructure issues and blacklisting. It’s often different people saying it, too, which indicates these problems hit lots of people.

                                                                        1. 5

                                                                          It’s not necessarily trivial, but a lot of the people posting on HN with that kind of comment, when you inquire further, turn out to have been doing mass emailing, things like sending out large-distribution newsletters or transactional emails for a webapp. Deliverability for that kind of email is a whole different ballgame than just running a private email account.

                                                                          For what it’s worth I’ve hosted my own email for about 5 years now and haven’t had any problems.

                                                                          1. 3

                                                                            There were also people that said it worked out fine for them. Just really hit and miss compared to self-hosting a web site or something. Email is often used for important stuff, too. I thought I should give a warning for that reason.

                                                                          2. 4

                                                                            This is a legitimate concern, to which I would like to add my anecdote.

                                                                            I did the following for my personal email address, while looking at what signals rspamd uses for classification. I noticed that replying to a message will lower the spam score, as well as whitelist that message type if configured so.

                                                                            Moreover, a similar mechanism exists in Protonmail’s Spamassassin configuration, as well as Gmail’s own Bayes classifier. This can be seen by inspecting X headers.

                                                                            For this reason, I asked real free-email users (from my address book, not create accounts on free-email just for this) to send me a test email, to which I replied. From then on, my emails have negative spam score on Gmail and Protonmail. I will test with Outlook soon.

                                                                            I don’t have any experience hosting multiple users, because it’s a different game involving privacy laws, tech support, and blacklist politics mentioned in other self-hosting email threads.

                                                                            Edit: spelling and coherence (sry)

                                                                            1. 2

                                                                              I’m not sure yet whether I really want to do email yet, but I’ll definitely be moving http, git and a few other things. In the meantime I still have email with posteo and dismail.

                                                                          1. 13

                                                                            Fails to deliver on the promise of an unthinkable thought.

                                                                            1. 4

                                                                              The author seems to be thinking that the Smalltalk programme had some merits that the current PLT programme doesn’t, which I find unthinkable. So it delivered as far as I’m concerned.

                                                                              1. 3

                                                                                Most tantalizing question was:

                                                                                ..when and why did we start calling programming languages “languages”?

                                                                                1. 3

                                                                                  That seems neither unthinkable nor unanswerable. I mean, I don’t know the answer off hand, but there’s a finite number of papers one can read to find out.

                                                                                  1. 1

                                                                                    Yup. I wasn’t disagreeing with you.

                                                                                  2. 1

                                                                                    The same reason earlier formal languages like predicate logic are called languages.

                                                                                    1. 1

                                                                                      Uhh, citation required?

                                                                                      1. 2

                                                                                        Do you not think computer languages are formal languages? Do I need a citation if I say English is a natural language?

                                                                                        1. 1

                                                                                          Ah, that link/term is helpful. Thanks!

                                                                                          I’m sorry I’m annoying you.

                                                                                          Do I need a citation if I say English is a natural language?

                                                                                          No, but the whole point under discussion is why our terminology connects formal languages with natural languages. When did the term “formal language” come to be? The history section in your Wikipedia link above mentions what the term can be applied to, but not when the term was coined. Was it coined by Chomsky at the dawn the field of mathematical linguistics? That’s not before computers, in which case the causality isn’t quite as clear and obvious as you make it sound.

                                                                                          I’ll stop responding now, assuming you don’t find this as interesting as I do.

                                                                                          Edit: wait, clicking out from your profile I learn that you are in fact a linguist! In which case I take it back, I’m curious to hear what you know about the history of Mathematical Linguistics.

                                                                                          1. 3

                                                                                            Was it coined by Chomsky at the dawn the field of mathematical linguistics?

                                                                                            It’s at least older than that. The term “formal language theory” in the sense of regular languages, context-free grammars etc. does date to Chomsky. But the idea that one might want to invent a kind of “formal” language for expressing propositions that’s more precise than natural languages is older. One important figure making that argument was Gottlob Frege, who was also an early user of the term (I’m not sure if he actually coined it). He wrote an 1879 book entitled Begriffsschrift, eine der arithmetischen nachgebildete Formelsprache des reinen Denkens, which you could translate as something like, Concept-Script, a formal language modeled on that of arithmetic, for pure thought.

                                                                                            1. 1

                                                                                              Thanks a lot for that elaboration on the Frege link!

                                                                                            2. 2

                                                                                              In general they’re all languages because they have a syntax (certain combinations are ‘ungrammatical’ or produce interpreter/compiler errors) and a (combinatorial) semantics (the basic symbols have meaning and there are rules for deriving the meaning of [syntactic] combinations of symbols).

                                                                                              Formal languages go back at least to Frege’s Begriffsschrift of 1879, which isn’t before Babbage described the Analytical Engine (1837) but certainly before digital computers. And there are precursors like Boole’s Logic and Leibniz also worked on something of the same sort, and there are yet earlier things like John Wilkins’ “philosophical language” and other notions of a similar kind.

                                                                                              For modern linguistic work on semantics, the work of Richard Montague is perhaps the most important, and there are connections to computer science from very early on - Montague employs Church’s lambda calculus (from the 1930s) which also underlies Lisp.

                                                                                    2. 1

                                                                                      Nothing that extreme, no, but I’d say it delivers on questioning rarely-questioned assumptions.

                                                                                      1. 1

                                                                                        How would you know? Maybe you simply failed to think it.

                                                                                      1. 2

                                                                                        The funny thing for me is that I dont even use the one that awed me most: LISP with unprecedented flexibility, incremental compilation per function, and live updates. It’s like one could do regular coding about as fast as they think with resultimg code runnimg way faster than scripting languages. Too weird to fully embrace with the BASIC and Pascal-style languages compiling super-fast, too. So I just used their implementations where possible.

                                                                                        I still plan to have another go at trying to fully get the LISP’s or FP. Probably Racket for the DSL’s.

                                                                                        1. 1

                                                                                          Do Lisps try to only load the functions that have changed? I wondered how they managed to be a step beyond typical REPL workflows.

                                                                                          1. 3

                                                                                            Not in the way I think you mean, as an incremental-compilation system. That should be possible to build, but none of the commonly used ones that I can think of are actually built that way.

                                                                                            There is at least more attention to being explicit about the relationship between the currently running image and the (possibly changed) source code though. As a very simple example, there are two Common Lisp forms that introduce global variables: defvar introduces a variable and assigns a default value to it only if it was not already introduced, while defparameter is the same but initializes it unconditionally. So if you reload a file with a defvar it will just silently note the declaration of an existing variable but not clobber it, while a defparameter will deliberately clobber it.

                                                                                            As another example, the Common Lisp equivalent of exceptions, the condition system, is entirely designed around the idea that you might want to fix an exception by reloading or redefining something, but only lazily once you’ve noticed it failed. That allows for all kinds of workflows that are odd by the standards of other languages, based around what ‘restart’ you choose from a condition (either manually or automatically). The differences are substantial, but the first difference a programmer will normally notice is telling in itself: when a Java program throws an uncaught exception, it terminates with a stacktrace, but when Common Lisp raises an uncaught condition, it pauses and displays a multiple-choice menu asking the user which restart to take.

                                                                                            1. 1

                                                                                              The environment I had came with a REPL to interpret functions, a total compile, and an incremental compile. The first two worked about like you’d expect I guess. The REPL skipped compile step but maybe ran slower. Been a while so I can’t remember. That’s usually the case for REPL’s, though. The compiler took longer but the resulting code ran really fast. The cool part was incremental compile where I could change the definition of one function, hit a particular key combo, it would compile just that one function, and it would load it into live image for immediate testing.

                                                                                              The incremental compiles took a fraction of a second. The first compile might take longer, esp if you’ve been REPLing or are adding optional types. From there, it’s a quick compile per new module or function change that takes no time at all. That let me no need to use REPL for iterations given I could get highly-optimized code without a long wait that would break my flow. From then on, both incremental compiles and live image are features I’d request for any language.

                                                                                              Being able to save the running state of one was cool, too, for when you trusted it up to a certain point with certain data/state in it but then wanted to test a lot of behaviors. It was to exploratory testing what a NES emulator with save/reload is to speedruns. ;) I bet it could be even more useful in mocking up and testing algorithms for distributed systems.

                                                                                          1. 3

                                                                                            “OOP was concerned with representing reality”

                                                                                            This is a widely held belief but it’s neither the most useful definition nor original intent. Likewise classification through hierarchical taxonomies is not an essential aspect of OOP, but an unfortunate offshoot of the popular “representing reality” mindset.

                                                                                            They original intent and most useful concept of OOP is essentially message passing. Smalltalk’s early (ca 1972) evolution and Hewitt’s actors influenced each other through first person exchanges between Kay and Hewitt.

                                                                                            1. 3

                                                                                              They original intent and most useful concept of OOP is essentially message passing. Smalltalk’s early (ca 1972) evolution and Hewitt’s actors influenced each other through first person exchanges between Kay and Hewitt.

                                                                                              I think there’s a couple of common misconceptions here. The first is that Smalltalk was the “original intent” of OOP. The first OOP language was Simula-67 (ca 1968), which had polymorphic dispatch and inheritance. IIRC Smalltalk and Simula were developed independently and each contributed ideas to “modern” OOP.

                                                                                              The second is that there is an “essential aspect” of OOP at all. There is no “essential” OOP in the same way there is no “essential” FP: Lisp, APL, and ML are all considered FP languages despite being wildly different from each other. I’d argue that there’s a few common “pedigrees” of OOP that are all influential and all contribute ideas that most modern OOP languages consider “essential”:

                                                                                              • Simula: Modularization, Dynamic Dispatch
                                                                                              • Smalltalk: Message Passing
                                                                                              • CLU: Abstract Data Types, Generics
                                                                                              • Eiffel: Contracts, Class Invariants*

                                                                                              I think part of the reason we assume Smalltalk is the “foundation” of OOP is because the other foundational languages, for the most part, aren’t well-known today.

                                                                                              *I’ve read that CLU had contracts first, but I can’t find a primary source on this.

                                                                                              1. 4

                                                                                                Alan Kay, The Early History of Smalltalk…

                                                                                                “The whole point of OOP is not to have to worry about what is inside an object… data and control structures be done away with in favor of a more biological scheme of protected universal cells interacting only through messages that could mimic any desired behavior.”

                                                                                                “Though it has noble ancestors indeed, Smalltalk’s contribution is a new design paradigm—which I called object-oriented—for attacking large problems of the professional programmer, and making small ones possible for the novice user.”

                                                                                                “[Dedicated] To SKETCHPAD, JOSS, LISP, and SIMULA, the 4 great programming conceptions of the sixties.”

                                                                                                “It is not too much of an exaggeration to say that most of my ideas from then on took their roots from Simula—but not as an attempt to improve it. It was the promise of an entirely new way to structure computations that took my fancy.”

                                                                                                “In 1966, SIMULA was the “better old thing,” which if looked at as “almost a new thing” became the precursor of Smalltalk in 1972.”

                                                                                                1. 2

                                                                                                  Is Haskell missing the whole point of Functional Programming because it’s not a Lisplike?

                                                                                                  1. 2

                                                                                                    The way I see it, running all the combinations of features in OO/Actor and then running combinations for all of the features in FP the elemental thing seems to be ‘tell’ in OO/Actor and ‘ask’ in FP. ‘Tell’ enables asynchrony and ‘ask’ enables ‘laziness.’ They are quite high but different mechanisms for modularity.

                                                                                                    1. 2

                                                                                                      I’m sorry. Who is claiming Haskell is “missing the whole point of functional programming”?

                                                                                                      1. 1

                                                                                                        It’s a point of comparison. While AK was very important in The foundations of OOP, he doesn’t have a ground to claim he’s the founder or even necessarily the most significant contributor. And just because modern OOP diverges from his vision does not mean that it’s in some way diminished because of that.

                                                                                                        Similar to how Haskell is very different from lisp but still counts as an FP language.

                                                                                                        1. 1

                                                                                                          If the history you’ve got is not the history you want, just make it up as you go along. I have no interest in a discuss like this.

                                                                                                          1. 1

                                                                                                            What I’m saying is that equating OOP with just Alan Kay is historically incorrect. He played a big role, yes. But so did Kristen Nygaard, David Parnas, and Barbara Liskov. Their contributions matter just as much and ignoring them is historical revisionism.

                                                                                                            1. 1

                                                                                                              I never equated OOP with “just Alan Kay”. I equated him correctly with coining the term and inventing the first (completely) OOP language Smalltalk. Parnas and Liskov played roles, certainly in modularity, information hiding, and abstract data types. Later on in the history of OOP I recall around 1986-7 Luca Cardelli published a paper which was intended to provide a taxonomy of OOP-related terms. He define languages like CLU (abstract data types, parametric polymorphism, but no message-passing / runtime dispatch) as “object-based” where he reserved “object-oriented” for the latter.

                                                                                                              Certainly Kay never gave Nygaard the short shrift, emphasizing in countless forums Simula’s huge role in OOP.

                                                                                                    2. 2

                                                                                                      That’s indeed what Alan Kay thinks, but he’s not exactly a neutral historian here, since he’s obviously a pretty strong partisan on behalf of the Smalltalk portion of that lineage.

                                                                                                      1. 2

                                                                                                        “The Early History Of Smalltalk” is a reviewed, published (ACM HOPL) history of the early years of OOP by the person who originally used the term. If you wish to refer to that as being a “strong partisan” then I guess that’s your privilege.

                                                                                                        1. 2

                                                                                                          If we’re going to use the ACM as an authority here they officially recognize Dahl and Nygaard as the inventors of OOP.

                                                                                                          1. 1

                                                                                                            The ACM is correct and this coincides exactly with Kay’s attribution of Simula being a “better old thing” and “almost a new thing”. While Simula introduced all the key concepts of OOP, Kay coined the term to imply the new thing, which is “everything is an object” not Simula, the almost new thing, which is ALGOL + objects for some things.

                                                                                                            It’s a fine line distinguishing the two, which Kay more than acknowledges and which does not disagree with the ACM’s recognition of Nygaard and Simula in the history of OOP.

                                                                                                1. 3

                                                                                                  Includes a NoSQL database with ACID guarantees? Sounds pretty cutting-edge. :-)

                                                                                                  1. 9

                                                                                                    This is a bold statement, I do quite a bit of ssh -X work, even thousands of miles distant from the server. I do very much wish ssh -X could forward sound somehow, but I certainly couldn’t live without X’s network transparency.

                                                                                                    1. 6

                                                                                                      Curious, what do you use it for? Every time I tried it, the experience was pain-stakingly slow.

                                                                                                      1. 7

                                                                                                        I find it okay for running things that aren’t fully interactive applications. For example I mainly run the terminal version of R on a remote server, but it’s nice that X’s network transparency means I can still do plot() and have a plot pop up.

                                                                                                        1. 5

                                                                                                          Have you tried SSH compression? I normally use ssh -YC.

                                                                                                          1. 4

                                                                                                            Compression can’t do anything about latency, and latency impacts X11 a lot since it’s an extremely chatty protocol.

                                                                                                            1. 4

                                                                                                              There are some attempts to stick a caching proxy in the path to reduce the chattiness, since X11 is often chatty in pretty naive ways that ought to be fixable with a sufficiently protocol-aware caching server. I’ve heard good things about NX, but last time I tried to use it, the installation was messy.

                                                                                                              1. 1

                                                                                                                There’s a difference between latency (what you talk about) and speed (what I replied to). X11 mainly transfers an obscene amount of bitmaps.

                                                                                                                1. 1

                                                                                                                  Both latency and bandwidth impact perceived speed.

                                                                                                          2. 6

                                                                                                            Seconded. Decades after, it’s still the best “remote desktop” experience out there.

                                                                                                            1. 3

                                                                                                              I regularly use it when I am on a Mac and want to use some Linux-only software (primarily scientific software). Since the machines that I run it on are a few floors up or down, it works magnificently well. Of course, I could run a Linux desktop in a VM, but it is nicer having the applications directly on the Mac desktop.

                                                                                                              Unfortunately, Apple does not seem to care at all about XQuartz anymore (can’t sell it to the animoji crowd) and XQuartz on HiDPI is just a PITA. Moreover, there is a bug in Sierra/High Sierra where the location menu (you can’t make this up) steals the focus of XQuartz all the time:

                                                                                                              https://discussions.apple.com/thread/7964085

                                                                                                              So regretfully, X11 is out for me soon.

                                                                                                              1. 3

                                                                                                                Second. I have a Fibre connection at home. I’ve found X11 forwarding works great for a lot of simply GTK applications (EasyTag), file managers, etc.

                                                                                                                Running my IntelliJ IDE or Firefox over X11/openvpn was pretty painfully slow, and IntelliJ became buggy, but that might have just been OpenVPN. Locally within the same building, X11 forwarding worked fine.

                                                                                                                I’ve given Wayland/Weston a shot on my home theater PC with the xwayland module for backward compatibility. It works .. all right. Almost all my games work (humble/steam) thankfully, but I have very few native wayland applications. Kodi is still glitchy, and I know Weston is meant to just be a reference implementation, but it’s still kinda garbage. There also don’t appear to be any wayland display managers on Void Linux, so if I want to display a login screen, it has to start X, then switch to Wayland.

                                                                                                                I’ve seen the Wayland/X talk and I agree, X has a lot of garbage in it and we should move forward. At the same time, it’s still not ready for prime time. You can’t say, “Well you can implement RDP” or some other type of remote composition and then hand wave it away.

                                                                                                                I’ll probably give Wayland/Sway a try when I get my new laptop to see if it works better on Gentoo.

                                                                                                                1. 2

                                                                                                                  No hand waving necessary, Weston does implement RDP :)

                                                                                                              1. 3

                                                                                                                The full 1.0 PDF is linked on this page for free if that piques your interest.

                                                                                                                1. 5

                                                                                                                  After scanning the book and checking out a number of entries, I’m a little bit disappointed. The tagline is ‘Sharing the History of Computer Role-Playing Games’, and there is some of that, but all of the entries I read are essentially reviews. On the website, the list of entries is linked in the navbar as ‘Review Index’, so maybe I shouldn’t have been surprised.

                                                                                                                  If you’re looking for a summary of what the considered games offer in the tone and style of modern game reviews, you’ll like the book.

                                                                                                                  If you’re looking to understand the historical evolution of game design in this space, there isn’t as much present as you might hope for.

                                                                                                                  If you’re looking to understand the core design of historical games you probably haven’t played, this really isn’t where you’ll find that.

                                                                                                                  Edit:

                                                                                                                  It has been bugging me and finally clicked. The difference is between reviewing the content of the game and its deeper design.

                                                                                                                  A point like “There are many story and optional missions, all presented by great voice acting” (taken from the Dawn of War II review) only makes sense as a review of the content, which is ultimately about giving an up/down, play/pass opinion.

                                                                                                                  Here is a bit more, from the next paragraph:

                                                                                                                  Your units all gain experience as they battle, allowing you to customize their skills and equip them with the Diablo-like loot you find. This aspect of DoW2 is extremely satisfying – there’s a lot of freedom in how to build your squad so their abilities complement each other, and finding items such as Terminator armors and Power Swords will have any 40k fan grinning.

                                                                                                                  Notice how each of these points makes most sense answering the question “would you enjoy playing this game”. You gain XP and customization, there is loot progression, the 40k lore is good. Do you like those things? Then you’ll like this game.

                                                                                                                  The missions are called “rather repetitive” in the next paragraph, which is absolutely true, but the crucial why question at the heart of a design review is missing.

                                                                                                                  I played a lot of Dawn of War II, so allow me:

                                                                                                                  The core tension of each mission is “can you kill the things on the map”. All the objectives ultimately reduce to this question, and there are few meaningful degrees of success, so execution rarely matters. The enemies all present more or less the same challenges, both strategically of your choices and mechanically of your skill. Progression is through XP and gear, but it all shakes out numerically to be your stats vs the enemy’s, which are always stay close together.

                                                                                                                  The only real variable then is how badass your Spacemarines are. Coolness is the biggest factor is gear progression: for the mission everything has been building up to you finally get to equip a squad with terminator armor. For the next major milestone, you get storm hammers and storm shields for your assault squad. A power fist. A plasma cannon. A holy relic mounted on your commander’s back. Unlocking the breadth of the Blood Ravens codex is the driving force of the campaign, and using it to ensure victory in beautifully rendered battles in the core appeal.

                                                                                                                  1. 5

                                                                                                                    I think Matt Barton’s 5 part history of CRPGs from 2007 does what you were hoping this book would do. I don’t know if he wound up publishing it elsewhere, but the Gamasutra pages were crawled by the Wayback Machine. Here is part 1: http://web.archive.org/web/20070302065824/http://www.gamasutra.com/features/20070223a/barton_01.shtml

                                                                                                                    I was transfixed by this when it came out. I remember printing out the pages so that I could read them on the subway. (No, there was not a WAP version of Gamasutra!)

                                                                                                                    1. 3

                                                                                                                      Yeah, that’s a fair point. I wasn’t really expecting an integrated historical treatment, since the entries were written separately by different people, which isn’t a method that works for tracing development of features and design influences. But even as separately written, standlone per-game entries, it’s true that they’re written more for someone who wants review-style advice on which historical CRPGs they might find worth pulling up in an emulator, vs. design analysis like your example. I’ll still skim it, but yeah, I’d personally prefer writing more along the lines of what you were looking for.

                                                                                                                    2. 1

                                                                                                                      Some of the links in that PDF need to be updated, for example the one for Grid Cartographer takes you just to page telling you that it has moved to http://gridcartographer.com

                                                                                                                    1. -3

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

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

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

                                                                                                                      1. 29

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

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

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

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

                                                                                                                        1. 5

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

                                                                                                                          1. 13

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

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

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

                                                                                                                            1. 0

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

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

                                                                                                                            2. 4

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

                                                                                                                              1. 2

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

                                                                                                                                1. 1

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

                                                                                                                            3. 2

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

                                                                                                                            4. 17

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

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

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

                                                                                                                              1. 19

                                                                                                                                Reminds me of a quote from Lean Out

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

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

                                                                                                                                1. 6

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

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

                                                                                                                                  1. 8

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

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

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

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

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

                                                                                                                                    1. 5

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

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

                                                                                                                                      1. 4

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

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

                                                                                                                                        1. 5

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

                                                                                                                                          1. 6

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

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

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

                                                                                                                                            1. 7

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

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

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

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

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

                                                                                                                                              1. 2

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

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

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

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

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

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

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

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

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

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

                                                                                                                                              2. 4

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

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

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

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

                                                                                                                                                1. 2

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

                                                                                                                                                  1. 1

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

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

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

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

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

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

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

                                                                                                                                                    1. 5

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

                                                                                                                                      2. -1

                                                                                                                                        Why would you focus on that sentence

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

                                                                                                                                      3. 7

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

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

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

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

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

                                                                                                                                        (*) Impersonal you

                                                                                                                                        1. 5

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

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

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

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

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

                                                                                                                                          1. 3

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

                                                                                                                                            1. 1

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

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

                                                                                                                                              1. 0

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

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

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

                                                                                                                                                1. 4

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

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

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

                                                                                                                                                  1. 1

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

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

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

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

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

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

                                                                                                                                                    1. 1

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

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

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

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

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

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

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

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

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

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

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

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

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

                                                                                                                                                  2. 2

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

                                                                                                                                                    1. 1

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

                                                                                                                                                      1. 0

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

                                                                                                                                                        1. 0

                                                                                                                                                          Hey, have fun hanging out with Nazis, then.

                                                                                                                                                          1. 0

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

                                                                                                                                                            1. 1

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

                                                                                                                                              2. 12

                                                                                                                                                Great illustration of what she wanted to avoid.

                                                                                                                                                1. 8

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

                                                                                                                                                  1. 5

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

                                                                                                                                                    1. 6

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

                                                                                                                                                      1. 16

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

                                                                                                                                                        How dare people discuss controversial and offensive ideas openly?

                                                                                                                                                        This is sarcastic and demeaning.

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

                                                                                                                                                        Sarcastic and a strawman.

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

                                                                                                                                                        Sarcastic and a strawman.

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

                                                                                                                                                        Sarcastic and a strawman.

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

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

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

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

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

                                                                                                                                                        1. 0

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

                                                                                                                                                          1. 3

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

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

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

                                                                                                                                                          2. -5

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

                                                                                                                                                            1. 5

                                                                                                                                                              God forbid you say what you mean.

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

                                                                                                                                                        2. 3

                                                                                                                                                          Hm, I suppose it did completely derail this thread

                                                                                                                                                      2. 10

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

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

                                                                                                                                                        1. 10

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

                                                                                                                                                          1. 8

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

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

                                                                                                                                                            1. 10

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

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

                                                                                                                                                              1. 2

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

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

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

                                                                                                                                                              2. 7

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

                                                                                                                                                                1. 7

                                                                                                                                                                  She said this about programming:

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

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

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

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

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

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

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

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

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

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

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

                                                                                                                                                                  1. 6

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

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

                                                                                                                                                                    1. 6

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

                                                                                                                                                                      1. 2

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

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

                                                                                                                                                                        “Instead you are offended”

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

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

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

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

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

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

                                                                                                                                                                      2. 2

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

                                                                                                                                                                        This conclusion is bonkers.

                                                                                                                                                                  2. 2

                                                                                                                                                                    She’s not allowed to talk about politics?

                                                                                                                                                                    I’m not allowed to respond about politics?

                                                                                                                                                                    1. 3

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

                                                                                                                                                                  3. 1

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

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

                                                                                                                                                                  4. -5

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