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

help-circle

  • If you’re reluctant because you’re expecting it to be a huge pain at first while you do setup and get used to it, I found it actually easier to get things set up on Linux the way I liked them than it does on a new windows install, or sometimes even after a windows update that resets some settings to default (without saying anything other than “your system is up to date” of course). It helped that most defaults are decent. The most time taken during the install was looking up what some choices meant in higher detail.

    Though I do have an AMD GPU, if you have an nvidia GPU, you’ll only get that easy experience on certain distros specifically set up for that, as I understand. Other distros can work with nvidia but require more tinkering as I understand. But for me, I didn’t even have to install GPU drivers. The first game I launched was more of a “wait, will this really just work without needing to install anything else?” than a “ok, time to play a game”. And it did work, at least after checking the “always use proton” option in Steam.

    And don’t worry too much about which desktop you initially select. It’s almost trivial to install and switch to another. Just be aware that cinnamon relies heavily on some form of JavaScript, to the point that my high end PC couldn’t keep up with rapid mouse movement without dropping some of the updates, though tbf it wasn’t a huge impact. But KDE-plasma handles the mouse way better. That’s on Fedora.


  • For anyone wondering wtf Bun is, it’s a project championing JavaScript. It wants to replace node.js.

    On a tangent, I recently switched from a cinnamon desktop (which uses TypeScript or some form of js) to KDE-plasma because I noticed that cinnamon occasionally couldn’t keep up with rapid mouse movements (and my machine is high end). KDE-plasma handles it fine and even has a “find my mouse” feature that turns doing the “draw fast circles to see if the mouse drifts all over the screen because the handler can’t keep up with the updates” into a game of “how big can I make the cursor”.

    I wish the whole “let’s keep javascript as a thing” movement would just die out. Other languages aren’t hard to learn, why are so many people obsessed with sticking with js and shoehorning fixes for its massive flaws instead of just letting it die?


  • It’ll be you the next time you click allow for a steam hardware survey. Mine will be part of december’s for the first time since I switched, so I’m helping next month’s number increase.

    Though kinda funny how for a steam survey, I’m all for it, but any other attempt to get usage data gets a fuck no from me. I hope all future valve owners understand the value of that trust and don’t try to cash in on it like some MBA that who thinks thinking of the future means extrapolating the current quarter’s increase in earnings indefinitely into the future.


  • Yeah, I have a curiosity about how things work and it has allowed me to acquire a broad set of skills, including the skill of learning skills. Kinda lucky living in the internet age where so many things are much easier to learn than they would otherwise be.

    I think a part of it is that when I learn something, I want to really understand it. It makes me not so great as a teacher, because I end up going into way too much detail (because those are what helped me learn), but it gives a deeper understanding that allows me to improvise on what I can do.

    It also has shown me the value of people who understand how multiple specialties can fit together, especially when I go in only knowing one and can experience the shift from “why do they want this thing that way? What a silly requirement.” to “oh, ok, that makes sense, you need that to do another important thing I didn’t even realize was necessary”. And the best is when, now that I have some understanding of both sides, I can see a better solution that accomplishes both goals and makes everyone happy.

    Actually, it’s the best for a little bit, until it’s time to present the idea to multiple teams working together, because if it’s a change, a lot of people aren’t interested, they just see the work to implement the change and not all of the other work that becomes easier or unnecessary after that’s done, so it can be frustrating.



  • Was it multiple monitors or multiple systems? Can’t see if there’s another keyboard and mouse there in front of the one behind him. Though I suppose it was all supposed to be mainframe terminals (running Linux in the movie, which I’m not sure had a mainframe version, as I understand, it started as a Unix for desktops, where Unix was the mainframe OS).

    Edit: the Linux thing was my own bad memory, Lex recognizes Unix, which is weird because it was an experimental unix filesystem browser UI and most kids wouldn’t have access to machines that run any kind of unix, so it wouldn’t have been a “I played with some computers in my garage” kind of thing. Though being Hammond’s grandkids, it’s not outside the realm of possibility that she did have access to a mainframe either through Hammond’s companies or from access to universities and the like.



  • Oh yeah, the bit where SSDs move sectors around for wear evening is important. Because of that, it’s possible to completely fill up an SSD after deleting files and still have those files recoverable from the flash chips themselves. Without that secure erase, as I understand it, if a sector gets marked “bad”, whatever data is there might stay there forever (or at least as long as the cells hold a charge).

    So there’s no benefit to writing multiple passes over deleted data on SSDs as far as the flash is concerned, but multiple passes might make it more likely for the controler to actually direct those extra writes to a sector actually storing the data (though the odds might be low unless you’re overwriting all free space, though even that depends on how much space is free vs how many “spare” sectors there are, and even then it might be impossible to get it to write to a sector marked “bad”).





  • Yeah, who the hell associates macs with higher competence? Before the 00s, I associated mac users with stumbling on the worse option but not realizing it, after the 00s, wanting to follow trends and/or overpay for hardware to seem rich. They’ve always been form over function, and simplicity over power, which are things that novice uses look for, not more experienced ones.

    Or maybe more experienced ones when most of those experiences went badly and little was learned.



  • At one point I developed a habit of converting any recursive algorithm I was writing into a loop instead, since I knew function calls have overhead and all recursion really does is lets you use the calling stack and flow control as an invisible data structure.

    Then I got a question about parsing brackets properly during an interview and wrote a loop-based parser to solve it and the guy had to fish for a bit before I remembered recursion and realized that’s the answer he was looking for. My mind just wouldn’t consider using a whole calling stack when an integer would do the trick faster.



  • I did that with FF7. I knew I could go challenge sephiroth for the last fight but I also knew that there were still a ton of secrets like summons and materia, plus the harder mode if I maxed levels. But I didn’t get around to much of it and never beat the game.

    And FF2 (snes) I made it to the final boss once, died to him, saw how far back the last save was, decided I didn’t want to go through all that just to get back to the boss and instead returned the game to the friend I had borrowed it from, deciding I was close enough.

    Mario Bros 3, I could only ever beat the game if I used a cloud to skip that last fortress before the final level select screen. It was a maze level iirc and I just didn’t have the patience to figure out the correct path.




  • That assumes SetTimeout() is O(1), but I suspect it is O(log(n)), making the algorithm O(n*log(n)), just like any other sort.

    Did some looking into the specifics of SetTimeout() and while it uses a data structure with theoretical O(1) insertion, deletion, and execution (called a time wheel if you want to look it up), the actual complexity for deletion and execution is O(n/m) (if values get well distributed across the buckets, just O(n) if not) where m is the number of buckets used. For a lot of use cases you do get an effective O(1) for each step, but I don’t believe using it as a sorting engine would get the best case performance out of it. So in terms of just n (considering m is usually constant), it’ll be more like O(n²).

    And it’s actually a bit worse than that because the algorithm isn’t just O(n/m) on execution. It needs to check each element of one bucket every tick of whatever bucket resolution it is using. So it’s actually non-trivially dependent on the wait time of the longest value. It’s still a constant multiplier so the big O notation still says O(n) (just for the check on all ticks), but it might be one of the most misleading O(n)'s I’ve ever seen.

    Other timer implementations can do better for execute and delete, but then you lose that O(1) insertion and end up back at O(n*log(n)), but one that scales worse than tree sort because it is literally tree sort plus waiting for timeouts.

    Oh and now, reading your comment again after reading about SetTimeout(), I see I misunderstood when I first read it and thought you meant it was almost as fast as bucket sort, but see now you meant it basically is bucket sort because of that SetTimeout() implementation. Bucket sort best case is O(n), worst case is O(n²), so I guess I can still do decent analysis lol.