• 0 Posts
  • 12 Comments
Joined 2 years ago
cake
Cake day: October 5th, 2023

help-circle

  • Motorcycle:

    16 to 18 fatal motorcycle accidents per million hours ridden

    Personal flights:

    21.1 fatal accidents per million flight hours

    I’m really surprised at that.

    Thinking about it though most bikers I know are young, have good reflexes and are mostly using a motorbike for commuting or travelling which is probably lower risk than the cliche teenage fool on a superbike my mind jumped to.

    By contrast, the vast majority of light aircraft pilots I know are 60+, many 70+ with extensive health issues, heart problems and likely comparatively poor reflexes.

    corporate aviation – the world of bizjets – is relatively safe. This sector only saw 0.48 fatal accidents per million flight hours from 2012 to 2021

    General aviation overall:

    9.5 fatal crashes per million flight hours




  • So, you don’t know Python at all AND you don’t know Bash, but you feel compelled to talk about how one is so much better than the other?

    I have plenty of experience with Bash, hence why I was eager to question the implication that bash was less complicated than other solutions.

    You’re correct that I don’t know python, but I do have plenty of familiarity with PHP, JS, C#, and Rust. From my experience with those languages I guessed that python probably has similar libraries for making API calls.

    Thanks for providing the actual examples. Looking at them I’m curious if you still think I’m wrong?

    In my opinion the bash is much more difficult to understand than the python and therefore it’s more likely for bugs to creep in. For example I think curl_exit_code=$? should be called immediately after the curl command as the way it’s presently written isn’t it capturing the exit code of the tail command?

    You’ve explicitly called --connect-timeout and --max-time. imo it only comes from experience that you need to add these options. I had a script that had been funcitoning without issue for months then suddenly started to hang and it was a while before I figured out that the defaults for curl had no timeout so it didn’t gracefully fail like I would expect.

    These are the kind of traps that I fall into all the time with bash and it’s painful to debug.

    response=$(
      curl \
        --silent \
        --write-out "\n%{http_code}" \
        --connect-timeout "$CONNECT_TIMEOUT" \
        --max-time "$MAX_TIME" \
        "$API_URL"
    )
    
    http_body=$(echo "$response" | sed '$d')        
    http_code=$(echo "$response" | tail -n1)
    
    curl_exit_code=$?
    


  • That’s profoundly untrue. Scripting in bash is an indescribably painful experience.

    You have absolutely no idea what version of a binary the user will be running so you’re limited to using only options that have been well established.

    I’ve never worked with python but I understand it has at least got some semblance of package management providing assurance that methods you’re calling exist, and I imagine it has some standardised mechanism for handling errors unlike bash.

    A simple example is making a GET request to an API and deserializing a JSON response if its successful, handling a timeout if the server can’t be reached or handling the HTTP status code if it’s not a 200 response.

    JS, python, Rust, C#, Java etc will all handle that simple scenario with zero effort but in bash it’s a nightmare.