one thing that i really dislike about Unix is the zealous adherence to semi-accidental design elements that ends up interfering with the utility of the underlying useful principle
for example:
- early Unix could not run too complex a program due to hardware restrictions, so programs were composed using text streams
- useful underlying principle: designing your applications for composition
- zealous interpretation: your OS should have a toolkit of single-purpose programs communicating over text streams
- design we could have had, but never will: applications that communicate using structured data, simplifying life for both programmers and end users