The adventures of learning webGL one step at a time