• @[email protected]
    link
    fedilink
    162 days ago

    Glorious. I remember some hilarious nonsense in an API where the devs I worked with hadn’t known they could just use boolean in JSON and had badly implemented it through strings, but this… This is amazing!

    • @[email protected]
      link
      fedilink
      61 day ago

      At my last job we had a lot of old code, and our supposedly smartest framework people couldn’t be bothered learning front end properly. So there was a mix of methods for passing values to the front end, but nobody seemed to think of just passing JSON and parsing it into a single source of truth. There was so much digging for data in hidden columns of nested HTML tables, and you never knew if booleans would be “true”, “TRUE”, “1”, or “Y” strings.

      Never mind having to unformat currency strings to check the value then format them back to strings after updating values.

      I fixed this stuff when I could, but it was half baked into the custom framework.

    • @[email protected]
      link
      fedilink
      42 days ago

      I swear, spelling mistakes are such an indicator for a codebase and the overall quality of the software team, and maybe the whole company. No attention paid to detail leaks out into other areas.

  • Constant Pain
    link
    fedilink
    22 days ago

    Why have the options be “frontend”, “backend”, or “none” when you can be this creative?

  • @[email protected]
    link
    fedilink
    832 days ago

    Is the backend Python and the frontend JavaScript? Because then that would happen and just be normal, because Boolean true is True in python.

    • @[email protected]
      link
      fedilink
      1212 days ago

      Probably, but if you’re interpreting user inputs as raw code, you’ve got much much worse problems going on, lol.

      • LostXOR
        link
        fedilink
        282 days ago

        [...]&register=import os; os.system("sudo rm -rf /"); return True

        • @[email protected]
          link
          fedilink
          142 days ago

          Hey, that’s my username too. Or it was going to be, while the site was still up.

          What a coincidence!

          I guess I’ll wait for the site to come back, and see if it’s still available…

        • @[email protected]
          link
          fedilink
          8
          edit-2
          2 days ago

          A good place to put persistent malware. That’s why when using docker images always mount as ro if at all possible.

          • Ashley
            link
            fedilink
            92 days ago

            It’s you can modify the settings file you sure as hell can put the malware anywhere you want

          • @[email protected]
            link
            fedilink
            42 days ago

            Every environment has plenty of good places to put persistent malware. Even if you run your docker images as ro.

      • Trailblazing Braille Taser
        link
        fedilink
        72 days ago

        Given the warning about capitalization, the best possible case is that they’re using ast.literal_eval() rather than throwing untrusted input into eval().

        Err, I guess they might be comparing strings to ‘True’ and are choosing to be really strict about capitalization for some reason.

        • palordrolap
          link
          fedilink
          42 days ago

          In this instance, I think there was some suggestion to write code in mostly lower case, including all user variables, or at least inCamelCaseLikeThis with a leading lower case letter, and so to make True and False stand out, they’ve got to be capitalised.

          I mean. They could have been TRUE and FALSE. Would that have been preferable? Or how about a slightly more Pythonic style: __true__ and __false__

          • @[email protected]
            link
            fedilink
            42 days ago

            i would go with lowercase and just have it be a reserved word like the other ones. but I’m not super picky, i generally like to stick to what people are used to, and i can understand the reasoning behind the choice.

    • MHLoppyOP
      link
      fedilink
      92 days ago

      Searching for the phrase, documentation matches for Taiga so maybe you’re right!

    • Aatube
      link
      fedilink
      142 days ago

      Can’t they just convert a “true” input to backend to uppercase

      • @[email protected]
        link
        fedilink
        222 days ago

        Yep they should use a config file format like JSON or TOML or YAML or what have you, and then decode that into python objects. Using an actual programming language for config is dumb as hell IMO. (inb4 pissed off suckless fans)

      • @[email protected]
        link
        fedilink
        52 days ago

        Depends on how it’s set up. If the setting is going into the env it’s a string, so I’d expect some sort of

        if os.getenv("this_variable", "false").lower() == "true":   # or maybe "in true, yes, on, 1" if you want to be weird like yaml
          this_variable = True
        else:
          this_variable = False
        

        Except maybe a little more elegant and not typed on my phone.

        But if the instructions are telling the user to edit the settings directly, like where I wrote this_variable=True, they’d need to case it correctly there.

        • Fushuan [he/him]
          link
          fedilink
          12 days ago

          Fyi, using a condition to assign a boolean is equivalent to assigning the condition itself. No need for the IF.

          • @[email protected]
            link
            fedilink
            12 days ago

            true, though sometimes i find the more verbose style easier to read, and more maintainable (eg: you want to do something else in the block, you can just add a line instead of changing your ternary / etc). Small things

  • dpflug
    link
    fedilink
    132 days ago

    Implying Hell is frontend… yeah, actually, that tracks.