How can I programmatically get a list nodes that a user can update?
There should be a view filter like that, but you'll need to use a relationship (Access log: User should do it) then add the filter called User: Permission.