Programming for Remote Environments