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/)F
Posts
2
Comments
1234
Joined
3 yr. ago

  • I'm not sure I agree. I think most people can understand recipes or instruction lists and totally could program, if they wanted to and had to. They just don't want to and usually don't have to. They find it boring, tedious and it's also increasingly inaccessible (e.g. JavaScript tooling is the classic example).

    But I think mainly people just don't find it interesting. To understand this, think about law. You absolutely have the intellect to be a lawyer (you clever clog), so why aren't you? For me, it's mind-numbingly boring. If I was really into law and enjoyed decoding their unnecessarily obtuse language then I totally would be a lawyer. But I don't.

  • Sometimes a big task is made up of smaller components that you can complete on their own, and you want to keep track of things. They definitely have a use.

    However the way Jira does subtasks is quite dumb, e.g. you can only have a single level. I hope they haven't copied that blindly. I much prefer Phabricator where you can just give any task a parent. They can even have multiple parents.

  • Bash is widely used in production environments for scripting all over enterprises.

    But it shouldn't be.

    The people you work with just don’t have much experience at lots of shops I would think.

    More likely they do have experience of it and have learnt that it's a bad idea.

  • This is a victory.

    -- Every loser.

  • After Dorsey sold Twitter to Elon Musk, selling the platform out to the far right for a crisp billion-with-a-“B” dollar payout, the FOSS community shouldered the burden – both with our labor and our wallets – of a massive exodus onto our volunteer-operated servers, especially from victims fleeing the hate speech and harassment left in the wake of the sale.

    That is a very weird way of putting it. Like Mastadon et al didn't want more users? That's not at all the response I remember.

  • 100%. There might be a slight uptick in Linux use, but the vast majority of people will either just keep using Windows 10, or buy a newer computer.

  • 10-14-25

    The 10th of Duember?

  • You’ve essentially dissed people who use it for CI/CD and suggested that their pipeline is not robust because of their choice of using Bash at all.

    Yes, because that is precisely the case. It's not a personal attack, it's just a fact that Bash is not robust.

    You're trying to argue that your cardboard bridge is perfectly robust and then getting offended that I don't think you should let people drive over it.

    About shared libraries, many popular languages, Python being a pretty good example, do rely on these to get performance that would be really hard to get from their own interpreters / compilers, or if re-implementing it in the language would be pretty pointless given the existence of a shared library, which would be much better scrutinized, is audited, and is battle-tested. libcrypto is one example. Pandas depends on NumPy, which depends on, I believe, libblas and liblapack, both written in C, and I think one if not both of these offer a cli to get answers as well. libssh is depended upon by many programming languages with an ssh library (though there are also people who choose to implement their own libssh in their language of choice). Any vulnerabilities found in these shared libraries would affect all libraries that depend on them, regardless of the programming language you use.

    You mean "third party libraries" not "shared libraries". But anyway, so what? I don't see what that has to do with this conversation. Do your Bash scripts not use third party code? You can't do a lot with pure Bash.

    If your temporary small script morphs into a monster and you’re still using bash, bash isn’t at fault. You and your team are.

    Well that's why I don't use Bash. I'm not blaming it for existing, I'm just saying it's shit so I don't use it.

    You could use Deno, but then my point stands. You have to write a function to handle the case where an env var isn’t provided, that’s boilerplate.

    Handling errors correctly is slightly more code ("boilerplate") than letting everything break when something unexpected happens. I hope you aren't trying to use that as a reason not to handle errors properly. In any case the extra boilerplate is... Deno.env.get("FOO"). Wow.

    What’s the syntax for mkdir? What’s it for mkdir -p? What about other options?

     
        
    await Deno.mkdir("foo");
    await Deno.mkdir("foo", { recursive: true });
    
      

    What's the syntax for a dictionary in Bash? What about a list of lists of strings?

  • It means that all commands that return a non-zero exit code will fail the script. The problem is that exit codes are a bit overloaded and sometimes non-zero values don't indicate failure, they indicate some kind of status. For example in git diff --exit-code or grep.

    I think I was actually thinking of pipefail though. If you don't set it then errors in pipelines are ignored, which is obviously bad. If you do then you can't use grep in pipelines.

  • And I certainly am not proposing that we can abandon robustness.

    If you're proposing Bash, then yes you are.

    You’ll probably hate this, but you can use set -u to catch unassigned variables.

    I actually didn't know that, thanks for the hint! I am forced to use Bash occasionally due to misguided coworkers so this will help at least.

    But you can’t eliminate their dependence on shared libraries that many commands also use, and that’s what my point was about.

    Not sure what you mean here?

    Just want to copy some files around and maybe send it to an internal chat for regular reporting? I don’t see why not.

    Well if it's just for a temporary hack and it doesn't matter if it breaks then it's probably fine. Not really what is implied by "production" though.

    Also even in that situation I wouldn't use it for two reasons:

    1. "Temporary small script" tends to smoothly morph into "10k line monstrosity that the entire system depends on" with no chance for rewrites. It's best to start in a language that can cope with it.
    2. It isn't really any nicer to use Bash over something like Deno. Like... I don't know why you ever would, given the choice. When you take bug fixing into account Bash is going to be slower and more painful.
  • Ah yeah I misread.

  • I'm afraid your colleagues are completely right and you are wrong, but it sounds like you genuinely are curious so I'll try to answer.

    I think the fundamental thing you're forgetting is robustness. Yes Bash is convenient for making something that works once, in the same way that duct tape is convenient for fixes that work for a bit. But for production use you want something reliable and robust that is going to work all the time.

    I suspect you just haven't used Bash enough to hit some of the many many footguns. Or maybe when you did hit them you thought "oops I made a mistake", rather than "this is dumb; I wouldn't have had this issue in a proper programming language".

    The main footguns are:

    1. Quoting. Trust me you've got this wrong even with shellcheck. I have too. That's not a criticism. It's basically impossible to get quoting completely right in any vaguely complex Bash script.
    2. Error handling. Sure you can set -e, but then that breaks pipelines and conditionals, and you end up with really monstrous pipelines full of pipefail noise. It's also extremely easy to forget set -e.
    3. General robustness. Bash silently does the wrong thing a lot.

    instead of a import os; os.args[1] in Python, you just do $1

    No. If it's missing $1 will silently become an empty string. os.args[1] will throw an error. Much more robust.

    Sure, there can be security vulnerability concerns, but you’d still have to deal with the same problems with your Pythons your Rubies etc.

    Absolutely not. Python is strongly typed, and even statically typed if you want. Light years ahead of Bash's mess. Quoting is pretty easy to get right in Python.

    I actually started keeping a list of bugs at work that were caused directly by people using Bash. I'll dig it out tomorrow and give you some real world examples.

  • I think this is a general Linux problem. My laptop hard reboots, although it hasn't since I massively upped the swap.

  • Yeah I think you've made it worse than Rust in both cases. They clearly shouldn't be strings. And the second option is just unnecessarily confusing.

  • I mean the bar charts are not useful for deciding whether or not each parameter makes a difference. You need to plot e.g. the speed difference turning on exceptions makes in each case. Maybe use some colour coding and line styles to group other attributes.

  • What is a "traditional programming language"? I don't think the popularity of Rust has anything whatsoever to do with AI.

  • Uhm... You went to all that effort and then didn't actually answer the question! Can you put the data in a readable format so we can see whether using exceptions made a difference?

  • What do you mean?