learn to write a os