# Software Architecture
- The Rule of Least Powerful: Use the least powerful to solve a problem. Simple,
and no simpler.
- [[rest|REST]] philosophy.
- Extreme late-binding and [[oop|OOP]]: it permits you to not commit too early
to the _one true way_ of solving an issue, makes it easier to change
decisions, and build systems that you can change while it's still running.
- Three key elements of _hypermedia_: messages ([[http|HTTP]] and
[[html|HTML]]), actions, vocabularies.
- A message centric web design, thank of the failed examples like Java Applets,
Flash, and XHTML.
- The value of a well-designed object is when it has such as rich set of
affordances that the people who use it can do things with it that the designer
never imagined. -- Donald Norman
- "Whatever we build—if we build it well—is likely to be used in unexpected
ways, by unknown people, to solve as yet unheard-of problems."