Some abbreviations are so well known in certain fields that spelling them out in a text written for people experienced with that field isn't that necessary. For people who have any familiarity with this field at all, SAT (and NP in NP-complete, for that matter) are such abbreviations. I'm not against the idea of explaining what SAT stands for either, but your rule clearly doesn't hold up.
EDIT: one point I will agree with though is that the Hacker News title should have been written for a more general audience; something like "Why SAT (boolean satisfiability) is hard". But that's a complaint about the submitter, not the author.
I’ve been out of academics for a while, and at first I thought this was talking about the American college exam.
Feels like the audience that this post is directed to is essentially "an earlier version of the author", which, to be fair, is a common mistake. I anticipate the average HN reader should be able to understand this blog post - I know what the boolean satisfiability problem is but have never seen it abbreviated as just "SAT".
Don't mean to be overly harsh toward the author, but a first step in good writing is to define who your audience is.
I'm curious what else you think of when you see SAT, though?
My bodily arrangement when I ate breakfast
The sixth day of the week according to crontab
Etc etc
In those comments, people complain that they don't understand what kind of gnu you're talking about, that they thought you were talking about wildebeest herding, and they say you obviously should have expanded the GNU abbreviation in the title.
That's what I feel is going on here.
And not just dive in with something like this: „Ever wondered what happens if you open a TTY and APT something?“, more like: „Have you ever wondered what happens if you install Linux packages with APT on the console?“
I agree that GP's rule doesn't apply in all cases (and they did say "rule of thumb," which implies imprecision), but I think it applies to this blog post. The author explains Big-O notation and Turing Machines, but uses the abbreviation SAT without explaining what it means.
The inconsistency is a symptom of the author forgetting to think through their intended audience and what they can be assumed to know already. I see this often on technical blog posts, and it's unfortunate because it's easily fixable.
If the author is trying to reach the type of reader who doesn't immediately recognize terms like "Big-O" or "Turing Machine," then they need to explain SAT more.
As for the previous commenter, all of their examples are pretty much irrelevant to what you are trying to do. A random Linux tutorial doesn't need to spell out CLI acronyms, but if you write an article "Hacking Bash for fun and profit" it's expected you put one paragraph background on bash, and explain the acronym.
Yes, it is generally a good practice.
I would avoid abbreviations if possible: "install xyz with your package manager", "switch to terminal", "run the script", "extract the archive". In your last example, I would ask myself if I need to specify it's a TAR. Does it matter that it's TAR? Are there any other archives in this project?
I agree that you should write for your audience and if you know they are experts like you, you don't have to explain everything. Personally, I err on the side of assuming less and explaining more.
Funny thing is, if you search for SAT on Hacker News [1] is has results for both satisfiability problems and admission tests. Even funnier is that in the second context, SAT nowadays means just SAT.