Ramin Honary
Software engineer, functional programming enthusiast.
You mean, there are still websites that don’t auto-detect what OS you’re running and make you actually choose?
I wouldn’t worry too much about the package manager, just worry about whether the distro has a good package repository. If it has all the software you want to use, then use it. In my opinion, most package managers (dnf, apt, pacman, xbmp) are basically the same, and you would only notice a big difference if you ever tried to make your own package for your own software.
That said, a few package managers are very different from all the rest:
- Crux OS “
prt-get
”: simple and stupid: just downloads and installs tar archives. - Gentoo “
emerge
”: builds all software from source code when you install it. This provides some guarantees that the source code was not tampered with by the distro maintainers, this is great if you need to review all of the source code that is running on your system, but terrible for most people who don’t want to spend so much computing power on compiling stuff every time you do a software update. - Nix and Guix: creates its own blockchain-like database of isolated package dependency chains on your system, allowing you to instantly roll-back to the previous set of installed packages if you ever install something that breaks your system. It also guarantees that the software can be checked bit-for-bit (using SHA hash) traced back to the exact version and dependencies of the source code that built it. Nix and Guix packages also live peacefully side-by-side with any other package manager since all Nix/Guix apps are completely self-contained within its own database. In a way, it is sort of like one big AppImage or Docker container, but you can just keep adding or removing stuff to it as often as you want.
- Silverblue, SteamOS, VanillaOS, BlendOS, CarbonOS: distributes “immutable images,” so it is impossible modify the operating system at all. Updates will ship an entirely new operating system with all packages built-in. However you are allowed to install software into your home directory, and you can install FlatPacks and AppImages. This provides a great deal of security in exchange for a tiny bit of inconvenience.
My personal preference: I use ordinary Debian or Ubuntu to install the critical software that needs to be stable and reliable, and I use Guix OS on the side to install the bleeding-edge things that might break a lot.
This is not a very good question. If you are concerned about security you need to think about what specifically you are trying to keep safe? Here are some examples of different security scenarios:
- Do you want your computer to be safe when it is stolen?
- Do you want to run lots of native apps from untrusted sources?
- Do you want it to be used by many people and you don’t want them to be able to steal each others secrets?
Each one of those questions has different means of securing the computer. With question 1, it is not so much a matter of desktop environment, rather it has more to do with using full-disk encryption, setting a boot password in UEFI, and always having your lock screen enabled.
With question 2, this is a much more difficult task and you would probably be better off running apps in a VM, or carefully crafting your “Security Enhanced” Linux profile – or not using Linux at all, but using FreeBSD which allows you to run apps in jails.
With question 3, be more careful with filesystem permissions and access control lists, setup your sudoers file properly, and use a desktop environment with better security auditing like Gnome or KDE Plasma.
The main difficulty I have with Rust (what prevents me from using it), is that the maintainers insist on statically compiling everything. This is fine for small programs, and even large monolithic applications that are not expected to change very often.
But for the machine learning projects I work on, I might want to include a single algorithm from a fairly large library of algorithms. The amount of memory used is not trivial, I am talking about the difference between loading a single algorithm in 50 MB of compiled code for a dynamically loadable library, versus loading the entire 1.5 GB library of algorithms of statically linked code just to use that one algorithm. Then when distributing this code to a few dozen compute nodes, that 50 MB versus 1.5 GB is suddenly a very noticeable difference.
There are other problems with statically linking everything as well, for example, if you want your application to be written in a high-level language like Python, TypeScript, or Lisp, you might want to have a library of Rust code that you can dynamically load into the Python interpreter and establish foreign function bindings to the Rust APIs. But this is not possible with statically linked code.
And as I understand, it is a difficult technical problem to solve. Apparently, in order for Rust to optimize a program and guarantee type safety and performance, it needs the type information in the source code. This type information is not normally stored into the dynamically loadable libraries (the .so
or .dll
files), so if you dynamically load a library into a Rust program its type safety and performance guarantees go out the window. So the Rust compiler developers have chosen to make everything as statically compiled as possible.
This is why I don’t see Rust replacing C any time soon. A language like Zig might have a better chance than Rust because it can produce dynamically loadable libraries that are fully ABI compatible with the libraries compiled by C compilers.
Woah, woah, woah… there is a Wayland compositor called DWL and a status bard called DTao that can be scripted using Guile Scheme?! Holy shit!
Now I know exactly what I am going to do as soon as my Linux distro swtiches over to Wayland.
And kudos also for using Nyxt and Emacs. The Lisp runs strong in this one.
So I think Guix (and Nix) is the most technologically advanced package manager in existence, and I hope someday all package managers work like Guix.
One other very interesting feature about Guix (which I don’t think Nix is doing yet) (which Nix also does) is that they have implemented a fully verifiable bootstrap, meaning every step of building the kernel, including the steps taken to build the C compiler toolchain, are produced by code that is simple enough for a group of humans to check for correctness and safety. Also, every step of the build process exists in the package repository, with no reliance on externally built binaries for anything, not even the C compiler toolchain. They accomplish this with a multi-phase bootstrap process, where a smaller, simpler C compiler is used to build GCC.
Do I use Guix? Well, no. Simply put, it is not quite to the point where it just works on a lot of the computer hardware that I own. With a bit more work, with a few more developers, and a bit more money invested, Guix could pretty soon become as reliable and useful as Debian or Fedora. But it is not quite there yet. And frankly, I have other more important things to do than worry about debugging problems with the operating system I am using.
What is good about NixOS (and GuixOS) is that they apply to package management the same principles that Git applies to managing source code. The Nix store is basically an append-only database (you might even call it a “blockchain”) of inter-dependent packages.
So from an individual computer user’s point of view, it is much safer to install and roll-back software with Nix than with an ordinary package manager that might allow you to accidentally delete package dependencies and break your system. With Nix, you can install packages that actually do break your system, but because of the append-only nature, you can actually roll-back the install automatically right from the Grub boot menu, no need to re-install anything.
Another advantage of NixOS, though this is more from a system operator’s point of view, is that you can guarantee reproducible builds. If the package you have installed has the same hash on all of your computers, that is a simple, human-verifiable proof that all of those systems are running the exact same build of the software. You can probably see that this is very useful for people running servers, like compute clusters, or doing things like A-B testing.
It is no longer an abstract question for me as to what I would have done if I had been an ordinary German citizens living through the reign of Hitler to resist the war crimes committed by my country.
I now know exactly what that is like, and I am ashamed to say I am doing jack shit about it. In fact, it might be even worse than that. The Nazis tried to keep their genocide under wraps, I am guessing not a lot of ordinary German citizens actually knew about the gas chambers, they maybe only knew that jews were being rounded up and forcibly moved into labor camps (which is in itself horrible enough). But when America commits genocide, everyone knows about it and still choose to do nothing.
And I still see morons write opinion articles with titles like “Trump is a threat to democracy!” What fucking democracy is there to speak of in the US anymore? Did everyone in America just decide, “hey, you know what, genocide of Gaza is important to me,” and therefore both political parties now run pro-genocide candidates? No, there was never any choice to begin with, because there is no fucking democracy in the US.
Until the ADL gets rid of their pro-genocide leadership and spokespeople, I can’t take any of their reports seriously. Its a shame, since this particular report seems to be more concerned with anti-Trans and neo-Nazi propaganda which is indeed a real problem, and their research here would otherwise probably be very useful. They have really damaged their own reputation this past half year by equating support of Palestinian victims of genocide with antisemitism.
Poisoning the well
Yeah, that seems to be the M.O. of the Anti-Defamation League with regard to anti-zionism: poison the well against anyone who might feel empathy with the Palestinian people before they have a chance to speak, by equating them with antisemitism and Nazis.
Ironically, the Palestinian people are technically Semitic people also, but their wells are being literally poisoned by white Phosphorus bombs “made with [white] pride in the USA,” and dropped by different Semitic people who have the privilege to do that.
This is why white supremacy is so evil, it is so arbitrary. Who gets counted as “white” and that dividing line between enjoying privilege and being a victim of mass murder changes from day to day, and place to place. Zionism just happens to include Jews in that definition of white (while also excluding Palestinians), where as antisimitism excludes Jews, but both are white supremacy.