Chobbes

@Chobbes@lemmy.world

This profile is from a federated server and may be incomplete. Browse more on the original instance.

Chobbes,

I’m pretty sure this is on a public mailing list.

What is your unpopular flim opinion

I’ll go first. Mine is that I can’t stand the Deadpool movies. They are self aware and self referential to an obnoxious degree. It’s like being continually reminded that I am in a movie. I swear the success of that movie has directly lead to every blockbuster having to have a joke every 30 seconds

Chobbes,

You didn’t like the one where there was a bad guy and they fought the bad guy and then won against the bad guy?

Chobbes,

This was exactly my thought… Some of the ent scenes are really rough now. Fantastic movies, though!

Chobbes,

Ohhhhh, yes, but I think you’re thinking of the other one. It’s the one with a few casual one liners.

Chobbes,

Interstellar is an amazing movie followed immediately by a terrible sequel.

Chobbes,

I was surprised by this too! I mean I can understand thinking that crepes will be hard because they’re pretty dainty and might be delicate, but they’re surprisingly easy to do.

Chobbes,

There’s a few Linux “native” releases on steam that use compatibility layers based on wine behind the scenes, which I think is probably what they mean.

Also, this feels wrong, but… Is wine native? It’s mostly just the windows api implemented as Linux libraries. What’s the distinction that makes it “non-native” compared to other libraries? Is SDL non-native too?

Chobbes,

I think anything that CodeWeavers helped port. I think Bioshock Infinite is one such game. I’m not sure if you’d see wine binaries, though, could all be statically linked in.

Chobbes,

My understanding is that DXVK implements the Direct3D API using vulkan behind the scenes. So, sure, there might be a bit of overhead versus a more direct implementation. Frankly this doesn’t feel all that different from something like SDL to me. Shaders will have to be compiled into shaders that Vulcan understands, but you could just think of this as part of the front end for shader compilation.

I do agree that it feels less native to me too (particularly over the rest of wine), but it’s sort of an arbitrary distinction.

Chobbes,

You’re not wrong, and the translation layers definitely do make a difference for performance. Still, it’s not all that different from a slightly slow slightly odd “native” implementation of the APIs. It’s a more obvious division when it’s something like Rosetta that’s translating between entirely different ISAs.

Chobbes, (edited )

You’re explaining yourself fine, I just don’t necessarily agree with the distinction. It’s like when people say a language is “a compiled language” when that doesn’t really have much to do with the language, it’s more of an implementation detail. It’s a mostly arbitrary distinction that makes sense to talk about sometimes in practice, but it’s not necessarily meaningful philosophically.

That said, SDL isn’t really any different. It’s not translating languages, but you still have additional function calls and overhead wrapping lower level libraries, just the same as wine. DXVK has an additional problem where shaders will have to be converted to SPIR-V or something which arguable makes it “more non-native” but I think that’s not as obvious of a distinction to make too. You probably wouldn’t wouldn’t consider C code non-native, even though it’s translated to several different languages before you get native code, and usually you consider compilers that use C as a backend to be native code compilers too, so why would you consider HLSL -> SPIR-V to be any different? There’s reasons why you might make these distinctions, but my point is just that it’s more arbitrary than you might think.

Chobbes, (edited )

But it all happens at compile time. That’s the difference.

No, when you have a library like SDL you will have functions that wrap lower level libraries for interacting with the screen and devices. At SDL’s compile time you may have preprocessor macros or whatever which select the implementation of these functions based on the platform, but at run time you still have the extra overhead of these SDL function calls when using the library. The definitions won’t be inlined, and there will be extra overhead to provide a consistent higher level interface, as it won’t exactly match the lower level APIs. It doesn’t matter if it’s compiled, there’s still overhead.

C is just a language, it’s not native. Native means the binary that will execute on hardware is decided at compile time, in other words, it’s not jitted for the platform it’s running on.

Wine doesn’t really involve any jitting, though, it’s just an implementation of the Windows APIs in the Linux userspace… So, arguably it’s as native as anything else. The main place where JIT will occur is for shader compilation in DXVK, where the results will be cached, and there is still JIT going on on the “native windows” side anyway.

If you don’t consider C code compiled to native assembly to be native, then this is all moot, and pretty much nothing is native! I agree that C is just a language so it’s not necessarily compiled down to native assembly, but if you don’t consider it native code when it is… Then what does it mean to be native?

the binary that will execute on hardware is decided at compile time

This is true for interpreted languages. The interpreter is a fixed binary that executes on hardware, and you can even bake in the program being interpreted into an executable! You could argue that control flow is determined dynamically by data stored in memory, so maybe that’s what makes it “non-native”, but this is technically true for any natively compiled binary program too :). There’s a sense in which every program that manipulates data is really just an interpreter, so why consider one to be native and not the other? Even native assembly code isn’t really what’s running on the processor due to things like microcode, and arguably speculative execution is a fancy kind of JIT that happens in hardware which essentially dynamically performs optimizations like loop unrolling… It’s more of a grey area than you might think, and nailing down a precise mathematical definition of “native code” is tricky!

I assume you’re not talking about a compiler that generates C code here, right? If it’s outputting C, then no, it’s not native code yet.

But it will be native code :). Pretty much all compilers go through several translation steps between intermediate languages, and it’s not uncommon for compilers to use C as an intermediate language, Vala does this for instance, and even compilers for languages like Haskell have done this in the past. C is a less common target these days, as many compiler front ends will spit out LLVM instead, but it’s still around. Plus, there’s often more restricted C-like languages in the middle. Haskell’s GHC still uses Cmm which is a C-like language for compilation, for example.

