UI -- * Heavily prefer unix filter UI. If you can't do it with filtering, it could mean you should split your function anyway. * Even function can use dash options and even `usagef()`. * Reserved options are * `-q|--quiet`, to turn off verbosity, * `-v|--verbose`, to turn on verbosity, * and `-d|--debug` to turn on debug output (stderr). * Do not `think()` in functions. * Preferred capitalization in messages is: * all small for libs (debug/warn/die) * First cap for scripts * Message width: * think/warn/die: try hard to never exceed 72 * debug: do what you must * always try to split message to fixed part, colon and *before* colon and the "data" part after the colon, e.g.: file missing: /var/run/media/somebody/some-medium/some-long/path instead of: file /var/run/media/somebody/some-medium/some-long/path is missing (even if you think that it will be short) PRINCIPLES ---------- Be smart but honest: if you can default, default, otherwise be honest = fail Don't talk. `think()` instead.