Patreon Logo Support us on Patreon to keep GamingOnLinux alive. This ensures all of our main content remains free for everyone. Just good, fresh content! Alternatively, you can donate through PayPal Logo PayPal. You can also buy games using our partner links for GOG and Humble Store.
Latest Comments by ljrk
System76 announce new Gazelle laptop, 13th Gen Intel paired with NVIDIA
30 Mar 2023 at 2:33 pm UTC

Quoting: sarmadI think for the same price you can get higher specs from MSI with better build quality.
I'm not really much of a System76 buyer as I generally shy away from any +512 EUR laptop personally (my work laptop is a different thing...), but why do you think MSI does better builds? AFAIK System76 does *not* just re-brand Clevo clamshells. Also, the MSI won't have proper open firmware and as-high software quality.

Flathub in 2023, they have some big plans
7 Mar 2023 at 12:59 pm UTC Likes: 29

Quoting: GuestI can't think of a single project that clashes with everything Unix more than Flatpak.
I'm a bit annoyed by this "this is not UNIX" argument by now that I'm taking some time to reply to this in a bit more verbose fashion. It's not against you as a person, but the argument is just not helpful at all.

First, what is UNIX? UNIX can be all sorts of things, a trademark, the Single UNIX Specification, the POSIX standard (which is equal to the SUS), a historical OS, a line of heritage of OSes or some wobbly idea of "what a OS should look like". In this case, it often refers to the last wobbly idea. There are a lot of slightly different concepts of what this idea precisely is, such as:

  • Everything is a file

  • Do one thing and do it right

  • Keep it simple, stupid

  • Perfect is the enemy of the good, or, good enough is perfect

  • ...



Historically, UNIX was born from the ashes of MULTICS. Basically, MULTICS was "perfect", or strived to be so, with complex handling of errors and exceptions, which propagated through to the user, ideally being caught somewhere, processed, eventually something restarted, handled, etc. It died in its infancy.

UNIX was first not much more than a filesystem, also supporting some games. It's error handling was simple, bordering on non-existent:

We went to lunch afterward, and I remarked to Dennis that easily half the code I was writing in Multics was error recovery code. He said, "We left all that stuff out. If there's an error, we have this routine called panic(), and when it is called, the machine crashes, and you holler down the hall, 'Hey, reboot it.'"
source [External Link]

This also shone through in C when UNIX was re-written in it. C doesn't really have error-handling techniques, most core utils just bail when there's something "wrong" -- which is fine for small programs. Arguably, the "keep it simple" method in the infrastructure (OS, language) propagated into the user space and forced us to write either very primitive programs, or invent our own error handling complexity which almost always failed. I'll come back to this downside in a minute.

So UNIX tools where basically all "do one thing and do it right" due to KISS on the lower layer. Of course having small composable tools is better than huge multi-tools, looking at you GPG (oddly enough, most die-hard UNIX people also defend GPG and GPG-Mail which definitely is not UNIX anymore, neither is). However, this concept still had it's limitations, some things couldn't be just "do one thing" (or it is unfathomly hard to come up with such an architecture). Thus, there were always key components which were not do-one-thing in UNIX, such as the Kernel itself, the initd, the filesystem as a separate component, the network stack, and virtually anything relating to security. Whoops. (As a side note, this shows how much KISS and do-one-thing are not the same: Implementing a micro-kernel would be very much the latter but not at all the former.)

Everything is a file is also often named as one of the key UNIX ideas. Unfortunately, never was this true: A process famously hasn't been a file (descriptor) until Linux came around with that idea rather recently. And even then, the process itself is also a directory (yes, can be represented through an fd) containing multiple directory entries of all the resources. Basically, this "everything" is only "everything that is a single entity in its own right and no group of entities"---i.e., exactly what a process is (a process groups one or multiple threads with their resources plus a slice of virtual memory). In those cases where everything is a file is indeed implemented, it's often a bad abstraction, because it pretends that there exists such a uniform access method. This easily falls apart with things like /dev/stdin: A file that can't be seekable? So yes, writing a C program that can simultaneously read from stdin and files is "easy" until it suddenly, silently and possibly unexpectedly falls apart because you didn't query whether the "file" behind your fd is actually a file. What kind of lousy abstraction is that where you constantly need to call into the abstracted/generic object to query what it actually is?! This is worse than untyped programming, it's typeless programming, where the programmer has to keep local state for every opened fd to know what kind of file it represents. Note that this is much better solved by actually getting rid of this dumb abstraction and having a proper representation such as Rust's trait-system:

