Toward Using the iPad Pro for Development
I’ve been following a number of people that use iPad Pros for “real work”. I’m going on vacation for a couple weeks to Europe and I wanted to leave my laptop at home. That being said, I still wanted a “lifeline” computing device so that I could do some light writing or SSH into a server if necessary.
A lot of the work I did over the past year has been over SSH/Mosh connections to remote development servers. I even did a big chunk of work on a Chromebook over the Summer, and the majority of my work in the fall (while on a MacBook) was remote. It seems overkill to use a beefy laptop as a thin terminal to a remote devserver when really all you need is a decently competent OS with a good terminal emulator.
I bought an iPad Pro 9.7” when it came out and have been using it for taking notes at school. I was already planning to bring my iPad on my vacation; outfitting it with a keyboard and some developer apps made it a surprisingly competent secondary development machine.
Attaching a keyboard to an iPad really makes it feel like a different type of device. I was never going to write code on a software keyboard (the couple times that I’ve SSH’d into a server with my iPhone were harrowing), but with a hardware keyboard I could see myself actually doing some “real” work on iOS.
There are a surprisingly large number of external keyboards available for the iPad Pro and they all involve a tradeoff. You can either get a compact keyboard optimized for portability or a larger one that’s more ergonomic.
Smart Keyboard: The first keyboard I tried was Apple’s own “Smart Keyboard”. It attaches directly to the iPad via the smart connector and thus needs no external power or Bluetooth connection. However, I found the keyboard to be cramped and was annoyed with the lack of a function/media key row. The keys themselves don’t have a lot of travel and are made of a membrane material. Surprisingly, the keys don’t feel as “squishy” as I feared. It’s obvious you’re typing on a membrane, but I think I could get used to the feel of the keys (but hey, I’m someone that can get used to typing on the new MacBook Pro keyboards, so take my opinion with a grain of salt).
Perhaps the best thing about the Smart Keyboard is it’s ease of connectivity. You can leave it attached to the iPad and it works as a screen cover. Or, detach it and reattach it as necessary – and it connects and is usable instantly. Apple sells additional cases that protect the back side of the iPad as well that work with the Smart Keyboard.
However, in the end I couldn’t stand how cramped the keyboard felt. Typing on such a compact keyboard made my wrists bend in an uncomfortable way. I couldn’t see myself using this keyboard for extended sessions. As I use a 9.7” iPad, I’m in the worst-case scenario as far as Smart Keyboard size. Perhaps if you use the 12” iPad, the ergonomics wouldn’t be as bad.
Magic Keyboard + Canopy: The keyboard setup that I eventually settled on is Apple’s Magic Bluetooth Keyboard and the Canopy keyboard case by Studio Neat. The Magic Keyboard is just a “regular” Bluetooth keyboard, but it plays well with iOS – for example, you can see it’s battery level in the iOS battery widget and it’s media keys work with iOS.
The Canopy cover makes the Magic Keyboard a great companion fo the iPad Pro. It serves 2 purposes: First, it’s a case – making it easier to toss the keyboard in your bag. Second, it folds out as a stand for your iPad.
It’s worth noting that the tradeoff you make is compactness and connectivity. You’ll have to charge the Magic Keyboard separately (it has a lightning connector), and connect it to your iPad over Bluetooth. Fortunately, it seems to pair pretty quickly with my iPad, and I haven’t had any issues with the Bluetooth connection dropping out.
The Canopy + Magic Keyboard setup has great ergonomics. I’ve used it at desks, on Plane Tray tables, and on my lap. It’s more stable on a hard surface, but is also surprisingly useable on your lap. It’s also great because the Magic Keyboard is just a regular keyboard. It’s layout closely matches the 13” MacBook Pro, which is what I’m used to.
Honorable Mention – Brydge Keyboard: As a disclaimer, I never bought/used the Brydge keyboard, but it was the next one on my list to try. It uses a more laptop-like hinge design. I prefer a design that allows me to use the keyboard in tablet and/or “laptop” mode without taking my iPad in/out of a case, so this design didn’t appeal to me. Brydge does have cases that work with their keyboards, but they’re on the pricier side for what features they offer.
SSH Clients/ Terminal Emulators
- Blink Shell - Blink is the best terminal emulator I’ve found for iOS. It’s $20, but it’s also an Open Source project. So, you can compile and install it by hand if you wish. (I chose to support the developer) Blink has plenty of options for customizing terminal appearance (I always go with Solarized Dark!), it supports SSH and Mosh (as well as a variety of other protocols like SCP), it has the ability to save hosts, and it supports multiple running terminals via a tab/windowing interface. I’ve found it to be rock solid. Other iOS SSH clients I’ve tried either have artificial limitations or experience weird rendering glitches – I’ve experienced no issues so far with Blink.
- Ish - Ish is an experimental (i.e. pretty buggy right now) terminal emulator for iOS. Note that it is a local terminal emulator, unlike other apps which are SSH clients. Like Blink, Ish is Open Source – and it’s a pretty cool project. Under the hood, it’s running an x86 emulator on iOS. A lot of programs don’t currently work, and you have to install Ish manually or via Test Flight, but this app has a lot of future potential.
- Termius - Termius is a free alternative to Blink. Note that if you want some advanced functionality like terminal tabs, you have to pay a subscription fee.
Local Text Editors
- Bear - Bear fills the same Niche as Drafts, except it has a more traditional streamlined UI than Drafts, at the cost of some advanced functionality. Another downside of Bear is that you have to pay a subscription fee to get syncing between devices. Unfortunately, the features it provides don’t quite justify the cost for me.
- Pythonista - A local Python editor/IDE. Again, I feel like I’ve only scratched the surface of this app. The ability to edit and run Python code offline on iOS is its main selling point for me, but it also has features for creating GUI interfaces as well as plotting data. Pythonista also has good integration with Shortcuts and APIs that integrate with iOS system features. It’s a really neat app, and I think you could do some amazing automation with it as an iOS power user.
- Cmd+Tab works as a app switcher.
- Cmd+H takes you back to the app launcher.
- Holding Cmd displays the keyboard shortcuts available for the current app.
- You can (and probably should) adjust the key repeat interval on iOS. This setting controls how long it takes of holding down a key for the key input to be repeated (i.e. holding down an arrow key). The setting is located in General -> Accessibility -> Keyboard -> Key Repeat. I found 0.10 seconds for Key Repeat and 0.20 for Delay Until Repeat to suit my preferences.
I’m really excited about the future of iOS for “real” work. iOS hardware has been capable for the last few years, and it seems like the software ecosystem is starting to catch up.
I was able to write and publish this post entirely from my iPad, mostly while on a plane. I’ve never found working on my laptop to be workable on planes/busses, so that’s one additional benefit to the iPad form factor.
The one “missing link” is a richer code editor like VSCode for iOS. You can hack together an IDE with Working Copy and something like Coda (though as a disclaimer, I haven’t tried this combo), but it doesn’t feel like there’s a great story for editing code locally on an iPad that doesn’t cost you $50+ in apps.
Here’s hoping that iOS development software continues to mature!