惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
Blog — PlanetScale
Blog — PlanetScale
H
Help Net Security
The GitHub Blog
The GitHub Blog
博客园 - Franky
酷 壳 – CoolShell
酷 壳 – CoolShell
Recent Announcements
Recent Announcements
量子位
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
Microsoft Azure Blog
Microsoft Azure Blog
Martin Fowler
Martin Fowler
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
A
About on SuperTechFans
T
Tailwind CSS Blog
V
V2EX
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
SegmentFault 最新的问题
G
Google Developers Blog
M
MIT News - Artificial intelligence

Unsung

The surprising richness of GarageBand – Unsung “The pipeline of future experts is thinning from both ends.” – Unsung “It took months to find appliances that didn’t need apps to function.” – Unsung Day for night – Unsung “But obviously, that’s just silly stuff.” – Unsung Within or without – Unsung A few interesting modern pixel fonts – Unsung Google Docs shortcut onboarding – Unsung “Why pay for an orchestra when your computer can do it all?” – Unsung Lisa’s copy (and cut, and paste) – Unsung “This is a common tell in web apps, and we did a lot of work to eliminate it.” – Unsung Chrome’s abnormal tab search – Unsung “Some say it sounds like an alto saxophone.” – Unsung Shallow breathing – Unsung “If you just ignore those pesky impossible details, the demo looks deceptively simple.” – Unsung “Accents are an opportunity, not a burden.” – Unsung Less doesn’t need more – Unsung “Easy to use,” the hard parts – Unsung “We accepted this gradual bloat, but that’s not progress.” – Unsung Safari and system design, pt. 1 – Unsung “193 hours of attempts (and practice)” – Unsung Not a radio pharma ad – Unsung “Cryptic mode was born from a hard constraint.” – Unsung Speaking of wiggling the mouse – Unsung “This is where your mouse becomes a cryptographic instrument.” – Unsung Mailbag: Photoshop’s focus post – Unsung Rug pulled – Unsung Save For Web claws – Unsung “Nothing short of a magic trick” – Unsung “They did the bare minimum and moved on.” – Unsung
“It’s rare that printing nothing at all is the best defau...
Marcin Wichary · 2026-06-20 · via Unsung

Aanand Prasad, Ben Firshman, Carl Tashian, and Eva Parish put together Command Line Interface Guidelines for people who write command-line tools.

I like that it harkens and links back to other writing, and is also pragmatic: shares good parameter-parsing libraries, commonly used options, and so on.

Here are some good principles that caught my attention:

Display output on success, but keep it brief. Traditionally, when nothing is wrong, UNIX commands display no output to the user. This makes sense when they’re being used in scripts, but can make commands appear to be hanging or broken when used by humans. For example, cp will not print anything, even if it takes a long time.

It’s rare that printing nothing at all is the best default behavior, but it’s usually best to err on the side of less.

By default, don’t output information that’s only understandable by the creators of the software. If a piece of output serves only to help you (the developer) understand what your software is doing, it almost certainly shouldn’t be displayed to normal users by default—only in verbose mode.

Catch errors and rewrite them for humans. If you’re expecting an error to happen, catch it and rewrite the error message to be useful. Think of it like a conversation, where the user has done something wrong and the program is guiding them in the right direction. Example: “Can’t write to file.txt. You might need to make it writable by running ‘chmod +w file.txt’.”

Signal-to-noise ratio is crucial. The more irrelevant output you produce, the longer it’s going to take the user to figure out what they did wrong. If your program produces multiple errors of the same type, consider grouping them under a single explanatory header instead of printing many similar-looking lines.

Consider where the user will look first. Put the most important information at the end of the output. The eye will be drawn to red text, so use it intentionally and sparingly.

Make it recoverable. If the program fails for some transient reason (e.g. the internet connection went down), you should be able to hit <up> and <enter> and it should pick up from where it left off.

There’s a lot more inside.

(The document is undated, but I believe the effort started in 2020. It seems to still be updated via GitHub, where you can also send in your suggestions.)