• 0 Posts
  • 464 Comments
Joined 2 years ago
cake
Cake day: June 25th, 2023

help-circle

  • It does kinda work with salt, and with sugar. Just because I’m used to salt doesn’t mean people don’t have a tendency to use too much salt.

    MSG is naturally occurring in a lot of things, including tomatoes, and so are sugars - and in the same vein, I don’t want to be dependent on adding more of it to enjoy the taste of food. Of course, it’s a bit late for me, the best time to be getting used to simpler flavors is as a kid, but I thankfully wasn’t getting that much extra MSG, so I can at least appreciate food without that additive.



  • I think you’re wrong about one thing - it’s not about compute cost, but about complexity of accounting for latency. You could check if the player can see the enemy they’re claiming to have shot, but you really need to check if they feasibly could’ve seen the enemy on their computer at the time they sent the packet, and with them also having outdated information about where the enemy was.

    The issue gets more complex the more complex the game logic is. Throw physics simulation into the mix and the server and clients can quickly diverge from small differences.

    Ultimately, compensating for lag is convoluted, can still cause visible desync for clients (see people complaining about seeing their shots connect in CS2 without doing damage), and opens up potential issues with fake lag.

    More casual games will often simply trust the client, since it’s better for somebody to, say, fly around on an object that’s not there for other players, than for a laggy player to be spazzing out and rubberbanding on their screen, unable to control their character.




  • Both java and go seem excessively complex at runtime for fundamental system utilities, featuring garbage collection. Rust, on the other hand, keeps the complexity in the compiler and source, keeping the runtime code simpler. And of course it’s doing that while trying to make it easier to manage memory and harder to make mistakes, without forcing extra runtime logic on you.




  • I think most of the work is in the fact that there often isn’t an “equivalent call”, and it can be quite a lot of code to make it work. One funny thing is the whole esync-fsync-ntsync issue, where synchronization is done differently on Linux and on windows, and translating it was a big performance hit, and difficult to do accurately. If I understood correctly, esync, fsync and ntsync were a series of kernel patches implementing additional synchronization code in the kernel, with ntsync actually replicating the windows style.





  • Framework let you swap everything

    I think there’s still a pretty big asterisk on that, because laptop parts are generally not built to be swappable… So I don’t think you can swap the CPU without the rest of the mainboard, and some parts like the CPU cooler are probably tied to the specific variant of mainboard and need to be swapped together if you want to switch CPUs.

    They do let you swap out parts that are reasonably swappable, so it’s pretty much a guarantee you’ll be able to upgrade storage and memory, and even where you can’t swap to different parts they make sure you can replace broken parts more granularly, so it still seems like a good deal.





  • Yeah, in history we’ve really been ignoring the experiences of the sunwalkers, but thankfully society is leaving those prejudices in the past now.

    It’s all arbitrary one way or another, but the meter was (seemingly) chosen for a specific purpose, creating a unit based on a good and verifiable frame of reference (though probably not as absolute as people thought back then), while also having 1 meter be a convenient and useful measure on a human scale.