Some good tips in here, we run a fully distributed team and had overcome similar challenges.
One tip I would add is pair-programming on complex parts or sticking points through screen and vim, we have an ec2 instance dedicated for pairing which everyone has access to.
I was surprised at that omission from the article. Getting tools to ease remote pairing is one of the most challenging things about remote work. We ended up making Emacs a hiring requirement just because working from screen is such a crucial part of what we do.
yes, vim or willingness to learn is currently a hiring requirement for us. Not a religious thing, just happend the first two guys we hired preferred vim.
One tip I would add is pair-programming on complex parts or sticking points through screen and vim, we have an ec2 instance dedicated for pairing which everyone has access to.