I Now Enjoy Simple Computing

Posted on Feb 20, 2021

It took me years to actually take the step forward. My good friend and amazing fellow developer Rubén Santos will tell you how many years he invested in showing me the virtues of going suckless, the beauty of named pipes, of POSIX-compatible C code and shell scripts… I needed to do it one step at a time, but… hey… I’m now at a place where I feel very proud of my current setup!

I always liked the terminal, but I’ve gotten to the point where the things I do in a GUI are… hm… web browsing, image editing, opening images and videos, reading PDFs, and that’s it. My desktop is based on SwayWM, termite is my best friend, I launch a couple of things through bemenu and keyboard shortcuts… and some things are based on scripts written by myself… My file manager is nnn.

It sounds elitist. I know. I’ve been there, on the camp of people who thought using almost none GUI programs, a WM instead of a DE, and bragging about the last clever pipeline you wrote to chain lots of CLI tools together was… elitist.

You know what? It requires learning a lot of things and you need time and solid foundations to use a setup like this… but, girl, how much more efficient everything is! It’s a charm! And I know I could go further into the rabbit hole… (e.g. Using a MUSL-based distro? Plan9 userland tools instead of GNU? dwm instead of sway? Oh, the temptation!).

For me, tinkering is a very, very, very important part in my computing experience. Simple, elegant, small tools make that extremely easy. You know, the UNIX philosophy is meant to be that: to use pipelines to combine tools in clever ways in a script… or to write a new (small) tool if you feel you need one. When you start thinking the UNIX way, you start seeing I/O paths everywhere and wished more programs took advantage of named pipes and using the filesystem as a natural database that is already there for your use. When everything is atomic and clearly defined, it’s like playing with Lego pieces!

In fact, there’s a question my aforementioned friend Rubén sort of meditated upon some days ago: sed, awk, grep, and the POSIX toolchain is way more than enough to do lots of tasks people try to solve by introducing new dependencies like Python. I have my opinion on Python and similar languages, but I’ll be a good, nice girl today and not get into a huge rant about them. However, this is a very, very interesting point to address: any Unix-like OS brings a set of highly efficient tools, and the means to combine and abstract them, for you to do quite a lot of things with… and in a totally portable way!

I know this is not something you can tell people and expect them to immediately feel what you feel. But the feeling I get of an expanded horizon and calmness when using my system is amazing. For example, I’m the sysadmin for a website of an NGO I’m part of. For reasons I won’t get into, that site is based around WordPress. I feel stressed out by it, because I know it’s a huge PHP program hooked to the web server and a database… and therefore there are lots of little, teeny-tiny things you must control for if you want the site to work and be secure. On the other hand, this site, generated in Hugo, brings me a feeling of relax: it’s just a matter of writing and publishing stuff into it (and Hugo could make a way better job in how themes are used, in my opinion). I know I could easily take the source Markdown files and use some other static-site generator if one day I feel bored or annoyed by Hugo. Or that I can use my trusty POSIX tools to do all kinds of things to my source files!

And let’s not get into C, cause I’m in love with C. POSIX-compliant C is the best thing ever and probably the only language you should ever need for general programming on Unix-like systems. If you want to create programs that add up to the enjoyment of simple, yet powerful computing, please use C. Why I think so is a topic for another day, though. I’m not going to burn all topics at once on my very first post, don’t you think?