1. 16

    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. 3

      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

        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. 3

          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. 3

            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. 3

              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. 1

                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. 57

              Meaningful is…overrated, perhaps.

              A survey of last four jobs (not counting contracting and consulting gigs, because I think the mindset is very different)

              • Engineer at small CAD software startup, 50K/yr, working on AEC design and project management software comfortably 10 years ahead of whatever Autodesk and others were offering at the time. Was exciting and felt very important, turned out not to matter.
              • Cofounder at productivity startup, no income, felt tremendously important and exciting. We bootstrapped and ran out of cash, and even though the problems were exciting they weren’t super important. Felt meaningful because it was our baby, and because we’d used shitty tools before. We imploded after running out of runway, very bad time in life, stress and burnout.
              • Engineering lead at medical startup, 60K/yr, working on health tech comfortably 20 years ahead of the curve of Epic, Cerner, Allscripts, a bunch of other folks. Literally saving babies, saving lives. I found the work very interesting and meaningful, but the internal and external politics of the company and marketplace soured me and burned me out after two years.
              • Senior engineer at a packaging company, 120K/yr, working on better packaging. The importance of our product is not large, but hey, everybody needs it. Probably the best job I’ve ever had after DJing in highschool. Great team, fun tech, straightforward problem space.

              The “meaningful” stuff that happened in the rest of life:

              • 3 relationships with wonderful partners, lots of other dating with great folks
              • rather broken family starting to knit together slowly, first of a new generation of socks has been brought into the world
              • exciting and fun contracting gigs with friends
              • two papers coauthored in robotics with some pals in academia on a whim
              • some successful hackathons
              • interesting reflections on online communities and myself
              • weddings of close friends
              • a lot of really rewarding personal technical growth through side projects
              • a decent amount of teaching, mentoring, and community involvement in technology and entrepreneurship
              • various other things

              I’m a bit counter-culture in this, but I think that trying to do things “meaningful for humanity” is the wrong mindset. Look after your tribe, whatever and whoever they are, the more local the better. Help your family, help your friends, help the community in which you live.

              Work–at least in our field!–is almost certainly not going to help humanity. The majority of devs are helping run arbitrage on efficiencies of scale (myself included). The work, though, can free up resources for you to go and do things locally to help. Meaningful things, like:

              • Paying for friend’s healthcare
              • Buying extra tech gear and donating the balance to friends’ siblings or local teaching organizations
              • Giving extra food or meals to local homeless
              • Patronizing local shops and artisans to help them stay in business
              • Supporting local artists by going to their shows or buying their art
              • Paying taxes

              Those are the things I find meaningful…my job is just a way of giving me fuckaround money while I pursue them.

              1. 14

                I’m a bit counter-culture in this, but I think that trying to do things “meaningful for humanity” is the wrong mindset. Look after your tribe, whatever and whoever they are, the more local the better. Help your family, help your friends, help the community in which you live.

                Same (in the sense that I have the same mindset as you, but I’m not sure there is anything right or wrong about it). I sometimes think it is counter-culture to say this out loud. But as far as I can tell, despite what anyone says, most peoples’ actions seem to be consistent with this mindset.

                There was an interesting House episode on this phenomenon. A patient seemingly believed and acted as if locality wasn’t significant. He valued his own child about the same as any other child (for example).

                1. 9

                  I pretty much agree with this. Very few people have the privilege of making their living doing something “meaningful” because we live within a system where financial gains do not correspond to “meaningful” productivity. That’s not to say you shouldn’t seek out jobs that are more helpful to the world at large, but not having one of those rare jobs shouldn’t be too discouraging.

                  1. 4

                    Meaningful is…overrated, perhaps.

                    I think specifically the reason I asked is because I find it so thoroughly dissatisfying to be doing truly meaningless work. It would be nice to be in a situation where I wake up and don’t wonder if the work I spend 1/3rd of my life on is contributing to people’s well-being in the world or actively harming them.

                    Even ignoring “the world,” it would be nice to optimize for the kind of fulfillment I get out of automating the worst parts of my wife’s job, mentoring people in tech, or the foundational tech that @cflewis talks about here.

                    Work–at least in our field!–is almost certainly not going to help humanity. The majority of devs are helping run arbitrage on efficiencies of scale (myself included).

                    I think about this a lot.

                    1. 10

                      In general I find capitalism and being trapped inside of capitalism to generally be antithetical to meaningful work in the sense that you’ll rarely win at capitalism if you want to do good for the world, no matter what portion of the world you’re interested in helping.

                      A solution I found for this is to attain a point where financially I don’t have to work anymore to maintain my standard of living. It’s a project in the making, but essentially, passive income needs to surpass recurring costs and you’re pretty much good to go. To achieve that, you can increase the passive income, diminish the recurring costs, or both (which you probably want to be doing. Which i want to be doing, anyway.

                      As your passive income increases, you (potentially) get to diminish your working hours until you don’t have to do it anymore (or you use all the extra money to make that happen faster). Freedom is far away. Between now and then, there won’t be a lot of “meaningful” work going on, at least, not software related.

                      [Edit: whoever marked me as incorrect, would you mind telling me where? I’m genuinely interested in this; I thought I was careful in exposing this in a very “this is an opinion” voice, but if my judgement is fundamentally flawed somehow, knowing how and why will help me correct it. Thanks.]

                      1. 8

                        Agree re. ‘get out of capitalism any way you can’, but I don’t agree with passive income. One aspect of capitalism is maximum extraction for minimum effort, and this is what passive income is. If you plan to consciously bleed the old system dry whole you do something which is better and compensates, passive income would be reasonable; if you want to create social structures that are as healthy as possible for as many people as possible, passive income is a hypocrisy.

                        I prefer getting as much resource (social capital, extreme low cost of living) as fast as possible so you can exit capitalism as quickly as possible.

                        1. 1

                          Are you talking about the difference between, say, rental income (passive income) and owning equities (stockpile)? Or do you mean just having a lot of cash?

                          1. 1

                            Yes, if you want to live outside capitalism you need assets that are as far as possible conceptually and with least dependencies on capitalism whilst supporting your wellbeing. Cash is good. Social capital, access to land and resource to sustain yourself without needing cash would be lovely, but that’s pretty hard right now while the nation state and capitalism are hard to separate.

                            1. 1

                              Do you ever worry about 70’s (or worse) style inflation eroding the value of cash? In this day and age, you can’t even live off the land without money for property taxes.

                    2. 3

                      Work–at least in our field!–is almost certainly not going to help humanity. The majority of devs are helping run arbitrage on efficiencies of scale (myself included).

                      This 100%. A for-profit company can’t make decisions that benefit humanity as their entire goal is to take more than they give (AKA profit).

                      1. 2

                        Sure they can. They just have to charge for a beneficial produce at a rate higher than the cost. Food, utilities, housing, entertainment products, safety products… these come to mind.

                        From there, a for-profit company selling a wasteful or damaging product might still invest profits into good products/services or just charity. So, they can be beneficial as well just more selectively.

                      2. 2

                        I think you’re hitting at a similar truth that I was poking at in my response, but from perhaps a different angle. I would bet my bottom dollar that you found meaning in the jobs you cited you most enjoyed, but perhaps not “for humanity” as the OP indicated.

                        1. 1

                          What is the exact meaning of “run arbitrage on efficiencies of scale”? I like the phrase and want to make sure I understand it correctly.

                          1. 5

                            So, arbitrage is “taking advantage of the price difference in two or more markets”.

                            As technologists, we’re in the business of efficiency, and more importantly, efficiency of scale. Given how annoying it is to write software, and how software is duplicated effortlessly (mostly, sorta, if your ansible scripts are good or if you can pay the Dread Pirate Bezos for AWS), we find that our talents yield the best result when applied to large-scale problems.

                            That being the case, our work naturally tends towards creating things that are used to help create vast price differences by way of reducing the costs of operating at scale. The difference between, for example, having a loose federation of call centers and taxis versus having a phone app that contractors use. Or, the difference between having to place classified ads in multiple papers with a phone call and a mailed check versus having a site where people just put up ads in the appropriate section and email servers with autogenerated forwarding rules handle most of the rest.

                            The systems we build, almost by definition, are required to:

                            • remove as many humans from the equation as possible (along with their jobs)
                            • encode specialist knowledge into expert systems and self-tuning intelligences, none of which are humans
                            • reduce variety and special-cases in economic and creative transactions
                            • recast human labor, where it still exists, into a simple unskilled transactional model with interchangeable parties (every laborer is interchangeable, every task is as simple as possible because expertise are in the systems)
                            • pass on the savings at scale to the people who pay us (not even the shareholding public, as companies are staying private longer)

                            It is almost unthinkable that anything we do is going to benefit humanity as a whole on a long-enough timescale–at least, given the last requirement.

                          2. 1

                            Care about your tribe, but also care about other tribes. Don’t get so into this small scope thinking that you can’t see outside of it. Otherwise your tribe will lack the social connections to survive.

                            Edit: it’s likely my mental frame is tainted by being angry at LibertarianLlama, so please take this comment as generously as possible :).

                            1. 1

                              Speaking of that, is there any democratic process that we could go through such that someone gets banned from the community? Also what are the limits of discussion in this community?

                          1. -3

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

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

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

                            1. 29

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

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

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

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

                              1. 5

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

                                1. 13

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

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

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

                                  1. 0

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

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

                                  2. 4

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

                                    1. 2

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

                                      1. 1

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

                                  3. 2

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

                                  4. 17

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

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

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

                                    1. 19

                                      Reminds me of a quote from Lean Out

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

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

                                      1. 6

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

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

                                        1. 8

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

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

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

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

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

                                          1. 5

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

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

                                            1. 4

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

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

                                              1. 5

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

                                                1. 6

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

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

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

                                                  1. 7

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

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

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

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

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

                                                    1. 2

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

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

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

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

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

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

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

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

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

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

                                                    2. 4

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

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

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

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

                                                      1. 2

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

                                                        1. 1

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

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

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

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

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

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

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

                                                          1. 5

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

                                            2. -1

                                              Why would you focus on that sentence

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

                                            3. 7

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

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

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

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

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

                                              (*) Impersonal you

                                              1. 5

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

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

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

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

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

                                                1. 3

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

                                                  1. 1

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

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

                                                    1. 0

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

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

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

                                                      1. 4

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

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

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

                                                        1. 1

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

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

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

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

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

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

                                                          1. 1

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

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

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

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

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

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

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

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

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

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

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

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

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

                                                        2. 2

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

                                                          1. 1

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

                                                            1. 0

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

                                                              1. 0

                                                                Hey, have fun hanging out with Nazis, then.

                                                                1. 0

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

                                                                  1. 1

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

                                                    2. 12

                                                      Great illustration of what she wanted to avoid.

                                                      1. 8

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

                                                        1. 5

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

                                                          1. 6

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

                                                            1. 16

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

                                                              How dare people discuss controversial and offensive ideas openly?

                                                              This is sarcastic and demeaning.

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

                                                              Sarcastic and a strawman.

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

                                                              Sarcastic and a strawman.

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

                                                              Sarcastic and a strawman.

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

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

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

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

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

                                                              1. 0

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

                                                                1. 3

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

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

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

                                                                2. -5

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

                                                                  1. 5

                                                                    God forbid you say what you mean.

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

                                                              2. 3

                                                                Hm, I suppose it did completely derail this thread

                                                            2. 10

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

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

                                                              1. 10

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

                                                                1. 8

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

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

                                                                  1. 10

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

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

                                                                    1. 2

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

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

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

                                                                    2. 7

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

                                                                      1. 7

                                                                        She said this about programming:

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

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

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

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

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

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

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

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

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

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

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

                                                                        1. 6

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

                                                                          1. 2

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

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

                                                                            “Instead you are offended”

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

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

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

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

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

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

                                                                          2. 5

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

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

                                                                            1. 1

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

                                                                              This conclusion is bonkers.

                                                                        2. 2

                                                                          She’s not allowed to talk about politics?

                                                                          I’m not allowed to respond about politics?

                                                                          1. 3

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

                                                                        3. 1

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

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

                                                                        4. -5

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

                                                                      1. 2

                                                                        Correct me if I’m wrong, but worst-case backtracking is only a problem in regular expression parsing if you don’t first construct a deterministic finite state machine, right?

                                                                        1. 1

                                                                          Presumably they are talking about a specific regex engine that only does backtracking. I believe .NET’s default regex engine is one such example.

                                                                        1. 19

                                                                          Alternative 1a is to use Alternative 1 with https://github.com/BurntSushi/go-sumtype /plug

                                                                          go-sumtype requires the interface to be sealed (which you’re already doing) and one small annotation:

                                                                          //go-sumtype:decl TheInterfaceName
                                                                          

                                                                          Then you just run go-sumtype

                                                                          $ go-sumtype $(go list ./... | grep -v vendor)
                                                                          

                                                                          and it will do exhaustiveness checks in any type switch in which TheInterfaceName participates. This will prevent the “For example, during a refactor a handler might be removed but a type that implements the interface is not.” failure mode mentioned in the article.

                                                                          1. 2

                                                                            This is really cool, thanks for working on this!

                                                                          1. 5

                                                                            I was TA for a course which involved Haskell programming, and we made heavy use of QuickCheck (similar to Hypothesis, but for Haskell rather than Python) for testing each student’s code. A couple of things to take into account:

                                                                            • If you’re going down this route, try to write your questions and tests at the same time. If you hand out the questions, give the students a week to write solutions, then try to come up with some tests to help you grade them, you’ll probably notice some annoyances which make testing harder (e.g. needing custom data generators).

                                                                            • Tests are great for checking if code does/doesn’t do the job, but that’s of releatively low importance in education.

                                                                            Regarding this second point, the main benefit we got from using automated tests in this way was that they freed up a lot of the (very limited) one-on-one time we had with each student. Rather than wasting time figuring out if the code works, we would run the tests to ‘get that out of the way’ in a few seconds, then have an in-depth discussion about some aspects of the code.

                                                                            If a test failed, we could talk about that: “why do you think it gave this output?”, “did you expect that part to work?”, “talk me through what you think this piece of code is doing”, etc. If all of the tests pass, we could pick some aspect of the code and ask about it.

                                                                            Many students seemed annoyed that they didn’t just pass/fail based on whether their code worked, but the discussions were more important. Some memorable moments:

                                                                            • One student’s “explanation” of their code was “that’s what someone put on Facebook”. I didn’t care if they got it from elsewhere, but since they couldn’t even begin to explain it I couldn’t give them any marks.
                                                                            • Another had used function composition in part of their code (written like foo . bar in Haskell), which we hadn’t covered. I spotted this and asked them what the dot does, and they didn’t know (they said they took it from Stack Overflow).
                                                                            • A few students wrote things like if foo > bar == True then ... and insisted it was “right” because it gave the correct answer. In these cases I didn’t give full marks since IMHO it indicated a lack of understanding, since == True is a useless no-op. If failing code can get partial credit for doing some things right, then passing code can get partial credit for doing some things wrong.
                                                                            1. 4

                                                                              Same here. We took it a step further though. We organized the faults we found in student code via property based testing into equivalence classes. This helped us give students feedback and sometimes informed grades.

                                                                              Here is the rubric we used (this does not contain weights, which varied): https://www.cs.tufts.edu/comp/105-2017s/coding-rubric.html — we probably wrote a couple hundred words of feedback to each student for each assignment. It was amazing.

                                                                              1. 3

                                                                                One thing a few CS classes did when I was an undergrad (admittedly at a kind of unusual university) was to let students submit to the autograder ahead of time. It was fully unattended and would email back in a few minutes with either “passed all tests” or something like “when we feed your program X, it outputs Y, which isn’t right”. You still didn’t necessarily get a perfect grade if you passed all the autograder tests, but it avoided students handing in code broken in trivial ways, at least if they were diligent enough to run the tests and fix the obvious bugs first (and if they weren’t, they could hardly complain about the grade).

                                                                                This was early 2000s, so the autograder was just a battery of hand-written tests accumulated over the years to catch the most common mistakes, not anything as fancy as QuickCheck, but it was pretty effective I think at, like you say, avoiding the feedback being entirely about trivial correctness issues.

                                                                                1. 2

                                                                                  submit to the autograder ahead of time. It was fully unattended and would email back in a few minutes with either “passed all tests” or something like “when we feed your program X, it outputs Y, which isn’t right”.

                                                                                  I think that would be nice to have for beginners in any language accompanied by some standard text and examples. It would definitely save time tracking down their early mistakes. They can try to figure it out themselves but don’t even really know the basics at that point. Better to help them there with their own debugging happening on stuff they should understand by that point.

                                                                              1. 25

                                                                                I used to do the things listed in this article, but very recently I’ve changed my mind.

                                                                                The answer to reviewing code you don’t understand is you say “I don’t understand this” and you send it back until the author makes you understand in the code.

                                                                                I’ve experienced too much pain from essentially rubber-stamping with a “I don’t understand this. I guess you know what you’re doing.” And then again. And again. And then I have to go and maintain that code and, guess what, I don’t understand it. I can’t fix it. I either have to have the original author help me, or I have to throw it out. This is not how a software engineering team can work in the long-term.

                                                                                More succinctly: any software engineering team is upper-bound architecturally by the single strongest team member (you only need one person to get the design right) and upper-bound code-wise by the single weakest/least experience team member. If you can’t understand the code now, you can bet dollars to donuts that any new team member or new hire isn’t going to either (the whole team must be able to read the code because you don’t know what the team churn is going to be). And that’s poison to your development velocity. The big mistake people make in code review is to think the team is bound by the strongest team member code-wise too and defer to their experience, rather than digging in their heels and say “I don’t understand this.”

                                                                                The solution to “I don’t understand this” is plain old code health. More functions with better names. More tests. Smaller diffs to review. Comments about the edge cases and gotchas that are being worked around but you wouldn’t know about. Not thinking that the code review is the place to convince the reviewer to accept the commit because no-one will ever go back to the review if they don’t understand the code as an artifact that stands by itself. If you don’t understand it as a reviewer in less than 5 minutes, you punt it back and say “You gotta do this better.” And that’s hard. It’s a hard thing to say. I’m beginning to come into conflict about it with other team members who are used to getting their ungrokkable code rubber stamped.

                                                                                But code that isn’t understandable is a failure of the author, not the reviewer.

                                                                                1. 7

                                                                                  More succinctly: any software engineering team is upper-bound architecturally by the single strongest team member (you only need one person to get the design right) and upper-bound code-wise by the single weakest/least experience team member.

                                                                                  Well put – hearing you type that out loud makes it incredibly apparent.

                                                                                  Anywhoo, I think your conclusion isn’t unreasonable (sometimes you gotta be the jerk) but the real problem is upstream. It’s a huge waste when bad code makes it all the way to review and then and then needs to be written again; much better would be to head it off at the pass. Pairing up the weaker / more junior software engineers with the more experienced works well, but is easier said than done.

                                                                                  1. 4

                                                                                    hmm, you make a good point and I don’t disagree. Do you think the mandate on the author to write understandable code becomes weaker when the confusing part is the domain, and not the code itself? (Although I do acknowledge that expressive, well-structured and well-commented code should strive to bring complicated aspects of the problem domain into the picture, and not leave it up to assumed understanding.)

                                                                                    1. 3

                                                                                      I think your point is very much applicable. Sometimes it takes a very long time to fully understand the domain, and until you do, the code will suffer. But you have competing interests. For example, at some point, you need to ship something.

                                                                                      1. 2

                                                                                        Do you think the mandate on the author to write understandable code becomes weaker when the confusing part is the domain, and not the code itself?

                                                                                        That’s a good question.

                                                                                        In the very day-to-day, I don’t personally find that code reviews have a problem from the domain level. Usually I would expect/hope that there’s a design doc, or package doc, or something, that explains things. I don’t think we should expect software engineers to know how a carburetor works in order to create models for a car company, the onus is on the car company to provide the means to find out how the carburetor works.

                                                                                        I think it gets much tricker when the domain is actually computer science based, as we kind of just all resolved that there are people that know how networks work and they write networking code, and there’s people who know how kernels work and they write kernel code etc etc. We don’t take the time to do the training and assume if someone wants to know about it, they’ll learn themselves. But in that instance, I would hope the reviewer is also a domain expert, but on small teams that probably isn’t viable.

                                                                                        And like @burntsushi said, you gotta ship sometimes and trust people. But I think the pressure eases as the company grows.

                                                                                        1. 1

                                                                                          That makes sense. I think you’ve surfaced an assumption baked into the article which I wasn’t aware of, having only worked at small companies with lots of surface area. But I see how it comes across as particularly troublesome advice outside of that context

                                                                                      2. 4

                                                                                        I’m beginning to come into conflict about it with other team members

                                                                                        How do you resolve those conflicts? In my experience, everyone who opens a PR review finds their code to be obvious and self-documenting. It’s not uncommon to meet developers lacking the self-awareness required to improve their code along the lines of your objections. For those developers, I usually focus on quantifiable metrics like “it doesn’t break anything”, “it’s performant”, and “it does what it’s meant to do”. Submitting feedback about code quality often seems to regress to a debate over first principles. The result is that you burn social capital with the entire team, especially when working on teams without a junior-senior hierarchy, where no one is a clear authority.

                                                                                        1. 2

                                                                                          Not well. I don’t have a good answer for you. If someone knows, tell me how. If I knew how to simply resolve the conflicts I would. My hope is that after a while the entire team begins to internalize writing for the lowest common denominator, and it just happens and/or the team backs up the reviewer when there is further conflict.

                                                                                          But that’s a hope.

                                                                                          1. 2

                                                                                            t’s not uncommon to meet developers lacking the self-awareness required to improve their code along the lines of your objections. For those developers, I usually focus on quantifiable metrics like “it doesn’t break anything”, “it’s performant”, and “it does what it’s meant to do”. Submitting feedback about code quality often seems to regress to a debate over first principles.

                                                                                            Require sign-off from at least one other developer before they can merge, and don’t budge on it – readability and understandability are the most important issues. In 5 years people will give precisely no shits that it ran fast 5 years ago, and 100% care that the code can be read and modified by usually completely different authors to meet changing business needs. It requires a culture shift. You may well need to remove intransigent developers to establish a healthier culture.

                                                                                            The result is that you burn social capital with the entire team, especially when working on teams without a junior-senior hierarchy, where no one is a clear authority.

                                                                                            This is a bit beyond the topic at hand, but I’ve never had a good experience in that kind of environment. If the buck doesn’t stop somewhere, you end up burning a lot of time arguing and the end result is often very muddled code. Even if it’s completely arbitrary, for a given project somebody should have a final say.

                                                                                            1. 1

                                                                                              The result is that you burn social capital with the entire team, especially when working on teams without a junior-senior hierarchy, where no one is a clear authority.

                                                                                              This is a bit beyond the topic at hand, but I’ve never had a good experience in that kind of environment. If the buck doesn’t stop somewhere, you end up burning a lot of time arguing and the end result is often very muddled code. Even if it’s completely arbitrary, for a given project somebody should have a final say.

                                                                                              I’m not sure.

                                                                                              At very least, when no agreement is found, the authorities should document very carefully and clearly why they did take a certain decision. When this happens everything goes smooth.

                                                                                              In a few cases, I saw a really seasoned authority to change his mind while writing down this kind of document, and finally to choose the most junior dev proposal. And I’ve also seen a younger authority faking a LARGE project just because he took any objection as a personal attack. When the doom came (with literally hundreds of thousands euros wasted) he kindly left the company.

                                                                                              Also I’ve seen a team of 5 people working very well for a few years together despite daily debates. All the debates were respectful and technically rooted. I was junior back then, but my opinions were treated on pars with more senior colleagues. And we were always looking for syntheses, not compromises.

                                                                                          2. 2

                                                                                            I agree with the sentiment to an extent, but there’s something to be said for learning a language or domain’s idioms, and honestly some things just aren’t obvious at first sight.

                                                                                            There’s “ungrokkable” code as you put it (god knows i’ve written my share of that) but there’s also code you don’t understand because you have had less exposure to certain idioms, so at first glance it is ungrokkable, until it no longer is.

                                                                                            If the reviewer doesn’t know how to map over an array, no amount of them telling me they doesn’t understand will make me push to a new array inside a for-loop. I would rather spend the time sitting down with people and trying to level everyone up.

                                                                                            To give a concrete personal example, there are still plenty of usages of spreading and de-structuring in JavaScript that trip me up when i read them quickly. But i’ll build up a tolerance to it, and soon they won’t.

                                                                                          1. 4

                                                                                            My backup strategy is simple. All my non code files live on my nas. They get encrypted at rest and synced to s3 (using aws s3 sync) every morning. I have s3 versioning enabled (with a rolling window) in case I screw up and accidentally delete or overwrite a file and don’t realize it until days later.

                                                                                            I pay a few bucks a month for s3. I dunno the cost of my nas in terms of electricity. Certainly the build itself blew the OP’s budget though. But I would have the nas even if I didn’t backup anything.

                                                                                            I think the only hole in my plan right now is my encryption keys. I have them printed out, but stored in my house. So if my house burned down I would be SOL. I should probably fix that.

                                                                                            1. 15
                                                                                              • Spent a lot of time polishing some of my libraries to get them to 1.0 (with help from others).
                                                                                              • Rewrote my CSV library in Rust. Pretty sure it’s one of the fastest general purpose CSV parsers. It’s at 1.0-beta. Close to a 1.0 release.
                                                                                              • I managed to publish 1 blog post (on aforementioned CSV library), which keeps my pace going.
                                                                                              • Helped with the SIMD stabilization effort for Rust, but others have helped a ton too. We basically crowd-sourced writing implementations for all the various Intel vendor intrinsics (there are ~thousands) and it worked really well!
                                                                                              • Wrote a small CLI data entry tool to import data into a ledger format. I still need to copy & paste tables from PDF files though on occasion. /sigh
                                                                                              • Spent a significant amount of time working on a low level information retrieval (think Lucene, but one layer down) library. I have nothing to show for it so far. It’s hard.
                                                                                              • Began a giant refactor of Rust’s regex library internals that will probably take years. This year I almost finished a rewrite of the parser. The goal of the refactor is to make it easier to add optimizations and break apart the internals. A secondary goal is to support stream matching. I don’t know if I’ll succeed in either endeavor!
                                                                                              • Ported several hierarchical agglomerative clustering algorithms from C++/Python to Rust for fun/work. I’m proud to say that I matched performance and used zero unsafe.
                                                                                              • I started work on a principled approach (read: not some random mish mash of Python scripts) to parsing the Unicode Character Database, with the intent of using it to (mostly) provide complete support for level 1 Unicode support. I’m also casually building a tool to browse/search the UCD. I had been using a Go tool that someone else wrote, but it’s… surprisingly slow.
                                                                                              • Continued active maintenance of ripgrep. Interestingly, I didn’t add any new major features this year (perhaps UTF-16 support qualifies, but in terms of code changes, it was very small). I do still have some planned that I had hoped to get to this year, but that ain’t happening. :)
                                                                                              • I gave my first talk on ripgrep at the Boston Rust meetup. It went well.
                                                                                              • I discovered Dan Carlin and listened to all of his Hardcore History podcasts during my commute.

                                                                                              At $work, I did lots of stuff too. A big part of this year was spent adding access control to our system. I’m also working on a collaborative graph editing system (think Google Docs but for knowledge graphs) which has a ton of interesting problems in it.

                                                                                              1. 1

                                                                                                Oooh, I’d love to hear more about this data retrieval library. What formats do you intend to support? Been looking for something more lightweight then lucenne.

                                                                                                1. 2

                                                                                                  Hmmm. I don’t know what you mean by that. It has its own format, just like Lucene has its own format. It isn’t going to support Lucene’s format is that’s what you mean.

                                                                                                  The idea it’s to provide a library for creating and querying a single IR index. In Lucene terms, this is at the level of a single segment. It uses fsts for the term index, uses skip lists for the postings and all that. It is mostly just a prototype at this point. I’m struggling with what the API should look like. For example, you invariably need to talk about multiple segments for merging, even though I was trying to avoid that (merging needs knowledge of the format on disk to be fast). This in turn means making assumptions about identifiers. So it is a bit of a knot at the moment.

                                                                                                  1. 1

                                                                                                    What I meant was something more lightweight resource wise then running a jvm.

                                                                                              1. 6

                                                                                                I liked this blog post and agree with most of it. But I think its section on interfaces is a bit muddled. It links to this article for more advice, and while the article sounds nice in principle from the perspective of someone publishing a library for others to use, I’ve found other techniques to be valuable as well.

                                                                                                One technique I’m particularly fond of is writing a package whose main goal is to provide an abstraction layer between a storage system (e.g., PostgreSQL) and one’s model of data. The utility of the package permits callers to access data without caring too much about the underlying details of the storage itself.

                                                                                                This on its own doesn’t require an interface. It makes sense to define a type that implements various routines that interact with the storage layer and be done with it. But something what’s really useful is to create an in-memory version using the exact same API with the same contracts. It’s useful to use the in-memory version not necessarily just in testing, but potentially also in command line debugging tools. In particular, it lets one debug or test other components of the system without necessarily depending on a running storage service. This doesn’t replace integration tests, of course, but it does permit unit testing in a more fine grained way.

                                                                                                The only real issue here is that you want everyone else that uses this storage system to be able to also use the in-memory implementation as well. The most natural way to do that is to define an interface. Now, you could take the route that is being advocated here and define the interface in each package that wants to use this storage system. I tried that. It got old, real old, fast. Re-defining that interface N times was just silly. And doing it in a granular way was just annoying. As soon as one part of the code wanted to use another aspect of the storage, you need to update any intervening interfaces with an additional method. It was just tedious work that served little to no value from my perspective.

                                                                                                So I switched over to something more like this:

                                                                                                type Store interface {
                                                                                                    FooA() (*Bar, error)
                                                                                                    FooB() (*Baz, error)
                                                                                                    FooC() (*Quux, error)
                                                                                                    // Potentially many more methods
                                                                                                }
                                                                                                
                                                                                                type postgresStore struct { ... }
                                                                                                func NewPostgres(db *sql.DB) Store { ... }
                                                                                                
                                                                                                type memoryStore struct { ... }
                                                                                                func NewMemory() Store { ... }
                                                                                                

                                                                                                And all of a sudden, things became much nicer, even though the package is now doing what everyone seems to recommend against: exporting an interface.

                                                                                                The key thing I realized is that Store isn’t meant to be some super modular interface. (In principle, I might implement this using a sum type in a different language.) Other people don’t ever need to implement it. For the most part, the two implementations—one “real” and one in-memory only—are all you ever need. That is, the interface isn’t really being used as a mechanism for extensibility, but rather, as a pragmatic tool to abstract over a small number of implementations of the same API. Namely: if one didn’t care about granular unit tests on this storage API and only ever used integration tests, then there would be no reason for the in-memory implementation and therefore no reason for the interface.

                                                                                                Rob Pike said, “The bigger the interface, the weaker the abstraction.” I’d probably agree with that. And I’m OK with it. The Store interface isn’t meant to be a strong abstraction. It is, in fact, quite weak!

                                                                                                1. 10

                                                                                                  General charities:

                                                                                                  Houston and Texas-specific charities:

                                                                                                  1. 7

                                                                                                    Also, Wikipedia.

                                                                                                    1. 4
                                                                                                      1. 3

                                                                                                        I didn’t post it to get into a debate. I’ll continue donating. Everyone else can make up their own mind.

                                                                                                        1. 5

                                                                                                          Both are valid. You posted it as an organization you believe is beneficial that’s worth donating to (I agree). You are and will continue donating to it. ptman’s comment might help others concerned about whether there money should go to one good cause or another. Such people, myself included in that group, are often concerned about (a) do they already have a lot of money or representation in donations and (b) are they spending it well enough to justify more? The article gives that crowd some info to act on.

                                                                                                          So, I value both your comments even if there’s no debate to be had here.

                                                                                                  1. 19

                                                                                                    So, I’m gonna step back and take the long view for a moment here. This could be a boon if you look at it differently.

                                                                                                    They rolled out a totally harmless extension bundled into Firefox by default. This highlighted the fact that they didn’t really have a good process around ensuring that the integrity of the base browser was maintained and that anybody in the org could ship add ons with the base build without much in the way of formal process.

                                                                                                    So as a result of this serious but ultimately harmless gaff, we now get more rigorous process around what gets bundled with the base build.

                                                                                                    I see this as a “They lost the skirmish but won the war” situation.

                                                                                                    1. 6

                                                                                                      You can say that about every fuck up. It’s a learning opportunity! Losing count of the number of people who can force push an update to something as important as a browser to millions of people shouldn’t be a rookie mistake.

                                                                                                      I worked with a guy who didn’t like pluses and negatives in retrospectives. So instead we had pluses and deltas. Nothing bad ever happened, just things we’d do “differently”.

                                                                                                      1. 8

                                                                                                        Sure, every fuck up begets a learning opportunity, but not every opportunity is seized. Do we think Mozilla will seize this opportunity? It sounds like feoh thinks so. Doesn’t seem that unreasonable, but of course, we don’t know for sure that they will. :)

                                                                                                        1. 3

                                                                                                          So what would you suggest? Seriously, what action should we all take as conscientious users? Abandon the web browser market to Google, where Chrome is closed source so we have no hope of this degree of transparency? Or perhaps Microsoft?

                                                                                                          Honestly I’m wondering what constructive steps you think we should take. From my perspective, they botched big time and have learned from that mistake, and we as users of the platform will benefit from it.

                                                                                                          1. 4

                                                                                                            I’m not advocating any particular action, but I think trying to reframe this as a good thing is a bit much. If you like Firefox, sure, carry on using it.

                                                                                                            If you want my take, people have been acting like Firefox is a perfect 100/100 on the security and privacy front. Maybe this is a reminder that there is no browser that’s 100. Perhaps a chance to recalibrate our scoring function. What if the best browser you can get is not great, but merely not that bad? Does this affect how you use a browser or its role in your life?

                                                                                                      1. 4

                                                                                                        Free trade is not a force for evil. It’s what people do when given the freedom to do so. Bad people with power will make bad-faith deals. Bad people with power will be worse for the common folk when they use men with guns to dictate who buys what from whom.

                                                                                                        1. 14

                                                                                                          How about you take a look at history and see what reality has to say about “Free trade is not a force for evil”. Bill Clinton, Ronald Reagan, and Margaret Thatcher all repeatedly bare themselves as nothing more than Hell unleashed on humanity. While you are looking, it is also easy to see how stupidly self-contradicting the mechanisms of the market are, working in all its power to eliminate the laborers that built it, or how inhumane capitalism is when given the power to do as it pleases.

                                                                                                          To put it plainly: The market doesn’t give a fuck if you starve. The market doesn’t care what’s “right”. Its only will is to increase profits. And to increase profits it must increase productivity. And to increase productivity is to reduce the amount of labor required to create commodities. To reduce the amount of socially necessary labor is to create a surplus population of laborers. And routinely when asked what to do with a surplus population of laborers, which the market is fully capable of feeding and housing, the market has nothing to tell but “Die.”

                                                                                                          Keynes’ solution to the self-destructive and inhumane tendencies of the market has obviously and miserably failed and what lays ahead for the market is little answer to intrinsic cycles of crisis from irreconcilable logical inconsistencies in the workings of credit, speculation, and trade itself but the horrific answer of austerity, whose handiwork can be found begging on the street, starving in the global south, and praying for hours in horrifically underpaying and inconsistent gig work through the most “Free” of all segments of the market, the domain of Uber, Lyft, and co, the internet.

                                                                                                          The logic of the market, in some fantasy world, could possibly not hurt anyone. That fantasy world has eluded us, and it shows no sign of surfacing on the horizon. The fact of reality is that, when laid bare over history, the market is the force of destitution, alienation, and environmental destruction. And this is within its nature, as a force of history.

                                                                                                          1. 7

                                                                                                            To put it plainly: The market doesn’t give a fuck if you starve. The market doesn’t care what’s “right”.

                                                                                                            But that isn’t putting it plainly. You’re anthropomorphizing the market in terms of only negative qualities. What is that supposed to tell me? I don’t know.

                                                                                                            Its only will is to increase profits.

                                                                                                            Looking beyond your language, this is trivially incorrect, which suggests your characterization of “the market” needs revision. For example, the other day, I traded an old computer monitor for someone’s spare space heater. Who profited? Answer: both of us. The “market” isn’t zero sum; both people involved in a trade can win, and trade is the fundamental thing on which a market is built.

                                                                                                            Now… If you said something like, “a large firm’s only will is to increase profits” then maybe that’s OK. I could quibble over it, sure, but I do think it’s a fine first approximation. But this isn’t a fundamental truth that exists in all transactions in a market.

                                                                                                            The logic of the market, in some fantasy world, could possibly not hurt anyone.

                                                                                                            Online socio-poltical debate 101: the lowest form of criticism to lodge against a particular type of human organization is to pretend that its proponents think it is a panacea. (As a corollary, the lowest form of praise of a particular type of human organization is to pretend that it is a panacea.)

                                                                                                            How about you take a look at history […]

                                                                                                            Indeed. If you look at human history over the last few millennia, you’ll see destruction, genocide, slavery, rape, pillaging and so on. Were free markets around for all of that? No, no, I don’t think so. Does this imply free markets are somehow good? No, but it certainly implies that it isn’t the source of evil either.

                                                                                                            Do we have it better today than we did 500 years ago? Seems like there’s an uncontroversial answer to that question: yes. What’s changed? More enlightened government? Technological progress? The ability to freely associate? Systems of currency? Increases in literacy rates? Overall increase in education? More interconnectedness? Better scientific understanding of the world around us? Who’s to say. But I know one thing: we’re still fundamentally the same sacks of meat that we were back then, and we did awful awful things even when there was no Evil Free Trade.

                                                                                                            So what does this tell use about free trade? Honestly? Not much. But it certainly doesn’t lead us to your conclusions either. It says that there is more to the story.

                                                                                                            The fact of reality is that, when laid bare over history, the market is the force of destitution, alienation, and environmental destruction. And this is within its nature, as a force of history.

                                                                                                            You could basically replace the word “market” with “government” or even “humans” and the criticism would still be correct. This suggests your criticism is so vague as to be useless.

                                                                                                            1. 1

                                                                                                              You’re trying to ascribe human traits onto the market!

                                                                                                              I’m doing the exact opposite. I’m describing the qualities of the market which are specifically inhumane, a market which currently fails regularly to feed millions of people around the world, while more than enough food is produced to do so. Explain that to me, please.

                                                                                                              Some irrelevant BS about simple commodity exchange

                                                                                                              Ah yes, the market. Which is when I trade Pokemon cards with my mates. My mind has changed about global poverty. Thank you for your sage input.

                                                                                                              While you’re busy with your masturbatory hypotheticals and idiotic pedantry, the world exists outside your self-absorbed bubble, where capital accumulation functions, and businesses that don’t grow, die. When I say “logic of the market” I do not mean “this is what the barterer thinks” and I don’t know how you could not understand this. I’m describing the logic of a large-scale system, which can be observed through history, going back to simple commodity production and simple exchange, which (surprise) all flourished into a global system of generalized commodity production, where capital accumulation is centerplace.

                                                                                                              Well I don’t think markets and their ideology are perfect, how dare you insinuate this!

                                                                                                              So you admit that the current productive organization regularly starves and brutalizes the lower working class. That’s good.

                                                                                                              Free markets weren’t even around for all of that other bad stuff throughout history!

                                                                                                              Mostly, they were. Generalized commodity production and “capitalism” insofar as a system of capital accumulation didn’t exist until recently but simple exchange and commodity production have existed for an extremely long time, going back to even the earliest of civilizations. And where you find systems of commodities, you’ll find class and class society. And here, you’ll find that crime is concentrated in destitute lower classes, that wars are mostly waged by and for upper classes (whatever form they take), and that ideological systems nearly always directly reflect individuals’ productive orientation and relationship within society, which massively changed along the timing of each industrial revolution.

                                                                                                              But… it’s not capitalism’s fault! You’re blaming all of this on capitalism it’s so unfair! Markets do so much for us you’re so ungrateful! People just always do bad things!

                                                                                                              What a pitiful excuse.

                                                                                                              My critique is grounded in a rigorous analysis of history, and nothing else. If I was interested in an ideology trying to find boogeymen of things I simply don’t like, I’d be an anarchist instead. I don’t think that restructuring our productive organization would suddenly fix every problem we have. However I do, among other things, think that it’d probably be massively beneficial for solving the problems of massive destitute surplus populations and organizing labor for what would otherwise be considered unprofitable activity. Now is a better time than ever, as the global banking systems run out of steam, and the economy sits in low flight, where participants are unprepared for the next bust to inevitably hit. I highly recommend the piece I had linked in the post above. I should’ve drawn more attention to it, and I’d hope at least some invest the hour or so it’d take reading it to absorb the work that was put into it.


                                                                                                              I would continue editing and adding to this response but I feel I’ve worked on it for quite some time now, I’ll just post it as I have now and leave it to other participants to bring any mistakes in it to my attention.

                                                                                                              1. 5

                                                                                                                So… You misrepresented[1] every single one of my points while simultaneously being a gigantic asshole. Good for you.

                                                                                                                EDIT: [1] - To clarify, I basically agree with several aspects of your rebuttals. There is perhaps not as much conflict between my comment and yours as you might think. Of course, there is vast conflict between the straw men you’ve set up (and even quoted, as if I wrote it verbatim, which is an asshole thing to do) and your response.

                                                                                                                1. -1

                                                                                                                  I simply wrote what I read. Please correct me where I’m wrong.

                                                                                                                  1. 3

                                                                                                                    Please correct me where I’m wrong.

                                                                                                                    diff <(my comment) <(quotes in your comment)

                                                                                                                    (I am not going to write more just so you can continue to misrepresent and twist my words. If you want something from me, then you need to show a bit more good faith.)

                                                                                                            2. 2

                                                                                                              I look at history, and I see many terrible events. I also see a pretty solid correlation of centralised control of prices and production, with terrible outcomes for the people.

                                                                                                              The answer to people starving isn’t controlling the market, it’s taxation and (some form of) welfare.

                                                                                                              The answer to environmental destruction isn’t controlling the market, it’s using those men-with-guns to put people in cages when they cause it.

                                                                                                              The market will adjust to that environment, and prices will change accordingly.

                                                                                                              1. 0

                                                                                                                Did a quick google for history. Love what I’ve seen from being told what to buy and make. Sign me up.

                                                                                                              2. 4

                                                                                                                Yeah, capitalism is fueled by people making consensual trades. I’m not saying it couldn’t get extremely ugly when powered by AI, but not as ugly as a superintelligence completely unconstrained by human values. I wish people wouldn’t try to help sell their own issues by framing AI risk as an absurdity.

                                                                                                                It’s strange because I think Ted Chiang does understand the risk. I find both where our current society is heading with the power of AI as it is and the strawberry picker pretty terrifying.

                                                                                                                edit: I say I think he understands because it seems clear from his story “Understand” in the stories of your life collection. He’s got another book that I haven’t read, “The Lifecycle of Software Objects” that deals with AI.

                                                                                                                1. 6

                                                                                                                  Right. Moral arguments against capitalism are easily dismissed because they are a category mistake: capitalism is not in the category of moral systems.

                                                                                                                  However, specific capitalist societies can be implicated, like neoliberal capitalism for example, which has a specific moral agenda.

                                                                                                                  1. 1

                                                                                                                    Yet, we can evaluate the outcomes of capitalism within any ethical system we choose. From a Nicomachean standpoint, we might ask what the purpose of capitalism is. From a utilitarian standpoint, we might start examining to see if it truly does provide the greatest good for the greatest number, etc.

                                                                                                                    Economic systems are simply tools, like hammers. Using a hammer to drive in a nail and build a house is usually ethical. Using a hammer to murder someone is usually not. Then the real-world kicks in, and we have to start asking about using hammers to build prisons, or hammers to build gallows (under the authority of the state), or hammers to masturbate, and suddenly the ethical system we choose to evaluate the ethical implications of hammers is going to have a huge impact on how we draw conclusions about those questions.

                                                                                                                    All this is to say that: you absolutely can make ethical arguments about capitalism.

                                                                                                                    1. 2

                                                                                                                      That’s not an ethical argument about capitalism, it is an ethical argument in which capitalism functions. The difference is subtle but not trivial. If we confuse capitalism with the ethical or moral system in which capitalism functions, then we risk concluding that capitalism is the problem, when in reality the ethical or moral systems are the problem. Of course, the function of capitalism within some moral system could be that it exacerbates the problems of the moral system, and I think this is the case with neoliberalism, but that does not mean capitalism is the problem, it means neoliberalism is the underlying problem and capitalism is not helping.

                                                                                                                      1. 0

                                                                                                                        I don’t think I quite follow your argument. If there’s a rash of hammer-based murders, the problem is not with the ethical system that tells me murder is wrong. It’s someplace between the hammer and the skull.

                                                                                                                        1. 2

                                                                                                                          Yes, and it is probably the skull, not the hammer; i.e. we should be looking into our mental health program. In this metaphor, the hammer is capitalism. So capitalism functions as the enabling weapon (the hammer), but the underlying problem is that our societal ethics are misaligned (we have been neglecting our mental health in society).

                                                                                                                1. 11

                                                                                                                  Meta discussion: what’s up with all these people advocating against Net Neutrality? Maybe I didn’t listen to too many different opinions a few years ago, but I’m fairly certain that if anyone wanted to try oppose NN, it was seeming obvious that they were a ISP shill. A few months I saw some looney Anarcho-Capitalist (ie. a radical right-wing (market) libertarian) advocate for it, which I belived to be a new low for their group, but since then I’ve been seeing more and more people popping out of seeming nowhere, trying to convince people that ISPs would still provide equal service to everyone (or “better”), even if the darn government wouldn’t make them do so (even if it weren’t profitable for them - but since when do private businesses care about that?).

                                                                                                                  Is my perspective limited? Has this been a longer trend? If not, what is the cause for this recent shift?

                                                                                                                  1. 7

                                                                                                                    Some people distrust the government so much, they argue against their own interests just to “keep the government out”

                                                                                                                    1. 4

                                                                                                                      Your perspective is limited. An argument against “Net Neutrality” has existed for quite some time.

                                                                                                                      [EDIT]: Source (note the blurb at the top though): https://www.eff.org/deeplinks/2009/09/net-neutrality-fcc-perils-and-promise — As far as I can tell, it’s basically the same partisan argument (on both sides) that’s being repeated today. If I were a betting man, I’d say arguments against it go back even further, but I’ve spent enough time on it already.

                                                                                                                      1. 1

                                                                                                                        I’m not doubting that there was an argument, the very concept of people supporting Net Neutrality without even an argument would be ludicrous. All I’m asking is why lately tere have been, or at least appear to have been, more prominent.

                                                                                                                        1. 0

                                                                                                                          I’d say the EFF is pretty prominent.

                                                                                                                          Anyway, it doesn’t seem more prominent to me than any other time this issue has come up (and it has, several times).

                                                                                                                          1. [Comment removed by author]

                                                                                                                            1. 1

                                                                                                                              That’s why I said

                                                                                                                              (note the blurb at the top though)

                                                                                                                              The EFF is a prominent organization. In 2009, they voiced a stance against “Net Neutrality.” You asked if your perspective was off. This is evidence, IMO, that it is. Feel free to dismiss it, but this niggling argument is just pointless.

                                                                                                                      2. 2

                                                                                                                        I don’t argue against it, but I do think many of the hypothetical scenarios people come up with are far fetched and not representative of why ISPs are opposing net neutrality (and those falsely constructed hypothetical doomsday scenarios are why so many people care in the first place).

                                                                                                                        NN is definitely better for the consumer, but if we don’t have it, we won’t lose our first amendment rights or have to pay extra for full speed access to lobste.rs. Realistically, the change will not be very drastic at all.

                                                                                                                        1. 2

                                                                                                                          Realistically, the change will not be very drastic at all.

                                                                                                                          This is a strangely confident assertion to make in the current political climate.

                                                                                                                          1. 2

                                                                                                                            I’m very confident about the goals behind corporate lobbying: create a friendly regulatory environment, then push profits right up to the line, but not so far as to create a public/regulatory backlash (because that ruins profits, temporarily).

                                                                                                                            It’s a game, and as long as they’re playing it, they’re not going to piss you off squabbling over kilo/mega/giga-bytes when the money is in video streaming (exa/zetta-bytes). Case in point: you really can’t hit Comcast’s data cap without streaming HD video – that’s on purpose.

                                                                                                                            1. 2

                                                                                                                              They’ve made crazy-high profits for decades using monopolistic tactics with poor service, high costs, and so on. Any public anger at their tactics had to be balanced against drawbacks of not having telecom service at all. So, they tolerated it for lack of other options. The telecoms reinforced that with consolidation that kept things bad until government action forced competition and/or speed increases.

                                                                                                                              With all evidence to contrary, I don’t know how you are talking like they’ll stop pushing profits at point where it creates backlash. The backlash alone won’t do anything given the public doesnt choose the FCC heads: politicians paid off by telecoms do. So, they keep trying to cause more profitable problems for consumers because executive incentives, barrier for competitors, lobbying, and weak regulations all let them do it.

                                                                                                                              And yes, they did piss me off with the caps that my non-HD, 2-person household ran through in a month on top of probably-intentionally, shitty meters that said I was using gigabytes of data when stuff was powered off. A strong backlash combined with a consumer-friendly regulator made them back off… not with admissions of wrongdoing… to simply raise the cap. The cap that they invented out of thin air to begin with. If new regulator changes things, they might try that stuff again or something worse like their plan to sell our info.

                                                                                                                      1. 11

                                                                                                                        I have to admit, I was very much in agreement with the author while reading the article. I thought the quoted email about the examples being so distracting that nothing could be learned from the book was simply melodramatic. But on finishing the article I realized my politics align with the author’s on every point.

                                                                                                                        Based on the up votes it seems this article was well received. A challenge to readers who responded positively to this article: imagine Feuerstein had picked a different set of targets, say he derided victims of police brutality as criminals deserving what they got or accused unions of massive corruption and suggested they ought to be illegal. Would you still support his choice of examples under the same principle? I don’t find the examples nearly as cute when they don’t affirm my opinions, and would be tempted to say they don’t belong in a technical book.

                                                                                                                        1. 5

                                                                                                                          Indeed. I also found the OP’s take on “Americans not wanting to talk politics” to be quite a bit off, at least for me. It’s not really that I don’t want to talk politics. I used to do it a lot. But I got sick of the consequences of voicing my opinions. My own particular views tend to disagree with just about everyone else’s, so it just winds up creating a ton of friction and I end up losing a ton of time to it. One day, I realized that I didn’t want to spend my life that way (I’m certainly not going to change anyone’s mind) so I just mostly shut up about it. Things have been much better.

                                                                                                                          If I had read the OP’s book, I don’t think I would have been so distracted as to be incapable of learning from them. But I certainly would be skeptical of any future work put out by the OP. The views themselves wouldn’t really bother me, even though I probably disagree with many of them in various ways. (If they did, I’d have a really hard time living in Massachusetts and working in Cambridge.) What would bother me is the fact that the author was so confident in their own opinions, that they would use them in a descriptive context as if they were facts.

                                                                                                                          N.B. I use the word “politics” here to loosely mean “the discussion of current events in the context of government behavior” or “a controversial topic that divides political party lines” or something like that. I don’t use in the sense of “literally any action, including inaction.” (The latter interpretation exposes a trivial contradiction in the claim that I “mostly shut up about politics.”)

                                                                                                                          1. 4

                                                                                                                            Note that this was written in 2000, before a lot of the trends that have lead people in Anglophone countries to be more vocally political started happening.

                                                                                                                          2. 5

                                                                                                                            I don’t like unions and I do like guns and I’m very uninterested in being preached to about these things by tech people via a medium that doesn’t allow discussion. I don’t think I’d literally be unable to learn from reading the examples, I just think I would get a different book after a few of them or avoid this book if I knew about them going into things.

                                                                                                                            I’m inclined to upvote things like this that I think are likely to provoke interesting conversations though for the record.

                                                                                                                            1. 5

                                                                                                                              via a medium that doesn’t allow discussion

                                                                                                                              Well put. I don’t object to writing that mixes up politics and technology, as such. But smuggling in factoids without bothering to set up an argument is just poor form. It cheapens or even precludes the debate. I don’t care what the issue is or what side you’re on: if you care enough to write about it, you should care enough to write directly, show evidence, and build an argument. Little potshots crammed into code examples don’t help make a case; it merely shows a casual disrespect for the reader.

                                                                                                                            2. 1

                                                                                                                              My politics, too, align with those of the author.

                                                                                                                              imagine Feuerstein had picked a different set of targets, say he derided victims of police brutality as criminals deserving what they got […] Would you still support his choice of examples under the same principle?

                                                                                                                              Same as with when encountering any political speech: support everyone’s freedom to choose their political viewpoints and promote them [1], but only actually support politics that make the world better. Argue and rebut where you think it’s important to and/or effective. A.k.a. don’t ban the book, but that doesn’t mean you have to buy it or like it.

                                                                                                                              AFAICT that’s what most people who disagreed with the actual book did, too.

                                                                                                                              [1] With the usual dishonourable exception for politics intolerant of other viewpoints, or even entire peoples’ rights. I don’t advocate repressing their speech at every turn, simply because that is not the most effective way to suppress the school of thought, but a tolerant society must reserve that right to prevent the intolerant from abusing it and taking over. See the Paradox of tolerance.

                                                                                                                            1. 3

                                                                                                                              I don’t understand the Rust advocacy that wants everything to get rewritten in Rust. Technical issues aside, nobody in their right mind is going to toss out millions of lines of debugged code to rewrite in a new language simply because of hand wavy claims that it’s theoretically safer.

                                                                                                                              It’s most bizarre that they’re wanting OpenBSD to do so, because the OpenBSD devs are known for being some of the best C developers around. They’re already expert at avoiding and fixing and working around the issues Rust is supposed to solve, so there’s little effort on their part to keep using C safely, but a massive effort to switch to Rust.

                                                                                                                              1. 6

                                                                                                                                Rust was born for rewriting a major system, and its major selling point is “C, but safe” (I disagree that it’s handwavy, for what it’s worth, but the selling point is the important bit, not whether it’s valid). It seems pretty natural to me that rust developers see big C code and feel an urge to rewrite it in rust.

                                                                                                                                And it’s not a worthless effort, either. Rust rewrites have exposed bugs in practice, and frequently result in patches to the older C code.

                                                                                                                                As for why OpenBSD, I don’t think that there’s any organizational effort to target it. It seems more likely to me that developers who are interested in safety might be drawn to both rust and OpenBSD for their reputations for safety. From that standpoint, it doesn’t seem bizarre at all.

                                                                                                                                1. 2

                                                                                                                                  Rust was born for rewriting a major system, and its major selling point is “C, but safe” (I disagree that it’s handwavy, for what it’s worth, but the selling point is the important bit, not whether it’s valid). It seems pretty natural to me that rust developers see big C code and feel an urge to rewrite it in rust.

                                                                                                                                  If Rust developers want to rewrite stuff in Rust, then they should just go do it. What bothers me is that they’re nagging everybody else to do it instead. Don’t waste everybody’s time trying to convince us. Just go write the code and show us how much better it is. If it’s really better then people will notice and switch to Rust on their own.

                                                                                                                                  I also take issue with the attitude that any project written in C or C++ is automatically full of memory bugs and security problems. I work on a large-ish C++ project, and have first hand experience that it’s not the case. To my knowledge the product we ship has never had a production bug due to a memory access violation, buffer overflow, or anything like that.

                                                                                                                                  Any C or C++ developer worth hiring is very aware of those problems, and knows to avoid them. And we have language tools like references and shared pointers, and analysis tools like Coverity and Valgrind that catch most problems before we ship. Whether it’s the compiler or another build tool finding the bugs doesn’t matter as long as the bugs are found.

                                                                                                                                  I’m not naive enough to say that we don’t have any memory bugs hiding somewhere, but it’s hardly worth the trouble of teaching 120 people a new language and rewriting a half million lines of code.

                                                                                                                                  And it’s not a worthless effort, either. Rust rewrites have exposed bugs in practice, and frequently result in patches to the older C code.

                                                                                                                                  But rewriting in any language will have that effect. A person can’t rewrite something without understanding what it’s doing, and the process of understanding and scrutinizing it is sure to find bugs. No doubt a C++ rewrite of a Rust program would find bugs in the Rust program, too.

                                                                                                                                  1. 4

                                                                                                                                    What bothers me is that they’re nagging everybody else to do it instead.

                                                                                                                                    From the earlier mailing list post:

                                                                                                                                    what if someone actually bothered? Under what conditions would you consider replacing one of the current C implementations with an implementation written in another, “safer” language?

                                                                                                                                    That doesn’t sound like nagging anyone else to do work, it sounds like a reasonable question: If I did the work, would that actually be enough? It strikes me as perfectly acceptable to ask a project whether contributions would be accepted before actually doing significant development.

                                                                                                                                    Theo’s answer was a resounding “no”.

                                                                                                                                    Maybe you’ve had other, personal experiences with people asking you to rewrite things in a new language, but that is clearly not the case here.

                                                                                                                                    1. 0

                                                                                                                                      I haven’t personally been asked to rewrite anything, but I see it all the time on sites like this one.

                                                                                                                                      Theo’s answer is only a resounding “no” when it’s assumed the person asking the question isn’t going to do the work that needs to be done to include the Rust code. In other words, they’re not going to special case a handful of utilities on one or two platforms, and before Rust can be used on the base OpenBSD system it has to follow the rules and support all of the platforms OpenBSD supports.

                                                                                                                                      1. 4

                                                                                                                                        I see it all the time on sites like this one

                                                                                                                                        I see this claim all the time. I see people unironically requesting a rewrite in Rust… actually, I don’t think I’ve ever seen that.

                                                                                                                                        If you want your claim to be taken seriously, you must at the very least link some examples.

                                                                                                                                2. 4

                                                                                                                                  I don’t understand the Rust advocacy that wants everything to get rewritten in Rust. […] It’s most bizarre that they’re wanting OpenBSD to do so

                                                                                                                                  I wouldn’t understand it either. Sounds like wishful thinking at best, and downright rude at worst. Can you show me the people that are telling the OpenBSD folks that they want them to rewrite everything in Rust? I’d be happy to send them a polite request that they knock it off, assuming I know how to reach them.

                                                                                                                                  I did read the OP and I didn’t see any such advocacy, but perhaps you’re aware of other posts on the OpenBSD mailing list advocating that they rewrite everything in Rust?

                                                                                                                                  1. 6

                                                                                                                                    I think there’s a between the lines implication which causes people to perceive things differently. I mean, if somebody wants ripgrep, for example, on openbsd, it’s only a pkg_add ripgrep away. So what is meant when somebody starts talking about rust on an openbsd list? A very strange way to ask how do I install ripgrep.

                                                                                                                                    Put another way, it’d be like I visit your house, where you have the walls covered in Monet paintings. And then I start explaining how Picasso is so much better than Monet. You get upset, and then I say “oh, I’m just saying in general, why would you think I’m referring to your decor?”

                                                                                                                                    1. 6

                                                                                                                                      Sure… But, I mean, the original sender didn’t even mention Rust. They talked about memory safe languages and brought up Haskell. I don’t know if they were trying to be coy (and maybe they were, based on the video they linked), but ya know, as much as folks are sick of “Rust advocacy,” I’m personally sick of people overblowing it. I’m obviously deeply entrenched in Rust things so I probably take it a bit more personally, but we do try very hard to be practical about these things and understand that memory safety isn’t the be-all-end-all of programming (I agree with many of your counterpoints to nickpsecurity, for example). But that is never ever going to stop people from spouting stupid stuff like “using a memory unsafe language in this day and age is just irresponsible.” I can’t stand that crap, it’s the same kind of shaming people use against lots of things, e.g., see pretty much anything that the PL people say about Go.

                                                                                                                                      I get the other perspective here. I maintain lots of projects and I get my fair share of drive by questions that don’t really make any sense or unwittingly imply that the amount of work or maintenance involved shouldn’t be part of the calculus. And yeah, they are super frustrating. But it’s just what people do.

                                                                                                                                      1. 4

                                                                                                                                        Ah, good point. On the bright side, if people hear safe and immediately think of rust, that might be considered a sign of success.

                                                                                                                                  2. 4

                                                                                                                                    nobody in their right mind is going to toss out millions of lines of debugged code to rewrite in a new language simply because of hand wavy claims that it’s theoretically safer

                                                                                                                                    Mozilla is doing exactly that with Firefox (36MLoC according to OpenHub). You could say they went even further and invented a new language first.

                                                                                                                                  1. 9

                                                                                                                                    I’ve been using Rust based commandline tools for a while now, ripgrep to replace grep and fd-find to replace find.

                                                                                                                                    These are not commandline-preserving compatible with the old gnu versions, for me that’s a bonus: they feel modern, are fast and are written in a memory-safe language. In my experience you don’t usually write replacements of old utilities in a 100% compatible way, but just switch to using the new tools and change your assumptions.

                                                                                                                                    100% drop-in replacement rewrites of old C software in Rust or in other memory-safe languages is an impossible goal and it’s not something that is worth trying. Reimagining how old utilities would look like in a modern environment, however is probably a worthy goal.

                                                                                                                                    1. 7

                                                                                                                                      In my experience you don’t usually write replacements of old utilities in a 100% compatible way, but just switch to using the new tools and change your assumptions.

                                                                                                                                      Basic tools like grep, wc, cut etc are all over build chain of Unix-based systems. That’s by “POSIX-compliant” is so important, you need to know a new utility can handle an edge case in a Makefile somewhere.

                                                                                                                                      1. 7

                                                                                                                                        Make is a really bad example here, given how much software needs gmake or bsd make and doesn’t support both in practice.

                                                                                                                                        (Also, by the way, one of the reasons why I think it is good that rustc is not built with make anymore)

                                                                                                                                        1. 2

                                                                                                                                          I’m not that knowledgeable about the differences between different flavors of make , but surely all support running POSIX utilities for whatever reason (searching for installed binaries, checking whether a file exists, etc)?

                                                                                                                                          1. 5

                                                                                                                                            The differences start appearing as soon as you try to do something as basic as wildcards.

                                                                                                                                      2. 2

                                                                                                                                        they feel modern, are fast and are written in a memory-safe language

                                                                                                                                        They “feel modern” is subjective, so I’ll pass on that point. Saying they’re fast implies that the current implementation is slow, and is “written in a memory-safe language” really an advantage of a program being written in a memory safe language? Seems a little circular.

                                                                                                                                        I’m by no means an expert so my opinion doesn’t count for shit and so I take no sides in this, but it seems like the OP made a bunch of really good points that need addressing, and this really doesn’t.

                                                                                                                                        1. 21

                                                                                                                                          For a tool like ripgrep, that it is written in a memory safe language isn’t a terribly direct benefit to an end user. In particular, folks don’t usually use the tool in a context where a vulnerability would be that damaging.

                                                                                                                                          With that said, memory safety has other benefits, like (IMO) lower development time. I’ve been maintaining ripgrep for over a year now, and I literally don’t spend time debugging memory related bugs. I don’t just mean “it doesn’t happen that often,” I mean, “it’s never happened, not once.” That’s a lot more time I can put into fixing other types of bugs or adding features. This is good for users, albeit indirectly. Granted, this is probably a pretty lame argument, but I’m just relaying my own experience here as I see it.

                                                                                                                                          This of course varies from programmer to programmer. A better C or C++ programmer than myself, for example, might not spend any time debugging memory related bugs either. But I’m not that good.

                                                                                                                                          One might also make an argument in favor of using another memory safe language that has a GC, but the onus is on them to show that the tool can actually compete performance wise. I do suspect it is possible, although it hasn’t been done. I’d expect D to be capable, and probably also Go. (There are some ripgrep-like tools written in Go, but they break down once you push them a little harder than simple literal searches. I cannot conclude that this is a breakdown in Go itself because there is missing implementation work to make it run faster. Particularly in the regex engine.)

                                                                                                                                          Saying they’re fast implies that the current implementation is slow

                                                                                                                                          GNU grep isn’t slow in the vast majority of cases. On a single file search, ripgrep might edge it out. As you increase the complexity of the regex (say, by using lots of Unicode features without any literals), then ripgrep starts to get a lot faster (~order of magnitude). In the simpler cases, ripgrep tends to edge out GNU grep by using a mildly smarter heuristic that lets it spend more time in an optimized routine like memchr in common cases. But GNU grep could easily adopt the latter. It would be harder for them to fix their Unicode problems, and probably not worth their time. (Because once you stick a literal into the pattern, it speeds back up again.)

                                                                                                                                          However, if you say “compare default usages of these tools, including recursive search,” then ripgrep is going to toast GNU grep just because it will use parallelism by default. Which makes this a mostly uninteresting comparison if you’re curious about the details of performance difference, but that doesn’t stop it from being a very interesting UX comparison. That’s typically the source of claims like “ripgrep is so much faster than grep,” which are unfortunately also easily interpreted as a really interesting claim which provokes the question, “oh, so what is the interesting implementation choice that makes it faster?” When folks find out that it’s just parallelism or ignoring certain files (that are in your .gitignore), they rightfully feel cheated. :-) Another less common source of this that people use “grep” to refer to both BSD and GNU grep, and BSD grep has markedly different performance characteristics than GNU grep.

                                                                                                                                          Performance is complicated, so if you really want to the dirty details, just skip straight to my analysis: http://blog.burntsushi.net/ripgrep/

                                                                                                                                          1. 11

                                                                                                                                            I should throw out a complement for your work on ripgrep. It’s impressive. I think ripgrep lands on the wrong side of XY problem style arguments (or more like gets stuck in the middle) because everybody wants to talk about what’s best without first defining requirements. :(

                                                                                                                                            1. 3

                                                                                                                                              Hah, yes, indeed. And thanks. :-) I try to keep tabs on it as best I can and keep it in check, but it’s hard!

                                                                                                                                            2. 3

                                                                                                                                              Although, putting my security hat on, memory-safety is one of things where you just never know how a certain program will get used. I mean, imagemagick is just one of the obvious cases, but what about more subtle stuff such as running something from CI? Untrusted data has a tendency to show up in unexpected places.

                                                                                                                                              1. 3

                                                                                                                                                Yeah, that is a good point. And I’ve been slowly splitting ripgrep into smaller crates. Other CLI utilities (like fd) are benefiting from that, but that definitely increases the odds of the code showing up in even more unexpected places. The core search routines haven’t been split out yet, but it’s on the list!

                                                                                                                                              2. 2

                                                                                                                                                “I don’t just mean “it doesn’t happen that often,” I mean, “it’s never happened, not once.” That’s a lot more time I can put into fixing other types of bugs or adding features. This is good for users, albeit indirectly.”

                                                                                                                                                That’s not a lame argument: it’s the very argument that safer languages such as Ada, Java, and C# sold businesses on. Knocking out problems that take up lots of debugging time lets you improve your existing product more or build new ones. If you have competition, then you can potentially improve at a faster rate than them. Outside business, there’s quite a few FOSS projects each doing something similar that compete with each other on features and performance even if not security so much. So, being able to rapidly add or fix features could help one get ahead.

                                                                                                                                                The champions of that in what few studies exist were the Common LISP and Smalltalk languages. However, if wanting low-level performance, one will have to go with something else. The prior studies put Ada ahead of C with half the defects plus easier maintenance. Rust is most comparable to it in focus areas or strengths. So, choosing Rust for low-defect development without a GC has some empirical support indirectly. I think an interpreted variant with REPL and great debugging might be great, though, for closing some of the gap between it and those dynamic languages.

                                                                                                                                                1. 4

                                                                                                                                                  Sorry, I didn’t mean “lame” as in “bad” or “incorrect,” but rather, “tired” or “old.” i.e., Everyone has heard it before.

                                                                                                                                                  1. 1

                                                                                                                                                    Oh, that makes sense.

                                                                                                                                                    1. 2

                                                                                                                                                      But yeah otherwise totally agree with everything you said. Even your top-level comment too.

                                                                                                                                                2. 2

                                                                                                                                                  I would add, writing grep in any language with a complicated runtime probably wouldn’t be nice for openbsd. Pledging() relies on knowing what the program/runtime is going to do at any given point, I have had Go problems get killed by random syscalls that the Go runtime decided to make late into program execution.

                                                                                                                                                  1. 2

                                                                                                                                                    Thankfully, Rust isn’t one of those languages :) Its “runtime” does uhh… stack backtraces… and possibly some other little things I guess. It’s similar to C++.

                                                                                                                                                    killed by random syscalls

                                                                                                                                                    That, IMO, is the worst part of pledge. Capsicum gracefully denies syscalls, letting the program handle the error instead of blowing up :P Sure blowing up lets you quickly debug a core dump of a simple C program (like OpenBSD’s base utilities), but with more complex software written in different languages, I’d much rather handle the damn error.

                                                                                                                                                3. 3

                                                                                                                                                  Ripgrep is a lot faster than grep for general use; not necessarily because the search algorithm is faster, but because it defaults to ignoring .gitignored files and BLOBs, which usually is what you want.

                                                                                                                                                  1. 2

                                                                                                                                                    They “feel modern” is subjective, so I’ll pass on that point. Saying they’re fast implies that the current implementation is slow, and is “written in a memory-safe language” really an advantage of a program being written in a memory safe language? Seems a little circular.

                                                                                                                                                    The parent said “they feel modern, are fast”, not “they feel modern, are fast_er_”. The point is that they are on par, not that the current state is “slow”.

                                                                                                                                                    I’m by no means an expert so my opinion doesn’t count for shit and so I take no sides in this, but it seems like the OP made a bunch of really good points that need addressing, and this really doesn’t.

                                                                                                                                                    Given that around here, there’s a discussion on how people can’t find out what the OP exactly meant, I find this statement a bit confusing.

                                                                                                                                                  2. 1

                                                                                                                                                    ripgrep does some terribly silly things. One is not having an option to write output as:

                                                                                                                                                    file1:line MATCH1
                                                                                                                                                    file1:line MATCH2
                                                                                                                                                    file2:line MATCH1
                                                                                                                                                    

                                                                                                                                                    Which would be obvious to somebody familiar with awk or cut. ‘modern’ often means forgotten knowledge.

                                                                                                                                                    1. 19

                                                                                                                                                      ripgrep does exactly that when you use it in a pipeline. When you print to a tty, it uses a “prettier” format. If you don’t like the prettier format, the --no-heading will force the more traditional format. Put it in an alias and then forget about it.

                                                                                                                                                      ‘modern’ often means forgotten knowledge

                                                                                                                                                      And is also often a good thing. Compare and contrast POSIX grep’s and ripgrep’s support for Unicode, for example. ripgrep “forgets” a lot of stuff and just assumes UTF-8 everywhere. This works well enough in practice that I’ve never once received a complaint. Well, that’s not true. I did receive one complaint: that ripgrep can’t search UTF-16 files, which are not uncommon on Windows. But I fixed that by adding a bit of code to ripgrep that transcodes the corpus from UTF-16 to UTF-8 when a UTF-16 BOM is detected, and hey, it works! But if I didn’t “forget” about POSIX, then that might not have been possible at all.

                                                                                                                                                      This comment should not be interpreted as an argument against POSIX, OpenBSD’s (or any other OS) use of it. Instead, I’d like you to interpret it as a criticism of the myth that “the good ol’ days” ever existed at all. My bottom line is that history has a lot to teach us, and just because we don’t copy it exactly as it was doesn’t mean it was forgotten. Sometimes mistakes are made, or perhaps even more frequently, technology simply changes and evolves that makes repeating historical choices a hard pill to swallow in some contexts.

                                                                                                                                                      So how about instead of focusing on “forgotten” knowledge (and, to the same extent on the other end of the spectrum, avoid the new and shiny—but I’m speaking to a certain audience here so I’ve omitted that) we just focus on the problem we’re trying to solve instead? If there’s some ancient (or new, I don’t care) wisdom that I don’t know about that could make ripgrep a better tool, then I’m all ears.

                                                                                                                                                      Also, I’ve never once marketed ripgrep as “modern.” ;-)

                                                                                                                                                      1. 2

                                                                                                                                                        Most of what I said wrong was based on a mistake that wasted a bunch of my time (which annoyed me), So take the comments written in a bad mood with a grain of salt. And I do like how it respects .ignore files, a tool was definitely needed to deal with that.

                                                                                                                                                        I do wonder why that “prettier” mode is needed in the first place though. It just seems like a waste of effort and I can’t see the gain. I think AG might do the same, so maybe you were just copying.

                                                                                                                                                        1. 8

                                                                                                                                                          ag does do the same, and ag in turn copied it from ack. That particular format has been around since ack has been around, which certainly isn’t as long as grep, but ack has been around for a while by now.

                                                                                                                                                          In my experience, for every complaint about ripgrep’s defaults, there’s probably N other people that actually like the defaults. For example, I’ve heard from folks that think respecting .ignore by default is a terrible or silly decision. But the defaults don’t need to be some universal statement on what’s right; it’s just my approximation of what most people want based on my perception of the world. It also continues a long held tradition started by ack, and ripgrep definitely descends from ack.

                                                                                                                                                          While I don’t know for sure, if I didn’t use the pretty format by default, I’m pretty sure I’d have legions of former ag/ack users lining up to complain about it. You might think that’s silly, but I’ve heard of people who use ag over ripgrep because ag is easier to type than rg!

                                                                                                                                                          1. 1

                                                                                                                                                            use ag over ripgrep because ag is easier to type than rg

                                                                                                                                                            haha. If they care about easy typing, they should use shell aliases. I have aliased ‘sr’ (for ‘search’) to mean rg||ag||pt||ack depending on what’s available.

                                                                                                                                                      2. 1

                                                                                                                                                        Are you sure? I’m not at the computer right now, but IIRC it outputs exactly like that when it’s writing to a pipe, not a terminal. Try piping into less.

                                                                                                                                                        1. 1

                                                                                                                                                          It seems you are right, modern just means violating least surprise. :) At least the output was colourised - I suppose that is to remind me I am not colour blind (or rub the fact in if I am).

                                                                                                                                                          1. 4

                                                                                                                                                            Even good old ls does that though, to be fair. Send it to a pipe, and it outputs a newline separated list of file/directory names, send it to a tty, and it outputs a nicely formatted table, probably with ANSI color escape codes.

                                                                                                                                                            1. 2

                                                                                                                                                              It’s only GNU ls that outputs colors.

                                                                                                                                                              1. 3

                                                                                                                                                                It’s definitely not only GNU ls that outputs colors, see FreeBSD ls -G.

                                                                                                                                                              2. 1

                                                                                                                                                                I absolutely hate that about ls too, I guess I’m wrong, but I don’t feel to bad about being wrong in this case.

                                                                                                                                                              3. 3

                                                                                                                                                                I’m not surprised at applications providing nicely formatted output to terminals, checking whether stdout is a tty is an old trick :)

                                                                                                                                                                1. 1

                                                                                                                                                                  If by “nicely formatted” you mean “colored”, then sure. Changing the first-level textual content of the output is a huge and highly undesirable surprise to me, though. I would like to be able to predict what the input to the next piece of pipeline will look like without running it through cat first just to trick isatty.

                                                                                                                                                        1. 3

                                                                                                                                                          How running containers reconcile with components that rely on “owning” entire physical machine, like Postgres or Erlang VM? Say with Erlang I can routinely run with half terabyte RAM and 10G dedicated network and serve 100s of thousands users per node. Can I do this with K8s?

                                                                                                                                                          1. 2

                                                                                                                                                            I wouldn’t say PostgreSQL relies on “owning” an entire machine, but if you want that, you can create node pools with taints, and then setup your PostgreSQL pod such that it can tolerate said taints. It will be the only pod allowed to be scheduled on that node. (I suspect you might still have some Kubernetes infrastructure running on that node, so I doubt you can literally remove everything, but you can certainly manage the allocation of pods to nodes in a fine grained way.)

                                                                                                                                                            1. 1

                                                                                                                                                              Can K8s help with replication and failover? Say Amazon RDS maintains DNS record to be used in clients and when master failure is detected it promotes slave and adjusts that record.

                                                                                                                                                              1. 3

                                                                                                                                                                think of k8s as ‘erlang for the datacenter, thrown roughly together by enterprises and people who like C’ and you’ll get pretty close.

                                                                                                                                                                1. 1

                                                                                                                                                                  I don’t know. I’m not a k8s expert. I just know the basics. My guess is that something like that is possible. Disclaimer: that’s probably my answer for every question you might ask. K8s is very large and very complicated. I don’t even know enough to say whether it is mostly incidental or necessary complexity.

                                                                                                                                                            1. 3

                                                                                                                                                              I guess most grep will be quicker than awk, however.

                                                                                                                                                              1. 1

                                                                                                                                                                Unless we are talking an order of magnitude slower, YAGNI.

                                                                                                                                                                1. 3

                                                                                                                                                                  ( repeat 100 cat /usr/share/dict/words ) | time grep '/[aoeiu]..[aeoiu]/' >/dev/null

                                                                                                                                                                  p9p grep: 0.55s
                                                                                                                                                                  GNU grep 3.1: 1.3s
                                                                                                                                                                  busybox grep: 5.2s
                                                                                                                                                                  ripgrep: 11s

                                                                                                                                                                  mawk: 2.5s
                                                                                                                                                                  gawk: 3.7s
                                                                                                                                                                  nawk: 6.6s
                                                                                                                                                                  p9p awk: 10s
                                                                                                                                                                  busybox awk: 11s

                                                                                                                                                                  GNU sed -n: 4.5s
                                                                                                                                                                  p9p sed -n: 18s
                                                                                                                                                                  busybox sed -n: 6.6s

                                                                                                                                                                  perl: 10s
                                                                                                                                                                  ruby: 14s

                                                                                                                                                                  1. 1

                                                                                                                                                                    How in the world did you get those timings? I can’t reproduce anything close to them with either GNU grep or ripgrep.

                                                                                                                                                                  2. 1

                                                                                                                                                                    Depends on the context. For a script processing large quantities of data, 2x could be a pretty big win. (Though in the specific case of GNU tools, awk actually uses the same DFA matcher that grep does, so it’s probably a wash in any case.)

                                                                                                                                                                    1. 1

                                                                                                                                                                      Agree on context. For everyday use it seems unlikely to matter, too much.

                                                                                                                                                                  3. 0

                                                                                                                                                                    On that basis, ag is much faster than grep.

                                                                                                                                                                  1. 6

                                                                                                                                                                    The horror, I would try to statically link EVERYTHING. At least the syscalls are stable.

                                                                                                                                                                    1. 6

                                                                                                                                                                      Yep, I just use musl libc and static link everything into the binary. Simpler than all the effort here to use a libc designed to be static linked.. Just need to make sure the kernels you run on for threaded stuff is recent enough, iirc 2.6.16-19ish is when those stabilized. But for most stuff its unlikely to matter.

                                                                                                                                                                      Irony is the binaries are smaller than the glibc binaries linked against libc. glibc is not my favorite libc.

                                                                                                                                                                      1. 3

                                                                                                                                                                        Unfortunately that doesn’t work for games, you can’t statically link things like X/libGL/ALSA.

                                                                                                                                                                        There’s a blogpost about building bins that only use the system dlopen/dlsym but that seems like a hassle. If you use GLFW and want to try it out you’ll need to modify it to use dlopened X (GLFW did change to do this for many parts of X quite recently), not sure about SDL. On the bright side there are already free tools to generate the dlopen/dlsym mess for OpenGL (glad is the best one), and the code to dlopen ALSA is pretty short.

                                                                                                                                                                        I assume the glibc dynamic linker is too massive and annoying to statically link, and the musl one can’t load glibc libraries so is useless in practice, so for now you can’t do anything about the libdl dependency. (Now I have the go ahead from my boss to sell my hobby projects, I wonder if people would pay for a solution to this?)

                                                                                                                                                                        1. 4

                                                                                                                                                                          The author of this blog post is a gamedev working on dhewm3 (Doom 3 port) and yquake2 (Quake 2 port). The post itself touches on SDL, OpenGL and X/Wayland. I might be not seeing something but what makes you believe the article can’t be applied to games (I believe the author did this work to build one of the doom/quake ports that way - but I’m only guessing here).

                                                                                                                                                                          1. 5

                                                                                                                                                                            I’m responding to ac, not the article!

                                                                                                                                                                            My point is that you can’t statically link everything, you have to dynamically load certain things, and to do that you have to dynamically load the dynamic loader.

                                                                                                                                                                            1. 3

                                                                                                                                                                              For dhewm3 and yq2 this is no problem: It’s open source and we don’t provide Linux binaries ourselves (and if we did an old compiler should work just fine).

                                                                                                                                                                              I’ve needed this for a commercial closed source game that uses some C++11 features and can’t be built with GCC 4.7

                                                                                                                                                                            2. 4

                                                                                                                                                                              (I’m the author of the blog post)
                                                                                                                                                                              You’re right, statically linking is no option for games (and probably not for anything else that needs to interact with X11 or Wayland).
                                                                                                                                                                              Also note that glibc is not the problem here - usually linking against an old version of it works just fine, and if you want to optionally use a more recent feature, you can still dlsym() it. (It’s annoying that it’s not easy to just point the compiler/linker to a glibc version to use, but that it uses the system version instead - however using a chroot for building release binaries is workable).
                                                                                                                                                                              The problems are mostly libstdc++ and libgcc (though maybe that one can actually be statically linked, not sure). This is because some systemlibs you need to interact with (at least libGL) use libstdc++, and if you statically link a different version than the one on the users system, things explode. Same problem if you just bundle and unconditionally use (e.g. via rpath $ORIGIN) a version of libstdc++ and the libGL (or whatever other lib) needs a newer version than the one you bundled.
                                                                                                                                                                              Of course all this is detailed in the article.. :-P

                                                                                                                                                                              By the way, SDL2 indeed uses dlopen() and dlsym() to interact with most system libs (especially the display and audio specific ones, probably not glibc..). This is pretty awesome: The same libSDL2-2.0.so.0 can support X11 and wayland, and so can your game executable (unless you do X11 specific stuff in addition to what SDL2 offers).

                                                                                                                                                                            3. 2

                                                                                                                                                                              That’s what I do using MUSL. Seems to work great.