Spoiler, click me

A really simple PoC Rust program that implements a simple cat(1) without needing to wrestle with fds:
use std::env;
use std::io::*;
use std::fs::File;

const BUFSIZ: usize = 1024;

fn copy(mut dest: impl Write, mut src: impl Read) -> Result<()> {
    let mut buffer = [0; BUFSIZ];

    loop {
        let read = src.read(&mut buffer)?;
        if read == 0 {
            return Ok(());
        }

        let mut remaining = read;
        while remaining > 0 {
            let written = dest.write(&mut buffer[read-remaining..read])?;
            remaining -= written;
        }
    }
}

fn main() -> Result<()> {
    let args: Vec<_> = env::args().skip(1).collect();
    if args.is_empty() {
        copy(stdout(), stdin())?;
    }

    for arg in args {
        if arg == "-" {
            copy(stdout(), stdin())?;
        } else {
            let f = match File::open(&arg) {
                Err(e) => {
                    eprintln!("{}: {}", &arg, e);
                    continue;
                }
                Ok(f) => f,
            };
            copy(stdout(), f)?;
        }
    }

    return Ok(());
}

Do note that "everything is a file" proved such a terrible idea that it was amongst the first things changed when the original authors of UNIX went on to design Plan 9.

Regardless, as someone who has actually worked on an internal fork of an actual UNIX system---and I mean developed the UNIX itself, not only worked "on" the UNIX---all this "everything is a file" is bullshit that was soon scrapped by all reasonable UNIX systems soon enough. And all the over-interpretation of "do one thing and do it good" as well (cf., Sun SMF, Zones, ZFS, ldoms, and Apples launchd, etc.). There's merit to this concept, but wielded more carefully.

Finally, "good enough is perfect" methodology is nice for a "finished" product. Something you can develop, sell/distribute and don't care afterwards anymore. It's absolutely the worst if you have to iterate on it or god-forbid, have other people work ontop of your infrastructure (e.g., if you are a Kernel). Of course, not being perfect shouldn't hold you from releasing necessarily, but you should strive for better. A lot. Otherwise you have code rot and wind up with [insert XKCD here].

So what was I saying about KISS inducing more complexity? If you keep your underlying system (overly) simple, the tools built ontop of it will need to add additional complexity to actually serve the demands of the user. You cannot, if Google crashes, just call 'em and let 'em restart the server farm. But I bet you also don't want to reboot in the middle of your gaming session, just because some daemon hangs. The key here is "serve the demands" and the demands have changed a lot. Remember that UNIX got funding because the developers promised AT&T to build a text-processing system which they could use to better print their patents and bills. That, plus serving the programmers of UNIX itself was the "demand" UNIX had to fulfill. Back then, the tools you used on UNIX were called PWB: Programmer's Workbench. Incidentally, not all users nowadays are programmers, nor is all you do coding, typing texts and playing a little console game.

UNIX wasn't bad. Not at all. I damn love UNIX, I even love C! But it's vintage. It's served its purpose. It was actually perfect for what it should do, so it never was "KISS" but "do exactly what's required, but not more". Nowadays we require more of a system, that's the natural way things go, hence, more is required from a system. Nowaday's UNIX would look a lot different.

Requirements that we nowadays have are things like:

  • Easy rollback of single applications

  • Fearlessly extending the system with apps, them not interfering with each other

  • Automatic deployment, updating, ...

  • Restriction of app's read/write permissions to per-app boundaries



