anchor.diff:  
   === Turing Complete
   
  -The ability to define functions, to use function composition and recursion, and that 
  -has a conditional statement, is a complete programming language.  
  -We say it is *Turing complete*, which means that it can compute all the functions that a 
  +The ability to define functions, to use function composition and recursion, and that
  +has a conditional statement, is a complete programming language.
  +We say it is *Turing complete*, which means that it can compute all the functions that a
   Turing machine can compute.
   
   === Invariant programming
   
   This allows one to write efficient and to easily reason about the behaviour of your loops.
  -The technique involves understanding a few concepts, 
  +The technique involves understanding a few concepts,
   .the first is being able to describe your problem in mathematical terms, as a specification
   .the second is understaing The principle of communicating vases
   .and third is tail recursion
   
  -=== Complexity 
  +=== Complexity
   
   Big-O notation is about the Worst-case scenario of an algorithm
   
  
positive.code: Design patterns
  http://blog.arungupta.me/microservice-design-patterns/
  
  === 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*. 
  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.
  
  
negative.code: . Contains no duplication
  . Expresses the intent of the programmer
  . Minimizes the number of classes and methods
  
  
  === class organization
  . Classes should be small
  