• 1 Post
  • 12 Comments
Joined 1 year ago
cake
Cake day: July 24th, 2023

help-circle




  • It’s probably best to limit yourself to a used laptop.

    Reading and writing code is nothing more than reading and writing text, and for that you don’t need a fancy gpu or screen.

    What I would recommend you look for in a laptop is

    • an SSD instead of an HDD
    • more cpu cores (at least 4 cores)
    • more memory (RAM) (at least 8GB, preferably 16GB+)

    More memory and cores will help you with compiling and running your code.

    And make sure you take regular backups! You never know when your disk will fail.

    Also make sure to check linux compatibility before you buy. Laptops used to be a pain (10+ years ago), and it’s gotten a lot better, but it’s not always perfect. Just search for “[brand] [model] linux” or try to find the model on the archlinux wiki.



  • Exactly, ansible is basically imperative, where write the steps declaratively.

    Whereas nixos is more like a compiler that compiles to a working linux install.

    If I added the software myprogram and a config file at /etc/myprogram.conf, that’s pretty easy in both. But if I needed to to then remove those it gets different .

    With nixos it’s at easy as removing the two lines that add the program and the config file; after the next “compile”, the file is gone and myprogram is no longer available in the PATH.

    With ansible you need to change the relevant step to use apt remove instead of apt install and to change the config file step in a step that removes the file.

    Don’t get me wrong, ansible is still better than writing a lot of bash scripts, especially if you don’t have people with a lot of shell experience.

    But tools like nixos and guix are on a whole other level.


  • because bash isn’t always in /usr/bin/bash.

    On macOS the version on /usr/bin/bash is very old (bash 3 I think?), so many users install a newer version with homebrew which ends up in PATH, which /usr/bin/env looks at.

    Protip: I start every bash script with the following two lines:

    #!/usr/bin/env bash
    set -euo pipefail
    

    set -e makes the script exit if any command (that’s not part of things like if-statements) exits with a non-zero exit code

    set -u makes the script exit when it tries to use undefined variables

    set -o pipefail will make the exit code of the pipeline have the rightmost non-zero exit status of the pipeline, instead of always the rightmost command.