P’undrak’s Interesting Links

Welcome to my collection of interesting links I find here and there! This website is inspired by Awesome pages such as this one. Thing is, Awesome pages are generally written about a specific topic like this one – that is not the case here, although there is the general topic of Computer Science, and more often programming, that binds the links together.

Although this is primarily for links I find myself, suggestions are more than welcome if you feel like one ore more should be added, feel free to open a PR!

Learn Linux

Learn Bash

The first step towards becoming a Linux poweruser is to learn to get around with the command line. While you might not use Bash itself (you might have Zsh preinstalled instead), most of the things you will have to learn are pretty standard across most shells (those that follow the POSIX standard). Fun fact, if you know your way around a POSIX shell, being in a macOS or a UNIX shell won’t feel that foreign since the POSIX standard tries to be as compatible as possible with the UNIX standard (and yes, macOS is a UNIX-certified OS).

Finding tutorials on Bash is pretty easy, however there are some tutorials I’d recommend:

Learn Linux, Prepare to be a System Administrator

Yes, that’s a big step, but that’s the path to become a poweruser. While you might not want to become a sysadmin professionally, I don’t think it hurts to learn even more about Linux.

And pretty much any course on this website. They have five ranks of difficulty in their courses:

  • Novice
  • Apprentice
  • Practitioner
  • Professional
  • Guru (kinda hidden)

Famous or Interesting Distributions

Debian Family

Debian

A reliable distribution, known for being very stable but sometimes with kind of outdated packages. It is often use on servers, and I actually run one on Debian!

Uses the apt package manager.

  • Homepage
  • Downloads:
    • Free
    • Nonfree, might be needed for computers which hardware require nonfree drivers such as maybe a WiFi card or a GPU.

Ubuntu

Most likely the best known distribution, used to be very beginners friendly but I believe its usability went down in the past few years. I’m also still not over Canonical’s hard push for using snaps. Often used in servers.

Uses mainly apt as its package manager but with a heavy usage of snap.

Pop!_OS

My personal favorite in the Debian family, this one is developed by System76 and is based on Ubuntu. However, they did not follow in Ubuntu’s footstep in terms of its snap usage. Instead, most packages are available through apt and some through flatpak which is much nicer on your computer than snap. It’s also a great choice for computers that run on NVIDIA since they have a Pop!_OS version specially made for them, saving you the hassle of figuring out how to make it work (come on NVIDIA, AMD is already playing nice with Linux, why not you too?). You shouldn’t have any issue playing games with this distro.

I think this is the distro I recommend the most to Linux newcomers.

As mentioned, uses apt and flatpak.

  • Homepage (download button pretty obvious)

Linux Mint

A lightweight Ubuntu fork, might be friendlier than Ubuntu itself for Linux newcomers from Windows with its Cinnamon and MATE versions.

Uses mainly apt as its package manager, I don’t know if it followed Ubuntu in its heavy usage of snap.

ArchLinux Family

Arch Linux

Infamous for being hard to install, not that hard if you know how to read instructions from the ArchWiki (it even has a guided installer now, although not very complete compared to others). Said ArchWiki will become your Bible if you want to become a Linux poweruser, regardless of your distribution although not everything might be applicable if it is not Arch-derived. However, I will never recommend it to any Linux newcomer, you need to somewhat know what you are doing if you want to properly use it (or if you want to learn with it, be ready to accidentally bork your system).

Its main strengths, on top of the ArchWiki, are the AUR (an additional user-powered package repository on top of the official ones), powered by the ease of creation of Arch packages with PKGBUILD files (See? The ArchWiki!), and its initial minimalism. It can become whatever you want, really. But don’t expect a GUI to be there on a fresh install, you’ll have to add it yourself.

Also, unlike some popular belief, ArchLinux is quite stable as long as you follow some proper etiquette when maintaining your system. I had way more Debian-based distros getting borked during an upgrade than with ArchLinux (especially with Ubuntu). In fact, even most of my servers run on Arch and only one runs on Debian. And pacman is better and faster than apt, fight me.

ArchLinux uses pacman as its package manager.

For advanced users, I’d also recommend taking a look at this project. The x86-64-v3 repositories aim at bringing to Arch packages compiled with CPU instructions found in most modern CPU, unlike the ones found in the regular repositories which aim to be as compatible as possible with x86-64 CPUs. Packages from these new repositories can perform a bit better, and I have yet to encounter any significant bug. Be aware any package that is not compiled (like most Python scripts for instance) cannot be found in these as they cannot be compiled (like all packages flaged with the any architecture); therefore they are not included but can still be found in the regular core, community, and extra repositories.

archfi

Not technically a distribution per se but rather a better guided installer for Arch than its default one I think. I use it when I want to create a new, fresh ArchLinux install and it’s pretty damn effective! You can even run archdi from it to preinstall some packages you might find useful, such as a Window Manager (a WM such as Openbox) or a Desktop Environment (a DE, such as GNOME, KDE, or Cinnamon).

Archcraft

This one though is an actual distribution, although its less far from ArchLinux than for instance Pop!_OS is from Ubuntu. Think of it more of a preconfigured, easy-to-use, easy-to-install ArchLinux but still an ArchLinux. And a beautiful one, props to the dev!

Manjaro

I will only include this one as a warning:

Do NOT use it!

Although it might look nice and easy to use at first, its various scripts for maintaining the system are bug-ridden, filled with textbook examples of what not to do with pacman and with Arch in general (partial upgrades, forced downgrades of system-critical packages, fake improvements of stability, etc…)1. Also, the association taking care of Manjaro is shady2. Oh, and they don’t know how to properly maintain their forum3.

2

Leadership controversy: a Reddit thread and a HackerNews thread

3

See this and this Reddit threads

Fedora Family

Fedora

