You’re in a computer literacy filter bubble — The Autodidacts
this is a terminal command > this is probably Bash or POSIX shell > it’s">
this is a terminal command > this is probably Bash or POSIX shell > it’s">
Skill-testing question: what’s wrong with this snippet?
user@host:~$ rm $FILENAME
You’re still reading. That means it doesn’t look scary. Many of you have already jumped to: this is a code snippet > this is a terminal command > this is probably Bash or POSIX shell > it’s deleting a file > $ doesn’t mean the file is expensive, it means $FILENAME is a variable > the variable is unquoted (!) > this snippet demonstrates one of the most basic and dangerous Bash footguns (see appendix)
You’re still reading. Maybe you understood the above paragraph, or maybe not, but even if you didn’t, you were interested enough to try to understand it, and the fact you’re here means you can fire up a modern computing device, put in a password, connect to the internet, browse to an obscure tech blog, scroll, and absorb strange words into your brain.
You are not normal.
Someone I know started teaching a podcasting course at a better-than-average high school in one of the richest parts of one of the richest countries. After his first day, he told me, with wide eyes, some of the students don’t know how to move or copy a file.
I was shocked. I thought we were the Luddites, and younger generations were running circles around us in the tech literacy department. Some of them are. And most of them are able to operate smartphones. But, copying a file? This is not something human beings are born knowing how to do, and, I now know, not everyone learns how in the natural course of their upbringing.
(Taking what we know for granted plagues all fields, and there’s a name for it: the curse of knowledge. And, of course, a relevant XKCD.)
My technical literacy filter bubble is Hacker News and Lobsters, where it seems like everyone is smarter and more hardcore than I am. I’ve dabbled in Python, Go, Rust, Bash, C, PHP, and JavaScript, but I don’t feel like a real programmer, because I mostly write scripts and websites. Real programmers are the ones that write compilers and desktop applications in Lisp and Zig, and run BSD or QubesOS. Real programmers are the people that are eternally one step ahead of where I am.
If your mother uses Linux, you’re probably in a computer literacy filter bubble.
If you have happy memories of booting from a treasured Live CD and playing Nibbles for Knoppix on a CRT monitor, and both parents programmed mainframes using punch-cards and FORTRAN, and you prefix anything than involves the terminal with “just”, you’re definitely in a computer literacy filter bubble.
Filter bubbles aren’t inherently bad. And there are countless filter bubbles that we aren’t in. I’m not in the mechanical competence filter bubble, and I bet most of us aren’t in the fashion filter bubble. Even if we wanted to, I’m not sure it’s possible to fully escape a tech literacy filter bubble while being tech literate and surrounding yourself with people who are more tech literate. But I think it’s healthy to deliberately poke our heads out of whatever bubbles we’re in once in a while, take in the view, and realize how different it is out there.
Those of us reading, and writing, blogs that routinely talk about writing shell scripts to save keystrokes, measuring brainwaves, preventing servers from crashing, and modifying the software running on embedded devices are so out of touch with the median level of technological literacy, we forget that just knowing how to double-click is a privilege.
Appendix:
It should be: user@host:~$ rm “$FILENAME”, because as it is, if the filename contains spaces, multiple files could be deleted, none of which are the one you were trying to delete. (Or worse, if a bad actor can set the filename variable.)
Suppose you run it, and $FILENAME is 2026-01-21-important-data.sql passwords backup.gz. Your directory tree looks like this:
├── 2026-01-21-important-data.sql<br>├── 2026-01-21-important-data.sql passwords backup.gz<br>├── backup.gz<br>└── passwords
Once you run the command, you don’t have:
├── 2026-01-21-important-data.sql<br>├── backup.gz<br>└── passwords
You have deleted everything other than what you were trying to delete:
└── 2026-01-21-important-data.sql passwords backup.gz
Note: this post is part of #100DaysToOffload, a challenge to publish 100 posts in 365 days. These posts are generally shorter and less polished than our normal posts; expect typos and unfiltered thoughts! View more posts in this series.
Sign up for updates
Join the newsletter for curious and thoughtful people.
Subscribe now!
No Thanks
Great! Check your inbox and click the link to confirm your subscription.
© 2026<br>The Autodidacts
Published with Ghost & Laminim