Great read and good "best practices".
Just don't agree with #3:
"3. Queries: avoid joins. No exceptions to this rule."
If you have a complex data model but need fast (mostly read-only) access to huge data sets, consider adding an additional layer using a search engine. Check out this Wikipedia article:
http://en.wikipedia.org/wiki/Search_oriented_architecture