blog

Personal blog
git clone git://git.laack.co/blog.git
Log | Files | Refs

my-favorite-piece-of-software.md (5881B)


      1 # The My Favorite Piece of Software
      2 
      3 ## Some Possible Options
      4 
      5 To start, I'd like to list the software I use frequently that I don't detest. This list is short so it will be exhaustive, and from there I will filter down the list.
      6 
      7 - Browsers
      8     - Qutebrowser
      9     - Librewolf
     10     - Lynx
     11 - Mail clients
     12     - Thunderbird
     13 - Text Editors
     14     - Neovim
     15 - Operating Systems
     16     - GNU/Linux
     17     - OpenBSD
     18     - FreeBSD
     19 - Tools
     20     - Git
     21     - Fzf
     22     - Dmenu
     23     - TCC
     24     - GCC
     25     - Rsync
     26     - Unison
     27 - Document Conversion/Viewing
     28     - Pandoc
     29     - PDFLatex
     30     - Zathura
     31 - Window Managers
     32     - DWM
     33 - Other
     34     - Newsboat
     35     - DVTM
     36     - Tmux
     37     - St
     38     - Entr
     39 
     40 ## Filtering
     41 
     42 I like Lynx quite a bit, but most of the other browsers feel like the lesser of evils. In particular, I don't think JavaScript on the web is a good idea (JavaScript is basically just RCE in a *controlled* environment), but I also realize it is a requirement for the modern web, and sometimes I am compelled to use some modern websites.
     43 
     44 I quite like Thunderbird's simplicity to use. I have found mail clients like mutt and neomutt a bit difficult to get working with mainstream email hosting providers, and Thunderbird simplifies this greatly. It is also extremely easy to use OpenPGP with which is great. The only thing I am not a huge fan of with Thunderbird is it is a bit heavy, weighing in at 255.62 MiB (currently) when downloaded via pacman.
     45 
     46 Neovim is a decent text editor. I like its ease of extension, but there are some built in features, like a terminal, that I'd prefer if they didn't exist. It would be reasonable if there was a plugin to add that, but I dislike that it is shipped with the product.
     47 
     48 GNU/Linux, OpenBSD, and FreeBSD are all good operating systems with their own benefits and drawbacks. I struggle to say any are my favorite piece of software though because they are all very complicated. This makes sense because each of them supports a wide variety of hardware, but it saddens me a bit that different hardware requires special considerations as this really shouldn't be the case. 
     49 
     50 Git has many features I don't want and rebasing allows for easy rewriting of history. I'm on the fence about whether rewriting history should even exist, but making it easy is something I *really* don't want.
     51 
     52 Fzf is phenomenal at its job. It functions similarly to dmenu except from the terminal. Unfortunately, it is written in Go.
     53 
     54 TCC and GCC are the two C compilers I use. GCC is quite slow so while it is very good at optimization, it isn't my favorite. TCC is honestly awesome. It is so fast and just works. It compile C code and that's that. 
     55 
     56 Rsync and Unison are my preferred ways to synchronize files between systems. Unison can be a bit tedius to ensure directories stay synchronized because of how hard it is to merge file changes (heck, that's why VCSs exist). This isn't an issue with Unison, moreso the issue it's trying to resolve.
     57 
     58 Pandoc is pretty awesome. It converts across (pan) document types in a performant manner and gives descriptive errors when things go wrong.
     59 
     60 PDFLatex is the latex to PDF converter I use. Some people seem to have compatibility issues with it, but my LaTeX needs are quite limited so it does the job. That said, I find LaTeX's slowness a bit annoying. Understandable, but annoying. As such, no LaTeX tooling can be my favorite piece of software.
     61 
     62 Zathura is a document viewer that relies on other renderers, like MuPDF, to display and navigate documents. I quite like Zathura, but I'm not a huge fan of file formats that aren't entirely text based, like PDF, which limits my appreciation for the software. 
     63 
     64 DWM is a pretty good tiling window manager. It is simple, performant, and portable.
     65 
     66 Newsboat is the best RSS feed reader I have used. It is however written in C++ which is not my preference.
     67 
     68 DVTM is pretty decent, but I've experience some weird issues when reattaching to DVTM sessions with abduco. Also, it sometimes enters into weird states that don't allow text inputs. For these reasons, it isn't the best piece of software. 
     69 
     70 Tmux is a pretty solid piece of software, but it is a bit too featureful. 
     71 
     72 St is the best terminal emulator I have ever used.
     73 
     74 Entr is simple, elegant, and extremely useful for document compilation on file change, and code recompilation on file change.
     75 
     76 ## Filtered List
     77 
     78 Given the above, here is my filtered list of software that might be my favorite:
     79 
     80 - Lynx
     81 - Dmenu
     82 - TCC
     83 - Rsync
     84 - Pandoc
     85 - DWM
     86 - Entr
     87 - St
     88 
     89 Of the items on this list, I'm going to eliminate Entr, Pandoc, and Rsync from the running. Entr does its job and does it well, but its job is very small wrt how I do computing. I mostly use Pandoc for converting to PDF or HTML. While I like the HTML conversion quite a bit, if it were up to me, PDFs wouldn't exist, and thus quite a bit of Pandoc's functionality feels like a symptom of poor choices that led to this point. Rsync is also getting removed from the list because it is too complicated. There are CVEs related to Rsync that make systems vulnerable to exploits in non-trivial ways. There might be vulnerabilities in St, but they are often mitigated by the fact that St is not a program that uses networking.
     90 
     91 ## Continued Filtering
     92 
     93 We are left with these final five options:
     94 
     95 1. Lynx
     96 2. Dmenu
     97 3. TCC
     98 4. DWM
     99 5. St
    100 
    101 I can eliminate Dmenu because while it is good, I prefer non-graphical software to graphical software in most cases. From here, eliminating more pieces of software is exceedingly difficult. Each of the remaining pieces of software are extremely useful, and designed impeccably. 
    102 
    103 1. Lynx
    104 2. TCC
    105 3. DWM
    106 4. St
    107 
    108 I'm going to eliminate DWM and St next. While I appreciate both, I want my computing experience to not require graphical interfaces, and since these are both graphical programs, I am going to eliminate them. 
    109 
    110 1. Lynx
    111 2. TCC
    112 
    113 Lynx is enjoyable to use.