1.  

    As part of the stated audience— I’m a Rust fiddler, new to performance-critical software— this is really great, made me laugh.

    1. 13

      In three steps you have renamed a git branch without making a big deal out of it, all while avoiding the wrath of internet reactionaries.

      Except for any tools/users/whatever that depend on the branch being called “master”. It’s not the best idea to depend on a branch instead of a SHA, but it does happen (e.g. https://gitlab.com/gitlab-org/gitlab/-/merge_requests/36947, which caused our release process to break for a backport we were preparing).

      1. 6

        all while avoiding the wrath of internet reactionaries.

        On top of that, slipping this in at the end of the article is IMHO a bit underhanded. OP gets to fire off his barb, putting anyone who disagrees with the movement to rename branches into the bucket of “internet reactionary”. At the same time, it’s not a prominent point in the document, so anyone who objects to that characterisation is exposed to accusations of being petty.

        1. 4

          Presumably, the “internet reactionaries” would be the ones who requested changing the name from master to main? That’s how I read it, at least.

          I did also feel it was kind of unnecessary.

          1.  

            As somebody else mentioned, a “reactionary” is conventionally a person of regressive or conservative leanings who resists efforts to change society by progressives. In this context, I used it to refer to people who feel that the word “master” is something worth protecting.

            1.  

              Thank you for clarifying. I agree with your characterization.

          2. 1

            That line in the article had me slightly confused as a simple definition of reactionary is a “person who is opposed to political or social change or new ideas”. Surely by changing a branch name in the way described would attract the wrath of of “internet reactionaries”?

            1. 2

              I believe that the author’s claim is something like: this change is sufficiently simple that there is no ground for “internet reactionaries” to stand on.

              1.  

                This is a fair summary of the piece.

                I am aware that I brushed aside with a footnote some difficulties with changing certain upstream sources’s default “checked-out” branch. I really did not want to turn the piece into a GitHub web UI tutorial that would be fully obsolete in 6 months. Despite that, I still think this request is too modest to reasonably refuse.

        1. 2

          I don’t see the software industry as a meritocracy. For every “10x programmer” there must be hundreds if not thousands of people involved in mining, manufacturing, assembly, transportation, etc. that make their jobs possible. I only deserve tens or hundreds of thousands of dollars each year inasmuch as the people who built my computer deserve to struggle to access food and housing. As a software developer, my work is inextricably tied to theirs.

          So, back to the article: I agree with the premise that we have a collective responsibility to fight for equality within our industry. I like all three ideas, honestly. I don’t think it will come at the expense of being able to accurately measure someone’s ability to do a job. Another way of saying this is: If you currently rely on someone’s grades to determine if they’ll be good at their job, you’re probably already losing a lot of great candidates and furthering inequality. Many people have accepted this as the cost of doing business, but that shouldn’t be the starting point for building a great education system.

          1. 2

            I had no idea that so much of 3D was setting up the camera. Really incredible. Thanks for sharing.

            1. 1

              But unfortunately, we naively created the example object like this:

              const example: Example = {
                kind: "example",
                id,
                code,
                expectedResult,
                isInteractive,
                lesson,
              }
              

              This is bad for multiple reasons. If you try to move an example to a different lesson like so:

              example.lesson.id = "new_id";
              

              Then you’ve changed the original lesson’s ID. Probably not what you meant to do!

              1. 1

                That wouldn’t be possible due to a bedrock design constraint of the system: all of the curriculum types are readonly all the way down.

                1. 1

                  Oops, didn’t realize!

              1. 9

                Here in the U.S. I think the sense of dread is palpable and spreading; itself a virus like the other. Fear is the mind killer, people. Dare I offer a quote from a mxn recently relegated to the hash heap? I guess so:

                You cannot tell from appearances how things will go. Sometimes imagination makes things out far worse than they are; yet without imagination not much can be done. Those people who are imaginative see many more dangers than perhaps exist; certainly many more than will happen; but then they must also pray to be given that extra courage to carry this far-reaching imagination. But for everyone, surely, what we have gone through in this period - I am addressing myself to the School - surely from this period of ten months this is the lesson: never give in, never give in, never, never, never, never-in nothing, great or small, large or petty - never give in except to convictions of honour and good sense. Never yield to force; never yield to the apparently overwhelming might of the enemy.

                1. 5

                  Personally I think people should be looking at the data, and the US data is very concerning.

                  To me this pandemic shone a light on social challenges in the US for a long time. If we assume that average infected person infects three other people when living their “normal” life, then the outcome for a country depends heavily on the fraction of people who refuse to take the threat seriously. If 10% don’t take it seriously, they will get the R number to 0.3 by themselves (10% x 3), so the other 90% of the population needs to contribute R of 0.7 to contain the virus, so that group needs to achieve a personal R of 0.77 (ie., 70%/9.) If 30% don’t take it seriously, they will get the R number to 0.9 by themselves, and the other 70% of the population needs to achieve 10%/7, or a personal R of 0.14, which is pretty much impossible. The size of the minority decides the outcome. And in the US, that minority is larger than in most other developed countries, which makes the outcomes significantly worse.

                  As an Australian living in the US, I’m really tempted to go back and spend two weeks locked in a hotel room just because the situation there is on a much better trajectory, and as far as I can tell, it’s driven by the size of the minority. I’m expecting that this decides the economic outcome too, because countries that contain the virus quickly can restart things more quickly; countries that fail to contain it will end up with a combination of enforced lockdown and fearful consumers that will cause protracted economic harm.

                  1. 3

                    I’m a US-born person living in Berlin, Germany most of the time, occasionally spending extended stays back in the US with close friends and family. Seeing the situation unfolding in the streets while being unable to travel back has been far more anxiety inducing for me than anything related to covid, which, up until George Floyd was murdered, had been something of a renaissance time in my life.

                    Now is the time that the pendulum could swing quickly in any direction in the US, and I feel quite guilty that I am not there to push it ever so slightly in the direction that could lead to me ever having the desire to permanently return.

                    1. 2

                      I’m also someone who grew up in the US living in the UK, and feel exactly the same way. Solidarity <3

                  1. 1

                    I read this and thought: Materialize sounds a lot like Noria*! Well, there’s an orangesite comment from a Materialize engineer that goes into more detail.

                    * Research DB from MIT, previously on lobste.rs

                    1. 2

                      Also similar to PipelineDB (https://github.com/pipelinedb/pipelinedb), which got acquired by Confluent.

                      1. 10

                        Using red for instances where it has not been done and green for when it has been done creates the impression that doing it is good and not doing it is bad which is presumably not what you’re going for. Colour usage matters for perceptual reasons.

                        1. 5

                          I’m not designing my blog for anyone who cares more about the color of a checkmark than the use of language that makes people feel uncomfortable. Thanks.

                          1. 1

                            Ah I misinterpreted your position on the issue. My bad!

                          2. 3

                            I would prefer using green for when it is not done and red for when it is done.

                          3. 6

                            Do you know how good your sample is? Taken at face value, this list would seem to indicate that the real social power lies with those who advocate for change rather than those who wish terms to remain the same. I say this because almost every single instance on your list resulted in a change.

                            1. 5

                              And imagine situation where they rename everything once… but actual problems do not disappear. What a nightmare

                              1. 5

                                Good question. It’s definitely not a representative sample– I’ve added a disclaimer to the post.

                              2. 5

                                Another one (from 2020) for your collection: https://github.com/psf/black/issues/1363

                                1. 1

                                  Thank you, I’ve added it!

                              1. 1

                                I don’t think that an attempt to make a community more welcoming to marginalized groups is dramatic or aggressive. I don’t think forking a project after a maintainer has decided not to address an issue is dramatic or aggressive.

                                In the original GitHub issue, you posted this:

                                I wonder how all of you would feel if suddenly a ton of people who haven’t done anything for the project appeared here, told you’re a horrible person and started bullying you into doing what they want…

                                This is in reference to 4 or 5 comments that expressed disagreement, most of which were couched in “I feel” or “I think.” Up to this point - and please correct me if I’m wrong - the discussion actually seems quite polite. People were passionate because police violence is an important topic, but I didn’t see anyone calling you names or dismissing your efforts even when they disagreed with you. But after you made your post, people came to your defense by characterizing the original issue as “nonsense,” “execrable,” “SJW,” “absurd,” “whining,” “ridiculous,” and so on.

                                1. 34

                                  I acknowledge any mistakes on my part and I regret and denounce the negativity invoked in my defence. My initial reaction was directed at some Twitter comments, but I failed to make this clear, which is on me. As noted I wrote this at 7 am having woken up a few minutes earlier. Clearly not my brightest moment. :-)

                                  1. 14

                                    After reading the entire thread, you did nothing wrong. I found your replies to be reasonable.

                                    I would have put a “No” and closed/disabled further discussion in the very beginning. Engaging with this type of person is a waste of time. Pretending as if forking and running a sed command is “doing most of the hard work”.

                                    Ultimately this seems to be the consequence of writing a successful tool with a big userbase.

                                    1. 5

                                      If someone forks it, just sit back and enjoy them fixing all your bugs for you, or giving up at the effort.

                                      1. 1

                                        You have done absolutely nothing wrong and have nothing to apologise for.

                                      2. 17

                                        What would your response be if that happened to you? If someone opened up an issue with grunt-simple-mocha requesting you change the name because “grunt” is a US slang term for “soldier,” which implies US hegemony and violence against other countries? And a lot of other people supported that?

                                        1. 6

                                          I’d take the request seriously. I’d wonder why they were taking it up with me rather than the authors of Grunt. I’d wonder if they opened the PR as a form of harassment/retaliation. But assuming their concerns were legitimate, I’d consider changing the name.

                                          I’d definitely delete any needlessly dramatic comments that called other contributors SJWs, bullies, aggressive, or censors for expressing concerns about bigotry in an industry which has repeatedly proven itself to be structurally unequal and unwelcoming to large groups of people. But I already do that thrice daily after washing my hands for 20 seconds with soap.

                                          1. 7

                                            It was an example of a project whose name might be taken in a bad context. I could have used, for example, your funny-fingers repo as offending someone because that is mocking people with deformed hands. You might think that’s a silly example, but until two weeks ago, there wasn’t an issue with the word “cop”.

                                          2. 4

                                            I wonder this, as well. Where do we draw the line?

                                            Should our industry lean towards plain-English definitions for names when it comes to software?

                                            Is there demonstrable evidence that “RuboCop” has caused anyone, anywhere, undue distress? Moreso than would be required to rename a highly-used library?

                                            1. 9

                                              I think too many people are taking George Orwell’s 1984 more as a manual than a warning.

                                          3. 0

                                            But after you made your post, people came to your defense by characterizing the original issue as “nonsense,” “execrable,” “SJW,” “absurd,” “whining,” “ridiculous,” and so on.

                                            Which is fine, because the original issue is absurd, ridiculous whining from an SJW concerned, ironically, more with policing the language of others than with doing anything useful.

                                          1. 11

                                            Working on a program that automatically removes joe rogan from his own podcasts.

                                            https://youtu.be/-XhmyG54Le4

                                            1. 4

                                              Wow! Thank you!! You are doing gods work.

                                              Make sure to post here when it is complete!

                                              1. 2

                                                Ahahaha, I guffawed.

                                                1. 2

                                                  Approximately how long does it take to process a single episode and produce a truncated version? I’m asking on behalf of my sibling who’s doing their first ML project and is interested in doing something (technically) similar, but is unsure of the costs. They guessed “about the length of an episode” and I guessed “about 1/4 the length of an episode.”

                                                  1. 2

                                                    It takes about 30 minutes of human labor and maybe 40 minutes of computer labor depending on whether you include downloading.

                                                  1. 2

                                                    No, this is awesome to know! This seems to be a link aggregator after all. Plus, the point of the blog post was just to list some gripes about a language that the author really loves.

                                                  1. 25

                                                    Deno is worth checking for people that want JS/TS but don’t want Node’s design flaws. Comes from Node’s original creator.

                                                    TSC must be ported to Rust. If you’re interested in collaborating on this problem, please get in touch.

                                                    For once, I agree with a RIIR.

                                                    1. 7

                                                      I’m excited for this as well. See also: https://github.com/swc-project/swc

                                                      1. 1

                                                        RIIR

                                                        I don’t understand why. Rust does not seems particularly suited for the task.

                                                        1. 2

                                                          For which reasons do you believe that to be the case?

                                                          1. 3

                                                            A compiler needs to do a lot of symbolic manipulations.

                                                            More often than not, especially with a non-trivial type system such as typescript one, these implies manipulating directed acyclic graphs. Or even worse, arbitrary directed graphs if the processed language has a strong enough notion of recursion. Reasoning with lifetime and sharing of graphs is notoriously difficult. Even with logic stronger than the borrow model of Rust, such as separation logic. This alone is very annoying. If the graphs are local enough, as is the case with CFGs when doing intra procedural analysis, you can just keep allocating and release everything with when done with the function. But type systems not always lend themselves to local analysis. Then, like C/C++, Rust code tend to be efficient if computations have a regular structure (e.g. traversing arrays), not chasing pointers with hardly predictable lifetimes. Which again, is often the case when doing symbolic/static analysis.

                                                            So two of “Rust selling points” are not really applicable, quite the opposite.

                                                            1. 8

                                                              I firmly believe that Rust today is the best language for compilery tasks, based on two observations:

                                                              • The language for writing compilers is ML
                                                              • The language of choice for production-ready compiler implementations is C++

                                                              Rust, as an ML in C++ clothing, combines the relevant benefit of the two.

                                                              I specifically disagree that “it’s hard to work with graph data in Rust” criticism is relevant. Even in a GC language, representing complex graph as a literal graph of objects is often inconvenient/inflexible, and you would use arena and indices, just like in Rust.

                                                              My anecdotal experience tells me that Rust is a more convenient language than Kotlin for compiler front-ends.

                                                              I think I can get behind an idea that a sort of “idealized ML” would be a better language to implement a compiler in, but I think Rust’s quality of implementation, today, in practice, blows all existing functional languages out of the water.

                                                              1. 2

                                                                And if you don’t care about a C++ clothing, you can just use ML. Rust compiler used to be fast when it was written in OCaml. ;)

                                                                1. 1

                                                                  … and way less features and checks…

                                                                  1. 1

                                                                    About C++ clothing and quality of the implementation :-) For example, Windows support and parallelism are just two major benefits of Rust in comparison to OCaml, which are mostly unrelated to language per se.

                                                                2. 2

                                                                  Being honest, anything but JS would be an improvement in this task.

                                                                  I’m okay with Rust because being already used in Deno and the community has a considerable inertia.

                                                                  Your points seem reasonable. Would love to see, in general, web-related compilers/transpilers written in more efficient stuff than JS

                                                                  1. 1

                                                                    Working on a compiler in Rust. It doesn’t seem to be an issue.

                                                            1. 3

                                                              I kinda wish everyone just had an immutable permanent UUIDv4 and that was it.

                                                              1. 6

                                                                It certainly makes surveillance easier.

                                                                1. 2

                                                                  That would make me feel like a number.

                                                                  1. 1

                                                                    SSN’s.

                                                                    1. 5

                                                                      At least in Sweden, the analog “personnummer” is not immutable. People get new ones on occasion (like example when hiding from abusive partners).

                                                                      1. 5

                                                                        Yes. As a privacy person, let me agree emphatically that when you’re identifying people, you really want to use resettable identifiers.

                                                                  1. 7

                                                                    As a counterpoint - and perhaps my opinion doesn’t matter since I don’t use Rust for work or to make any money - but I’m actually thrilled by the rate of development and release cycle. I recently picked up a Rust project which I hadn’t touched for ~6 months and was able to quickly update the code with the help of cargo clippy and cargo outdated.

                                                                    1. 3

                                                                      So cool, I’m instantly recommending this to all my friends who have expressed interest in learning to program :)

                                                                      1. 1

                                                                        Great writeup. I’m actually considering doing this for a project of mine, so I’ve bookmarked this.

                                                                        Normally it’d be better to link with whatever lzx library is installed on the user’s machine so we receive updates

                                                                        How would one do this?

                                                                        1. 3

                                                                          There are helper crates like pkg-config and vcpkg that will find and configure it for you. Underneath it boils down to telling cargo an appropriate lib search path and name of the library to link.

                                                                          https://kornel.ski/rust-sys-crate

                                                                          1. 1

                                                                            thank you, that article’s great too. wow.

                                                                          2. 1

                                                                            In an attempt to answer my own question, I went searching. Not sure if all of this is relevant:

                                                                            1. https://github.com/rust-lang/cargo/issues/3573
                                                                            2. https://rufflewind.com/2017-11-19/linking-in-rust (note: from 2017!)
                                                                            3. https://github.com/KyleMayes/clang-sys/blob/e3a9fb35d8c10663518538fa48a3e135ca6157f5/build/dynamic.rs#L191 (looks like the second approach from blog post 2.)
                                                                          1. 8

                                                                            Extra relevant to Lobsters was that @jonhoo (Jon Gjengset) also tested Noria on Lobsters app for a 5x speed-up. He also submitted a podcast and a video on it.

                                                                            1. 4

                                                                              Thanks for the mention! All the data for the Lobsters part of the paper came out of this thread.

                                                                              1. 3

                                                                                Hehe, this is actually how I found out about lobste.rs. I agree— excellent video! ^^

                                                                                1. 2

                                                                                  Excellent video, I highly recommend it. Thanks for sharing it @nickpsecurity!

                                                                                1. 5

                                                                                  I didn’t know people still used “cripple” to mean “inferior.” It’s like saying “that’s so gay” to mean “that’s so bad.”

                                                                                  I liked the part about Drop though.

                                                                                  1. 1

                                                                                    Update: I messaged the author letting them know what they were saying and they changed it to not be ableist :)

                                                                                  1. 6

                                                                                    Wow, this is a great, no-bullshit explanation. Thanks Carl + the rest of the tokio team.

                                                                                    1. 2

                                                                                      I’m slowly working my way through Ibram X. Kendi’s Stamped from the Beginning: The Definitive History of Racist Ideas in America. It lives up to the lofty title.