Happy Holidays! Is iPad Pro M5 as “Pro” as we need going into the new year ?

Now that there is time in the holiday season, I did a proper evaluation of using an ipad pro m5 to see if it can achieve productivity as a software developer.  Sit back with your coffee and learn from my experience! Fair warning: anybody who replies and just tells me to just use AI to do my coding will be flamed.  There is another article coming about my extensive experiments and research about using AI for software engineering (spoiler, my now go-to process DOES involve AI pairing for coding, but only minimalistically)

So now, iPad Pro has been claiming that it could be a laptop killer for years.  It has failed to deliver on many occasions.  Every single time, actually.  It's a super flash device, but it is really just super optimized for Apple oriented workflows around video editing, music production and writing.  The use cases I want are very different.  I’ve tried before. I’ve failed. So its time to try it again.

First note: I learned from before, and I did NOT buy the large ipad.  I got the smaller one (11”), with base specs.  It fits better in my shoulder bag. It's light.  It fits on airplane seat trays.  Nobody from Apple sponsored this or influenced my opinions.

TL/DR:

I wanted a sexy tablet-laptop (tablatop?) that could run a small windows and/or linux vm to let me get access to specific features reserved to windows linux and mac machines, particularly local coding environments, proper IDEs and running services like postgres and local web app servers.

What I got: disappointment about horrific limitations imposed by software blockers.  The chip is a powerhouse, but is massively handcuffed by iPadOS to prevent us from doing things WE think are useful.

I came up with an alternate plan though, and it has lots of potential.  It involves a remote hosted linux server or a janky tethered Raspberry Pi.  Read below for more details.

The Whole Cannoli

The UTM Fallacy

Virtualized/emulated/containerized machines are a developer’s friend on every OS except iOS/ipadOS and Android. Don’t have a feature on your computer? Spin up a container and run it local anyway.  I get why this was the case years ago. Limited ram and storage, battery and compute was highly optimized for media consumption.  But this is 2025. We have 5th generation Apple silicon.  The M5 is a monster.  But in iPadOS, it is reduced to a hamster in a wheel.  Certain privileged apps get heaps of performance boost from the hardware, but anything that threatens to use iPad for what a Mac is supposed to do gets software limited by the bureaucracy.

The greatest example is UTM, which is designed to let you essentially run virtual machines (virtualized or emulated).  Anybody who has looked at this stack knows the big details: UTM SE is available in the Apple store, but doesn’t support JIT (Just In Time compilation), so emulation runs horrifically slow.  You CAN sideload a full version of UTM that supports JIT but it's hardly consumer-friendly.  I was able to make it work using AltStore, StikDebug and jitterbugpair on a Mac.  On MacOS, UTM runs great and at full speed. The only reason to limit it on iPadOS is to prevent using the iPad as a laptop. Very anti-pro.

Once you have a version of UTM with JIT working, you can install old(er) versions of MacOS, Windows XP, 7, 10, 11, and a few flavors of Linux.  What people don’t tell you is that iPadOS’s Jetsam memory management watches apps that use memory, and kills them if it determines that memory use is excessive.  That happened to me a LOT.  Just when I was about to run an app or type a command, the whole VM disappeared, killed. What that effectively means is that VMs running in UTM can really (practically) only use about 2-4GB of ram, even when the ipad has more (12 or 16gb for m5 pro).  What you can do with any OS when limited to 2-4GB of RAM is pitiful.  Not practical at all.  And unfortunately, that is exactly by design in the iPadOS software.  If this wasn’t the case, the ipad pro would absolutely dominate the subnotebook segment, and everybody would be running their critical software in VMs.

So, YES it is quite possible to run windows or linux in a VM using UTM. The speed is just barely usable, and the constant warnings about ram usage and threat of being killed by Jetsam make it a novelty rather than a useful business tool.

If you absolutely MUST run your software development stack offline (on your device), then the iPad fails miserably (again), and you should just invest in a laptop instead.

