In terms of automating migrations in postgres, I really want declarative migrations and only the safe subset too. The overhead of having a schema defined over a bunch of migrations seems non ideal.
That is right.. default value for new column is now pretty fast.. all the other 6 tips are current and very relevant.. this blog has been my goto blog for debugging locks in postgres, as it captures a very crisp summary on this topic!
I am extremely grateful that some people have created awesome libraries like strong migrations https://github.com/ankane/strong_migrations.
Even if you are not using rails, you can bookmark its readme, it is an awesome cheat-sheet on how to do common database migrations.