# 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."