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/)E
Posts
5
Comments
1331
Joined
6 yr. ago

  • Oh yeah, I'm saying that relational databases push you even more to assign IDs to every miniscule piece of information, especially if you're following best practices (3NF or similar).

    For example, you're not supposed to say that a user has a list of interests, you're supposed to say that there's users with a user_id and then there's user_interests with a user_id and an interest_description, so two separate tables.If those interests can be indexed, then you'd want three tables:

    • users(user_id)
    • interests(interest_id, description)
    • user_interests(user_id, interest_id) (N-M-Mapping)

    I mean, this might not be the best example, as it kind of makes sense to not always load the user interests whenever you do anything with the user, but yeah, the point is that you're supposed to split it up into separate tables and then JOIN it as you need it.

    With these RDBMS, your entire data loading logic is supposed to happen in-database, so you pretty much need to chop the data into the smallest possible parts and assign IDs to all of those parts, to give you the flexibility to access them how you need to.

  • If they're saying "guest" I'd assume it's a virtual machine. But yeah, is it VirtualBox or KVM or something else?

  • My guess is that he was using cargo build rather than cargo build --release. Relatively common for folks to complain about due to that, because beginner tutorials tend to skip that info (which is fair IMHO).

  • Yeah, cargo build produces a debug build and cargo build --release is for actually distributing to users. (It doesn't add the debug symbols, but also spends more time optimizing.)

  • The support mechanism that went with it — this notion of crates and barrels and things like that — was just incomprehensibly big and slow.

    Dude what? C’s build systems like cmake are notoriously unfriendly to users. Crates make building trivial compared to the ridiculous hoops needed for C.

    I wouldn't be surprised, if the guy does not normally use a build system to begin with. Professors don't tend to have the time to write software that would require a build system (both in terms of complexity and being used by end users).

    So, I'm guessing, all he wanted was rustc, but most Rust tutorials don't bother explaining it, because cargo isn't much harder to use.

  • Not really, but I feel like grayscale values would have been the most useful still, after black and white.

    With colors like orange, blue etc., the hue and lightness play a big role. But with grayscale values, it's pretty much just the lightness you care about, so there's a much higher chance of such a named value fitting what you want...

  • I don't have proper experience with it, I just built a small prototype with it back in 2021, to evaluate it for a project. But yeah, apparently these were my notes:

    Nim: Significant whitespace [derogatory], no interfaces/traits, imports throw random functions into scope like in Python (plays a big role with supposed object-orientation, as methods don't get imported along with a type; they're loosely attached and just imported along), somewhat ugly syntax

    Apparently, past-me wasn't as big on the syntax. 😅

    But I can see why, because this is the code I wrote back then, apparently (I wanted to create a OS configuration framework à la Puppet, Ansible etc.):

    main.nim:

     nim
        
    import strformat
    import role, host
    
    let host2 = Role(
      description: "sdadsj",
      code: proc (host: Host) = echo "sakjd"
    )
    
    echo host2
    
    
    type Role2 = ref object of RootObj
      description: string
    method deploy(self: Role2) {.base.} = discard
    
    
    type KWriteConfig5 = ref object of Role2
      cheese: string
    method deploy(self: KWriteConfig5) = echo fmt"Deploying: {self.cheese}"
    
    
    let test = KWriteConfig5(
      description: "Deploy KWriteConfig5.",
      cheese: "cake"
    )
    
    test.deploy()
    
    
    let rolerole = Role2(
      description: "RoleRole",
    )
    
    rolerole.deploy()
    
    
      

    host.nim:

     nim
        
    type Host* = object
    
    
      

    role.nim:

     nim
        
    import host
    
    type Role* = ref object of RootObj
      description*: string
    method deploy(self: Role) {.base.} = discard
    
    
      

    Certainly some syntax elements in there where I have not even the faintest guess anymore what they would do...

  • You probably missed it there, Guix's syntax is the programming language Scheme. It's most definitely Turing-complete.

    It's possible that there's a more mature LSP server for Scheme, since it is a programming language used for other things, too...

  • They had to throw out lots of customization options, because Google made a ton of changes to Android/AOSP and it wasn't compatible anymore.

    Like, LineageOS is still a more feature-rich and cleaner OS than what comes preinstalled on most phones. But yeah, even relatively simple stuff like setting a system font never got a real replacement.

    No idea, if it is still easily possible to implement that. You can fake it by replacing the Roboto font file with a different font, but you get weird font issues in various apps then.

  • They're talking about relations between data. For example, when you delete a user, you may also want to delete their stored data.

    To some degree, this is less of a problem with document databases, because they don't force you to chop your data into small parts like relational databases do (e.g. you can have lists of that user's stored data as part of the JSON document). But you will likely still need some relations at some point.

    Chances are you have a layer in your application code which ensures these relations that way.Which is fine in my opinion. With relational databases, there's also often some relations which you cannot model in the database.But yeah, it requires somewhat more software architecture awareness, to not lump the relation checking logic into general application logic. And you can't connect a second application to that database, without having to implement the relations another time or at least pulling them out into a shared library.

  • Yeah, our government occasionally discusses that idea again, but unfortunately nothing has been put into law yet. I would certainly prefer not having to carry around extra copper, just because companies want their .99 prices.

  • For the professional shitposter.

  • Good guess. I live in Germany. 😅

  • Honestly, I have no idea, if the cashiers are allowed to take extra change here, at least in the supermarkets.

    I still want to try that at the town market, where I've always been too stupid to think of that so far, so I once got told that I could've kept that 1ct coin and one time, the guy actually gave me extra change, because he did not want to deal with those small coins. 🥴

  • No, no, you're mathing correct. I did receive 12ct back. But 12cts is a 2ct coin + a 10ct coin. If I would have given 51.00€, it would have been a 2ct coin + a 5ct coin back. I didn't mention the 2ct coin, because it's always involved.

    And I didn't have 3cts myself, otherwise I would have made it 51.03€, yeah.

  • To be honest, I'm always a bit amazed that this doesn't happen more often. Yesterday, I had to pay 50.93€ and handed the cashier 51.05€, because I'd rather have a 10ct coin and the cashier typically needs smaller coins more often.

    In this case, it was obvious that I didn't hand them the 5ct by accident, but that's the sort of mind games I'll play and so far, the cashiers were always a step ahead of me...

  • I do expect it to be a matter of time. Typically, you pull some image rendering library into your program, which pulls in a whole bunch of libraries that support the different image formats.As such, it's the job of that intermediary library to support as many formats as possible. If you keep that intermediary library up-to-date, you may get support for new image formats without really doing anything.

    But well, it may take more time for this to happen, for various reasons. One reason is obviously that we already have other image formats that may not be amazing, but they work everywhere, so most people continue to use those.Another aspect that may slow adoption down, is that .webp was spear-headed by Google alone. Normally, you get other industry leaders into the boat, to make sure you cover everyone's use-cases and have somewhat of a commitment for them to integrate it. I assume that Photoshop supports .webp by now, but it probably took relatively long for that to happen, for example.

  • Thought you were making a joke about SANE, but that doesn't actually provide PNG handling, does it? 🫠

  • I mean, that is a pretty good picture for selling it. Shows the scale and that cats evidently love it. 🙃