this post was submitted on 04 Aug 2024
291 points (89.2% liked)

Programmer Humor

19589 readers
600 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 1 year ago
MODERATORS
 

Am I out of touch?

No, it's the forward-thinking generation of software engineers that want elegant, reliable, declarative systems that are wrong.

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

Sorry I'm too stupid to understand this joke. Someone explain?

[–] [email protected] 53 points 3 months ago* (last edited 3 months ago) (4 children)

There's a new trend with immutable distros and they have some pros and cons. OP's stance apparently is that they're the future

https://itsfoss.com/immutable-distro/

[–] [email protected] 23 points 3 months ago (1 children)

Oh that's super helpful and incredible.

I'm not familiar with that side of Linux as I'm primarily a user. But that's how our devops pipelines work to ship apps/websites. We're shopping the entire working package with every update, and rolling back with issues. It's a fantastic system since as a developer, I can isolate problems.

I never thought about that on a OS level. And I support it!

[–] [email protected] 17 points 3 months ago* (last edited 3 months ago)

This person gets it.

🤘

[–] [email protected] 12 points 3 months ago
[–] [email protected] 8 points 3 months ago (1 children)

Does it matter if you prefer emacs or vi, tho'?

[–] [email protected] 1 points 3 months ago

I want to get into emacs, but it feels like it would lead to a sad country song

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

Immutable distros definitely feel like the future.

[–] [email protected] 1 points 3 months ago

And if something feels like the future peole will try to make it the future

[–] [email protected] 32 points 3 months ago* (last edited 3 months ago) (2 children)

We've known since the 1950s that our configurations should be declarative, to make them resilient to necessary changes to our software stack.

Instead of coding exactly what change needs made, we ought to write a config that declares the intended outcome, and then do extra work to write code that correctly interprets that config. This way when all the commands we used stop working (and they do!), we still know the original intent of the configuration.

But making config management declarative is a lot of work. So fuck that noise. I'll do it in bash, instead, again.

[–] [email protected] 21 points 3 months ago* (last edited 3 months ago) (2 children)

Nix actually IS Bash under the hood. It uses Perl and Bash to create an atomic installation. I tend to do a LOT less maintenance than I’d need to do if I rolled everything from scratch in Bash.

[–] [email protected] 7 points 3 months ago

That explains why Nix despite being parallelized takes a long time to install packages and rebuild the configuration.

[–] [email protected] 5 points 3 months ago (1 children)

Oh, the meme really is about Nix then? I assumed it was about C.

I guess IT has a lot of holding into old ways going on.

[–] [email protected] 18 points 3 months ago* (last edited 3 months ago) (1 children)

Yes for sure. Actually Nix is pretty long in the tooth and there are better implementations of Eelco’s brilliant idea. It’s just that they have a lot less effort, ubiquity, and hype behind them. GUIX is a good example of that. They literally can build an OS from scratch. I find Nix to be rock solid, so I stick with it. But, it’s an idea (all dependencies being content addressed in an immutable folder structure) to allow complexity that isn’t even achievable on FHS style systems.

For example: THE main feature is that you could have a different version of say Python (for the sake of this example) installed for each dependency in your system and they would just work alongside each other due to their unique, hash based folder locations. Each folder is named based on the sha256 hash of the dependency graph, which has powerful implications. Because of this hash, they’re effectively hermetically sealed from each other and cannot step on each other. This is the very definition of Nix and taken far enough to define a whole OS is SUPER powerful concept.

Shit, I’m rambling. Maybe I’ll pause to let you guide my rant. ;)

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

What is a better implementation than NixOS? Guix is held back by the fact that it's GNU only by default, and that it also compiles everything on your machine by default. You have to go out of your way to add a binary cache and speed up the install. That's after you go out of your way to enable non-free packages so that your hardware can actually work with the right firmware. If someone made a version with those enabled by default things would be way quicker to setup and use

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

Gentoo isn't immutable or declarative afaik

[–] [email protected] 3 points 3 months ago

No, but it already supports multiple versions of software.

Though I would argue that many systems have dependency cache that should be replicable, specially when you build everything locally, you can pinpoint specific commits, not just versions that may be removed from repos.

But my comment was meant as a reference to building everything locally, as in I know what that's like.

[–] [email protected] 5 points 3 months ago

Is there a article about this I can find more info about this?

It's a brand new topic for me and I just read this one from a previous comment. And trying to learn more.

[–] [email protected] 14 points 3 months ago

Changes to a declarative operating system, such as NixOS, are atomic. This allows for easy experimentation and rolling back to older configurations.

For example say you install gimp for editing photos. Normally you'd just install it using command line or a clickidity gui program. But say you don't like it. Maybe it causes an issue. Then you have to uninstall it again. You are applying yet another action to the same system. That system is mutable, or modifiable, and that introduces some extra complexity.

With NixOS you can simply roll back to the previous state you had before installing it. It also doesn't have to support stuff like uninstalling. The downside is that it likely uses a bit more resources when changing configurations.

This also applies to stuff like user management, services, e.g. a webserver.

Any experts correct me if I am wrong, I haven't tried any of these systems yet.