Well first off, games don’t ship with their HLSL (unlike OGL where older games DID have to ship with GLSL), they ship with DXBC/DXIL, which is the DX analog to spir-v (or, more accurately, vice versa).

Sure, and arguably it’s a little different to ship a lower level representation, but there will still be a compilation step for this, so you’re arguably not really introducing a new compilation step anyway, just a different one for a different backend. If you consider a binary that you get from a C compiler to be native code, why shouldn’t we consider this to be native code :)? It might not be as optimized as it could have been otherwise, but there’s plenty of native programs where that’s the case anyway, so why consider this to be any different?

Ultimately the native vs. non-native distinction doesn’t really matter, and arguably this distinction doesn’t even really exist — it’s not really easy to settle on a formal definition for this distinction that’s satisfying. The only thing that matters is performance, and people often use these things such as “it’s a compiled language” and “it has to go through fewer translation layers / layers of indirection” as a rule of thumb to guess whether something is less efficient than it could be, but it doesn’t always hold up and it doesn’t always matter. Arguably this is a case where it doesn’t really matter. There’s some overhead with wine and DXVK, but it clearly performs really well (and supposedly better in some cases), and it’s hard to truly compare because the platforms are so different in the first place, so maybe it’s all close enough anyway :).

Also to be clear, it’s not that I don’t see your points, and in a sense you’re correct! But I don’t believe these distinctions are as mathematically precise as you do, which is my main point :). Anyway, I hope you have a happy holidays!

Chobbes,

God kurzgesagt really bothers me for their “technology will save us” ideology. I get bad vibes.

Chobbes,

Yeah, it’s really egregious. I don’t really like their videos because they all feel kind of biased like that… and just a lot of editorializing. To be clear, I’m not above technology getting us out of a jam, but I really don’t think we should expect it… We should really plan with what we know is possible.

Chobbes,

It definitely wasn’t as good of a situation as it is now, but 10 years ago was actually pretty good for Linux gaming too. At that point Valve was already starting to support Linux and there were a bunch of native Linux releases for games at that time, including lots of indie titles in Humble Bundles and even a good chunk of AAA titles were getting Linux releases (e.g., Bioshock Infinite). If you had specific windows games you wanted to play you could very well have been out of luck, but there was actually a really solid number of native Linux ports at the time. I was personally pretty happy with it and just completely blew away my windows partition at that point. Of course you didn’t have access to the full catalog so to speak, but honestly you probably had access to more titles than on many consoles at the time, which arguably made it a viable gaming platform at the time (I made do with it!) Naturally, like any platform, you may or may not be okay with the selection of games available so it really depends on the person, but I was a pretty happy camper.

Chobbes,

It depends what you’re comparing against, but I had plenty of games on Linux when steam released their Linux client. 10 years ago was the start of a huuuge shift. It died down a little bit after a few years (I think a lot of developers stopped caring when steam machines petered out and developers started to decide the Linux releases weren’t worth it), but then after a little while Proton started kicking off and the rest is history. Obviously you didn’t have nearly the selection of windows, but there was still selection.

Chobbes,

On the flip side, this is one of the reasons open source projects can be really great. When a community of people can contribute to something to make it better over time and when people can fix their own problems with an app you can get something really great that can get updates sustainably without a subscription model… Everybody just kind of contributes what they can to get what they want. Of course, maintaining an open source project is work and has its own problems and volunteer contributions aren’t necessarily sustainable either and aren’t great for large chunks of work… But there is something nice about the model of “everybody contributes to this thing a little to make something better than we’d be able to make on our own,” even if that’s a bit idealistic in practice, haha.

Chobbes,

I’ve seen some companies make a valiant effort to make their AWS bill their largest expense, but you’re right.

Chobbes,

Yeah. You’ll probably have access to a calculator these days, but that doesn’t mean it’s not worth knowing some basic arithmetic. Playing around with arithmetic is a good way to gain an understanding of the fundamentals and have a better sense of what the operations mean and how they work, which helps even when you do have a calculator.

Chobbes,

I wouldn’t do it. Not worth the risk.

how similar are other North American countries to USA??

I mean the other 2 countries, Canada and Mexico, how similar are both of them to United States?? Both countries have a similar economy and democracy etc, and I think those two countries share things like supermarkets, stores, etc. I suppose the cultural differences are not a lot, that is very nice.

Chobbes,

We’re just not well travelled enough to know :(.

Chobbes,

Eh I don’t know. I’m from Canada and I live in the USA right now. Most places in Canada that I’ve experienced are completely car dependent, and there’s only a few cities with big transit systems? Where I live now has incredible transit compared to where I was in Canada and people here complain far more about transit than they did in Canada (probably in part because people actually use it). The cities that I’ve lived in definitely give a bit of a biased perspective, though.

It’s hard to say which is really more car dependent. There are more larger cities in the US and more with decent transit infrastructure compared to Canada, but maybe per capita or per city Canada would win because there’s a lot of Midwest and the US has a higher population? If I was picking a place to live and transit was the only consideration, though, I would probably pick the USA over Canada because there’s more cities to choose from and more rail.

Chobbes,

I mean it really depends on what you’re measuring to compare car dependence. Is it number of people who have to drive every day? Number of cities where most of the population has to drive every day? Are you comparing transit infrastructure on equivalently sized cities (and then is the size by population, or do you compare cities of the same density…). If you’re looking at how many people across the country need a car, NYC is very relevant. Realistically this is something that mostly makes sense to compare by city rather than by country (obviously the country has influence over transit, but that’s not really the point).

Chobbes,

If you’re active outside it’s surprisingly hard to be cold to be honest. Beyond that the most important thing is having a wind proof layer on the outside, and probably some decent gloves.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • localhost
  • All magazines
  • Loading…
    Loading the web debug toolbar…
    Attempt #