This list is absolutely incomplete but does contain some of our new requirements (yes, maybe not for you since you may use only small FOSS apps and reboot to Windows for the other things, but for some people that's no feasable setup). Now Flatpak isn't perfect (that's the enemy of the good) and doesn't address all these problems, but it's a good start. And it's actually not "one tool" but building ontop of a lot of small tools such as cgroupsv2, bwrap, xdg-portals, pipewire: It's more an umbrella for a collection of tools that are designed properly to work together.

Flatpaks are basically even the most small applications as they're defined in terms of almost completely declarative "code" for building, metadata and the code itself. Just a super small archive of this will allow you to reproducibly build the Flatpak! It's serving the current needs of our world but not more.

To wind this down: Software development, historically, is always an iteration of ground/infrastructure work which starts out really primitive. Then apps, building upon this, and there's this "idea of a moment" where everything fits perfectly: The user's requirements, the apps fulfilling these, and the infrastructure providing the necessary tooling fulfilling the apps' requirements. They all line up and Dennis Ritchie sheds a tear. But then the users' requirements change, the apps stretch the boundaries of what the infrastructure provides and, inevitably, the infrastructure needs to change as well. It adapts, people cry for the lack of simplicity (sometimes rightly so!), the tools can then shed a bit of old, musty code not needed anymore and all is good again. Waiting for the next cycle.

Big new Stable Update for Steam Deck and Desktop Steam
3 Feb 2023 at 1:07 am UTC Likes: 2

Quoting: Luke_Nukem
Quoting: Liam Dawe
Quoting: Mohandevir"The new BigPicture mode has been made the default one"

Meaning it's now the Steam Deck UI for desktop users too?
Yes. So when you click Big Picture Mode, even on Desktop, it uses the UI from Steam Deck now too. Sadly, for NVIDIA users on Linux, it's quite poor right now due to low performance.
It's terrible even on Intel. Feels really half-arsed.
Not for me at all. Really snappy, am on TigerLake-LP GT2 (Iris Xe Graphics).

Hogwarts Legacy to be Steam Deck Verified at launch
13 Jan 2023 at 11:50 pm UTC Likes: 3

Quoting: Purple Library GuyTangled.
Soooo . . . I don't like the stuff Rowling has been saying. And it does seem like she's been doing more than just mentioning if asked, she's been like using her fame as a platform to amplify these views. And those views, if adopted by people she successfully persuades, could have nasty real world consequences for a fair number of decent people just trying to live their lives. So that's serious.
I think we can say "do have" instead of "could have" ;-)

Currently various US states are in the process of banning gender-inclusive terminology, forcefully medically detransitioning trans people, banning drag shows, ...

Finally, I do think there's a philosophical tension between strong feminism and the way trans is thought of, that is not just about old fashioned feminism being old fashioned, and that the trans-supportive community might want to think about. It's a pity some feminists have been so dang aggressive and absolutist about it, that's gone bad all around. But the thing is, feminism has been to a fair degree about the idea that gender roles and similar social baggage surrounding gender are arbitrary, social constructs that shouldn't really have much to do with what genitalia you're sporting. And consciously and intellectually, I'm sure many trans people and the community around them would agree. But trans identity tends to revolve around the idea of changing physical things and the gender roles associated with them, as a linked process. Implicitly that makes gender roles essential rather than arbitrary--becoming a gender with (hormones, surgery etc) involves taking on that gender's roles, or looked at the other way, taking on a gender's roles requires making physical changes to become that gender. Functionally, that approach supports the idea that men are supposed to be a certain way and women are supposed to be a certain way. And feminists, used to thinking about the roles rather than the sheer physicality, would reasonably worry about what seems from that perspective to be saying that the solution if you can't hack the roles assigned to you is not to rebel against the socially enforced roles themselves but to switch teams so you can conform to a set you're more comfortable with. So I can see some feminists being wary. At the same time, they need to accept that fundamentally trans isn't about that--it seems to be about the actual body. Although . . . people's body self-image is also socially mediated . . . it's all really complicated, but I do think that there's a need for tackling the relationship between trans issues and some of the deeper feminist thought about gender roles, rather than letting them just slide past each other as if they're unconnected, or either dismissing the other.
This is the general perception of the issue, yes, which is kinda strange since most older and contemporary feminists have had and don't have no issue with trans people. Take Judith Butler for example, whose work on gender is... much more nuanced and complex. I tried to capture the *very simplified* essence in the previous comment.

Framing this as "strong" or "radical" feminism versus "trans people" is a common misconception. Most radical feminism is quite supportive of transgender issues as they do very much shatter the concept of gender being (strongly) interlinked with sex (which, in itself, is quite a complex issue and very much non-binary if you get down to it).

Historically and cross-culturally, you can find that gender and gender expression is quite different in different times and places. Only relatively recently (in terms of humanity on earth) did we encode gender in two, rather strict, norms. Many cultures sport a "third gender" and others, did see it kind of more as power categories, basically they had gender roles but these were only initially bound to sex.

Even older Mesopotamia had a goddess who quite literally was supposed to be able to turn "men into women and women into men" and many of whose priestesses we'd nowadays call "trans women".

Those fixed categories only became "popular" in the medium or later stages of christianity (early christianity was quite flexible in that regard) and thus in the "Western" culture. And *that's* what (radical) feminists want to deconstruct.

Gender roles are a social construct. But gender identity is (pretty much proven at this point) not. Note that they do not want you to "not express your gender" but the *how* of gender expression is deconstructed. Women don't need to stay at home and wear dresses, men don't need to drive fast cars and manhandle their wife. It's absolutely in line to express your gender either in-line with social stereotypes, or not. As long as you're *free to do so*.

However there's obviously the point about trying to deconstruct the underlying stereotypes. Of course, "high femme" trans women are intuitively kinda counteracting that. However, there are a *lot* more cis women who are "high femme". So why is the issue with trans women? Because the implicit assumption is, that these women do that to "be" female. But that's turning the whole thing the wrong way as Judith Butler would say: These (trans) women are women (by their gender identity), *just like* the cis women are. There's *no difference* b/w a trans woman being "high femme" and a cis woman being so, in terms of stereotype deconstruction.

Also note that trans people have quite a history of not really fitting themselves too neatly into "either" corner and genderqueer people in general found various creative ways to express gender that absolutely blow up the gender stereotypes. A friend of mine is often sporting a scottish kilt, a mohawk, bright red lipstick, jump boots, ear rings and (non-weapon, style-only) knucklebusters.

Hogwarts Legacy to be Steam Deck Verified at launch
13 Jan 2023 at 11:27 pm UTC Likes: 4

Quoting: ScytaleI will buy it as it could be the first wonderful game from the Harry Potter franchise. Since the first book decades ago, I wish for a good game in this universe, and there were a lot of bad ones until now.

Regarding J.K. Rollings quotes:
I don't get why many people feel so much hate. Rollings is an old school feminists and feels threatened, that something on scientifically very thin ice could (or a very young trend, or at least not as well researched until now) undermine women's rights. So her intentions are good, I can respect that. But I cannot respect the hate she gets or the call for boycott of the Hogwarts game, of which profit goes more to the developers and the publishers than in her pocket.
That's actually not right in virtually any respect, especially the "thin ice" respect. Medical(!) transitions of trans people happened in the first half of the last century. Research on trans people was burned by the Nazis, but there was a whole institute in Berlin only dedicated this and related. It's neither a "new trend" nor badly researched. The only thing that's recent is more medical availability and acceptance of the fact outside of science.

The science behind it is quite simple: Things like pronouns, how you dress, etc. is not encoded in DNA (surprise!). It's what we usually call "gender expression" which is heavily based around stereotypes and culture (scotsmen will gladly sport "skirts"). Our genes encode various properties of which some can be visually discerned from so-called "primary and secondary sex characteristics". Usually, in language, we use gender expression as well as those sex characteristics to choose how we address people. This is... completely arbitrary. There's *no* biological reason for that. Similarly, the term "woman" in our day-to-day interaction is more related to these expressions, sex characteristics etc., as to actual "female homo sapiens". This relationship is (and never has been) strictly 1:1, since we have intersex people or other ambiguouties. Also, note that other cultures that had a "third gender" for a long time have obviously encoded all this differently. We need to understand that "trans" doesn't redefine chromosomes, it's just acknowledging the fact that when we speak about "women" and "men" in society we've never really talked about the biological background (after all, in my day-to-day interaction I couldn't care less whether the person in front of me *actually* has a penis, *actually* has XY chromosomes, *actually* ...).

