this post was submitted on 07 Apr 2024
490 points (96.8% liked)

linuxmemes

21211 readers
58 users here now

Hint: :q!


Sister communities:


Community rules (click to expand)

1. Follow the site-wide rules

2. Be civil
  • Understand the difference between a joke and an insult.
  • Do not harrass or attack members of the community for any reason.
  • Leave remarks of "peasantry" to the PCMR community. If you dislike an OS/service/application, attack the thing you dislike, not the individuals who use it. Some people may not have a choice.
  • Bigotry will not be tolerated.
  • These rules are somewhat loosened when the subject is a public figure. Still, do not attack their person or incite harrassment.
  • 3. Post Linux-related content
  • Including Unix and BSD.
  • Non-Linux content is acceptable as long as it makes a reference to Linux. For example, the poorly made mockery of sudo in Windows.
  • No porn. Even if you watch it on a Linux machine.
  • 4. No recent reposts
  • Everybody uses Arch btw, can't quit Vim, and wants to interject for a moment. You can stop now.

  • Please report posts and comments that break these rules!

    founded 1 year ago
    MODERATORS
     

    It's not about the destination, it's about the journey.

    you are viewing a single comment's thread
    view the rest of the comments
    [–] [email protected] 9 points 7 months ago (1 children)

    Nixos has made me a better software engineer, I hope it takes off

    [–] [email protected] 1 points 6 months ago (1 children)
    [–] [email protected] 2 points 6 months ago

    Software engineering is usually distinct from programming in that it isn't about the logic behind programming, but about the project management that all software projects typically have in common.

    Besides agile methodology, a lot of software engineering involves creating reproducible environments. While NixOS doesn't provide anything that much different from tools like Ansible,

    NixOS follows a functional/declarative design paradigm, functional/declarative design paradigms communicate similar logic for solving the same problem. It's a restrictive paradigm. Consider how javascript is not restrictive, as in, you can code with any design paradigm in javascript, and how it's ugly for that.

    I also think functional paradigms mirror the natural language closer than imperative paradigms. That's subjective, but I would still argue Math is a logical language that is a subset of the natural language, and since functions in programming represent a process of doing something, functions make for natural verbs. Meaning, understanding the naming convention for the functions, is a natural naming convention for when I communicate with other software engineers, even when I'm not asking about making configurable/reproducible systems in NixOS

    Or when I look at how to config things like firewall, ssh, vpn servers, user group permissions... it's a minimalist description that I could communicate to other people configuring even on a debian server

    So, it's hard because it's restrictive, but if you're willing to put up with a learning curve, you get a language agnostic framework for describing computing environments, more or less. Then there's more advanced stuff with nix flakes, which still doesn't make sense to me functionally/linguistically, but I'm starting to see the value in parallel package management and the precision in reproducibility they provide by requiring sha256 git commits