anchor.diff:  Design patterns
   http://blog.arungupta.me/microservice-design-patterns/
   
  -=== Guidelines on testing code 
  +=== Guidelines on testing code
   
  -One particularly good method to start using thrid party APIs in your code base is to use them in *Learning Tests*. 
  +One particularly good method to start using thrid party APIs in your code base is to use them in *Learning Tests*.
   These are normal tests which essentially start interacting with the api, but in ways you would expect. This allows you
   to quickly find out the lmitations in how it might solve some of your problems.
   
  
positive.code: keeping your code clean is not just cost effective; it’s a matter of
  *professional survival*.
  
  [verse, Ron Jeffries, on clean code] 
  Reduced duplication, high expressiveness, 
  and early building of simple abstractions.
  That’s what makes clean code for me.
  
  == good practices
  === Method, Variable, Function, Interface, trait naming 
  1. Use intention-revealing names
  2. Avoid disinformation
  3. Make meaningful distinctions
  
negative.code: O(n) = linear complexity
  O(log n) = logarithmic complexity
  O(n^2) = Polynomial complexity
  O(n!) = Factorial complexity
  
  === Object Oriented Programming (OOP) three main principles for structuring programs
  ==
  . Data Abstraction - provide guarantees and reduce complexity
  . Polymorphism - compartmentalize responsibility
  . Inheritance - avoid redundancy and encourage incremental development
  