Jordan_U

joined 1 year ago
[–] [email protected] 13 points 7 months ago

One key problem with forced arbitration clauses is that company chooses and pays the "neutral" arbiter, who is inevitably biased against the consumer.

[–] [email protected] 7 points 8 months ago (2 children)

Do you throw away all your cables when new features are added?

Only when you start to own a device that uses one of those new features?

[–] [email protected] 44 points 8 months ago

Development of the Wayland specification and multiple Wayland compositors is funded by the X.org foundation, and done largely by current and former Xorg developers / maintainers.

So it still works!

[–] [email protected] 3 points 8 months ago

I should have guessed.

Thank you 🤣

[–] [email protected] 8 points 8 months ago* (last edited 8 months ago) (2 children)

Bash scripts are rarely the best choice for large, complicated, programs or for software that requires complex data structures. (Git is very much in both categories)

In bash there are so many ways to accidentally shoot yourself in the foot that it's absurd. That can lead to bizarre seeming behavior, which may break your script, or even lead to a security vulnerability.

There are things that make it a bit more manageable, like "[[]]" instead of "[]", but a frustrating number of such things are bash specific and this is written for the subset that is POSIX shell, meaning you don't even get those token niceties.

Where you generally "want" to use POSIX sh is for relatively simple scripts where the same file needs to run on Linux with bash, Linux with only BusyBox sh, OSX with zfs (and an outdated version of bash which will never be updated because Apple refuses to ship any GPLv3 software in MacOS).

This is not that, and so one would expect that:

  1. The developer of this git implementation has poor / foolish judgement.

  2. Shit will be buggy

  3. Shit will be insecure

  4. Shit will be a PITA to try to troubleshoot or fix

  5. And shit will be slow, because bash is slow and this isn't a job that you can just hand off all of the heavy lifting to grep / sed / awk*, because the data structures don't lend themselves to that.

* You could write the entire program in awk, and maybe even end up with something almost as fast as a python implementation done in ⅒ the time, but that would be terrible in other ways.

[–] [email protected] 19 points 8 months ago

She works in "criminal justice" for the U.S. military.

You can be pedantic about the 'C' in ACAB applying, but the Bastard bit inescapably applies.

[–] [email protected] 12 points 9 months ago* (last edited 9 months ago) (1 children)

A concrete example of this is doctors and hospitals creating guidelines about how to triage care when ICUs were/are full because of unmitigated spread of COVID.

It is definitely an "interesting" phylisophical question to ask:

"If a long term ventilator user comes into the ICU, with the ventilator they own and brought from home, and they are less likely to survive than an otherwise healthy young man who needs a respirator due to COVID infection, is the morally best choice to steal the disabled person's ventilator (killing them) and use it to save the young man's life?"

The policy question that should be asked instead, and never really ways, is "How do we make sure that we never get to the point where we have so many people in the ICU from a preventable disease that we run out of respirators and need to start choosing who to let die?"

This is not just a hypothetical question:

https://www.reuters.com/legal/government/long-term-ventilator-users-lose-bid-revive-suit-over-ny-emergency-guidelines-2022-11-23/

Disabled people continue to plead with us for the bare minimum, like requiring doctors who work with immunocompromised patients to wear N95 respirators while treating those patients.

We continue to chose to stack more people on both sets of tracks instead.

[–] [email protected] 0 points 9 months ago (2 children)

This is a really weird point to argue about.

[–] [email protected] 2 points 9 months ago

Either way, this is a rule that you as a human are required to follow, and if you fail the compiler is allowed to do anything, including killing your cat.

It's not a rule that the compiler enforces by failing to build code with undefined behavior.

That is a fundamental, and extremely important, difference between C and rust.

Also, C compilers do make optimization decisions by assuming that you as a human programmer have followed these strict aliasing rules.

https://gist.github.com/shafik/848ae25ee209f698763cffee272a58f8

Has a few examples where code runs "properly" without optimizations but "improperly" with optimizations.

I put "improperly" in quotes because the C spec says that a compiler can do whatever it wants if you as a human invoke undefined behavior. Safe rust does not have undefined behavior, because if you write code which would invoke UB, rustc will refuse to build it.

[–] [email protected] 6 points 9 months ago

It has already been translated into rust. Python wasn't ever intended to be used in the "real" driver, but I thought it was a fun anecdote none the less.

[–] [email protected] 2 points 9 months ago (2 children)

To put it another way:

Strict aliasing is an invariant that C compilers assume you as a developer will not violate, and use that assumption to make optimization choices that, if you as the developer have failed to follow the strict aliasing rules, could lead to undefined behavior. So it's a variant that the compiler expects, but doesn't enforce at compile time.

I guess it is possible to just disable all such optimizations to get a C compiler that doesn't create UB just because strict aliasing rules were broken, but there are still many ways that you can trigger UB in C, while safe rust that compiles successfully theoretically has no UB at all.

view more: next ›