If you are really hacky, you can consider running a Raspberry Pi 5 setup (i’ll talk about that after the next section, since essentially you need an iPad to be “remote” developer friendly anyway.

Using the iPad Pro for Remote Software Dev

So, now that on-device dev is out, we are left with a few challenges:

But You Need A Server First

The landscape of iPad native coding IDEs is, frankly, quite weak.  There are a few OK ones, but most offer a workflow that is just nothing like industry norms.  So to fix the first requirement, we can just stick with the well known code-server (the web based version of VS code – which honestly is pretty great, and all the new AI coding IDEs are mostly forks of VS Code anyway).  Its available for free here: https://github.com/coder/code-server

But where will you run this code-server ? You have two choices: a cloud linux instance, or a portable PC rig.

Cloud Linux Instance

The easiest solution to use a cloud server also means you need to pay monthly hosting fees, and you need internet access to use it.  Neither were part of the original goal, but this is why the “pro” moniker for ipad lands so hard.

I run my own linux servers in a private data center, but you can search and find reasonably priced cloud servers.  There are old rumors of Oracle offering free small virtual private servers, but that doesn’t seem to work anymore.  Also, AWS free tier could work, but it is technically only free for the first year of your account.  Companies like IONOS offer decent deals for dedicated linux VPSs.  Just make sure you don’t accidentally sign up for a SHARED VPS, which means you can’t really control the software or reliability, and are often limited by control panel software.

Raspberry Pi 5 PD via USB-C

The newest Pi 5 (with support for USB power delivery aka PD) is a cool option.  They come with up to 16gb of ram, and you can 3d print (or buy) a box for it. I often use Velcro on the back of my ipad keyboard so I can attach an SSD, or a raspberry Pi.  For Pi 5 with PD, you can connect it to the usb-c port on the iPad pro, which will supply power, and you can also use ethernet-over-usb to communicate with it.  This is essentially a linux pc attached as a box to your usb-c, and it solves the issue of being portable and offline.

Now We Can Haz a Software IDE

Once you have access to a linux server and root privileges (either cloud or Raspberry Pi 5) to install your own software, you can begin to stitch together your solution.

Install code-server, and run it as a service.  See https://github.com/coder/code-server for details on that. It is pretty straightforward.

When it's done, you can open a web browser and go to the URL where you installed code server, and you will see a familiar coding interface.  Tip: Open it in Safari, then tap the share icon, and select to add the website to your home screen. Now when you click the code-server icon, it will open full screen on your ipad.

Ability to Run Web Apps - SSH Terminal

Ok, now you can ssh into your linux machine.  You can use an app called Shelly (https://apps.apple.com/us/app/shelly-ssh-client/id989642999) to get a command line interface to your Linux. There are other apps as well, pick one you like.

An alternative, which has become my favorite, is to set up JupyterHub.  It's not too difficult, and when it’s running, it gives you a web interface that lets you run Jupyter notebooks (if you care), but it also gives you a web-based ssh terminal.  This is super awesome because if your internet skips a beat, it doesn’t kill your ssh session.  When the internet is back, you just reload and continue where you left off.

Once you have access to a shell, you can create your coding environment, install development packages, start/stop your app, do git commands, and all the other things you need.

Ability to view / test web apps

On a laptop, this is super easy. Start your local code, open a web browser and go to the app’s local URL.  Since iPadOS 26, we have much better multitasking, so if you want, you can have a window open for your IDE, and another with a web browser and get access to both side-by-side.  Also, iPadOS 26 has better external monitor support, so having both IDE and web browser open together is a bit more practical.

If you are running on Raspberry Pi, you can start your app server, note the ip address and port, and switch to a web browser and you are good to go.

On a Linux cloud server, it’s a bit more complex.  You should probably run your code-server and web app through nginx web server proxy.  This also means you need to arrange for your cloud instance firewall to allow http/https traffic. I strongly recommend that you use LetsEncrypt to create your own free HTTPS certificate so that all your traffic from the iPad is encrypted.  See https://letsencrypt.org/ for info. Its good, and its free.

On our linux servers, I run two different host names, both of them protected with letsEncrypt certificates.  For example: dev-coding.mydomain.com runs my code-server, while dev-app.mydomain.com runs the web app I am working on.  Behind the scenes, this is just nginx software responding to two different host names, and relaying the traffic to the appropriate app. The only way this works is if I use a standard port number when I run my software apps, like port 5000.

For example:

Nginx server (port 80 + 443)

If you set it up this way, then only ports 80 and 443 need to be open in the firewall.

After All That, Is It Still Worth It?

The ultimate solution looks nothing like what I started out to build.  Sleek? Not really.  Pro? Not really.  Convenient ? Not really.  Functional ? Yes.

Ultimately, whether I use the iPad for coding, or switch back to a laptop for coding after the novelty has worn off, I think the whole process of setting this up has been worth it.  Let me explain:

  1. Sometimes I need to travel minimalistically
    The iPad is a delight as a single companion device.  It may not be ideal for any of the work I need to do, but it IS able to get the job done.
  2. Sometimes I can get important changes done fast when away from my desk
    Between airline transfers.  During a conference.  A change for a customer while on-site.  iPad may be primarily aimed at meeting notes, searches, etc. in this context, but having the ability to get important things done without a big-old laptop is nice.
  3. Invaluable experience
    You will learn how to setup/configure/troubleshoot Linux and iPad networking.  Doing any of this will teach you a lot of good skills you can apply elsewhere.

Would I Recommend This Rig to Anybody?

First of all, I think it is silly to invest in anything more than the base model unless you have one of the perfect Apple use cases (like video or audio production) or you have lots of spare cash.  I do think that the smart keyboard is nearly essential for any of the use cases discussed above.

If you already plan to have an iPad for iPad-ish things (like binging netflix, youtube, games, etc.), then this rig is pretty cool.  I’m not sure you need to invest in the newest version to get these benefits though.  The 12.9” M1 iPad pro I sold when I got the M5 was perfectly capable for all of the development related things discussed here.  I have to admit that the M5 is thin and light, and the 11” is much more convenient for all my use cases, but that is hardly justification for the new expense.  30% cheaper for a refurb M4 iPad would be worth it in my mind.

What do you think ?

Will Apple ever take the handcuffs off and let us use the iPad like a proper laptop ?  Letting us use VMs would be a game changer, and I don’t really feel like it would take away sales from Macbooks, since iPads are still size, ram and storage constrained.