The "other" thing is that many trans people experience a long studied and well-recognized phenomenon known as "body dysphoria" which requires therapy, i.e., medical transition.

Those two issues,

  • social dysphoria: being forced to express your gender in a way you're not comfortable due to our culture enforcing a strong link b/w "biological (fe)male" (which itself is even more complex than binary) and the social concept of "(wo)man" and

  • body dysphoria: suffering under the wrong body



are quite old, although the terminology in older material is a bit "dated" (transvestites, transsexuals, hermaphrodite, ...). But it goes back *a long* time. Basically around the same time first wave feminism happened.

Hogwarts Legacy to be Steam Deck Verified at launch
13 Jan 2023 at 11:12 pm UTC Likes: 3

Quoting: Guestlook your comment seems very reasonable and logic, but lets call things how they are. Within the "cancel culture" there is ppl actively calling out to burn books or precious works of art. That's why I said I had split opinions about this because I don't like radical approaches in neither ends. This problem should be handled other way like having proper anti discrimination laws, JK Rowling should not be allowed to say such things. She should be fined. Her books are not the issue. It's a "free peach" issue, free speech is not about targeting and promoting hatred against minorities, here she crossed a line. She should be fined and legally muzzled.
I'm confused... you say you're against "radical approaches in neither ends" and then call for... fining her by jurisdiction? I'm all for boycotting JKR and everything but even I'm against passing laws that ban (most) of what she says.

