Skip Navigation

InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)NI
Posts
0
Comments
1,407
Joined
2 yr. ago

  • Didn't knew this was not normal. Although I've screwed with mine by moving. Some stuff tastes slightly different from what I expect, and those small differences accumulate. But I suppose I'll eventually get used to the ingredients here and it will come back.

  • I was going to say VR, I almost never get motion sickness, never got motion sickness from reading on vehicles nor roller coasters. But the first time I put on a VR headset to play roller coaster simulator I almost threw up. Nowadays I can play Sairento doing backflips and wall running comfortably, but that first roller coaster simulation took me by surprise.

  • So I've heard, and AFAIK Rust has a lot of other similarities. That being said last time I tried to look at Haskell I gave up very quickly, It seems like a great language for mathematicians who want to code, but it's a very different paradigm from what I'm used to, so I would need some time to dedicate to actually learning it properly. Plus, if the person I'm replying to thinks Rust is confusing he probably puts Haskell, Lisp and Brainfuck in the same category.

  • Yes, you can have a OnceLock<RWLock<T>> which is something that will get initialized at some point, and then you can acquire a lock on it for either read or write. To use it you need to check and handle both conditions, so it's really secure.

    However if you're writing a single threaded application a global let mut should also be safe, but Rust doesn't know if your application is single-threaded, or even if it is, it might get imported by others that isn't. So you're forced to consider the safety of things that might not even be related to what you're doing. Which was my point, if you're writing a simple CLI single threaded app, the compiler blocking you from having a global variable seems pedantic and unnecessary, because it's forcing you to deal with the edge case of your app becoming multi-threaded in the future.

    Don't get me wrong, this is part of what makes Rust great, but it can be EXTREMELY pedantic.

  • You might want to take a look at C/C++ again at some point, you didn't mentioned a single thing that I expected, I expected you to complain about memory allocation, double frees or stuff like that, instead you touched on lots of very accurate pain points for C/C++ that people who use it for years feel.

    • Preprocessor directives: I assume you mean macros like #ifdef _WIN32, macros will change the code before it gets compiled, so they allow you to write meta-code, as in code that writes code. Rust takes this to a whole new level, so you might want to understand the basic concept before looking into advanced Rust. That being said, I don't think these are complicated in and of themselves, nor do I think you're having problem with understanding what they mean, and it's more likely a question of why, and the answer is that some stuff should happen at compile time, e.g. checking if you're on Windows or Linux do define how you deal with paths or something. But the same can be extended to knowing if a given feature is enabled so you can compile only parts of the program. The lack of package manager is a pain, but C/C++ predate lots of those concepts, and there have been lots of attempts. Also if you're using Linux your system already has a package manager so using some common standard like CMake for your projects makes it all "just work" (most of the time)... But yeah, this one is a pain, no question about it, and Rust solved it properly.
    • Essentially the compiler couldn't find something, they shouldn't appear randomly and that's perhaps a VS bug, never used VS for C/C++ development so I'm not sure on that one, but whenever I had link errors I was forgetting an include or a library on my CMake.
    • What do you mean by errors? Compiler errors? You learn to read them with time, but yeah, Rust compiler errors are much nicer, although they can lead you into a rabbit hole by suggesting changes you shouldn't use.
    • I do know that, it's not intuitive if you're thinking on a higher level, but if you think on low level stuff it makes absolute sense. I can't think of why this would have caused you trouble needing debugging though, you could be occupying more memory than necessary, or you could be running into problems with unions, but I can't think of why the order of a struct would make anything crash unless you're naively converting between types by casting a pointer, which is a red flag on its own.
    • Well, C doesn't need strings, what is a string? It's just an array of characters. C tries to not impose anything on top of the very basics, so it makes sense it doesn't have a string type, appending to a string or to an array of numbers is essentially the same, you just deal with strings more commonly. And this forces you to think on what you're doing, e.g. my_str += "something" sounds like a very simple thing, but under the hood you're allocating an entire new string, copying the content from my_str into it, appending something and then deleting the old one. C forces you to do that stuff manually so you have to be conscious of what you're doing, string operations are not cheap, and you can gain a lot of performance by simply preallocating all you'll need from the start. Rust is similar here, while they do have a String type, they make a very big difference between it and a slice of a string, so that makes you conscious of when you're doing heap stuff.

    I spent years with C/C++ as my main language, and I can tell you that I would also not choose it for a random project. However I would also most likely not pick Rust either. Python is my go-to for "I need something quick". Rust would be my go-to for "I need something robust", or "I want to make sure this will work as intended", it will mean a more tedious development cycle with a very slow iteration (much slower than C/C++, e.g. adding an enum value can mean lots of fixes on Rust, because most places where you're dealing with that enum would fail to compile because you're not taking the new value into consideration), but it will mean that every step will be solid (if it compiles after adding an enum value, I'm sure it's being considered).

    Do learn Rust, it's fun and personally I see a LOT of future in that language, but it also abstracts some of the concepts away while still requiring you to know them, e.g. heap/stack. I think learning C/C++ for the core concepts is better, but if you know those concepts Rust is a better language overall.

  • Yeah, that's a good approach, learn it and it's one more tool under the belt.

    That being said, I think you need to have some good level of proficient in C/C++ before lots of the Rust things make sense. I'm not sure what frustrated you about C/C++, and if you'd like to ask questions about that I'm happy to try to answer them. But a lot of concepts are the same just shown under a different light. For example, on C/C++ you chose to use stack or heap by declaring variables or allocating memory and storing it in pointers, in Rust you don't allocate memory directly, instead you use types that store information on Heap, e.g. Box. I think that's a lot less intuitive, and requires you to have a good grasp of heap/stack before it makes sense, but it prevents you from doing stupid stuff you might do accidentally on C/C++ like store a pointer to a stack object after it goes out of scope.

    But I might be wrong, it might be that for me all of that made sense because I knew C/C++ but that to you it will make sense regardless, and might even teach you those concepts that are useful on C/C++ too.

  • While I agree with you that OP shouldn't migrate to Rust, the language is not illogical nor a mix of any of those. There's a lot of stuff that Rust does extremely well that can't be reproduced in any of the other languages, such as Options or Result types. And while it can become confusing when lifetimes get thrown at it as a general rule it's not. Also the compiler messages are so thorough, I don't think I have ever seen anything come close to it.

    Rust is not for everything, nor for everyone, but saying it doesn't have it's merits is dishonest.

  • Let me start by saying I love Rust and think it's great. I've been writing some personal stuff in Rust and it's all that I've been looking for.

    However there is some stuff you said that makes me think Rust won't be something you would fully appreciate Rust. Firstly every project, regardless of language, when it becomes big it becomes a hassle to maintain, especially if you're not experienced enough to have set up a good architecture from the start.

    But more importantly, a lot of Rust benefits are stuff you didn't mention, and some of the stuff you mentioned is not that important.

    • Speed: Performance gains will be minimal, most of the time your server takes on an API call is read/write disk/Network, and that takes as long as it takes regardless of language. Sure synthetic benchmark will tell you it's twice the speed for a hello world, but the moment you start relying on outside stuff the line gets murky.
    • Less resources: Again, unless you have at least 10 instances of your service or are trying to get it to run in very minimal hardware conditions, you're not likely to see any meaningful improvement. Sure your service now uses half the amount of RAM, but the hardware where you're running it likely has a couple orders of magnitude more RAM than that anyways.
    • Garbage collection: You say that like it's a bad word, but at the same time admit to have problems with C/C++, whose main differences are related to that.
    • Compilation: I don't think you're taking compilation into consideration, from line change to retest we're talking a couple of minutes depending on the change. That can be annoying really fast, especially if you don't understand the reason. Also, the Rust compiler is EXTREMELY pedantic, it will not let you compile stuff that you think should work because there's an edge case that you've forgotten to consider because it's not something you cared about, e.g. you can't have global mutable variables because that can cause race conditions on multi-threading applications.
    • Security: you didn't mention this but it's one of the largest advantages of Rust, things like the Option or Result types as well as the match statements and the borrow checker are amazing and unmatched by anything else out there.
    • The Rust price: Rust is not free, you just pay beforehand, you win execution time at the expense of compiling time, you save on runtime errors at the expense of pedantic code checks, etc, etc. Rust is excellent if you understand why, and are willing to pay that price. Rust is for people who when the compiler says "you can't do this because it will cause problems with X edge case" say "of course! Thanks!", if you think "ugh, that's never gonna happen, stupid compiler" then it's not for you. To add to that, Rust can become quite complicated because of it.
    • A different way of structuring: Rust does not have classes or any OOP paradigms, it's different from other stuff you've used and requires changes in how you structure your hada and application. Whether that's for the best or not is very personal, but it's definitely different.

    Finally I would like to finish up saying that Rust has the most excellent documentation: https://doc.rust-lang.org/book/ read that, then maybe do these https://github.com/rust-lang/rustlings if you get to the error types and are not drooling over the language, it might not be for you.

  • While I sort of understand your point our society already contradicts that. If a person were to die under suspicious circumstances, an autopsy would be performed regardless of the dead or any relative's wishes, and that would violate the integrity of the body as much as an organ donation would. Therefore we as a society understand that there are limits to one's personal beliefs.

    I also disagree with the person you're replying to, I think the system should be opt out with the following conditions:

    • You must opt out yearly, on the 366th day since you last opted out you become an organ donor again
    • You must not have opted out of it over the past 5 years before you're allowed to undergo any surgery that would jeopardize the integrity of your body, including organ transplants but also blood transfusions and potentially also any foreign object such as pins or bone grafts.
    • You cannot opt out if you have ever received an organ.
    • Your body cannot be autopsied, embalmed or cremated, as all of those would also violate the body. This includes police investigations.
    • Any family of anyone senile/old/incapacitated enough not to be able to keep renewing it (or the person himself if possible in a moment of lucidity) can be added into the permanent no donation list.
  • 1080p on such a small screen is pointless, but if you're into that by the price of one Nintendo game you can upgrade your steam deck screen https://www.deckhd.com/

    120Hz is not that different from the decks 90Hz screen, although if you chose to do the upgrade above that downgrades you to 60.

    Mouse mode, not sure what that is, but the deck has the best of it's kind mouse emulation so I think it will be hard for the switch to compete.

    Plus I get to keep my games, and whenever the SD2 comes out I'll get to keep my games and not have to buy them again.

  • IIRC the price was announced first, and it's the same in other countries so I don't think that's the reason. Which means that lets asume they will use Japan's tariffs of 24% on them their base price goes from 80 to 99.2, plus in the USA prices are usually pre-tax so you also add tax on top of that, this varies from state to state, but a quick Google puts it at around 5%, so you will actually be paying $104.16 for them, and $117.18 for physical copies, or $126.63 if they're manufactured in China and you get that tariff instead. This is just one example of what these isolationist policies will cause, be prepared to have that happen to everything.

  • Ah, didn't knew that french also did the gn as ni, that makes a bit more sense, I found it weird that a French person was using an Italian phonem when writing English and was wondering if maybe there was a place with a similar name but google didn't seemed to think so.

  • I've worked with GUIs on python for a couple of years, we used PyQt, which is a python wrapper for Qt which is a C++ library for GUIs. It's fairly straightforward and easy to get something up on the screen in no time.

    However from parts of your comment it seems you want to implement your own graphics library, and that is a lot harder to do.

    Also you mentioned legacy hardware, not sure how legacy it would be. Python should run on most things people would call legacy nowadays, but there's definitely an overhead that could be felt if you're trying to run this on an embebed system or a REALLY old (as in 90s/00s era) computer.

    You also mentioned mobile, I don't think PyQt can be compiled to mobile easily, nor do I think you should even if you manage to (been there, done that, not a happy time). Desktop and Mobile GUIs are very different, realistically if you want something that works well on both mobile and desktop with the same codebase the easiest approach is web UI.

  • I can beat anyone now because I'm not matched with or against people who are better than me, I don't learn anything.

    I call bullshit on that. If that were the case your skill would be considered higher and you would be matched against ever higher skilled players until you're not able to win that much. If you can beat anyone in a SBMM system, you would absolutely obliterate every single match in a non-SBMM. You might think you're bad at those games, but this is what's happening to you: https://xkcd.com/2501/ i.e. You think the average player is winning most matches, but the truth is that the average player wins around 50% of the mathes. If you win significantly more than 50% of the games you're placed in then you're among the top players and just aren't enough skilled people online to match up with you, which means that if you were to be put in a non-SBMM lobby you would be MVP 99.999% of times and win the match solo. Think about it this way, imagine there are 1000 people searching for matches in your area, and for ease let's also asume their number also represents their skill level compared to the other, i.e. 1 is a total noob, 1000 is a pro, in this scenario on a SBMM you're likely in the top 995 so you get paired with the top 10 and according to you you still win that match, on a non-SBMM your average enemy would be 400 skill levels below your current enemies.

    I want to jump into a game and have fun, I want to lose some, I want to win some, I want to try in some, I want to goof around in others.

    I'm sorry, but that will never happen, you're just too good at the game, you win most matches when paired against people of your relative skills, which means there aren't people with your skill around, pairing you with random people will just result in even more frustrating matches for you. You're like a martial artist who goes on dojos fighting the black belts and winning and think that it would be more fun if you were allowed to fight a random belt color.

    I can't join a lobby of people, lose to them and then try to beat them in the next game, because they reset the lobby after every match.

    According to a quick Google search that has nothing to do with SBMM but it's because different maps and different modes have different number of players. Not to mention that just thinking about it real quick I realized that probably lots of people just play a match and leave, so your lobby would get smaller and smaller unless you allowed it to be refilled after every round. Not that any of this matters, because that scenario won't happen to you, because you don't lose matches, remember?

    Cod is also a lot less social because of this, you can't make friends or enemies across matches anymore.

    That's a bummer, but seems related to the topic of lobby reset, not SBMM.

    These big multiplayer games have dropped fun, instead they want people to win win win so they keep playing and buy skins. That's why people don't improve anymore, there's no challenge, every game is the same thing, same strategy required.

    Have you considered that maybe you're so good at these games that YOU keep winning but that the same is not true for 90% of people? These are multiplayer games, it's literally impossible for everyone to win all the time, it's a zero sum game, for someone to win, someone has to lose, and if you're winning more than 50% of the time it means you're an above average player.

    I played some mainstream games recently and they put you against bots and stuff for like 10 of your first games

    That sounds ridiculous, but with the amount of people playing CoD I don't think they need bots. At least for me every time I play I get matched against people, but realistically I don't play that much.

    If they want "fair" games against players, they can play ranked. Just give us our casual lobbies back.

    You are looking for a mystical fun of being able to play against people more skilled than you, that won't happen, because casual players are in general terms much worse than you, you're like a pro NBA basketball player wanting to go back to play in the yard against kids, you have good memories of that time, but your skill level would make those matches extremely boring for you and unfair for others.

  • That base set is what's the problem, I don't think places sell that, they might either sell you an assembled keyboard, or the PCB and connectors for you to solder and add your controller, switches, key caps, etc.

    Honestly look for something preassembled in the form factor you want with hot swappable switches. For example my old keyboard was a RedDragon k530 with brown switches is an excellent 60% model that you can get with your preferred switches and if you want to change them in the future (I for example changed mine for some silent ones, plus added some padding and o-rings to make it extra quiet).

    If you want split ortholineal keyboards the Moonlander is a great choice, although I never got one because they're too expensive and shipping is not great to Europe. Personally I quite enjoyed soldering my own crkbd kit, but I know it's not for everyone.

  • First of all SBMM has been going in for WAY longer than that, at least going back to 2007 on CoD according to google. If it wasn't a problem before, it shouldn't be now, it's just that now you're aware so you're salty about it. And may I ask, what's the problem with it? You don't like playing with people you might lose to? What's the reasoning behind not liking it?

    Also you're assuming a uniform distribution of skill level, which doesn't make sense, i.e. for every person who's playing CoD for the first time there are multiple people with at least some experience, and the more experienced the more the person plays so the more likely they'll be put in a match. This means that for people in the bottom, probably closer to bottom 10% they're likely to be the only bottom player in the whole match, so the game for them would be spawn, die, wait over and over, which will be frustrating and so they'll quit, and now the same will happen to the next bottom 10%, so on and so forth until no one else is left playing.

    Random matchmaking is not a thing, it hasn't been a thing for a LONG time, any match that you found online and had fun had SBMM. Small games can get away with it because the distribution is more even, but in huge titles with millions of people it's not feasible. You know why this began to annoy you 6 years ago? Because 6 years ago you became good enough to jump from the bottom to the midrange level, and now you're matched with people you can't so easily beat all of the time.

    I do think games should allow you to do fully random matchmaking, although I have a strong suspicion it would be lots of work to set up for a feature that almost no one will use, because you think you want that, but if you got it you will always be the worst player in the match, and if you aren't people who're worse than you will eventually get frustrated and quit until you're the bottom player and get frustrated and leave.