Mark's notes on software development