I don't get why boycotting JKR is... radical. Neither do I think "radical" is bad actually, we do *need* quite some radical changes in the world. Soon.

I've not seen serious calls to book burning or the like though. Often only through 2nd or 3rd hand reports by people heavily taking things out of context or downright faking things. I won't deny that there may be some *very* few people who'd do that, but that's far from "cancel culture". Especially, considering that this "canceled" author just has landed *another* huge publishing success. I'm still scratching myself: Where was there any "canceling"?

System76 teasing new fully AMD powered Pangolin Linux laptop
13 Jan 2023 at 10:26 pm UTC Likes: 3

Thanks System76 for listening <3

Proton Experimental fixes The Witcher 3 — plus better steering wheel support
23 Dec 2022 at 11:03 am UTC Likes: 1

Quoting: Rouhollah
Quoting: ljrkAlso note that you can use

 
--launcher-skip


in Witcher 3 to skip the annoying launcher :-)
Hey, thank you for the tip.
Can I ask where I could find different launch options for games? Do developers release documentation or something?
I don't know any official documentation unfortunately. In this case, I simply found it mentioned on protondb.

Generally, you can launch the game and figure out if the launcher is a separate exe file. Then you can use the "strings" binary to extract all byte sequences containing human readable characters which likely includes all command line options. You may filter for prefixes such as -, -- or / in order to get a shorter list to work through.

Proton Experimental fixes The Witcher 3 — plus better steering wheel support
21 Dec 2022 at 10:17 pm UTC Likes: 6

Also note that you can use

 
--launcher-skip


in Witcher 3 to skip the annoying launcher :-)

Intel using DXVK (part of Steam Proton) for their Windows Arc GPU DX 9 drivers
10 Dec 2022 at 8:57 pm UTC

Quoting: iskaputt
Quoting: ljrk
Quoting: Guest
Quoting: WorMzySomeone needs to tell "Longhorn" about grep -i. >_>
I was thinking the same thing! :)
Given he's a "Kernel/hypervisor engineer", that ugly use of the cli makes me wonder about the quality of their code...
Am I missing something? No idea why `grep -i` directly would be better than using `strings` first. The former would print all *lines* matching the regex which is absolutely less useful, especially in a binary context where "lines" are just bytestrings that happen to be delimited by a 0xA byte. So the output would also be less useful due to the whole line being matched. You could change that using the `grep -o` option but that's GNU only. Further, this is probably even more efficient, since grep matching potentially huge lines is not a good starting point.

So this is actually the way to go: Converting a binary into a text "file" (a list of strings) and then using a text tool to work on this further. That's what pipelines are for.
They're referring to the first three lines, where the person on twitter tried different spellings for DXVK (Dxvk, dxvk, DXVK), which could've been handled by `-i`.
Oooh, yeah. I somehow missed that :D

(Although this reminds me of how *hard* it is to do "case insensitive matching" in an international way. Is `i` equivalent to `I` or to `İ`? :D)