this post was submitted on 07 Apr 2024
491 points (96.9% liked)

linuxmemes

20880 readers
8 users here now

I use Arch btw


Sister communities:

Community rules

  1. Follow the site-wide rules and code of conduct
  2. Be civil
  3. Post Linux-related content
  4. No recent reposts

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 7 months ago (1 children)
[–] [email protected] 2 points 7 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