*nix workflow after nearly a decade (raw braindump)

April 13, 2026

I was asked a few times from members of my university's cybersecurity club (I was a former e-board member and it's my main club) over the past months of how I use a computer since apparently how I use it is different from how others do it. They also found it fascinating that I used Linux/*BSD for as long as I did, and I'm probably among very few others if any at my university that used it for like 9.5 years. It's organized in what got me into this in the first place, my OS-hopping, my editor-hopping, what my current workflow is, and my (maybe lack of meaningful) thought process behind each switch. The TL;DR of that is I'm like a purist (primarily with the UNIX philosophy) and minimalist (reducing "bloat" as much as possible) and that guided a lot of my decisions up till now at the end of college. Any mistakes I made or any "cringe" I did like being a 4chan /g/ kid can be blamed on me being 12/13 at the time. The following is the raw braindump before I condensed it into point form.


I was introduced to Linux via Luke Smith's early video on why use terminal programs. Then by watching his other videos, I got introduced to stuff like different kinds of distros (he used Parabola at the time and Parabola's wiki in 2017 hadn't removed the beginners guide page unlike Arch wiki, though in hindsight they're basically the same), tiling window managers (i3, dwm), suckless movement and minimalism (was the start of me obsessing over purism even to my detriment sometimes as in spending too much time that I miss deadlines), using LaTeX for documents and presentations, etc. This was during his early days back in 2017 and 2018, before he quit being a linguist professor in Georgia and moved to a cabin in Florida and now complains about les youths. I didn't watch other Linux-related channels until more recently with David Wilson's System Crafters for Emacs and Guix (more on this at the very end, it's a recent change that fundamentally changed how I do stuff, this will come up a lot).

This put me on the path of both distro-hopping and WM-hopping. Reminder that I started this journey when I was 12 (now 21) so I had lots of time on my hands. I started with Parabola and then switched to Arch shortly after for wifi drivers, then setup Gentoo through reading its handbook to learn about Linux more, and then later did a full LFS+BLFS twice, then CRUX, Sabotage, KISS, Alpine, and then switched between them depending on what little thing annoyed me at the time. Of these, CRUX really made me feel at "home" with giving me just enough packages for a minimal base and I liked being a package maintainer for a short while. I found CRUX through z3bra on the nixers.net forum talking about the differences between it and Gentoo. Sabotage (the way it did stuff was unique and interesting to me at the time but only used for one hop) and KISS (what I wished CRUX was but because it didn't have the drunk tux mascot I didn't use it much beyond a couple hops) from people on IRC and XMPP. I learned a lot about system administration and writing my own packages through distro-hopping. Eventually, the choices converged to Arch (if I wanted something easy), CRUX (because it made me feel fuzzy inside), Gentoo (USE flags put me further on the path of purism, not as much need to maintain so many packages in my overlay unlike CRUX). I later also found out about the BSDs in my goal of more minimalism and purism. It being direct descendants of the venerable Bell Labs's Research UNIX. FreeBSD was what I wished Linux was and I liked its better documentation and integrated first-class ZFS support. OpenBSD I loved for its documentation, focus on security above all else, tight-knit and knowledgeable mature community (unlike with most of Linux), package management feeling more similar to CRUX, mascot, and being Canadian (patriotism I guess). Among the OSes I used the longest without hopping, CRUX, Gentoo, and OpenBSD are the ones I really used. I usually switched away from CRUX due to power user burnout from maintaining packages for adding and making them more minimal, same from Gentoo but to lesser extent due to many other overlays, and from OpenBSD for Windows virtualization at the time and gaming (though I did find out more about FOSS engines and did more retro emulation under OpenBSD). I also had a phase in high school grade 12 with plan9/9front. Really loved the simplicity and elegance of it. Its windowing manager rio/8.5 and acme editor also showed me that mice aren't an inherently bad thing for computer use when designed properly. I couldn't go further with dailying it because my i219-v and r8168 driver wasn't working properly even after I tried patching it with my then meager C skills. Later in college around junior year, I was peer pressured into NixOS from my functional programming friends. I liked the idea behind it and it made systemd somewhat usable, but I disliked the special snowflake DSL (they should have used something else as a base like Haskell or anything else they took inspiration from) and it liked pulling in all sorts of transient dependencies, the exact opposite of what I wanted in Linux since I started using it years ago. What really put me off more than transient deps was poor and inconsistent documentation (like pretty much nothing about flakes: there was a disconnect in documentation of what the broader community used and what upstream deemed stable). But, it had advantages like helping organize my system+home configs and dotfiles all in one place which was very nice. So I briefly tried Guix, but once again without knowing its language was hard to use and also trying to mould my existing suckless+vi non-emacs worklow into it was hard at the time. So I once again switched back and forth between Arch, CRUX, Gentoo, and NixOS despite their shortcomings I detailed earlier: my power user burnout or getting bored. Continuing later for recent switch to Guix+Emacs.

So now about window manager choice. I started with i3 since that's what Luke Smith used and I was curious about how a keyboard-only workflow would look like. It's also what the most popular WM on r/unixporn was. Back in the day when pretty much every post there was either a close-to-default i3-gaps setup or bspwm instead of sway and hyprland now. I then switched to bspwm because it was more minimal and UNIX philosophy like where it split keybind handling into separate program sxhkd. I also used herbstluftwm, the manual tiling was nice. Then comes dwm, my main WM of choice for a long time since it blended minimalism with functionality and also by suckless so was elegant. However, I still did end up switching to spectrwm since it looked similar visually but I found it easier to config. According to my screenshots though, that didn't last for long. I think I only stayed on it for a few months before switching back to dwm. I did briefly try out sway to see if Wayland was really all that great, but ultimately switched back to dwm again, and only really used it when I felt too lazy to setup Xorg on a new system and not using my pre-existing configs. Again, continuing later for my recent switch to Guix+Emacs.

Missing what editor I used is criminal for this kind of topic. Going back to before Linux, I used Eclipse for Java and Notepad++ for regular stuff, and then I think I used Atom for a brief period of time (VS Code wasn't out yet or something in 2016/17). I didn't do much programming back then, partly because getting dependencies and compiling anything is a pain if my experience with compiling aseprite (sprite editor with cmake buildsystem) was anything to go off of. When I started using Linux, I also started with Vim. Programs like it were what got me to switch in the first place. Turns out learning your tools is important (and that comes up a lot). Even back then I didn't like using much of the pre-made configs, they were bloated and harder to reason about as a new user since defaults were changed. Also had a brief stint with Emacs, but not knowing basic Lisp made it hard to "know" it and it was bloated (common joke is it's an operating system that lacks a good editor) and also not optimized on Windows (same config from Linux) where it was just noticeably more sluggish on muh gamin' laptop when running Win10 instead of like Arch or Gentoo. After learning Vim enough like how to move easily and basic ex commands, I of course wanted more minimalism. Had a nice time with vis and nvi, used them for a while. In my plan9 phase, I used acme briefly and learned a lot about sam through its manual, which also taught me how to use ed the standard text editor, which also taught me (basic) regex which I can't overstate how much better it made editing files in addition to vi motions.

Finally, my current workflow and choices. It's now all based around Lisp and Scheme because they make me feel all fuzzy inside when learning it, just like I did when learning to use Linux in middle school and how to program in C. The propaganda that got me into using this now was when I heard about the Lispy Gopher Show when I was briefly on the Fediverse through Prahou (the author/artist of unix_surrealism from analog_nowhere). While I did briefly use Emacs in the past, I did not learn it properly. As in, not knowing Lisp meant I needed to look a lot of things up instead of just writing them myself. Technically with the vi-like editors, I also didn't write scripts in them nor needed to touch their config due to how minimal they already were by default and that regex+vi-motions going a long way and there being packages to bridge the remaining gap for integrations. But with Emacs, the parentheses I guess made it more daunting or something. This sort of mirrors what I did when I first got into Linux (well Arch) as I read a lot through its wiki. But compared to just regular system administration where you run a bunch of commands or even making your own distro via LFS, I guess properly learning an editor and its programming language was too much for me at the time. For new Emacs users, it was also recommended a lot that they use a pre-made opinionated config like Doom-Emacs or Spacemacs (neovim has a similar situation) and that really put me off since that felt like I would be learning instead how those work instead of the editor itself. Now that I know some functional programming through OCaml and to some extent Nix from a couple summers ago, learning Lisp and Scheme was actually much easier. Compared to using a vi-like editor, using Emacs seemed nicer for working with these kinds of languages since I can selectively execute parts of a program, simliar to something like Jupyter notebook without it being so web- and Python-focused and being an inefficient use of system resources. The main reason why I did not want to use Emacs previously was that it seemed like a monolithic kitchen sink of everything. I think it being described as an operating system within an operating system isn't too much of an inaccurate description. However, compared to Linux and Xorg proper where I tried following minimalism and the UNIX philosophy as much as I could (i.e. small, minimal, self-contained programs for a specific task), there was not much cohesion between them. At most, they'll have vi-keybinds and happen to use ncurses but the layout of everything looks different and configured with different syntaxes (e.g. mutt the mail client looks different from newsboat the RSS reader and different from lynx and links2). Meanwhile with Emacs, yes there are multiple packages and yes I'm not necessarily using POSIX shell scripts for connecting things together, but Lisp is a more powerful language than something like shell that depends on other programs (written in other languages) to do even simple stuff. With Emacs, I now have everything integrated into a single program, everything properly goes through text-based buffers, and as a result is even easier to integrate around because everything is primarily text. Also previously, some popular packages that people use also seemed like it may have contributed to Emacs's bloat in my point of view at that time like /needing/ something like ivy or helm. There's better packages available that do the same thing now, like orderless (for fuzzy searching) combined with vertico (for the vertical complete menu that ivy gave), and consult for better autocomplete for various existing Emacs functions, among other stuff. Now it's my main editor since like last summerish, and I configured it to be my editor, Scheme programming via Geiser, Lisp via just Emacs (since for now I'm mainly using Emacs Lisp and not Common Lisp+SLIME) and using the eval-* functions a lot (for both Lisp and Scheme), document editing and task planning and habit tracking through org-mode (some people use Emacs just for org-mode since it's much more than just a markup language), email through notmuch+mbsync+msmtp (stayed pretty much the same except I'm using notmuch.el directly instead of through like mutt or aerc), RSS through elfeed, browsing primarily through eww (though I have to use qutebrowser for js-heavy sites like Canvas), document viewing through pdftools and docview instead of through mupdf (though for some larger PDFs like textbooks, mupdf is just faster but not needed for most of my PDFs), backgrounded programs through dtach and its associated emacs management package instead of tmux, gptel for interacting with my local LLMs running on my desktop through vllm, and finally as my X window manager via EXWM instead of dwm or any other WM I used to use in the past. Works well when playing games too like Elite Dangerous, Emacs doesn't get in the way.

I know this was very ramble-y. I just braindumped since there's so much to cover and a lot of stuff to remember over the past 9 years that I couldn't think in a more organized way without having all of it written down. I probably missed some stuff, so any questions?


In the actual presentation, I missed mentioning my peripherals (a Ferris Sweep with Kailh Choc Ambient Nocturnal switches for laptop, Corne with Zealios Zilent v2 switches for my desktop, and a Ploopy Adept as my mouse for both) as well since that's also different from how most people use it, as well as my current project "X380", a modded stripped-down X280 (I'll make a post when it's more finalized after fixing my 3D printer).