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/)TE
Posts
0
Comments
811
Joined
2 yr. ago

  • Don't forget Intel's latest GPU launches either! For custom PCs, there are some really affordable and relatively powerful GPUs available now (for the price). Despite their performance otherwise, Intel is killing it in the GPU space now.

    For a lower spec build, you could definitely put together something with a 12100F (or other cheap CPU) and a battlemage GPU. Depending on where you get all the parts, you might be able to hit sub-$500 and get great 1080p performance, or for sure sub-$1k 1080p and likely 1440p performance.

    Handhelds also have a lot of good options available too. To save some cash, you can get low end Steam Deck and swap the hard drive yourself. Got myself the cheapest LCD variant and swapped the tiny drive in it with a 2TB drive off Amazon.

  • I'll be honest. I've written async code in Rust for years and I don't think I've used select at all. I tend to drop into manually implementing Future before that point. Either way, the issues related to that macro still exist, but the author seemed to call it out and link to an article about it (which doesn't seem disingenuous at all to me).

    As for cancellation, the fact that you can cancel tasks by default in Rust has come up far more for me than any issues with unintended cancellation (which I don't remember ever coming up, honestly). What I find myself wanting in other languages (especially JS) is the ability to both control when the task starts executing (for initialization logic or to prepare the task and pass it somewhere before it starts executing) and when it stops executing (early termination, for example with debouncing). I don't get that by default in other languages, or often even at all in JS (unless I pass an abort controller everywhere).

  • Everything you said makes sense, but just want to add to your note at the bottom: * can also be used for reborrowing (&*blah, &mut *blah, &***blah, etc). This is useful for getting a shared borrow (&T) or unique/exclusive borrow (&mut T) from another type of pointer (like Box, Arc, or even MutexGuard).

  • Another potential security issue is path traversal - can someone getting an uploaded paste pass in an ID that allows them to read files in other directories of the system, like ../cert.pem? Verifying that the ID is a valid UUID, if that's the route you go, should solve this.

    Anyway, it was a lot of fun reading your posts the past few days. Seeing the improvements between the iterations was really cool. Feel free to keep sharing your adventures!

  • This is true of so many ecosystems. In the past year, I think I've had to rewrite an ESLint config twice, transition a Prettier config to another format, update React in a project and a good half of the other dependencies through some breaking changes, etc.

    It's not really unique to Rust, and happens for projects that are well past v1 (in React's case, v19 - and they still haven't figured out suspense, not that I'd want to rush them).

    Still, I'd love for things to remain consistent over time. The breaking changes in this version of axum are pretty easy to update to though, and you might even be able to just regex replace these in all your files since it's just a matter of using braces now instead.

  • Cybertrucks have a lot of problems, but this seemed to be a clearly intentional explosion by somebody.

    That aside, can Tesla just unlock any of their vehicles remotely and access all the camera footage on it? That seems like a much bigger problem, especially since Mr. Musk is practically our next president.

  • We understand that this is a breaking change for basically all axum users

    Lol.

    I love the changes. Probably better to get this over with now than to wait until it's no longer feasible to make this kind of breaking change. The Option extractor change is also nice - makes for some much more ergonomic error conditions.

  • IMO the flaw with ladders isn't the winrate, but the reward structure. Reward structures always reward wins at the expense of losses, and players have more fun when they're being rewarded. In practice, people can have fun games they lose as well, but only if they find those games rewarding.

    Because reward structures are so heavily favored towards winning games, people optimize their playstyles around what will win the most games (and on MTGA, what will do so the fastest) rather than what will be the most fun for them.

    Unfortunately, win-oriented reward structures come with a financial incentive - you can give fewer rewards while also making a more competitive (and thus more invested) community around your game.

  • Making homelessless illegal will obviously result in fewer homeless people. They'll all pick themselves up by the bootstraps, walk into the nearest fast food restaurant, and ask the manager for a job. That's obviously how it works these days, clearly.

    What kind of person sees a law that makes it illegal to be poor and thinks it's going to solve some problem lol.

  • Well you can have a party full of literal fascists and people will still vote for them before considering a third party. If you have any hope of a third party taking any amount of control, I could use some of it. Sadly, third parties are mostly just spoilers for the opposition these days though.

  • What about the Nazis? What about the genocides in Rwanda, Soviet Russia, Cambodia...

    I saw evidence of Chinese persecution of political prisioners in Hungary, which is completely unacceptable and needs to be dealt with.

    Seems we both agree then that the Chinese extralegal, international persecution of political dissidents is unacceptable. The rest, guess we can continue to disagree.

  • The fact that you're necroing a week old post to spout nonsense without evidence shows just how confident you are in your argument.

    The number of prisoners in gitmo have been reported on plenty of times.

    Dozens in 30 countries... OK

    Do you live under a rock or something? Feels like every week there's a new investigation/arrest related to this.

  • In other languages, these are usually called static methods. Rust just uses these instead of constructor methods. That way you never have to work with a partially initialized value - you just create the value in your new function once you've initialized all its fields.