139 karma · joined January 15, 2020
These are not industries where people make programmer wages. Combining all of the required software costs is very expensive. Subscriptions more closely match the model/needs of the producer, but they are often quite bad the consumer.
I don’t like it, but you might be right. I’d still prefer a layer of abstraction between config file keys/comments so your configuration can be localized, but there are additional issues here with user-vs-author comments which the UI solution wouldn’t need to consider.
Of course you are correct, I couldn’t imagine teaching grep to my grandpa, most relatives, or even all coworkers. It shouldn’t be necessary, but it would be lovely if this was always an option. I’d much prefer having control, than an opaque system that migrates my settings forwards. Maybe I’m advocating for a system that supports both?
Thank you for posting, I never considered this, I need to think about it.
There are ui configuration options, but the last I tried them (long ago) they felt inconsistent and painful. It quickly became clear that you needed a terminal to solve most issues, and when you didn’t start that way, you’re now faced with both an uncomfortable environment, and a problem to solve. So I opted to get used to the terminal, and I totally fell in love with it.
For my (not experienced) level of use, I find that it’s just several different systems. Once you know the name of the system, you can read it’s docs, find it’s configs, etc. I think one of the reasons for the recent popularity of arch is that you are given the choice of, and are made familiar with several of these systems to build your install. Maybe you’re using netctl, dhcpcd, or networkmanager - but you made that choice, and probably the initial configuration.
I don’t like the control panel, and the registry is difficult to navigate. Suffering through deeply nested menus to find a setting is a horrible experience for me. I’d much prefer grepping a directory of files for keywords. I have more tools at my disposal. Plus then I can version control and automatically provision a new machine instead of a hunt through ever-changing uis. You’re right that the original configuration takes some extra research and time, but I find for my own setups that the automated setup is worth the investment.
This is all very subjective —- I certainly don’t think you’re wrong, but I wanted to share some perspective on how it can be used (in the off chance you weren’t aware) - i hope it might make it more friendly the next time you cross paths :).
Openbox is extremely minimalist and customizable. I use it for games, gimp, and occasionally gui application development. You can add directional selection keybindings etc. so it keeps a tiled-esque feel.
I dumped a shellscript in my ~/.zprofile where I can easily switch wms and X configurations without logging out (keep mounts, music, etc). It makes it really painless to switch.
Sure containers like LXC and bsd-jails existed, but I think the feature that won the hearts of devs was the incremental builds that let people fail quickly in a forgiving way.
With jails, the best I know of achieving this is creating a base jail filesystem (thin jail), and creating a new one. (Apologies in advance if another tool addresses this).
I think market pressures make this a difficult fit in the workplace. High turnover (~2yrs) and larger systems encourage shorter term results with a shallower understanding.
This isn’t a criticism (I have so so much to learn still, I’m in no position to judge, nor do I want to be), but more of an observation. Balancing learning churn(frameworks/languages) vs fundamentals(theory, concepts) is a struggle I think I will have for the rest of my life.
I got the impression that there is much less of this in lower level languages. It seems like there is a fairly stable foundation of C, Cpp that everything else is built on top of. I wonder if embedded programmers have this problem.
I don't know if any game can quite capture what I loved about Morrowind, but you might also like Outward, or Kenshi, if you'd like a similar feeling of discovering and surviving in a strange world that wasn't designed around you.
* cli tool to diff changes to a branch since the last revision you looked at when it has been rebased (only if you haven’t git gc’d!!)
* use fzf to choose from pulseaudio sinks/sources, changing the default and applying it to all current audio streams (ex.change mic or to headphones)
* change the default linux webcam by renaming devices, runs as a udev hook.
* various arch tools. Automatically download mirrorlist and enable the fastest 5 sources. Download/extract a package from the aur. Fzf multiselect all of the .pacnew files, vimdiff them, and delete the .pacnew files for files that changed. Also my own install script with choices for ext4 or zfs.
* use mplayer to play a video as the background on all monitors. I downloaded several 10hrs of ocean/forest sounds and alternate between them.
* tool to convert restructured text to html email in mutt
* using xargs to parallelize updating my most common config repos
* index all git repos on disk, then either fzf choose from or choose best match and cd into it. Not my idea, but I love it so much!
* makefile for my i3 config that looks at avail displays and gives me 10 monitors per display with the same hotkeys (like dwm).
* choose from several presets and recompile st with a different colourscheme.
* categorize all of my bank transactions to monitor my spending over time.
* a cli DM with different Xorg configurations and window managers (music keeps playing, fuse mounts retained). Useful for multimonitor games that require different setups.
* wine, proton scripts to manage prefixes and cd to common windows directories within them.
So,so many more.
>> 1. A solution for unlimited scheduled snapshots without affecting performance.
You can very comfortably have instant and virtually unlimited snapshots with zfs/jails (only occupying space when files change). Very easy to automate with cron and a shellscript.
>> 2. API access for managing configuration, version updates/rollbacks, and ACL.
>> 3. Close to immediate replacement of identical setup within seconds of failure.
There is a lot of choices for configuration management (saltstack, chef, ansible, ..). I run a shellscript in a cron job that takes temporary snapshots of the jail's filesystem, copies to a directory, and makes an off-site backup. A rollback is as simple as stopping the server, renaming a directory, and restarting it. It's probably more than a couple of seconds, but not by much. I think I'm uncomfortable exposing an API with root access to my systems to the internet, but I'm not sure how these systems work. I don't think it would be hard to set it up with flask if you wanted it though.
>> 4. No underlying OS management.
I don't know what this is, but I'm curious and looking it up :D.
In most of the posts I'm reading here, people have really beefy rigs. But you could do this on the cheap with a 2000s era laptop if you wanted (that was my first server).