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

help-circle
  • I get what you’re saying, but I think the issue with optional memory safety features is that it’s hard to be sure you’re using it in all the places and hard to maintain that when someone can add a new allocation in the future, etc. It’s certainly doable, and maybe some static analysis tools out there can prove it’s all okay.

    Whereas with Rust, it’s built from the ground up to prove exactly that, plus other things like no memory being shared between threads by accident etc. Rust makes it difficult and obvious to do the wrong thing, rather than that being the default.



  • On most modern distros (like Mint) you can do basically as much with Linux GUIs as you can do in Windows or Mac. So normal users don’t need the terminal. But if you want to do more, if you want the secret sauce, the terminal is there for you.

    But fear not! Basically all of us have some level of autism or ADHD, and the best of us tend to be the most extreme. If anything the terminal was written by autistic nerds for themselves! If you’ll be okay being a bit of a n00b for a bit, I think you’ll find there’s a lot of depth here to obsess over / hyper fixate / hyper focus on.

    There’s a reason people have been “fighting” for, like, 40 years over which terminal text editor is the superior one… The flames of war can run pretty deep, and there’s a lot of opinions.



  • I’m not the person you’re replying to, and I don’t have any videos, but I do love dumping explanation on people! So here’s some terms:

    File System: This is the way data is laid out in terms of actual bytes on the drive. It’s in charge of things like where to look to find the name of this file, or how to “last modified” date is stored, or how do I find out which files are in this folder. NTFS is a filesystem, whereas ext4 is probably the file system your linux machine is using. FAT is the older Windows one that’s still used on, like, SD Cards and stuff. That having been said File System is sometimes also used to refer to the particular data on a particular partition of a disk, like “the filesystem will allow” which really means the data on your NTFS partition. Filesystem is often abbreviated “fs”, and is in fact the “FS” of “NTFS”

    Mounting: In unix systems, such as Linux, file systems are “mounted” to a place in the folder hierarchy. Everything in unix lives somewhere under the “root” folder /, so mounting is basically saying “Okay, you want to see the files in this filesystem. Where should I put them?”, and if you say /home/user/stuff then the file “one.txt” at the root of your filesystem will now be visible at /home/user/stuff/one.txt", and if you mounted it at /mnt/things it would be /mnt/things/one.txt. The term mount is used like “attach” to mean “where do you want me to hang this new directory hierarchy on your existing one”.

    fstab: There are a few ways to mount things in modern linux. The classic is the mount command which looks something like mount /dev/sda1 /home/user/stuff which would take the device with the name /dev/sda1 and mounts it to the given path. Devices in linux usually live in /dev, and in this case are often given names like sda1 to represent the first hard drive (a), and the first partition of that drive (1). But, there are other ways! You can also click on the partition in your file browser and it will mount the disk for you, often auto-creating a mount path and cleaning it up when you’re done, so you don’t even have to think about it. Another way is fstab, which is a kind of config file that controls mounting devices. In here you can give default options for how you want drives to be mounted, and can even specify that you’d like some devices to be automatically mounted by the system on startup. This is actually an important part of how unix systems start, and how the root filesystem and other important ones get going. If you wanted your NTFS drive to always be available at a permanent location, you would edit this file to set that up. If this is something you wanted only periodically, then just clicking may be fine.

    Permissions: Virtually all unix filesystems store the permissions of files and directories as a “user” and “group” that owns the files, and then a set of whether or not the owner can “read” “write” and “execute” the file, whether other members of the group can, and then whether everyone else can. If two people were on the same computer, these would allow a person to be able to see their own documents, but not see the documents by other users. Or maybe they can see them but can’t make changes. And it also prevents random users of a system from changing important system configuration, when those config files are owned by the administrative user (called root by convention). Some config files will be read-only to normal users, and some contain secrets and so are permissioned so normal users can’t even see them. But! NFTS doesn’t follow these same conventions, so when mounting an NTFS drive on unix the driver has to produce a set of permissions that are unix-compatible, but it doesn’t have anything to work off on the disk. So the person above was saying by default it assumes the safest option is to make all files owned by the user root, and so if the permissions are the only the owner can write the files, and the owner is root, this will mean it’s effectively “read-only” to you. The terms uid and gid stand for “user ID” and “group ID”, which are the numbers that represent a user in the data. User names are basically a convenience that allows us to give a name to a uid, but it’s more efficient to store one number everywhere on disk for owner rather than a name.

    So putting it all together, what they’re suggesting is that you can use the /etc/fstab file, which has a very particular format, to specify default options when mounting your drive. These options include setting the uid option and gid option to your user’s uid and gid, so that when the filesystem is mounted, it will appear that all the files are owned by you, so you’ll have full permissions on them. They’ve assumed your uid and gid will be 1000 because that’s a common convention, but if you’re comfortable you can run the id command on the command line to output your actual uid and gid (you can ignore all the other groups your user is in for now)

    They also mentioned that when mounting you can specify if you want to mount the filesystem as “read-only” or “read-write”, etc. If you mount the whole filesystem read-only, then the write permissions stored on the individual files are ignored, basically. So if you were mounting with a command, or through fstab, you should make sure the rw option is present to clarify that you’re looking for “read write” permissions on your mount.

    That having been said, it’s possible none of that is relevant to you if you’re mounting the fs by just clicking in your file browser. One way to tell is if you right-click on some file you aren’t allowed to edit and look at the properties there should be a Permissions tab thing. And it will list the owner of the file and what access you have. If those permissions are already set to be owned by you, then this uid thing is already taken care of for you by the file browser. In that case it might be something more fundamental to the NTFS filesystem, like the locks other people are talking about.

    So those are some words and their meanings! Probably more than you wanted to know, but that’s okay. I liked typing it


  • I think I may have contracted some kind of brain worm, because the other day I needed to do some photo manipulation and couldn’t get krita to do what I wanted, but I went into gimp and just knocked it out. I’ve hated gimp for years, but I guess I’ve used it enough that I’ve figured out how it works… and now I don’t hate it anymore…

    I think I may need help.

    Oh, but I always use it in single window mode ever since that came out. The multiple windows floating panel thing drove me nuts!


  • I’m not sure I understand. I have an ergodox moonlander and while it’s true there is no dedicated button for Function keys, that’s what the layers are for. It’s kind of the point of a configurable customizable keyboard.

    So for me I have all my special symbols under my left hand while my right hand holds a special key. Takes some getting used to, but once I had practiced the special keys are actually closer than before because they’re all the normal keys. Similarly I have arrow keys under the keys labeled ‘hjkl’ when another key is held. My Function Keys are all accessible with special key and the number keys.

    It takes some tweaking and tuning to figure out the layouts you want, but the whole point of a keyboard like this is that you can tune it to be whatever you need it to be. Now, if you don’t like to tinker and just want something out of the box, I get that, but even the default config has function keys, I think. Maybe you just didn’t read about how it works?


  • I already responded somewhere else, but I have more response that doesn’t make sense in that context.

    First, about deepening conversation. I don’t know about this guy, so I’ll talk about myself. I have things I’m interested in, let’s call them “interests”, and I like to talk about them. And the only thing that stops me from talking about them constantly to everyone is the social understanding that they don’t want to hear about my interests.

    So all it takes to have me talk about stuff is enough questions to demonstrate you really want to know.

    “What do you like about blah blah blah?” will probably get a short answer because he’s used to people not really wanting to know more, so he’s giving the smallest answer that answers the question. But then, you ask a question about his answer. “Huh, how is that different than blah blah?”

    Now maybe longer answer, you listen and ask based on that, and if you can manage it you could also circle back to a previous answer to connect some dots. That’s now a discussion! Now, of course, you do have to listen. Unsure if that’s a skill of yours or not.

    As for the asking out, I think you should do it. But if you don’t trust yourself to deliver the speech live, you could write it down / print it out. Just make sure it contains escape hatches for him that assure him it’s okay if he doesn’t share your feelings, and that he can just tell you if that’s the case, and probably ends by saying he doesn’t need to necessarily give you an answer now and you’re just happy you could get it off your chest. I think going for something casual is better than something heartfelt and romantic, but I don’t know the two of you. The most important thing is that he knows, and the second most important thing is that you don’t want it to wreck things if feelings aren’t mutual.

    And if you don’t want to awkwardly read it, you could just hand it to him and let him read it at his own pace. This lets you watch his face while reading, if he makes facial expressions and if you can read them.

    I would recommend against an email or a text, though. It feels like, from the bits of your personality I’ve picked up here, the time between when you send it to whenever he responds is going to be absolute torture for you. Whereas he might just be busy and not have even seen it yet, you’ll already be inventing bad scenarios and deciding which new city you should move to since you obviously can’t stay here, etc, etc 😉

    So probably best to deliver it in person, maybe at the end of a hangout, so you can be sure he received it and read it. And I know you may be scared, but don’t tell him to read it after you’re gone, because that’s now email territory where you can’t ever know if he’s read it yet! Just have him read it, assure him it’s okay if he doesn’t agree, and let him respond. And even if he doesn’t have an answer now, you know it’s done.

    Good luck!


  • I’m a man, my wife made the first move, and I’m very glad she did! Taking the step from friend (or even just acquaintances) to more is risky for anyone. But, and maybe I’m biased here, I think it’s currently even more risky for guys. Word can get around, and you’re more likely to not just lose the one friendship, but to be labeled “creepy” generally if you’re wrong. Of course it’s possible for that to happen to a woman, but it’s way less likely for a woman to be perceived as a creep in general, and also men don’t talk amongst themselves the way women tend to.

    Anyway, I knew my wife from a social space, and I didn’t want to be the guy who poisoned the environment and made it an uncomfortable location for women by pursuing any of them. So I was friendly and tried to be as non threatening as possible, which meant no asking out. So I was very relieved when she made a move!

    Don’t know if your situation is anything like that, I’m just unsure of your source that says “active woman means short term”. I mean, think of all the dudes hitting on strangers in bars which either turns into a one night stand or a short fling. The averages have got to be better than that, right?


  • Some tips:

    • Unless the code is very small, or your feature is very big, try to put blinders on, and focus only on the code you absolutely need to to get your feature built. Use search tools to comb through the code to find the relevant methods while reading as little surrounding code as possible, tweak those methods to be different, and call that a first draft. If the maintainer wants the code refactored or differently arranged, they can help with that as part of the review process
    • Being unable to build sucks, it really does. But if the software is released for your platform, it means someone out there is able to build it. And these days that someone is often an automated build tool that runs per release. See if you can figure out how this tool works. What build steps it uses, what environment it runs in, etc. If you can’t figure that out, try contacting the person who releases the builds
    • If the software is in apt (if you’re on a Debian-based system), you can use apt build-dep, apt source, and debuild to try and recreate the native apt build process. These tools will give you the source that built the system package, and its dependencies, and allow you to build a deb yourself out of it. Test the build to make sure it’s working as-is. If it is, and if the software’s dependencies haven’t changed too much, you can even use apt to fetch the old version that’s in the repos, update the code to reflect the upstream release, and then test the build there to see if it still builds. If so, now you have something you can start working off.
    • If you aren’t on an apt system, but do have a package manager, I assume there’s an equivalent to the workflow mentioned above
    • If your change is subtle enough that you think it’s pretty low-risk, you could just edit the code even though you can’t build it. This might be sufficient for bug-fixes where you just need to check something is greater than zero, or features where you pass a true instead of a false in certain conditions or something. You should probably mention this in your PR / MR / Patch so the reviewer knows to test building it before merging.
    • This one is a bit wild, but let’s say you’re on a Mac or Windows machine, and the build instructions only work for Linux. You can just run a virtual machine that’s got Ubuntu or something running on it, and use it as your build environment. These days you can probably be in a simpler situation with Docker or something more lightweight, but as a worst-case scenario, a full virtual machine is there for you if you need it
    • And finally, if the tool isn’t a crazy popular or busy tool, it’s possible the maintainer or other people in the community are more approachable than you think. If they are looking for contributions, then getting a willing contributor’s build environment setup is a benefit to the project. Improving their build docs helps not just you, but potential future contributors as well. A project will usually be more helpful towards someone who says “I’m trying to build this feature, but I’m running into trouble” compared to someone saying “why doesn’t your tool do X”. You may need to be a bit patient, they’re probably doing this on volunteer hours, but they might be happy to help you get your stuff sorted out

    Good luck out there, and try not to be discouraged!


  • I agree with OP. If there’s a puzzle in a game that’s clearly some kind of water puzzle, but I can make a boat to solve it in 15 seconds and bypass the obvious intent of the puzzle, maybe I feel a bit clever. But if I can solve every puzzle with effectively the same boat… what’s the point of doing the puzzles? I guess because I wanted puzzles? But on the other hand, if I know I can solve every puzzle with a 15 second boat, it feels kinda weird to pretend I don’t have an answer and struggle through anyway. Like, the victory is hollow when I know I could have solved it faster the dumb way.

    The number of times in that game I thought “oh, maybe I have to jump up through the floor here to get through this door” and then I peeked through the floor and was like “oh, nope. It’s the damn final boss room again. Not supposed to be here yet, better go back through the floor and try another way to open this door” felt like I was babysitting the game so as to not entirely ruin the experience… and it kinda ruined the experience…



  • Huh. My siblings and I love the Trine games, and wanted to like Nine Parchments, but found it to be one of the worst games we’ve ever played. I don’t think we could find a single redeeming quality, and it just seemed like a total misstep.

    So seeing it here on this list makes me think maybe there’s something that was okay about it? I’m curious what people liked…

    (all the rest of these seem like good games, though, which honestly makes me even more confused about Nine Parchments’ inclusion…)