In this blog post I wanted to share my experience of programming on an iPad Pro (no PC at the moment).
With the right software tools (and optional hardware accessories), an iPad can serve as a powerful mobile development environment.
I’ll get into using
- Visual Studio Code on the web
- mosh, ssh and bashy stuff with Blink Shell
- GitHub Codespaces for casual pull-requests and development
- a Raspberry Pi
- ansible provisioning of servers
- self-hosting apps on local network
- vscode server/tunnels for local development
- and much more! (even 3d-printing)
What do you need?
Occasional programming on the go, or a full-fledged development environment?
For occasional commits
Go with Github Codespaces, it’s free and you can use it on the go.
Visit vscode.dev and sign in with your GitHub account.
Create a new Codespace starting with one of your repositories on GitHub, you can customize the environment by defining a
devcontainer.json (more info here) file in the root of your repository.
Eventually set a spending limit, and you are good to go.
For ease of use you can bookmark the URL of your Codespace, so you can access it quickly, also from your homescreen.
Full-fledged development environment
You could also try out Codesandbox, but I haven’t tried it yet.
You’ll need a Raspberry Pi, or a VPS somewhere.
You can configure a VSCode server instance and connect to it from your iPad, using Remote Tunnels.
Here you can find the official guide to get started.
It takes 5 minutes.
Once you have a VSCode server instance running, you can connect to it from your iPad using Blink Shell or directly from vscode.dev on the web.
From the Blink Shell app, just type
code and you’ll be presented with a VSCode instance.
Remote Explorer extension in the sidebar, and select the
Connect to your workstation, you also have SSH access to the underlying system directly from the terminal in VSCode!
What about the Raspberry Pi?
A really nice thing about the Raspberry Pi is that it’s a very versatile ARM computer, compact and with a lot of potential.
So how do I use it?
Old printer on AirPrint using CUPS
I recently used it to hook up a really old printer on the Raspberry Pi, using CUPS and a USB-to-Serial adapter.
Then I could send documents to print using AirPrint from my iPad.
Arduino and ESP32
By connecting to the Pi via VNC, I can program my Arduino and ESP devices from the iPad, by viewing and interacting with the Pi desktop environment.
I design the parts on the iPad, and then I can slice my models using Ultimaker Cura and 3D print them using OctoPrint running on the Pi.
Ansible Hetzner server provisioning
Provisioning of my Hetzner server using Ansible, using VSCode tunnels to my Pi.
Self-hosting apps on local network
Self-hosting apps on my local network, like a Nextcloud, Syncthing or a GitLab instance.
VSCode server/tunnels for local development
I can also use the Pi to run a VSCode server instance, and connect to it from my iPad using Remote Tunnels.