Recently, I moved from my MacBook Pro as my primary programming machine to my 2nd generation iPad Pro. I decided to try this out after my trusty MacBook Pro had served me for 4 years and it was time to get a new machine. I looked at a couple of options including building my own machine and getting a new MacBook Pro. I eventually settled on trying out an iPad Pro.
I have two methods of developing on the iPad:
With iOS 11 multi-tasking has become so much easier, I have Working Copy setup and the webdav mode enabled and the Coda in split-screen mode. This way I can make use of git in Coda. I made the code changes in Coda and they show up in Working Copy, and it is as simple as committing and pushing up to my GitHub.
Screens.app has been a useful application in setting up VNC connections to my cloud-based desktops. A VNC connection on its own is unencrypted so I had to SSH in and setup a local VNC connection. Some of the pitfalls on this is that you need to manage all the ports and security rules on your own and I found it took a bit of tinkering to setup outbound SSH or FTP connections from within the cloud desktop. I chose Ubuntu as the base OS as that was what I am most familiar with. Using one of the DigitalOcean guides I was quickly able to set it up with XFCE. This is where things became interesting, or should I say difficult. XFCE is a very minimal desktop UI, which is fine but not when using with an iPad as it isn't touchscreen friendly at all. I even tried using the trackpad mode on Screens.app on my iPhone but it was laggy and resulted in a delayed reaction. Ideally, I'd want to be able to either use the touchscreen or be able to be completely keyboard bound with a OS.
I will probably try some other ideas such as GNOME for the GUI, or even elementary OS. There are some Mac colocation systems or cloud Mac setups, however those are a lot more pricy than paying for the usage time of a VPS.