A software engineer's notes on building things