Here’s a brief tour of my Linux/NIX setup. (Plus some software recommendations.)

If you just want my dotfiles, they are available here.

distro

Kiss Linux, honestly there isn’t anything better. I remember stumbling on it all the way back in early 2020, however I didn’t start using it until mid 2021 (when I had enough time to go through configuring the kernel for the first time). I like the distro so much that I maintain multiple repos for it.

If you want absolute control over your system, along with the best port system, there really is no other option.

honorable mentions

If there was a world where kiss did not exist, and my tolerance for reading random wiki articles was higher, I would likely use gentoo, since I am fully on the source-based distro train.

For binary distros though, Void, Artix, and Guix are promising alternatives. Just try to avoid systemd & Red Hat when you can :)

The *BSDs are also a good option!

editor

Emacs is far and away the best text editor I have used. I do need to mention that I do use Vim bindings, since I grew up on vim, as I’ve been using it since I was 15. I chose to move over to Emacs after I grew frustrated with how tedious & arcane it was to develop my own plugins.

While I did use vim (evil) bindings for the first couple years of using Emacs, I’ve now moved over to using the vanilla keybindings for a multitude of reasons. The bindings are not that bad once you get used to them, and more of Emacs will just work once you switch to them.

Emacs isn’t really an editor in the traditional sense. It, like lisp, changes the way that you think about interacting with your computer. Much of life on the computer can be navigated through text buffers. Emacs optimizes for this way of working.

If you’d like to check out my configuration for Emacs, it’s available here. I may add some articles detailing specific parts of my configuration (since I think they would be useful to a more general audience).

honorable mentions

neovim - I used to use this way back in the day, and I even still have a barebones config still kicking around. I ended up leaving neovim because of the community, not the lack thereof, but the high volume of medium quality, re-inventions of the wheel.

windowing system

For X11:

I personally use both of these window managers, however each has a slightly different use case. I use stumpwm on my main laptop/development machine, since I will have quicklisp and all of the dependencies already installed. EXWM is a better choice on binary distros, since nearly every Linux distro has Emacs packaged in their repos.

For Wayland:

If Wayland works for your machine, and you’re on the Wayland train, dwl is one of the better compositors out there. It’s pretty straight forward to configure (much like dwm).

honorable mentions

For X11:

I have heard good things about xmonad, which I hope to try out in the near future, and I have historically been a dwm user.

For Wayland:

mahogany, would be the recommended Wayland display manager, if it were a bit farther along in it’s development. It’s really just waiting for a lisp hacker to get frustrated enough with X11 screen tearing before it’ll be amazing.

programming language

I tend to use whatever is best suited to solve the specific problem.

If I had to pick a favorite, I’m definitely partial to the Lisp family of languages.

recommendations

If you’re looking for languages to learn, there really aren’t any “bad” options. If anything, languages really are only a vessel to learn the embedded paradigms that they are well suited to express. So I would pick any language who’s general paradigm is different from the current paradigms that you know already.

If you’re a C programmer, try out ruby. Or if you know Java, try out Clojure. The real goal is to expand your breadth of knowledge and increase the different models of thought that you can use to solve problems.

Here is a undoubtedly “controversial” list of paradigms with an associated language.

The controversy is only due to PL people being very opinionated as to what the ideal language to learn each of the paradigms is. The more important aspect of programming languages is to learn the paradigms and semantics, and the syntax will come more naturally. Ultimately syntax errors will get caught by the compiler anyways :)

Ultimately it’s more important to learn how to program than to learn any programming language. The ideas transcend the languages that they are expressed in.

I’d also say that I am entirely uninterested in languages that have no clear bootstrap chain, and ones that have heaps of syntax. This stems from reflections on Trusting Trust, as well as my general aversion to the over-engineering of typically simple concepts. You can imagine what languages this reasoning applies to.

I’m almost certain to expand on this further in a future blog article…