workflow_9years.md (14475B)
1 title: *nix workflow after nearly a decade (raw braindump) 2 date: 2026-04-13 12:00 3 --- 4 5 I was asked a few times from members of my university's cybersecurity 6 club (I was a former e-board member and it's my main club) over the 7 past months of how I use a computer since apparently how I use it is 8 different from how others do it. They also found it fascinating that I 9 used Linux/*BSD for as long as I did, and I'm probably among very few 10 others if any at my university that used it for like 9.5 years. It's 11 organized in what got me into this in the first place, my OS-hopping, 12 my editor-hopping, what my current workflow is, and my (maybe lack of 13 meaningful) thought process behind each switch. The TL;DR of that is 14 I'm like a purist (primarily with the UNIX philosophy) and minimalist 15 (reducing "bloat" as much as possible) and that guided a lot of my 16 decisions up till now at the end of college. Any mistakes I made or 17 any "cringe" I did like being a 4chan `/g/` kid can be blamed on me 18 being 12/13 at the time. The following is the raw braindump before I 19 condensed it into point form. 20 21 --- 22 23 I was introduced to Linux via Luke Smith's early video on why use 24 terminal programs. Then by watching his other videos, I got introduced 25 to stuff like different kinds of distros (he used Parabola at the time 26 and Parabola's wiki in 2017 hadn't removed the beginners guide page 27 unlike Arch wiki, though in hindsight they're basically the same), 28 tiling window managers (i3, dwm), suckless movement and minimalism 29 (was the start of me obsessing over purism even to my detriment 30 sometimes as in spending too much time that I miss deadlines), using 31 LaTeX for documents and presentations, etc. This was during his early 32 days back in 2017 and 2018, before he quit being a linguist professor 33 in Georgia and moved to a cabin in Florida and now complains about les 34 youths. I didn't watch other Linux-related channels until more 35 recently with David Wilson's System Crafters for Emacs and Guix (more 36 on this at the very end, it's a recent change that fundamentally 37 changed how I do stuff, this will come up a lot). 38 39 This put me on the path of both distro-hopping and 40 WM-hopping. Reminder that I started this journey when I was 12 41 (now 21) so I had lots of time on my hands. I started with Parabola 42 and then switched to Arch shortly after for wifi drivers, then setup 43 Gentoo through reading its handbook to learn about Linux more, and 44 then later did a full LFS+BLFS twice, then CRUX, Sabotage, KISS, 45 Alpine, and then switched between them depending on what little thing 46 annoyed me at the time. Of these, CRUX really made me feel at "home" 47 with giving me just enough packages for a minimal base and I liked 48 being a package maintainer for a short while. I found CRUX through 49 z3bra on the nixers.net forum talking about the differences between it 50 and Gentoo. Sabotage (the way it did stuff was unique and interesting 51 to me at the time but only used for one hop) and KISS (what I wished 52 CRUX was but because it didn't have the drunk tux mascot I didn't use 53 it much beyond a couple hops) from people on IRC and XMPP. I learned a 54 lot about system administration and writing my own packages through 55 distro-hopping. Eventually, the choices converged to Arch (if I wanted 56 something easy), CRUX (because it made me feel fuzzy inside), Gentoo 57 (USE flags put me further on the path of purism, not as much need to 58 maintain so many packages in my overlay unlike CRUX). I later also 59 found out about the BSDs in my goal of more minimalism and purism. It 60 being direct descendants of the venerable Bell Labs's Research 61 UNIX. FreeBSD was what I wished Linux was and I liked its better 62 documentation and integrated first-class ZFS support. OpenBSD I loved 63 for its documentation, focus on security above all else, tight-knit 64 and knowledgeable mature community (unlike with most of Linux), 65 package management feeling more similar to CRUX, mascot, and being 66 Canadian (patriotism I guess). Among the OSes I used the longest 67 without hopping, CRUX, Gentoo, and OpenBSD are the ones I really 68 used. I usually switched away from CRUX due to power user burnout from 69 maintaining packages for adding and making them more minimal, same 70 from Gentoo but to lesser extent due to many other overlays, and from 71 OpenBSD for Windows virtualization at the time and gaming (though I 72 did find out more about FOSS engines and did more retro emulation 73 under OpenBSD). I also had a phase in high school grade 12 with 74 plan9/9front. Really loved the simplicity and elegance of it. Its 75 windowing manager rio/8.5 and acme editor also showed me that mice 76 aren't an inherently bad thing for computer use when designed 77 properly. I couldn't go further with dailying it because my i219-v and 78 r8168 driver wasn't working properly even after I tried patching it 79 with my then meager C skills. Later in college around junior year, I 80 was peer pressured into NixOS from my functional programming 81 friends. I liked the idea behind it and it made systemd somewhat 82 usable, but I disliked the special snowflake DSL (they should have 83 used something else as a base like Haskell or anything else they took 84 inspiration from) and it liked pulling in all sorts of transient 85 dependencies, the exact opposite of what I wanted in Linux since I 86 started using it years ago. What really put me off more than transient 87 deps was poor and inconsistent documentation (like pretty much nothing 88 about flakes: there was a disconnect in documentation of what the 89 broader community used and what upstream deemed stable). But, it had 90 advantages like helping organize my system+home configs and dotfiles 91 all in one place which was very nice. So I briefly tried Guix, but 92 once again without knowing its language was hard to use and also 93 trying to mould my existing suckless+vi non-emacs worklow into it was 94 hard at the time. So I once again switched back and forth between 95 Arch, CRUX, Gentoo, and NixOS despite their shortcomings I detailed 96 earlier: my power user burnout or getting bored. Continuing later for 97 recent switch to Guix+Emacs. 98 99 So now about window manager choice. I started with i3 since that's 100 what Luke Smith used and I was curious about how a keyboard-only 101 workflow would look like. It's also what the most popular WM on 102 r/unixporn was. Back in the day when pretty much every post there was 103 either a close-to-default i3-gaps setup or bspwm instead of sway and 104 hyprland now. I then switched to bspwm because it was more minimal and 105 UNIX philosophy like where it split keybind handling into separate 106 program sxhkd. I also used herbstluftwm, the manual tiling was 107 nice. Then comes dwm, my main WM of choice for a long time since it 108 blended minimalism with functionality and also by suckless so was 109 elegant. However, I still did end up switching to spectrwm since it 110 looked similar visually but I found it easier to config. According to 111 my screenshots though, that didn't last for long. I think I only 112 stayed on it for a few months before switching back to dwm. I did 113 briefly try out sway to see if Wayland was really all that great, but 114 ultimately switched back to dwm again, and only really used it when I 115 felt too lazy to setup Xorg on a new system and not using my 116 pre-existing configs. Again, continuing later for my recent switch to 117 Guix+Emacs. 118 119 Missing what editor I used is criminal for this kind of topic. Going 120 back to before Linux, I used Eclipse for Java and Notepad++ for 121 regular stuff, and then I think I used Atom for a brief period of time 122 (VS Code wasn't out yet or something in 2016/17). I didn't do much 123 programming back then, partly because getting dependencies and 124 compiling anything is a pain if my experience with compiling aseprite 125 (sprite editor with cmake buildsystem) was anything to go off of. When 126 I started using Linux, I also started with Vim. Programs like it were 127 what got me to switch in the first place. Turns out learning your 128 tools is important (and that comes up a lot). Even back then I didn't 129 like using much of the pre-made configs, they were bloated and harder 130 to reason about as a new user since defaults were changed. Also had a 131 brief stint with Emacs, but not knowing basic Lisp made it hard to 132 "know" it and it was bloated (common joke is it's an operating system 133 that lacks a good editor) and also not optimized on Windows (same 134 config from Linux) where it was just noticeably more sluggish on muh 135 gamin' laptop when running Win10 instead of like Arch or Gentoo. After 136 learning Vim enough like how to move easily and basic ex commands, I 137 of course wanted more minimalism. Had a nice time with vis and nvi, 138 used them for a while. In my plan9 phase, I used acme briefly and 139 learned a lot about sam through its manual, which also taught me how 140 to use ed the standard text editor, which also taught me (basic) regex 141 which I can't overstate how much better it made editing files in 142 addition to vi motions. 143 144 Finally, my current workflow and choices. It's now all based around 145 Lisp and Scheme because they make me feel all fuzzy inside when 146 learning it, just like I did when learning to use Linux in middle 147 school and how to program in C. The propaganda that got me into using 148 this now was when I heard about the Lispy Gopher Show when I was 149 briefly on the Fediverse through Prahou (the author/artist of 150 unix_surrealism from analog_nowhere). While I did briefly use Emacs in 151 the past, I did not learn it properly. As in, not knowing Lisp meant I 152 needed to look a lot of things up instead of just writing them 153 myself. Technically with the vi-like editors, I also didn't write 154 scripts in them nor needed to touch their config due to how minimal 155 they already were by default and that regex+vi-motions going a long 156 way and there being packages to bridge the remaining gap for 157 integrations. But with Emacs, the parentheses I guess made it more 158 daunting or something. This sort of mirrors what I did when I first 159 got into Linux (well Arch) as I read a lot through its wiki. But 160 compared to just regular system administration where you run a bunch 161 of commands or even making your own distro via LFS, I guess properly 162 learning an editor and its programming language was too much for me at 163 the time. For new Emacs users, it was also recommended a lot that they 164 use a pre-made opinionated config like Doom-Emacs or Spacemacs (neovim 165 has a similar situation) and that really put me off since that felt 166 like I would be learning instead how those work instead of the editor 167 itself. Now that I know some functional programming through OCaml and 168 to some extent Nix from a couple summers ago, learning Lisp and Scheme 169 was actually much easier. Compared to using a vi-like editor, using 170 Emacs seemed nicer for working with these kinds of languages since I 171 can selectively execute parts of a program, simliar to something like 172 Jupyter notebook without it being so web- and Python-focused and being 173 an inefficient use of system resources. The main reason why I did not 174 want to use Emacs previously was that it seemed like a monolithic 175 kitchen sink of everything. I think it being described as an operating 176 system within an operating system isn't too much of an inaccurate 177 description. However, compared to Linux and Xorg proper where I tried 178 following minimalism and the UNIX philosophy as much as I could 179 (i.e. small, minimal, self-contained programs for a specific task), 180 there was not much cohesion between them. At most, they'll have 181 vi-keybinds and happen to use ncurses but the layout of everything 182 looks different and configured with different syntaxes (e.g. mutt the 183 mail client looks different from newsboat the RSS reader and different 184 from lynx and links2). Meanwhile with Emacs, yes there are multiple 185 packages and yes I'm not necessarily using POSIX shell scripts for 186 connecting things together, but Lisp is a more powerful language than 187 something like shell that depends on other programs (written in other 188 languages) to do even simple stuff. With Emacs, I now have everything 189 integrated into a single program, everything properly goes through 190 text-based buffers, and as a result is even easier to integrate around 191 because everything is primarily text. Also previously, some popular 192 packages that people use also seemed like it may have contributed to 193 Emacs's bloat in my point of view at that time like /needing/ 194 something like ivy or helm. There's better packages available that do 195 the same thing now, like orderless (for fuzzy searching) combined with 196 vertico (for the vertical complete menu that ivy gave), and consult 197 for better autocomplete for various existing Emacs functions, among 198 other stuff. Now it's my main editor since like last summerish, and I 199 configured it to be my editor, Scheme programming via Geiser, Lisp via 200 just Emacs (since for now I'm mainly using Emacs Lisp and not Common 201 Lisp+SLIME) and using the eval-* functions a lot (for both Lisp and 202 Scheme), document editing and task planning and habit tracking through 203 org-mode (some people use Emacs just for org-mode since it's much more 204 than just a markup language), email through notmuch+mbsync+msmtp 205 (stayed pretty much the same except I'm using notmuch.el directly 206 instead of through like mutt or aerc), RSS through elfeed, browsing 207 primarily through eww (though I have to use qutebrowser for js-heavy 208 sites like Canvas), document viewing through pdftools and docview 209 instead of through mupdf (though for some larger PDFs like textbooks, 210 mupdf is just faster but not needed for most of my PDFs), backgrounded 211 programs through dtach and its associated emacs management package 212 instead of tmux, gptel for interacting with my local LLMs running on 213 my desktop through vllm, and finally as my X window manager via EXWM 214 instead of dwm or any other WM I used to use in the past. Works well 215 when playing games too like Elite Dangerous, Emacs doesn't get in the 216 way. 217 218 I know this was very ramble-y. I just braindumped since there's so 219 much to cover and a lot of stuff to remember over the past 9 years 220 that I couldn't think in a more organized way without having all of it 221 written down. I probably missed some stuff, so any questions? 222 223 --- 224 225 In the actual presentation, I missed mentioning my peripherals (a 226 Ferris Sweep with Kailh Choc Ambient Nocturnal switches for laptop, 227 Corne with Zealios Zilent v2 switches for my desktop, and a Ploopy 228 Adept as my mouse for both) as well since that's also different from 229 how most people use it, as well as my current project "X380", a modded 230 stripped-down X280 (I'll make a post when it's more finalized after 231 fixing my 3D printer).