• Fmstrat@lemmy.world
      link
      fedilink
      arrow-up
      4
      ·
      3 days ago

      I love JSON. But I really wish there was a standard that allowed commas with no following items and that there was a syntax for comments.

      • luciferofastora@feddit.org
        link
        fedilink
        arrow-up
        14
        ·
        5 days ago

        They were chucked out because, according to the guy who defined it, people started using them for parsing directives, which hurt interoperability because now you needed to be sure that the parser would both read the comments and interpret them correctly. Suddenly, those comments might make otherwise identical files parse differently. If the whole point is that it’s reliable and machine-readable, keeping it to the minimal set of features and not extending it any way whatsoever is a good way to ensure compatibility.

        What you can do is define some property for comments. It’s not standardised, but you could do stuff like

        {
          "//": "This is a common marker for comments",
          "#": "I've never seen that as a property name, so it might be safe?",
          "_comment": "Property names with underscore for technical fields seem common enough as well, and it's semantically explicit about its purpose"
        }
        
        • AlexanderTheDead@lemmy.world
          link
          fedilink
          arrow-up
          1
          ·
          4 days ago

          I’m not a real programmer but I was wondering wtf you’re on about because I don’t think I’ve ever worked with a json file in a system that didn’t use // for comments lmfao

              • luciferofastora@feddit.org
                link
                fedilink
                arrow-up
                2
                ·
                3 days ago

                No biggie, I just named an example. Even “real” programmers, whatever definition you want to use for that, don’t know all languages.

                But yes, many languages do use // as comments and particularly the Javascript environment it originally stems from does. Python (#) and SQL (--) are the only examples I interact with frequently enough to know off the top of my head (but SQL still recognises /* ... */ for delimited comments). XML/HTML also has <!-- --> for comments, but that’s not so much a programming and more of a description language.

    • marcos@lemmy.world
      link
      fedilink
      arrow-up
      24
      ·
      5 days ago

      Well…

      It’s name-value pairs, with groups denoted by balanced brackets. It’s close to as good as you can get for one kind of data serialization.

      What is impressive is how many problems people manage to fit in something so small.

    • dohpaz42@lemmy.world
      link
      fedilink
      English
      arrow-up
      7
      ·
      5 days ago

      That’s not JSON. Note the use of equal signs for the property names. That’s something else.

      • unmagical@lemmy.ml
        link
        fedilink
        arrow-up
        27
        ·
        5 days ago

        Carcinisation is the phenomenon of non crabs to evolve crab like characteristics. It is not the process of non crabs becoming true crabs.

        In this case the language is trending toward JSON syntax, but it doesn’t have to actually be JSON for carcinisation to be an applicable analogy.

      • ulterno@programming.dev
        link
        fedilink
        English
        arrow-up
        12
        ·
        edit-2
        5 days ago

        Equals schmequals.
        It could be a and it would be the same as JSON because it is still a single symbol used as a separator.

        a distinction without a difference

        Now, if it took multiple separators, each giving some specific different meaning, then it would be a something else.

        • dohpaz42@lemmy.world
          link
          fedilink
          English
          arrow-up
          2
          ·
          5 days ago

          None of what you said makes any sense.

          This is the equivalent of an anti-vaxxer denouncing vaccines because they feel that their herbs are close enough to real medicine. 🤦‍♂️

          Don’t do that. Syntax absolutely matters.

          • ulterno@programming.dev
            link
            fedilink
            English
            arrow-up
            3
            ·
            edit-2
            5 days ago
            #define EQUAL_TO =
            

            Look! I made a new programming language!


            1. Vaccines are not medicine. They are a more refined form of older (much dirtier and dangerous) practices of sharing sick people’s blood to create group immunity. I’m pretty thankful of not having to do the latter.
            2. No, herbs are far from factory produced, chemically engineered medicine.
            • Most usages of herbs are defined in a way that it acts much closer to cooking. Also most of the herbs used in everyday cooking have medicinal and detoxifying properties, which is 1 of the ways food recipes have developed the way they do.
            • Herbal medicine is much milder than the extremely refined medicine produced using modern methods
              • Hence, they are much slower to act and you need to be using them much earlier than what you can manage with modern ones
              • Hence, there is much less overdose related problems
            • Most herbal medicine tend to have multiple effects. This is in contrast with modern medicine, where extra effects tend to be mostly undesirable and detrimental
              • Hence, herbal medicine is a better choice for regular, low intensity problems, like the flu and what-not, rather than popping Paracetamol every time your temp goes 1℉ over the baseline.
            • Herbal medicine works along with nutrition. This means, it is much harder to develop a tolerance to it in a way that would make it harder for it to work in the future.
            • lad@programming.dev
              link
              fedilink
              English
              arrow-up
              1
              ·
              5 days ago

              You seem to have had something like mint and thyme in mind as an example of herbal medicine, but try to substitute something like marijuana and nightshade to see that your description doesn’t fit all of the herbs. The only thing I agree is that effects often come coupled and you have to do something to isolate necessary ones.

              • ulterno@programming.dev
                link
                fedilink
                English
                arrow-up
                0
                ·
                5 days ago

                While marijuana and nightshade (and coffee) would be herbal “medicine” substitute for MDMA, DMT, nicotine, cocaine etc,
                the others you mentioned would be a substitute for Chlorpheniramine Maleate, phenylpropanolamine and the likes.

                So if a herbal medicine doctor is prescribing you marijuana for cough and cold, you can perhaps consider it being a quack. Same for someone prescribing SSRIs to a functioning adult that works 40 hours a week, on their first visit.

        • jcorvera@quokk.au
          link
          fedilink
          English
          arrow-up
          2
          ·
          5 days ago

          It could be a ⇨ and it would be the same as JSON because it is still a single symbol used as a separator.

          Nah, that’s a Ruby Hash…

    • onlyhalfminotaur@lemmy.world
      link
      fedilink
      arrow-up
      6
      ·
      5 days ago

      Almost all of those issues are solved by explicitly quoting your strings, the author even acknowledges that. Yeah it’s annoying that yaml lets you do otherwise, but the title is a bit dramatic.

      • Appoxo@lemmy.dbzer0.com
        link
        fedilink
        arrow-up
        3
        ·
        edit-2
        3 days ago

        Coming from powershell scripting, every string is put in quotes and to be printed strings with variables are put in $($var) (e.g. Write-Host "Example-Issue: $($IssueVariable)")
        Saves me the trouble of hoping that $IssueVariable isnt interpreted as a string butbas a variable by PowerShell.

      • droans@lemmy.world
        link
        fedilink
        arrow-up
        1
        ·
        4 days ago

        Or by configuring your parser.

        I do agree there are plenty of annoyances that shouldn’t exist in YAML but do because someone had an opinionated belief at one point, though. For example, it shouldn’t try to guess that “yes”, “no”, “y”, and “n” are truthy values. Let the programmer handle that. If they write true/false, then go ahead and consider those truthy. Times can also be a bit of a pain - iirc writing 12:00 is supposed to be interpreted as 0.5 - but at least that’s something you can work around.

        But there’s plenty in that article that are only problems because the writer made them problems. Every language lets you make mistakes, markup languages aren’t any different. It’s not a bad thing that you can write strings without quotes. It’s not forcing you to do so. Anchors also make it simple to reuse YAML and they’re completely optional. The issue with numbers (1.2 stays as 1.2 while 1.2.3 becomes "1.2.3" is very nitpicky. It’s completely reasonable for it to try to treat numbers as numbers where it can. If type conversion is that big of an issue for you, then I really doubt you know what you’re doing.

        On top of all this, YAML is just a superset of JSON. You can literally just paste JSON into your YAML file and it’ll process it just fine.

        I’m not saying it’s perfect, but if you want something that’s easy to read and write, even for people who aren’t techy, YAML is probably the best option.

  • panda_abyss@lemmy.ca
    link
    fedilink
    arrow-up
    67
    ·
    5 days ago

    If yaml didn’t have anchors and 8 different white space formats, it’d be a great replacement for this kind of thing.

    But yaml is a mess, and you’d think you could parse it easily, but you can’t.

  • Michal@programming.dev
    link
    fedilink
    arrow-up
    34
    ·
    5 days ago

    I like this. I also like yaml, I’ve had very few issues with it and it’s nicer to work with than json.

    Json’s lack of support for trailing commas and comments makes it very annoying for everyday use.

        • Shanmugha@lemmy.world
          link
          fedilink
          arrow-up
          2
          ·
          edit-2
          4 days ago

          Because I am not counting white space when I read. Or should we just write machine code/assembler/pick something straight away?

            • Shanmugha@lemmy.world
              link
              fedilink
              arrow-up
              2
              ·
              edit-2
              1 day ago

              Human and machine read differently. If you ignore that (in case with indentation), then why bother with writing human-friendly form of code, when what is going to be really executed is something else?

              • softwarist@programming.dev
                link
                fedilink
                English
                arrow-up
                1
                ·
                24 hours ago

                If anything, that sounds like an argument in favor of significant indentation, not against it. Humans and machines read differently, yes, which is why we tend to add whitespace and indentation to code even for programming languages where it’s not significant. We do that expressly because it makes the code more human-friendly, so it’s quite the opposite of ignoring their differences.

                • Shanmugha@lemmy.world
                  link
                  fedilink
                  arrow-up
                  1
                  ·
                  14 hours ago

                  No, it is an argument against it. We indent code so that it is more comfortable to read it, not in order to make it easier to understand

        • 3abas@lemmy.world
          link
          fedilink
          arrow-up
          3
          ·
          4 days ago

          Because yaml is not a programming language, and debugging why your whatever you’re configuring isn’t working correctly can be a nightmare. It doesn’t tell you you missed an indent on a block, it just assumes it should be there and changes the meaning.

          Braces are visually clear.

          • softwarist@programming.dev
            link
            fedilink
            English
            arrow-up
            1
            ·
            1 day ago

            I think YAML has its fair share of design flaws, but I don’t think significant indentation is one of them. It may not be a programming language (which may be debatable), but there are plenty that use syntactic whitespace.

    • backgroundcow@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      4 days ago

      Just the other day I had a list show up as [“a”, “b”, “c”, “d”, “e”, false, “g”, “h”, “i”].

      The issue was that, without me being overly aware of it, the data was going through a data -> yaml -> data step.

      Yes, the data -> yaml filter was broken for not putting general strings in quotes. But IMO the yaml design invites these odd “rare” bugs.

      I used to like yaml, but was happy to see Toml taking the niche of human-readable-JSON, but felt the format for nested key-value was a weird choice. However, I’ve always felt we could just have extended JSON a bit (allow line breaks, comments, if the outermost data type is an object, the curly brackets may be omitted).

      • Ethan@programming.dev
        link
        fedilink
        English
        arrow-up
        3
        ·
        edit-2
        4 days ago

        Using YAML as an intermediate format between steps of a process is a mistake. I love YAML for configuration but I’d never use it for machine-to-machine anything. If the tool you’re feeding data to requires YAML as input, just give it JSON. All JSON is valid YAML.

        Edit: I realize you weren’t the one who made that decision. I’m saying the problem isn’t YAML, the problem is someone using YAML inappropriately.

        • backgroundcow@lemmy.world
          link
          fedilink
          arrow-up
          2
          ·
          edit-2
          3 days ago

          I completely agree with the general assessment, but then there are always pesky exceptions. In this case the list entered a JavaScript frontend from the yaml header of machine generated content pages for the website framework Hugo. And, of course, after finding the bug, it is clear that things could have been done differently and the issue easily avoided, but I also don’t think this was a completely unreasonable design. Since Hugo actually supports JSON headers (not just via the yaml parser, but thanks for that tip!), that was a quick fix. But I’m also somewhat amazed that it was possible for the strung-together fairly standard set of Python libraries (primarily pyyaml) to not get the strings properly quoted.

      • droans@lemmy.world
        link
        fedilink
        arrow-up
        1
        ·
        4 days ago

        Like the other person said, that’s not really YAML’s fault - just whoever decided to use YAML there.

        If users aren’t intended to interact directly with the data, use JSON.

    • _stranger_@lemmy.world
      link
      fedilink
      arrow-up
      12
      ·
      4 days ago

      The very minor and nitpicky problem is that if you want JSON just use JSON. there’s still a place in the world for human readable/ editable configs that don’t require linters to be run on them after. (Current TOML is fine, I like it).

  • AnyOldName3@lemmy.world
    link
    fedilink
    arrow-up
    37
    ·
    5 days ago

    TOML’s design is based on the idea that INI was a good format. This was always going to cause problems, as INI was never good, and never a format. In reality, it was hundreds of different formats people decided to use the same file extension for, all with their own incompatible quirks and rarely any ability to identify which variant you were using and therefore which quirks would need to be worked around.

    The changes in the third panel were inevitable, as people have data with nested structure that they’re going to want to represent, and without significant whitespace, TOML was always going to need some kind of character to delimit nesting.

    • Ephera@lemmy.ml
      link
      fedilink
      English
      arrow-up
      22
      ·
      5 days ago

      Well, Wikipedia does say:

      The [TOML] project standardizes the implementation of the ubiquitous INI file format (which it has largely supplanted[citation needed]), removing ambiguity from its interpretation.

      https://en.wikipedia.org/wiki/TOML

  • Solemarc@lemmy.world
    link
    fedilink
    arrow-up
    22
    ·
    5 days ago

    If this is where the toml train ends I will be happy with it. If they do a yaml, I will be very upset.

    • Ephera@lemmy.ml
      link
      fedilink
      English
      arrow-up
      8
      ·
      5 days ago

      I don’t feel like it will stray very far from what’s dubbed “TOML 0.1” in the meme. Yes, it has inline tables and as of TOML 1.1, they’re allowed to span multiple lines, so it’s technically not anymore illegal to do what’s in the meme. But all things considered, this is still a miniscule change compared to TOML 1.0.

  • somegeek@programming.dev
    link
    fedilink
    arrow-up
    6
    ·
    5 days ago

    I think edn is almost the only more advanced and ergonomic option to json. Edn is like the evolved json, but its interesting that its roots are way older than JSON.

    The fact that you can very efficiently define whole applications and software just with edn (and the lisp syntax in general) is what makes really amazing.

    I think this blog post sheds more light on how we only need lisp for defining data and applications.

    https://stopa.io/post/265

    • fancyl@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      4 days ago

      I’m a daily Clojure user, and I knew immediately where that article was going, but it was still a delightful and insightful read! Thanks for sharing!