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 Shell (learn to use the command line, that’s pretty important)
- Bash Guide for Beginners (PDF file)
- Learn X in Y minutes Where X=bash
- Bash Scripting Tutorial for Beginners
- Learn Bash Scripting
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.
- The System Administrator’s Guide to Bash Scripting
- Linux Foundation Certified System Administrator (LFCS)
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:
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.
Leadership controversy: a Reddit thread and a HackerNews thread
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.
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.