I just got done reading a blog post by nprofile1qyt8wumn8ghj7un9d3shjtnyd968gmewwp6kytcqypwg7snttadmfh8zml66cupclkc9kyn2edk4p9f3etxt6ny4p9e9vvcdd9k (nprofile…dd9k) called “A prison of my own making“, and I can relate. She talks about it on the fediverse too, in this post here: https://social.jsteuernagel.de/@jana/114768460919053583 .
You can run a #DIY #HomeLab but you don’t need to run it like a data center. Declarative OS configs with #Nix or #Guix, #GitOps, immutable OS distros, these things are great if you are responsible for keeping a system up and running with zero down time, but they are suffocating for someone just running a computer lab for fun.
You draft legislation and delegate the task of executing your orders to the continuous integration servers and the package management software. Your laws are indelible and indubitable because they have been committed to a Git repository with a hash code that ensures their veracity as though it were stamped with your own wax seal. Your laws are enforced by an immutable file system that will never change until the law which you yourself have drafted is changed.
It’s nice… except that you have created an impenetrable barrier between yourself and the pliable medium of the computer’s memory. What happens if you want to experiment? What happens if you to see the result of making an incremental change? What happened to that thrill you got the first time you ever entered a command into a computer’s command line and watched it faithfully execute your will?
Sometimes, it is just best to structure computer software as a tree of files and directories which you can change at will, like sculpting with clay rather than marble. It is error-prone, it may crumble if it gets too big or is put under too much pressure, but it is simple and tangible, and you can see the result of poking or prodding it instantaneously.
#tech #software
I was overwhelmed by all of the things that I convinced myself to be necessary.
Everything needs to be declarative
Machines as cattle, not pets
Immutable systems and containers
GitOps all the things
Automated deployment
CI/CD pipeline
Security considerations
This lead me to my current setup, where it feels impossible to just do something.
Want to try out a new program? Better first figure out how to run it in a container and make it run on Kubernetes. And manifests need to be committed to Git.
Quickly spinning up a simple file share to give a friend a download link? Impossible. I don’t have a single machine where I could just touch an nginx config and point it at a folder.
Install something on the home server? Change the Nix config. Oh, I didn’t update it in a while, let’s also do that. Aaaand the rebuild is broken or there is yet another bug in nixpkgs that only shows itself after a few days.
Now today I realized that this goes even further: I use Fedora Silverblue on my laptop. That’s an immutable distro and what has it caused? I can’t just install a program anymore. I need to figure out whether it is available as a Flatpak, run it in distrobox (which I hate) or layer it and reboot.
