~kris/9p

krisyotam.net

krisyotam.net/d/notes/harmful.html -rw-r--r-- 9.5 KiB
8bfa4b74 — Kris Yotam ci: declare SourceHut source for push builds a month ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Harmful | Kris Yotam</title>
    <link rel="stylesheet" href="../../c/site.css">
    <meta name="description" content="Software, practices, and technologies I consider harmful.">
    <meta name="viewport" content="width=device-width, initial-scale=1">
  </head>
  <body>
    <div class="mode-container">
      <input type="radio" name="theme" id="theme-auto" checked>
      <label for="theme-auto" class="auto" title="Auto theme"></label>
      <input type="radio" name="theme" id="theme-light">
      <label for="theme-light" class="light" title="Light theme"></label>
      <input type="radio" name="theme" id="theme-dark">
      <label for="theme-dark" class="dark" title="Dark theme"></label>
    </div>
    <div class="top-bar" role="navigation">
      <a href="../../index.html" title="Main page"><img src="../../c/sigma.svg" alt="Main page"></a>
      <a href="../../about.html" title="About"><img src="../../c/news.svg" alt="About"></a>
      <a href="#" title="Code"><img src="../../c/code.svg" alt="Code"></a>
      <a href="../../pics.html" title="Photography"><img src="../../c/camera.svg" alt="Photography"></a>
      <a href="#" title="Pictures"><img src="../../c/picture.svg" alt="Pictures"></a>
      <a href="../../vids.html" title="Videos"><img src="../../c/video.svg" alt="Videos"></a>
      <a href="#" title="Donations"><img src="../../c/beer.svg" alt="Donations"></a>
      <a href="#" title="Social"><img src="../../c/elephant.svg" alt="Social"></a>
    </div>
    <h1>Harmful</h1>
    <div class="keepws">
(<span class="bold">notes</span>
  (date 2026-04-23)
  (category <a href="../../notes.html">technology</a>)
  (status <span class="status-growing">growing</span>)
  (confidence likely)
  (importance 6)
  (tags software opinion))
    </div>
    <p class="preview">Software, practices, and technologies I consider harmful.</p>
    <div class="prose">
