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.