• 2 Posts
  • 35 Comments
Joined 1 year 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.


  • It’s also worth saying that with cars vs transit the incentives flip. With cars I don’t want to make things too far away, but like in my previous comment I have to space things out some, and cars are good at going distances, so it’s not too bad for business to sprawl. Also, because I need parking for everyone, density of my building (like a multi-story building) requires an even greater density of parking. But parking garages are expensive, so it’s easier for me to build a bunch of single story buildings with big surface parking lots.

    On the other hand, with transit and pedestrians distances are much more significant. The goal now is to try and get as many things as possible to where the people already are. In this mode, building up is much more sensible because the more housing or offices or businesses you can put on this plot, the less people will have to walk to get there and the closer they are to prominent transit stops, etc. And if I don’t need parking, then I’m incentivized to put another building right next to this one to try and hit those same people without them taking more than 20 steps.


  • There’s a sense in which cars by their nature produce sprawl. Cars are larger than people, so if I want a building to contain N number of people, I need an empty space nearby that contains 3N of just emptiness waiting for a car, so our buildings can’t be too close together. There needs to be that buffer space between them for their cars.

    Then people have to get to the parking lots, so we need roads. But if I want N people to be able to get here, I need more than that space between our parking lots for enough cars to be able to reach me. Not to mention left turning lanes and big intersections, and of course long stretches to get past the long parking lots.

    So if we don’t have space for that in a city, we either have to knock down a bunch of buildings to make room for these things, it we have to expand outwards into the larger empty space outside the city. Which naturally leads to sprawl.

    It’s amazing to actually do a satellite view of an area, take a screenshot, and then colour in the parts that are actually a building or shop or home, and then colour all the other parts that are road, driveway, parking lot, intersection. It’s this foam which sprawls.




  • 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 don’t know about this particular title, but I feel like Kickstarter games get a bit of a bad rap for taking a long time or not making it to release. But that’s because the whole point of a Kickstarter game is that we, the public, are acting as the publisher. Putting up money in advance, making an investment, hoping for a great game.

    And just like with traditional publishers, sometimes games take years and years to make, and some of your investments crumble and don’t make it.

    It’s just that we the public rarely hear about a traditionally published game until it’s already been in development for a while. Until it seems likely to succeed. We’re not used to taking pitches while a game studio figures their shit out. And even then, some traditionally published games crash and burn too!

    And that’s all ignoring the fact that a bunch of crowdfunded games are typically by greener devs who maybe don’t know how things are done. But what I’m saying is that even the normal game industry has long lead times and has some burn outs, it’s just that normally an entire community hasn’t built up around them, because they haven’t even been announced yet.

    I guess is what I’m saying is that publishing is hard and risky, and crowdfunding is collective publishing, not advanced purchasing. That doesn’t immediately mean that anyone who tries and fails is a scam artist. Most of them probably spent that money trying their best for as long as they could, and nothing great came out the other side. That’s just what business ventures look like, unfortunately.


  • Yeah, I think the image for concrete plates in the app is from the wiki, and is kinda unclear because it’s some rectangles of concrete. And I’m looking down and what I’m seeing is a series of rectangles made of concrete. I agree, though, with that in mind I feel like the app could benefit from some guidance there to say “concrete, perhaps with joints, such as for sidewalks” or “concrete plates, precast elsewhere and installed. Rarely used” or something. Just a bit of a nudge in the right direction.


  • Yeah, my original interpretation of lit matched that. I have seen bus shelters with lights in my life, and this isn’t one of those.

    But the wiki makes it sound a bit more vague, even saying a footway lit by the glow of a nearby billboard is lit. But at that seems a bit… useless to me? Since basically anything within a city that isn’t a forest will be lit by some kind of glow.

    So that’s what made me wonder if this tag really is effectively meant to indicate full darkness, essentially?




  • Yeah basically! There’s a reason most romantic comedies end with them starting to date. It’s because that’s the zany exciting bit. After that part, the next 40 years or whatever is a roommate who lives in your home with you, and you do taxes together, and you eat dinner together, and you go to your shared friend’s homes to hang out, and maybe you teach weird little gremlins how to be humans, and you talk after work about how your day went, and what you’re planning to do in the future.

    And that stuff can be great! But looking like a model doesn’t make that stuff much better. Even people who live with models probably “get over it” pretty quick. You can’t be in awe 18 hours a day every day for 15 years. But, having a shared foundation of experiences and mutual respect does make those things easier. Liking each other’s friends does too.

    You can learn to love someone, and you can learn to find an attractive person unattractive through interaction.


  • Can’t tell if trolling, quipping, or honestly asking…

    I feel like some people who don’t want friends are often people with low self esteem who have decided their hypothetical future friends will abandon them, or not like them, or whatever, and so they convince themselves that they “don’t want that anyway” as a way of protecting themselves from future pain or embarrassment. In those cases, dating aside, the person should work on their self esteem.

    If it’s not that, one could try casual hookup apps. These rely on a certain amount of work, and there’s no guarantee, especially if one lives in a less populated area, but it’s possible.

    And the third option for someone who doesn’t want anything social and just wants sex, is sex work. This is exactly what it can be for! The only trouble is that in most places it’s illegal, which pushes it underground, making it both difficult to find and potentially dangerous… but this is the niche it’s meant to occupy.

    But honestly… at least consider that it may be the first case, and see if you can search your feelings to figure out “why”.


  • One thing you could try, if you haven’t, is dating someone you connect with, and have a fun time with, even without “romantic spark”. Attraction can be important in a relationship, but in a long term relationship spark often doesn’t last anyway, and it’s other things that actually keep people together. Getting along well, working well together, handling stress in complementary ways, etc, are all more valuable long term.

    So just as an experiment you could try dating someone for something “long”, but not actually that long in the grand scheme of things. Maybe 3 months, roughly one season. Even if you’re not physically attracted to them, try dating them anyway. If it doesn’t work, you haven’t actually lost anything. Just a bit of time. And you will have officially “had a girlfriend”, and gained some amount of relationship experience, even if it wasn’t the best.

    And if it just so happens that you’re just not an “early term” guy, buf you’re actually a pretty good “mid-term” guy, then that’s great! Keep going! You haven’t got a lot to lose, in a sense, so you’re available for experimentation.


  • I’m not 100% sure it’s being used correctly here, but entrapment in general is when a police officer convinces or coerces a person into committing a crime, and then arresting them for that crime. So, if a police office is standing somewhere and you walk up to them and ask to buy drugs, they can arrest you for that. But if they are like “hey man, want to buy some drugs? Come on, it’s only $10. You know what, for you, first time is free. Just take them”, and then you take them, that is entrapment.

    The reason entrapment is problematic is because it’s hard to tell if you would have committed a crime, had the officer not pushed you into it. Maybe you were just feeling pressured and wanted the uncomfortable situation to go away, etc.

    As for not exposing entrapped people, there is this moral dilemma in general that often gets dramaticized in cop shows and movies, which is that the person we know is guilty gets away on a technicality or procedural issue. And at first blush that looks like a flaw. But actually it’s more like the lesser evil of a bad situation. Because what we don’t want is police using powers that erode the freedoms of the innocent people, like breaking into people’s homes and going through their stuff, or wire tapping, or torture, or whatever. Things we don’t want police to do to innocent people.

    If doing these things were “frowned upon”, but we still used the information we gained from it anyway, then it would be a viable police strategy. It’s a cost of doing business, but it gets the job done. Even if a single officer got fired for it, they could choose to matryr themselves to do the bad thing and get the guy. But we don’t want cops doing these things, because anything they do against a person they think might be guilty is something they could be doing to a person that’s actually innocent. So we kinda have to make the rule be that any information, no matter how good, that was gotten in a bad way becomes bad information that we all agree never to use. Because that’s the only way to make sure the police don’t want to do the bad things.

    It may let some guilty people go free, when the police screw up, but in theory it protects all of us against an escalating police state.



  • Groceries, in particular, are more of an effect than a cause. Lots of people live without cars in New York City, or London, or Paris, or Toronto, or Tokyo, and they manage to eat. The reason you need to buy 7 days worth of food for two people all at once is because you live in a field far away from everything. “Getting Groceries” becomes a special trip, because, while driving, leaving the highway, stopping and parking are inconvenient.

    As a pedestrian in a city, I was going to walk past 5 food stores on my way between work and home anyway, and it’s really not problem to walk in and buy only what I ran out of yesterday, or some special item I wanted for tonight’s dinner. It’s simple to shop for 5 or 10 minutes, five times a week, rather than one hour once a week, and never need more than a single bag of groceries at a time. And rather than being inconvenient, it’s actually great because I’m only buying what I need right now, the things I’m going to use as soon as I get home, so it’s very simple.

    Allergies could be tricky, yeah. If you’re lucky the local shop, by nature of being smaller and more local, actually knows you and knows you need this stuff and stocks it because they know you’ll buy it from them. But that’s not a guarantee, for sure. That having been said, if the only people driving were people with corn allergies, the roads would be a much safer place!


  • 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!