Types as propositions, programs as proofs, et al:

Unix Philosophy Bernstein chaining

Documentation / wiki system

Why Go Getting Generics Will Not Change Idiomatic Go This is really about how functional paradigms do not really work in non-functional languages.

How To Design Programs–cs212

Design of Computer Programs course by Peter Norvig