Am I out of touch?

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

42 points

Luckily with free software there’s always a choice.

permalink
report
reply
5 points

Found the only sane comment.

permalink
report
parent
reply
36 points

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

permalink
report
reply
54 points
*

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/

permalink
report
parent
reply
24 points

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!

permalink
report
parent
reply
17 points
*

This person gets it.

🤘

permalink
report
parent
reply
12 points

👍🏽

permalink
report
parent
reply
8 points

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

permalink
report
parent
reply
1 point

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

permalink
report
parent
reply
3 points

Immutable distros definitely feel like the future.

permalink
report
parent
reply
1 point

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

permalink
report
parent
reply
32 points
*

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.

permalink
report
parent
reply
22 points
*

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.

permalink
report
parent
reply
8 points

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

permalink
report
parent
reply
6 points

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.

permalink
report
parent
reply
6 points

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.

permalink
report
parent
reply
14 points

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.

permalink
report
parent
reply
31 points

I’m not against immutable distro’s on principle. I imagine they still have some kinks to iron out, but I haven’t looked in on them for a while.

My opinion on these things is; if it’s a superior system, then it’ll become the new standard, that’s always what happens, and the naysayers are largely irrelevant. Just like computers, smart phones, the internet, etc.

permalink
report
reply
19 points

Yeah. I think they’ll catch on in much the same way that lock files have become the standard in many languages. IMO, it just makes more sense to declare all dependencies atomically. I also think/hope it will supplant our overreliance on Docker containers to achieve these kinds of guarantees (where it actually makes sense or presents undeniable benefits).

permalink
report
parent
reply
6 points
*

In the case of docker I’m already at the point where I no longer think it’s necessary. At my current job our stack is JS, PHP and Python. 3 interpreted languages, we then build on Ubuntu and deploy on Ubuntu. I don’t think our project really needs docker, even though it does use it. We also have wasm/wasi prepping to eat Docker’s lunch.

permalink
report
parent
reply
20 points
*

I’d look into building all of that in a flake just so you can encapsulate (and have a central version control of) all of your dependencies in case something does change.

I’m a bit of a Nix dork but I tend to try and declare my entire dev stack in a flake so it can follow me to every machine. It offers some of the “it works on every machine” guarantees that Docker offers while also forcing the compilation of the stack to happen natively (or at least pulls in some content addressed cache that offers security by being the exact hash for the whole dependency graph). I like that

Here’s how I used the Nix way to declare an interactive Python scraper the other day. With this method, I can lock dependencies between machines as a matter of course without having to use Docker:

{
  description = “Weed Scraper”;

  inputs = {
    nixpkgs.url = “github:NixOS/nixpkgs?ref=nixpkgs-unstable”;
    utils.url = “github:numtide/flake-utils”;
  };

  outputs = { self, nixpkgs, utils }: utils.lib.eachSystem [“x86_64-linux”] (system: let
    pkgs = import nixpkgs { system = system; };
  in rec {
    packages = {
      pythonEnv =
        pkgs.python3.withPackages (ps: with ps; [ webdriver-manager openpyxl pandas requests beautifulsoup4 websocket-client selenium keyboard ]);
    };

    devShell = pkgs.mkShell {
      buildInputs = [
        pkgs.chromium
        pkgs.undetected-chromedriver
        packages.pythonEnv
      ];

      shellHook = ‘’
        export PATH=${pkgs.chromium}/bin:${pkgs.undetected-chromedriver}/bin:$PATH
      ‘’;
    };
  });
} 
permalink
report
parent
reply
13 points

if it’s a superior system, then it’ll become the new standard,

That’s not how it usually works, unfortunately…

permalink
report
parent
reply
5 points

Yeah, everyone knows the new standard will be whatever gets the backing of the porn industry.

permalink
report
parent
reply
6 points

if it’s a superior system, then it’ll become the new standard

Not even remotely close to how it works. Remember: we had pulseaudio as the “new standard” for a decent while.

permalink
report
parent
reply
2 points

It’s been two decades. What kinks do you think NixOS has yet to iron out?

permalink
report
parent
reply
16 points

Honestly how I feel right now, well kinda. I was using fedora silverblue but apps kept crashing and shit just wasn’t working out how I wanted. I was excited to try VanillaOS until I did… It was annoying. I was hoping for a system that made it so I can seamlessly use dnf, pacman, and apt in the terminal and it would figure out all the containers for me but not at all. VanillaOS was too much of a hassle to keep track of everything and was just eh. I got fed up enough so I just installed NixOS today and so far I’m loving it. It’s not as hard as I thought it would be but also I’m not doing anything to advanced yet. I plan on messing around with home-manager later. So far NixOS seems like it’s exactly what I was looking for but all this time I avoided it

permalink
report
reply
20 points

I bet NixOS will be kinda cool once they get a proper wiki in like 10 years or so

permalink
report
parent
reply
5 points

They have two. If the complaint is that neither wiki is as rich as the Gentoo or Arch wiki, consider that perhaps NixOS users don’t need as much supplementary advice for configuring their systems.

permalink
report
parent
reply
4 points

Every tutorial should be crafted for some hypothetical user stupider than their current stupidest user.

permalink
report
parent
reply
3 points

Wiki and official social platform to share configurations and flakes ect! But my god the documentation…

permalink
report
parent
reply
3 points

yeah I’m feeling that now…

permalink
report
parent
reply
11 points
*

I tried bazzite, unfortunately I had some odd quirks that I can only attribute to an immutable OS. Things like window and UI scaling wasn’t consistent. My mouse cursor would blow up to twice the size when hovering over one window then shrink back down on another. I can only guess this is because the base filesystem is only readable and it can’t write any values for scaling on certain themes/window decorations. While not a huge deal, it comes off as sloppy and inconsistent. It’s not a great user experience and first impressions are everything. It’s easy to make a first impression, it’s damn near impossible to make a second one, and my first impression of an immutable OS has been soured. I installed mint 22 and it’s been a completely different experience, from window decorations, to time shift backups, system updates, Bluetooth, cinnamon theming, it just works out of the box with little to no setup.

permalink
report
reply

Programmer Humor

!programmer_humor@programming.dev

Create post

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

  • Keep content in english
  • No advertisements
  • Posts must be related to programming or programmer topics

Community stats

  • 7K

    Monthly active users

  • 731

    Posts

  • 11K

    Comments