Some ideas from this strange colored book served as inspirations for the stuff on http://www.forkable.eu.
The Unix Philosophy by Mike Gancarz ISBN:1–555558-123–4. Copyright 1995 Butterworth-Heinemann. Copied from here. There: Reprinted with Permission of Digital Press
- Small programs are easy to understand.
- Small programs are easy to maintain.
- Small programs consume fewer system resources.
- Small programs are easier to combine with other tools.
- “The best program…does but one task in its life and does it well.”
- “The program is loaded into memory, accomplishes its function, and then gets out of the way to allow the next single-minded program to begin.”
- Prototyping is a learning process.
- Early prototyping reduces risk.
- Next —‘s hardware will run faster.
- Don’t spend too much time making a program run faster.
- The most efficient way is rarely portable.
- Good programs never die — they are ported to new hardware platforms.
- ASCII text is a common interchange format.
- ASCII text is easily read and edited.
- ASCII data files simplify the use of Unix text tools.
- Increased portability overcomes the lack of speed (of flat ASCII text files…)
- The lack of speed is overcome by next year’s machine.
- Good programmers write good code; great programmers “borrow” good code.
- Avoid the not-invented-here syndrome.
- Allow other people to use your code to leverage their own work.
- Automate everything.
- Shell scripts give you awesome leverage
- Shell scripts leverage your time, too.
- Shell scripts are more portable than C.
- Resist the desire to rewrite shell scripts in C.
- CUIs assume that the user is human.
- CUI command parsers are often big and ugly to write.
- CUIs tend to adopt a “big is beautiful” approach.
- Programs having CUIs are hard to combine with other programs.
- CUIs do not scale well.
- CUIs do not take advantage of software leverage.
- Every program written since the dawn of computing is a filter.
- Programs do not create data — people do.
- Computers convert data from one form to another.
- Use stdin for data input;
- Use stdout for data output;
- Use stderr for out-of-band information.
Allow the User to tailor the environment — Make operating system kernels small and lightweight — Use lower case and keep it short — Save Trees — Silence is golden — Think parallel — The sum of the parts is greater than the whole — Look for the 90 percent solution — Worse is better. (I won’t try to explain this one…) — Think hierarchically