I've gone through the process of port forwarding my router and setting up dynamic DNS (who does that anymore? :) ) so I can hit my home desktop with an Ubuntu VM on it and I usually have a few AWS instances up at any given time for different projects. Then most of the active code gets synchronized between machines via Github.