An iPad Pro for photos & note taking ✅
A few years ago, I sold my trusty but aging Macbook Pro and bought a 12.9" iPad Pro.
At this time, my decision was driven by two main factors:
I needed a light computer to work on my digital photos while on the go – the 12.9 inches screen, its M1 processor and the Lightroom iOS app made the iPad Pro a great candidate. The quality of the Apple Pencil comes as a bonus too, to work on precise masks.
I wanted something to continue taking handwritten notes at work, but with a digital tool that would allow me to easily search within those notes. The fluidity of the Apple Pencil, paired with the Nebo app for note taking & handwriting recognition, are exactly what I was looking for!
It turns out it’s also a great companion on conference calls to do some live whiteboarding.
Back then, I wasn’t working on any personal projects, so if I needed to code it was mainly for work, and I already had a MacBook Pro from my job.
I also had « inherited » a 2013 Mac Pro from a previous company, that I could use as a personal workstation at home.
An iPad Pro for coding? 🤔
When I started working more frequently on personal projects, came the question of how I’d do if I wanted to work on them remotely, i.e. while on holidays.
Evidently, I cannot code on the iPad: there’s no terminal, no way to install packages, let alone a compiler or web server of any sort. Damn you, Apple!
Already owning an iPad Pro and a Mac Pro, I did not want to purchase a MacBook Pro if I did not have to. So I thought of ways I could code from the iPad Pro on code hosted elsewhere.
Cloud editors
At the time I was looking into this, cloud editors existed but weren’t as mainstream as they are today.
Github Codespaces was only nascent and not generally available.
Available options, I believe, were mainly Cloud9 (already owned by AWS) and GitPod.
These were great solutions really, but I think several things made me want to find something else:
I did not want to depend from a third party and end up paying for my setup
I also had started learning Unity and game development, so I was thinking it might be useful to have access to more than just an SSH session on a virtual machine.
If could access my actual home computer screen from afar, that would be nice!
As a result, my focus then moved to: how can I code on my Mac Pro from my iPad?
Remotely local coding
I explored different options to make this work, to finally settle on the following:
Using Tailscale to create a Virtual Private Network between my devices
Hosting a VSCode server with code-server on my Mac Pro
On a Mac, installing code-server
is just a brew install
command away, and Tailscale is even easier to setup both on my Mac and my iPad.
In a few minutes, I got access to:
My Mac Pro, from my iPad, using a convenient domain name
A full-fledged code editor, VS Code, with access to all my files
A terminal, thanks to VS Code, that allows me to run any command on my Mac Pro as if I was using it directly
That’s all I needed to code remotely from my iPad!
As a bonus, I also get access to my Windows machine, as a virtual desktop using Microsoft’s RD Client app. Since I’ve got a good graphics card on it, I can use it for generative AI tools such as Stable Diffusion even when I’m on the go.
The cons
I have been using this setup for the last month or so to code on Speakerine. All in all, it’s going pretty well, but there are some caveats and downsides to it:
From the setup itself first:
If, for any reason, my Mac Pro shuts down or disconnects itself from my home network, I’ve got no way to reach it anymore and can’t code anymore.
I’m unfortunately talking from experience 🥲An internet connection is required at all times. Coding usually requires one anyway, but with this setup and how VS Code seems to work, you cannot even have a temporary internet-less coding session.
From the iPad:
The absence of developer tooling for Safari on the iPad. I found the Web Inspector Safari extension, but it’s not as powerful as what we’re used to on desktop, and will only serve for basic DOM or requests inspection.
Very buggy keyboard support: I have owned a Logi Combo Touch for a long time without using the keyboard much at the beginning.
Using it more intensively revealed many very annoying bugs: the trackpad will stop working randomly mid-action, as will some of the keys.
Fixing required switching apps using Cmd+Tab, or sometimes even unplugging/replugging the keyboard.
I ended up being so frustrated with this that I ordered Apple’s quite expensive Magic Keyboard. Only to realize it’s got similar issues!
It’s not as bad, but not great either, so I really feel less productive when the first thing I have to do when switching back to my editor is to click on different form fields and back to the code so that I can type again.
In the end…
Retrospectively, in terms of setup, I think a cloud editor would suit me just fine today.
GitPod and GitHub Codespaces both have generous free plans (50 & 60 free hours per month) that would be totally fit for my holidays use case.
What I’d be closing myself to using cloud editors is:
Development that requires visual tooling, such as Unity or XCode
For that matter, any macOS/iOS development since it requires a Mac
Access to my graphics card for gen AI
It’s not things I need today.
What would remain are the issues from the iPad itself, and the need for always-on connectivity.
Two factors that might push me to buy a MacBook Pro in the end.
Maybe when I do earn money from my indie hacking!