site_vineetk

Source for vineetk.net website
Log | Files | Refs | LICENSE

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).