This distribution is pretty well known in the Linux community, and it has a pretty large package repository on top of being known for being quite stable. Although he stated he doesn’t really care about the distro he’s running, Linus Torvalds, the creator of Linux and Git, stated he uses Fedora as his daily driver, and to be honest I probably would too if it weren’t for Arch’s AUR and minimalism. (And let’s not compare Linus to myself, he is a freaking genius who created the most successful kernel ever, I’m just a Linux and Emacs enthusiast, I’m just sharing my opinions here).

I also think it’s pretty well fitted for Linux newcomers, although maybe not as much as Pop!_OS.

RedHat

The best known enterprise Linux distro, it is available for free for up to sixteen workstations or servers through their Red Hat Developer program, which is nice! But as far as I know, you won’t have access to the whole suite of software you can theoretically get from RedHat unless you get a paid license.

As I have no experience with it, I cannot recommend nor not recommend using it.

CentOS

Let’s not talk about it… My heart hasn’t healed yet… Good night, sweet prince…

Void Linux

Remove systemd from Arch and make it into a distro that actually works (looking at you Artix!) and you get Void Linux! It’s package manager might not be as pleasant as pacman (hard to make one that is), but the overall experience is pretty similar and people who like to tinker will love this distribution! It used to be my daily driver for some time before I went back to Arch because I missed the AUR. But honestly, it wasn’t a bad experience at all and I would totally recommend it to someone who has the level to use ArchLinux.

One negative point is its documentation isn’t great due to a past incident: at some point the project lost its domain name and had to restart everything, making it a bit confusing, although that’s my experience a couple of months after it happened. It might be better now.

Oh, and there’s a musl version available (that is, no glibc but a lighter one with less bugs, but alas with slightly less compatibility with other things…).

Gentoo

Let’s take one step further into the “make your own distro” world and the memes. Although Gentoo is not that hard to install, Gentoo does not come with any precompiled package. Instead, you will have to compile everything yourself, and if you don’t know how to RTFM, this distribution will make sure that you will. While yes, it is CPU intensive to maintain such a distribution, every compilable package will be able to fully use the entire set of available assembly calls your CPU has and you might get some performance boost from it. Keyword: might. In a lot of cases, you might not actually notice it, or if you do it might just be your imagination. But I won’t deny it’s a great distro for tinkerers, and you can easily make your own packages.

Documentation for this distribution is pretty great and it can give you some nice insights on other distributions too, and you can choose whether to use Gentoo’s own init system or Systemd.

As you might have guessed it, this is clearly not a distribution made for beginners, and avoid installing it on machines that don’t have good performance unless you don’t value your time. Below is the typical evolution of a Gentoo user.

https://www.explainxkcd.com/wiki/index.php/456:_Cautionary

Alpine Linux

I heard you like extra light distributions, right? Alpine is the distribution you will love then! Although I used it once on a server, I use it very often when I have to create Docker images and containers due to how light it is. When I installed it on my server, its fresh install only took something like 100MB on my hard drive, I’m not even kidding! Its package manager apk is relatively easy to use too. Be aware though Alpine Linux does not come with Systemd or glibc but with its own init system, musl and busybox, so it’s not even a GNU/Linux distribution like all the others above.

I don’t know of any madman running it as their daily driver, but it’s definitively possible although I wouldn’t recommend it for anyone that’s not very used to Linux. I don’t find its documentation to be great either, but it’s still enjoyable.

NixOS

I know some people, myself included, love to tinker with files that dictate how their system is configured. What if I told you it is possible to configure your whole system, services, users, and packages included among other things, through a single file? (Or several through file inclusion)

Well, NixOS does exactly that! And not only that, when you upgrade your system, a snapshot of your current system is taken so you can go back to it if your upgrade goes wrong for some reason. Awesome, isn’t it?

Now, why don’t I use this distro? Well, again, I miss the AUR and I don’t find its syntax (which is a DSL made for this use-case precisely) particularly appealing, but I know a lot of people don’t mind this and actually like it. Also, I appreciate the separation between the system-level configuration and the user-level configuration, in case a user wants an additional package not included by the system for instance, or to set their $PATH to the desired value without tampering with the system’s $PATH. You can even create custom environment you can enter and exit if you need for instance a precise version of Python for a certain project which is not the default one installed on your system.

Once again, this isn’t a distribution that targets Linux newcomers since you need to get your hands dirty to maintain your system.

Be aware there is a difference between Nix, the package manager, and NixOS. Nix can be installed on a lot of systems, pretty much every Linux ones but also on macOS(!), while NixOS is the Linux distribution based on Nix itself.

GuixSD

Similar to NixOS is GuixSD, a libre Linux distribution based on the guix package manager. It’s basically the same distribution as NixOS except that the configuration files for the system are written not in a special DSL but with Scheme (a Lisp dialect). So if you are already familiar with Lisp or even with Scheme itself, you should be able to learn how to use and maintain GuixSD pretty fast.

GuixSD has a pretty extensive documentation, although I don’t find it to always be very clear.

Just like above, be aware not to mistake Guix for GuixSD; Guix is a package manager that can be installed on a lot of UNIX-like systems (mainly Linux ones, I don’t know if it’s possible to install it elsewhere aside from GNU/Hurd) while GuixSD is the whole operating system based on this package manager.

As a Lisp lover, I would definitively switch to this operating system if it weren’t for its hostility towards nonfree and proprietary software and packages –my WiFi won’t work unless I install the nonfree Linux kernel from unofficial repositories, kernel which is recompiled each time it is upgraded– and a lot of software and packages need custom packaging so you can install them. I love to tinker, but as much as spending literally hours on getting everything I need correctly packaged for GuixSD. Some people are fine with that though, such as SystemCrafters who creates great content for Emacs and Guix users.