My iPad Pro 12.9 2018 Experience as a Software Developer
I recently succumbed to the temptation. I bought a brand new iPad Pro 12.9 2018. As a software engineer and graduating M.A.Sc student, I hesitated a lot before purchasing this new Apple gadget. I was feeling doubtful regarding the usability of the iPad for my daily usage. Regrettably, these fears turned out to be partially true…
What I do everyday
I am a machine learning engineer. I’m currently finishing my M. A. Sc in machine learning applied to medical imaging. I work on adversarial normalization for image segmentation acquired from multiple sites. Basically, I write machine learning algorithms. I am also an active software developer on GitHub with two open source libraries under heavy development. I code, implement features, write tests, and especially debug. My everyday tools for doing my work are Git (Atlassian SourceTree), instant messaging (Slack) for collaboration with other members of the lab I’m in, a LaTeX writing application (Overleaf) and a powerful IDE (Jetbrains PyCharm). All these tools are available on macOS mainly since their inception.
Why chose the iPad Pro
I am a Mac guy. I made the jump from Microsoft Windows in 2012 and I have always worked on Mac and UNIX-Like operating systems since then. Over the years, I adopted a lot of products coming from Apple; the iPhone, the Apple Watch, the Apple TV, and the Mac. I also had the first generation iPad Air when it released in 2013. I loved this iPad, but unfortunately, the battery has worn out and it now needs to be plugged at all time, impacting severely the usability of it. I love the Apple ecosystem and the “it just works”. For a professional, this aspect is crucial since it can improve productivity a lot. For me, problems in the Apple ecosystem are very, very rare. Everything works flawlessly. Going with the iPad Pro more than any other tablet on the market was natural.
But why not stay with the Mac? My actual MacBook Pro is the high-end 15 inches late-2013 model. While there is still hardware and software support for it, the battery is aging, lasting no more than an hour. One must know that heading to work takes me an hour and a half and take the same amount of time for returning home, so the Mac just can’t hold it anymore. Plus, it’s been almost 7 years I carry this laptop every day from home to college and university. I had enough. I wanted something lightweight, reliable, fast, that just work, and with which I could leave the Mac at my office and work on the go and at home.
I tried both iPad Pro sizes. I had both 11-inch and 12.9-inch side-by-side for more than two hours. The thing that tipped the balance in favour of the 12.9-inch is when I read a scientific paper on it. Reading papers and journal articles is currently, as a master student, a large proportion of my time at work, and will also be at my future job as a research engineer. Reading double-column papers on this iPad is absolutely a charm. The Apple Pencil makes annotations a breeze, writing notes and summary of articles very quickly. The other thing is for remote desktop. I wanted to be able to remotely connect to my Mac if I needed to, and the bigger screen makes it a bit easier. The increased size of the display is also easier for viewing and writing code while not making the iPad bulky as a laptop. The Apple Smart Keyboard Folio was also more comfortable for this usage in its 12.9-inch format.
Where things get complicated
The 12.9-inch iPad Pro is, without any doubt, an incredibly powerful tablet. To date, I have not seen any slowdown. It follows me as fast as my Mac does. Even if it is almost 7 years old, my Mac it’s still plenty fast enough for my daily use. iPadOS is definitely better than any iOS previously released for the iPad. Without doubt, it unleashes the power of the iPad with improved multitasking, the possibility to use external drive, spaces, powerful gestures, without forgetting the increasingly more versatile Files app. iCloud integration is at its apogee, saving storage space on the iPad and seamlessly integrate with many apps. Dark mode is being integrated into many apps too, which gives stunning visual effects.
It does pretty much everything my MacBook Pro does without sacrificing efficiency and productivity. Except one thing.
Coding.
As a software developer, I can attest that the iPad Pro misses an integrated development environment.
I useTextastic app. While being able to directly use repository from Working Copy which is a powerful and beautiful implementation app for Git workflows, it doesn’t have code completion for Python, currently one of the most used languages. I could have used Pythonista, but the app hasn’t been updated in two years and actually /running/ Python scripts on the iPad is not one of my priorities. I have dedicated Linux servers with powerful NVIDIA GPUs in them for this. I don’t even run Python code on my Mac, my algorithms requiring far too much power than any Mac computer could deliver (except the Mac Pro). There’s Code Editor by Panic (formerly Coda) which seems higher quality, but seems to lack a few features from Textastic while offering others which are less useful. For terminal emulation, the Termius app, in its free tier, offers pretty much everything one needs. Blink Shell is also a very nice app for terminal emulation.
It seems like we cannot get the best of all into one app.
What we need
What we need on the iPad is a complete IDE with the possibility to have a remote execution / interpreter / deployment configuration, just like we have in any JetBrains IDE. I personally develop on my Mac, but I have run configurations that execute my code on remote servers with automatic uploading and synchronization.
Why couldn’t we get this for the iPad? A serious IDE app, in which you can edit your code, have a console at the bottom, navigate your project on the left, and a /Play/ button at the top right corner to run your code on the server you want, whether it’s on the cloud or your own at your office or at home. And most importantly, having a complete, full-featured debugger, just like the one in any JetBrains IDE. Having such a debugger for remote execution could be a life changer for any software developer who has to debug something on the go.
Why not build and run on the iPad?
The compute capabilities of the iPad Pro are no longer to be demonstrated. We all know the iPad Pro, compute-wise, is a beast, surpassing in some use case fully powered Intel mobile CPUs. Why not unleash this to the developers? I can perfectly imagine an iPadOS app developer code, build, and test its application directly on the target device. It would assuredly greatly improve efficiency and productivity of this developer. So why Apple is still reluctant about it, the same company which claims at every WWDC their OS improve productivity for all kinds of people, but forgetting the very ones in front of the stage during this event?
The solution might be in containers technologies.
We saw during last decade the lightning rise of containers technologies such as Docker. For the latter, it first began on Linux, but the native implementation on macOS didn’t take long before being released. Using the native /Hypervisor/ framework, it’s one of the best things that could happen to software developers on the Mac. It’s efficient, stable, and user-friendly.
Why not port this to iPadOS?
Okay, you might think this guy is crazy, but this could unlock the possibility to build and run code on the iPad the most secure way possible.
One of the main things why Apple is reluctant to let developers actually build and run code on the iPad is security. The malicious code could potentially affect other apps and compromise security of the device, which is for Apple the biggest possible no-go.
But if we port a container technology to the iPad, one could seamlessly code, build and run its code within a secure container, without actually knowing it’s a container underneath. Inputs could be bridged to the container if the application requires interaction from I/O such as touch screen or Apple Pencil. The powerful A12X processor coupled with the fast storage of the iPad could definitely be able to instantiate a container on demand effortlessly. IDE’s developers would be proposed to use a simple framework just like any other iPadOS framework in which the app create or use a container for executing code. The user could choose which container to use from a platform such as DockerHub. Since most of the images are quite small in disk usage, storing them locally on the iPad, which has multiple storage options, would not be a problem. Installing any libraries would not be limitation anymore like in the actual Pythonista app.
Conclusion
I presented here my personal opinion about a product I love from Apple. The iPad has its place, but the OS still severely limits the capability of this great device. It’s certainly the greatest tool for artists, students, and any people who want an easy to use, portable and lightweight device. For some people, the iPad can totally replace the Mac or PC, but I find software developers are left behind on this great device. Hopefully the app will get more and more sophisticated over time. I saw that Panic Inc. has some plans to port Nova, a completely redesigned code editor to the iPad, meaning there might be hope in seeing a real IDE on the iPad in the coming year. Many people hoped Xcode would appear at WWDC 2020 in iPadOS 14, which could have been a big step forward for software developers wanting to do more out of their iPad, but unfortunately, Apple chose not to include the app.
Thanks for reading!