diff options
| author | Vineet Kumar <git@vineetk.net> | 2026-05-05 11:43:52 -0400 |
|---|---|---|
| committer | Vineet Kumar <git@vineetk.net> | 2026-05-05 11:43:52 -0400 |
| commit | c58adc06f9b7cfbe818fb7fd3a68f5b66960a620 (patch) | |
| tree | e536b8de30ec450e2e7ce9c22e44fc5474640aec /posts/workflow_9years.md | |
| parent | b35228ff7370f8d9ef2b45bd09cfb974acf1254d (diff) | |
switched to haunt from hugo
Diffstat (limited to 'posts/workflow_9years.md')
| -rw-r--r-- | posts/workflow_9years.md | 231 |
1 files changed, 231 insertions, 0 deletions
diff --git a/posts/workflow_9years.md b/posts/workflow_9years.md new file mode 100644 index 0000000..9a4c24d --- /dev/null +++ b/posts/workflow_9years.md | |||
| @@ -0,0 +1,231 @@ | |||
| 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). | ||
