The iPad

I was stuck.

October 2018: I picked up my MacBook from a keyboard repair. I got it back with the keyboard working, but without anything coming from the speakers. I made the judgement call most people would make here: this wasn't a big enough issue to delay usage another week. So, I put the repair on pause "until I get a moment".

Cutting to it: November 2019, having suffered most of the laptops life without properly functioning speakers, I took a short break, and decided to take the computer in for another look.

Dropping your main computer off for repair feels like losing a limb. It's uncomfortable. It's isolating. I needed to have something. So, I thought I'd spend some time with the iPad we had at home, and see how well it could handle my workflow.

As I used it, I would write down everything that I liked or annoyed me as it happened. Here's a tidied up copy of what I wrote.

Hardware:

The good

Let's start with the physical hardware aspect. The keyboard works. I'm not picky when it comes to keyboards. This one works fine. Apple have been thoughtful with their keyboard shortcuts. You're able to cmd + tab as you'd expect, and jumping to spotlight search or app exposé becomes reflex in a short time. Also, if you're using the classic iPad like I am, you only need a lightning cable to handle your other Apple equipment.

From a connectivity prospective, syncing is beautiful. After signing in, I was up to speed with little effort. Having Safari sync tabs between your Mac, iPad, and iPhone is smooth. Apps like Notion and Bear sync up automatically. As with your phone, it's good to be mindful of annoying notifications. I turned these all off right away.

The actual experience of working with the device was great too. I love native apps. Everything feels buttery smooth and the level of polish tends to be high.

The bad

I noted nothing bad that you wouldn't already expect.

Ergonomics are rubbish, are the hardest to fix, and what I found most annoying. More than an hour of use becomes uncomfortable. The small keyboard meant my wrists bent an odd angle, and made it hard to type fast or without errors. The height of the screen meant my neck was always bent downwards. However, these are the same problems laptops tend to have. If you're on the go, these are acceptable. If you're at a desk, getting a larger keyboard and external monitor is going to save you a tough time in old age.

I found pointing with my finger uncomfortable. As of iOS 13, you can now use a mouse, but I didn't test this. The biggest thing I'd like to see is how it is moving the cursor to the middle of a word, or highlighting a part of a word. As it is right now on iOS - it's enough to drive you mad. Despite this, though, I found myself trying to touch my Mac screen several times after I went back to using it.

The app ecosystem - the double edged sword - held me hostage at times. Notion, the app I use (and love) for note taking caused me problems. It would often crash often, and not allow multi-line copying of any text.

Code editors were tough. It felt a little like Goldilocks here. I would find something that worked mostly OK, but never perfect. The difficulty was that I would constantly compare against my desktop experience. In this respect, especially as a developer, you will always find fault. This situation can only get better, but there isn't enough maturity yet to be able to run as quickly and as effortlessly. This gap will close with time.

Apps

As a developer I had two big questions: code editing and shells.

On code editing: Coda here looked great, and Panic - the developers - have a great track record with creating strong Mac / iOS apps. I'll bet that this is the answer for most people. I spent a lot of time with AWS' Cloud9. It comes with low upfront cost for testing, Go and Python both supported, and a built-in shell for use. Cloud9 worked well, but I struggled to get code completion working in the time I did spend. This could have easily been something I missed, but it was not obvious at the time. I ended up spinning up a digital ocean instance, installing Mosh: the mobile shell, TMUX, and SpaceVim. I use SpaceVim often on my Mac, so there was some familiarity there. This was the winner on the day. Being able to make environment updates to it were great, and it's widely enough known where issues are debuggable. It also meant that I had a shell I could run off of at all times, and that I could pick up my work again on all my devices.

I found that using Blink and Terminus were both great for SSH. Terminus is free for basic use, so I would lean here first, but both are sound options.

An interesting project I found was iSH. It's a linux shell running natively on your iPad. This is super interesting. I was able to get a bunch of tools [albeit very slowly] installed. I wasn't able to get Go files compiling, but with a little bit of work, this might be possible.

Other apps worth checking out:

One thought I had while I was using the iPad: it would be great to have a generic hold-everything database synced with iCloud. This would let any authorised app store anything - text, images, binary data - and let other apps read from / write to it. An app could build on top of this layer, and it would let users have the same dataset presented in different ways. I.e. things could share the same data as Asana. Bear could share the same text notes as Notion. Slack could share the same messages as the Apple Messages app.

Overall

Looking over everything: if we boil it all down, the iPad can be used for the majority of tasks. For non technical tasks, the iPad is either on-par or better than it's desktop counterpart.

For technical work, I'm not completely sold. Things like being able to spin up a database server alongside your work is a standard for a lot of developers these days. Docker doesn't yet have a play natively on the iPad yet, and I wouldn't hold out for it. This is another point for using a remote shell to host your code editor and working environment.

There's a mix of two things that will help bring more developers to be iPad-first. The first is platform maturity. Better native apps. Better deployment tooling. The second is a little less precise; there's a lot of "reflexes" we build up over the years. We get comfortable with things being a certain way. The warts of our current workflows are smoothed under years of not having better options. Provided platform maturity - a future generation of developers will definitely be the ones to push his into the mainstream.

In terms of my daily use: I've started using the iPad a LOT more. The interesting thing here is that the biggest roadblock was that I never had anything set up on it. Now that I've spent the time, I use it a lot more.

If you're comparing the iPad right now to your MacBook, you'll always be disappointed, it's a different tool and it's better at different things. Keep a close eye on it, the device itself is genuinely great, and enables a convenient and well-designed workflow.

© daniel everts, 2021