<h4>Software</h4>
<blockquote>
"And folks, let's be honest. Sturgeon was an optimist. Way more than 90% of code is crap." — Al Viro<br>
</blockquote>
<blockquote>
"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies." — C.A.R. Hoare, The 1980 ACM Turing Award Lecture<br>
</blockquote>
<blockquote>
"One of my most productive days was throwing away 1000 lines of code." — Ken Thompson<br>
</blockquote>
<blockquote>
"..At first I hoped that such a technically unsound project would collapse but I soon realized it was doomed to success. Almost anything in software can be implemented, sold, and even used given enough determination. There is nothing a mere scientist can say that will stand against the flood of a hundred million dollars. But there is one quality that cannot be purchased in this way — and that is reliability. The price of reliability is the pursuit of the utmost simplicity. It is a price which the very rich find most hard to pay." — C.A.R. Hoare<br>
</blockquote>
<blockquote>
"It's a curious thing about our industry: not only do we not learn from our mistakes, we also don't learn from our successes." — Keith Braithwaite<br>
</blockquote>
<table>
<tr><td>Harmful</td><td>Less harmful</td></tr>
<tr><td>Ubuntu, Fedora, Mint, Manjaro.</td><td>Gentoo.</td></tr>
<tr><td>systemd.</td><td>OpenRC.</td></tr>
<tr><td>GNU Coreutils.</td><td>sbase, Plan 9 from User Space.</td></tr>
<tr><td>cron, anacron, fcron.</td><td>scron.</td></tr>
<tr><td>Bash, tcsh, zsh.</td><td>rc, fish.</td></tr>
<tr><td>GNU autoconf/automake, CMake, imake, scons, waf.</td><td>mk, or plain old portable makefiles.</td></tr>
<tr><td>PulseAudio, PipeWire.</td><td>OSS4, ALSA (direct).</td></tr>
<tr><td>systemd-resolved, dnsmasq.</td><td>unbound, knot-resolver.</td></tr>
<tr><td>NetworkManager, systemd-networkd.</td><td>ifconfig, ip, dhcpcd.</td></tr>
<tr><td>GRUB.</td><td>syslinux, EFISTUB.</td></tr>
<tr><td>glibc.</td><td>musl, ucLibc, DietLibc.</td></tr>
<tr><td>systemd-journald, syslog-ng.</td><td>socklog, svlogd.</td></tr>
<tr><td>udev, systemd-udevd.</td><td>mdev, eudev.</td></tr>
<tr><td>elogind, systemd-logind.</td><td>seatd.</td></tr>
<tr><td>SGML, XML, YAML.</td><td>JSON, CSV, ndb(6), plain (UTF-8) text.</td></tr>
<tr><td>NFS, SMB, AFS, WebDAV.</td><td>9p.</td></tr>
<tr><td>C++, Java, Vala, D, Python, Ruby.</td><td>C, Go, Limbo.</td></tr>
<tr><td>GCC.</td><td>8c, tcc.</td></tr>
<tr><td>pthreads (POSIX threads).</td><td>CSP-style concurrency: Go, libthread, libtask, Limbo, Erlang, ...</td></tr>
<tr><td>Perl, Ruby.</td><td>rc, awk.</td></tr>
<tr><td>PCRE.</td><td>Structural Regular Expressions or plain classic/extended regexps (as used in awk, sed, grep, etc.).</td></tr>
<tr><td>GNU Screen.</td><td>tmux, dvtm.</td></tr>
<tr><td>GNU info.</td><td>Man pages.</td></tr>
<tr><td>Glib.</td><td>libc (see above), p9p's C libraries.</td></tr>
<tr><td>GTK, Qt, VxWindows.</td><td>Tk, textual interfaces.</td></tr>
<tr><td>GNOME Lock Screen, KDE Lock Screen, i3lock.</td><td>slock.</td></tr>
<tr><td>GNOME, KDE, XFCE, i3, Sway.</td><td>dwm.</td></tr>
<tr><td>Polybar, Waybar, i3bar.</td><td>dwmblocks.</td></tr>
<tr><td>Rofi, Wofi, Albert.</td><td>dmenu.</td></tr>
<tr><td>VS Code, IntelliJ, Eclipse, Sublime Text.</td><td>nvim (base), vis.</td></tr>
<tr><td>Vim, Emacs, nano.</td><td>Acme, Sam, ed.</td></tr>
<tr><td>Org-mode, Notion, Obsidian.</td><td>Emacs (vanilla + elfeed).</td></tr>
<tr><td>Nautilus, Dolphin, Thunar.</td><td>nnn.</td></tr>
<tr><td>Word, Google Docs, LibreOffice Writer.</td><td>vis, ed.</td></tr>
<tr><td>Evince, Okular, Adobe Reader.</td><td>zathura (pdf, djvu, ps, cb plugins).</td></tr>
<tr><td>Eye of GNOME, feh, sxiv.</td><td>nsxiv.</td></tr>
<tr><td>VLC, Celluloid.</td><td>mpv.</td></tr>
<tr><td>Spotify, Apple Music, YouTube Music.</td><td>mpd + ncmpcpp.</td></tr>
<tr><td>htop, glances.</td><td>btop.</td></tr>
<tr><td>Google Calendar, Outlook.</td><td>calcurse.</td></tr>
<tr><td>Newsboat.</td><td>sfeed.</td></tr>
<tr><td>Thunderbird (for Usenet).</td><td>tin.</td></tr>
<tr><td>HexChat, WeeChat, irssi.</td><td>catgirl, sic.</td></tr>
<tr><td>Slack, Discord, Teams.</td><td>IRC (catgirl, sic).</td></tr>
<tr><td>Compiz, Mutter, KWin.</td><td>picom.</td></tr>
<tr><td>notify-osd, Mako.</td><td>dunst.</td></tr>
<tr><td>Google Contacts, GNOME Contacts.</td><td>abook.</td></tr>
<tr><td>neofetch, screenfetch.</td><td>fastfetch.</td></tr>
<tr><td>PowerPoint, Google Slides, Impress.</td><td>sent.</td></tr>
<tr><td>Figma, Sketch, Canva.</td><td>inkscape, gimp.</td></tr>
<tr><td>qBittorrent, Transmission, Deluge.</td><td>rtorrent.</td></tr>
<tr><td>Mullvad app, NordVPN, ExpressVPN.</td><td>Mullvad VPN (CLI), openvpn, proxychains-ng.</td></tr>
<tr><td>1Password, LastPass, Bitwarden.</td><td>pass.</td></tr>
<tr><td>Greenclip, CopyQ, Clipman.</td><td>xclipboard.</td></tr>
<tr><td>Flameshot, Spectacle, Shutter.</td><td>scrot.</td></tr>
<tr><td>uBlock Origin hosts, Pi-hole.</td><td>Custom hosts file.</td></tr>
<tr><td>Raindrop, Pocket, browser bookmarks.</td><td>buku.</td></tr>
<tr><td>Docker Desktop, Portainer.</td><td>lazydocker.</td></tr>
<tr><td>UTF-16, UTF-32, Latin-1, other encodings.</td><td>UTF-8.</td></tr>
<tr><td>iSCSI, FCoE.</td><td>AoE (ATA over Ethernet).</td></tr>
<tr><td>PAM (Pluggable Authentication Modules).</td><td>Factotum.</td></tr>
<tr><td>Jabber and XMPP.</td><td>IRC (for IM), STOMP (for general distributed messaging).</td></tr>
<tr><td>IMAP.</td><td>SMAP (Simple Mail Access Protocol).</td></tr>
<tr><td>SQL databases.</td><td>Tutorial D, pq, BigTable, plain old hierarchical filesystems.</td></tr>
<tr><td>Subversion, aka svn.</td><td>Git, Mercurial (aka hg); hell, even CVS or plain old tarballs would be better than svn.</td></tr>
<tr><td>FreeBSD, NetBSD, Solaris.</td><td>OpenBSD.</td></tr>
<tr><td>Apache, lighttpd.</td><td>thttpd, OpenBSD's fork of apache 1.3, nginx, or best of all: don't use HTTP.</td></tr>
<tr><td>SVG.</td><td>PS (PostScript).</td></tr>
<tr><td>PDF.</td><td>PS (PostScript), DjVu.</td></tr>
<tr><td>EPUB.</td><td>DjVu.</td></tr>
<tr><td>GPL, LGPL, Apache Software License, MPL, CC.</td><td>ISC, MIT/X, BSD, CC0, public domain.</td></tr>
<tr><td>head.</td><td>sed 11q.</td></tr>
</table>
<h4>Internet</h4>
<blockquote>
"If you're not paying for the product, you are the product." — often attributed to Andrew Lewis<br>
</blockquote>
<blockquote>
"Surveillance capitalism unilaterally claims human experience as free raw material for translation into behavioral data." — Shoshana Zuboff<br>
</blockquote>
<table>
<tr><td>Harmful</td><td>Less harmful</td></tr>
<tr><td>Social media (Facebook, Twitter, Instagram, TikTok).</td><td>Forums, Usenet, IRC, federation (ActivityPub, Matrix).</td></tr>
<tr><td>Age verification.</td><td>Say no to verification.</td></tr>
<tr><td>Chrome, Edge, Safari (Chromium-based).</td><td>Ungoogled Chromium, Thorium, Brave.</td></tr>
<tr><td>Firefox (Mozilla-based).</td><td>LibreWolf, IceCat.</td></tr>
<tr><td>All of the above (GUI browsers).</td><td>nyxt, qutebrowser, surf.</td></tr>
<tr><td>Upcummies and downcummies.</td><td>Try leaving a useful comment, sluggard.</td></tr>
</table>
<h4>Finance</h4>
<table>
<tr><td>Harmful</td><td>Less harmful</td></tr>
</table>
<h4>Literature</h4>
<table>
<tr><td>Harmful</td><td>Less harmful</td></tr>
</table>
<h4>Mathematics</h4>
<table>
<tr><td>Harmful</td><td>Less harmful</td></tr>
</table>
<h4>Media</h4>
<table>
<tr><td>Harmful</td><td>Less harmful</td></tr>
</table>
<h4>Society</h4>
<table>
<tr><td>Harmful</td><td>Less harmful</td></tr>
</table>
    </div>
  </body>
</html>