November 13, 2018

Dreaming of Xcode on the iPad

Let’s imagine the iPad was a device for real work. You know… stuff that professionals do. Not only media consumption for fun and stuff. That’s what we’re all waiting for isn’t it?

I think we’re well past that point. Not only are there lots and lots of people that do actual work on their iPad – people that are real professionals. There are less and less tasks that an iPad isn‘t capable of. Yes, there are shortcomings in some areas – I really struggle with the fussiness of copying and pasting things and I seem to never get used to how the Shortcuts app works – but there‘s nothing that can‘t be fixed in the future. There‘s probably not much that can‘t at least be worked around with some tricks even now already. In the end it probably all comes down to what people are accustomed to, how they are used to work and what their preferences are for how they accomplish their work. Even if some tasks might seem cumbersome, it’s still a question of how someone is willing to accept these tradeoffs for other things, that the iPad might do better or are more fun for them. There has been enough talking and writing about this topic in the last couple of weeks before and after the new iPads were released. I think it‘s unfair to dismiss the ability of the iPad to do real tasks on and to belittle the work of people that run their business or core parts of it on iOS. I for one are still undecided on whether this style of work is really for me. I think it is. But I need more time to really try it out.

I was lucky enough to get my hands on a brand new 12.9” iPad Pro last week. Without joking, this might well be the best computer I ever used. I didn’t really have a deeper look at the iPad until a couple of months ago when I tried how it feels like trying to do some actual work on my old iPad Air. I already saw that there are a lot of tasks in my daily work that I could do on it, but it still felt quite cumbersome most of the time, so I lost it and unknowingly went back to the Mac again. Then came the 12.9” iPad and I thought: “Oh well, let’s try it out for a while and see what this feels like. But I will never really use this. It’s just too darn huge.” Well… I am barely able to put this thing down when I sit in front of it. I really love it. iOS is the same as it was a couple of months ago, but the size is the real deal for me. This suddenly feels like a real computer. Together with the smart keyboard folio and the pencil, this thing is not only gorgeous and blazingly fast. I can really work on that thing.

There are still jobs I can’t do with it though. I’m an iOS and Mac developer for the most part of my work life and that’s one of the few things iOS can’t do yet. The iPad could probably run most development projects with the blink of an eye, comparing the benchmarks to ”real” computers. But there is no Xcode available for iOS. I would run across the streets screaming if this would become available at WWDC next summer. This would be the turning point for me. I can do most of my daily work on this iPad. In fact, for the last couple of days that’s what I did. I’m a corporate bee, so besides sitting in front of Xcode I spend a lot of time writing eMails, collaborating in Slack, editing Word documents or looking at Powerpoint presentations. I really can see myself using the iPad as my main device, falling back to the Macbook only for development stuff in Xcode or related tasks where I need a Terminal or specific tools. Everything else? Should be manageable on the iPad. At least at the moment this is a lot of fun.

Now, what about Xcode on the iPad? Is this impossible?

I don’t think so! The hardware can do it. And if it’s not the fastest development machine yet? Oh well… there’s still the Mac for more speed, and I doubt that this is actually the case anymore. But please Apple, let me do my coding on an iPad! I’m willing to take a hit in compile time, if necessary. The support for external 5k displays via USB-C could make Xcode on the iPad a really amazing experience in my opinion.

This would be a setup I could imagine: The iPad attached to an external display using an external keyboard. The display shows my code on one side and the app I’m building in a split view on the other side. No simulator anymore!? The iPad screen is used for documentation and/or the debugger. Everything I need, running on a device I can carry around anywhere I’d like to. Even without the external display I really think there’s a way to make the IDE work. It get’s harder to think of a good solution if you also remove the external keyboard from the scenario. But hey… why should there be no other way to work in an IDE than what we know now? The iPad and iOS already changed a lot of habits and what users expect from their apps. Maybe there’s also a different way to think of an IDE, so that it can be used on a smaller screen?

There are lots of other problems, I know. A lot of issues to solve… what happens if the app crashes while debugging? It will better not bring the whole system down! I guess technical problems like this are the biggest reason why there is no development environment available on iOS yet. But I really hope that either these problems get solved or Apple comes up with another solution I would never ever think of in my life. The playgrounds app is an example. It’s no full blown IDE and the main purpose clearly isn’t building apps from scratch. But it shows that it’s possible to edit and run Swift on an iPad. I even would be fine if the iPad would only be the code editor for my Xcode project and the compilation would have to run on a remote machine like a Mac mini somewhere, running the simulator on the server and only VNCing it to the iPad.

Whatever to solution might be… This is the dream I have. I think with this, I could do 99% of my work off of my iPad. And at the moment that’s really what I want… doing some actual work like professionals do.