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.