An introduction to Knockout JS