It's a sad state of affairs that the iPads are so incredibly powerful, with the exact same silicon as MacBooks, and yet to do real development work on one you have to reduce it to the worlds most expensive thin client connected to a real computer somewhere else.
Even Chromebooks, which are actually supposed to be thin clients and which are quite locked up compared to a "normal" laptop with a standard OS (Linux, Windows, macOS), are way more capable devices for development work (among other things, being able to offer an actual Linux environment [1]), while being far less expensive than an iPad.
It got me wondering why they don't do something akin to Microsoft's WSL which lets you run a persistent Linux VM in the background, but of course that would loosen Apples grip over the software ecosystem by letting users run arbitrary code from outside of the App Store. Heaven forbid people start making local Linux apps which spawn a web UI accessible through Safari. That's also why they will probably never do an iPad "Pro Mode" which boots into full blown macOS.
it would be great to cmd-alt-9 on an Ipad and open up a virtual terminal that is running directly on darwin, allowing any shell or homebrew app. it would go a long way.
Here's a submission on this topic that was trending on HN about a year ago with +500 comments: Buying an iPad Pro for coding was a mistake (https://news.ycombinator.com/item?id=36530607)
Hardly. The device by its very design and form factor was designed for information consumption as its main purpose. Everything that allows the device to be used for information creation today is an afterthought to the initial design and purpose and therefore the experience you are seeking will be handicapped by the initial design and purpose of the device.
If a hammer didn’t have the “artificial constraint” placed on it of missing a standard slot head or Phillips head driver (and hammer manufacturers can clearly install them if they chose to) it could be a more multi-use tool than just a hammer. Likewise, screwdriver manufacturers would only need to add a hard striking surface to their tools for them to be also used to drive nails too.
I had a multitool hammer/screwdriver combo once. It sucked as both a hammer and a screwdriver and I found myself always reaching for my actual hammer for driving nails, or screwdrivers for driving screws.
But is the iPad actually locked down? There are developer tools available. If they don’t meet standard is there anything actually stopping developers from writing a better one?
Seems to me the big complaint is not that you can’t write code on it, but that it doesn’t run MacOS. But that brings me back to the original intent of the product—It’s form factor is designed for information consumption and only recently with the introduction of the M-chips on the device, it would have made a pretty shitty MacOS device in prior versions.
So recent tech has improved the screwdriver so that it could be used effectively as a hammer too, but I don’t think you can realistically say it was greed that caused Stanley tools to create both hammers and screwdrivers before the tech changed to combine them. They were two separate tools because they needed to be.
> If they don’t meet standard is there anything actually stopping developers from writing a better one?
Uh, the App Store guidelines?
>it doesn’t run MacOS
No, it doesn't, but they both run XNU and share a huge amount of their userspace. If someone was clamoring for AppKit on iPad, yeah, you'd be correct in saying that's a silly request, but macOS and iOS are for most intents and purposes the same, aside from the artificial limitations placed on the latter to protect App Store profits. 1-hour of battery life / Wh of battery capacity between the last iPad Pro with an M2 and the M2 Macbook Air are pretty close too, its not like the limitations are there solely to save battery life since macOS with is yucky icky energy hog background tasks and spoooOoOOOky applications that haven't had their code inspected by Apple and might be able to do maniacal things like read the filesystem don't tank the battery life that much after all. (52.6Wh in the MBA for 12 hours of browsing, vs 40.88Wh in the old M2 iPad Pro 13" for 10 hours). Of course these are very different kinds of devices with very different feature sets, but minus a touchscreen and OLED, plus a hardware attached keyboard and trackpad, what are the actual material differences, not vague market segmentation, between a Mac and an iPad?
If the iPad is only for content consumption, why does Apple sell one that stock is better than most of the Macs they sell? Why does Apple market and position the iPad Pro as a content creation device, why do they bother adding content creation features and multitasking improvements and so on to iPadOS, if it is not meant to be a content creation? If it is meant for content creation, why is it only the content that can be created in ways Apple deems allowed for the device you bought from them?
You are only arguing from the “now state” and comparing device capabilities that have only existed for about 18 months since the M series chips came out. iPads of 14 years ago, even pro models pre-M chip would not be reasonable devices for development or MacOS. Original intent was information consumption. The design and form factor speaks to this as the primary function of the device. Sure as tech has lead to more powerful hardware, even where it has added content creation capabilities, they are still focused on content creation where the form factor is appropriate and doesn’t get in the way.
The expectation that Apple should now consider the device and tune its software and OS to SWE is a pretty bold expectation. Frankly, most devs I know wouldn’t use the device for hardcore dev even if it ran MacOS. It would be useable for those few moments when you would not be behind a desk and need to code, emergency fixes and the like. Pretty sure Apple’s product team knows this and are not all that worried about that use case.
The hardware is indeed powerful. The other day, I attempted playing a 8k30fps HEVC file (around 400Mb/s), and my new iPad Pro M4 has no issues with it, decodes and plays it well!
And my MacBook M1 Max 64gb actually really struggles to play the file, often stutters and scrubbing in Quiclook is kinda unusable.
So yeah also thinking whether the iPad Pro was a good purchase, because of how limited the software options are.
I’ve been maining an M4 iPad Pro for a few months now since frying my laptop (which ran Linux) while travelling. There’s a lot to love about it.
Sadly, one discovers dozens of minor bugs and annoyances, that are mostly specific to doing productivity/dev work.
For example, when I use Cmd-Tab to switch tasks, there’s a ~ 1/20 chance that the Cmd key will become ‘soft-stuck’. That is, I’ll start typing and the OS will act as if I’m holding down Cmd, often messing with my browser or active project. I have to tap Cmd again to ‘unstick’ it. It’s not a hardware issue- An Apple store has already replaced the keyboard for me, and the problem persists.
I guess no one at Apple dogfoods the iPad for productivity? Which is sad, because here this thing is! It exists! Productivity features have been at least added to iOS!
On the plus-side, I’m getting deep into doing sound synthesis / music production in iOS. The ecosystem is kind of exciting. I spend most of my time inside Audulus (Max/PD-like data flow/DSP) - it is criminally underrated, and so much fun.
I could really go on about the pros and cons but will refrain. It’s just such a mixed bag.
This is ultimately why I returned my M4 iPad pro. Amazing hardware that's so limited by restrictive policy that it amounts to little more than a fancy dumb terminal.
It’s confusing to call an app a web IDE, which usually denotes a web-based IDE you use in a web browser, not a locally running IDE for web development.
Yes, web development IDE is what we're getting at. We first built Inspect Browser, an iOS web browser with built-in dev tools, and figured an IDE for web development with Inspect Browser embedded would be a good next step.
Now, getting PHP and NodeJS to run on device was quite the ordeal...
Kind of a tangent but my biggest blocker to adopting an iPad workflow is the lack of support for a customizable keyboard layout. Does anyone know any app or something that allows this or non-canonical layouts impossible on iPad?
I don’t see it as being intentionally dumbed down, more that it never got those features in the first place.
iPadOS was born out of iOS. Why would iOS build support for F keys? F keys themselves are a hold over from quite a while ago. Apple tied to repurpose that space on the laptop with the old Intel MacBook Pros. When building a new OS, with a new software keyboard without F keys, why would they spend time developing around something that didn’t exist? When adding keyboard support, why would they add support for keys that don’t exist on the software keyboard?
I can see where that would be low on the priority list. I don’t think anyone at Apple had F keys working, then actively deleted the code to handle it while laughing maniacally.
I too, am heavily invested in my keyboard shortcuts. Goku + Karabiner gives me the luxury of toggling between apps and doing repetitive actions without moving my hands away from home row. I really want to switch but this missing feature is a dealbreaker for me.
An external keyboard negates the whole appeal of the micro form factor. The magic keyboard enabling its use as a laptop without requiring a kickstand makes the iPad almost perfect if not for the lack of configurability of the keyboard. I know mine is a pretty niche case but thought maybe someone in the community has come across a solution.
JupyterHub and BinderHub can spawn containers that also run code-server. Though repo2docker and REES don't yet support devcontainer.json, they do support bringing your own Dockerfile.
As a result, unfortunately the F1 keyboard shortcut calls browser help not vscode help.
Aren't there browser-based RDP apps that don't mangle all of the shortcuts, or does it have to be fulscreen in a browser to support a VM-like escape sequence to return keyboard input to the host?
tmux+vim is the most underrated productivity tool I can think of. There's a learning curve for sure, but I'm immensely glad I invested the time to get in. It's paid off many times over for me.
No, I meant portrait mode, but I shouldn’t have used the word “typical.”
I got a convertible 2-in-1 laptop (in 16:9) after the iPad experience, figuring it would be similar. It really surprised me, after using the iPad, how much I dislike the laptop in portrait mode.
Good point, though, a totally typical (aka not convertible) laptop would be more or less impossible to use in portrait mode. Sorry for the confusion.
For iOS I’ve been using iSH. It’s on GitHub (and the AppStore) and is an Alpine Linux shell for iOS. It provides no creature comforts for managing SSH connections, but does drop you into a pretty standard Linux shell. I believe it’s a stock Alpine install. iSH is an interesting project in and of itself, but in this context, you can also install a standard openssh client. This is usually as much support as I need on my phone or iPad to connect to a remote server.
ish looks quite good. I was using blink shell, until they switched and I didn’t notice in time to get grandfathered in. But I’m beginning to wonder if ish would have been a better pick in the first place (although, I don’t have a use for ssh on iOS beyond what Panic Prompt provides anymore, anyway).
I liked blink shell and panic prompt. In particular blink shell seemed very Linux-familiar. I switched back to a laptop a bit ago, though (iPad+ssh was a pandemic era fix that ended up surprisingly nice, but I can’t bring my desktop to do ssh over lan, if I want to go to a cafe or something).
"secure shellfish" has some support for images, movies, etc. I'm not sure what they're using for transfer. If you ask it to, it installs ".shellfishrc" which adds a "quicklook" shell command.
It also has some integration with the "files" app to transfer files in and out of your shell session.
Edit: and I've got a cron job checking on a web site that will send a notification if has changed to my watch via the secure shellfish "notify" command.
Yeah, I don't usually use vim for coding, but tmux+vim is my weapon of choice on iPhone. I don't think I could manage vscode or emacs without a proper keyboard.
I've gotten usable sessions doing Lean or Agda programming that way and they rely heavily on unicode input (handle by vim) and interaction with language servers. But I still prefer an actual keyboard and larger screen for anything serious.
I'm using "shellfish" for ssh connections. And I use "working copy" by the same author for browsing source code on the go.
iPhones will happily pair with Bluetooth keyboards, Apple’s Magic Keyboard is pretty good IMO, if you can bear a short key travel (and even then, it is a nice crisp short travel key).
I started on a TI-83 Plus with a program that helped factor quadratic equations. Before I knew it I was making games on it. What I would have gave to have had an iPad with all that RAM!
Kids in the 80s and 90s used to do that on their home computers (otherwise mostly used for gaming) where that was built-in and straightforward, when they were so inclined. On iPads, it’s not built-in and anything but straightforward.
Since VSCode can be installed as a PWA on chrome, is it installable on iPad as a PWA app to use from the desktop and avoid pressing back to a webpage?
Also interested how it handles when network is lagging. Is the input laggy or does it smooth on the client and it syncs once network stable things sync?
There is a iOS app that acts as a client to specifically connect to code-server instances. It removes the chrome from the web browser and makes things like copy/paste easier. IIRC, it was much more pleasant than the PWA version (but it’s been a while since I meaningfully used it).
Serveditor is the one I’m thinking of. Not sure if it is still around or not. There were paid plans for them to host your backend, or it was free if you had your own server.
Setting up a github Codespace allows you to use VSCode inside a browser, and in my limited testing, it worked OK. Wouldn't want to use it full time, though.
While laptops are slightly less worse than tablets ergonomically (when you need to type a lot), a height-adjustable desktop monitor (or two) with a dedicated keyboard is what you really want.
And the ipad is pretty light… if i could use a proper terminal (with all the keys working, including F1-F12) i might ditch my laptop… i messed a bit with remote desktop via rdp and it’s quite usable - worked okay when i tried it on a bus driving on a highway at ~110 km/h over a 4g connection).
So yeah i could still access a full linux desktop either via ssh (shelly) or via rdp (via the Microsoft rdp client)
The 13" MacBook Air is 1.24kg (or 1,240g) according to Apple's tech specs.
From what I can find[0] the comparable iPad Pro 13" with Magic Keyboard is 1,246g.
So for someone who uses the keyboard all the time, which I expect to be the case for anyone using it for coding, the iPad with Magic Keyboard is heavier than a laptop, technically speaking. Functionally, they are the same weight.
I remember seeing that a previous version of the iPad + keyboard was both thicker and heavier than a MacBook Air. Unless someone is going without a case, and only using the Apple Pencil (or their fingers), the iPad is not the thin and light option it's sold as.
Going with a form factor that makes sense is the important part. Will the user actually use touch or the pencil? Will the keyboard always be attached? Where and how will it be used? I personally find an actual laptop works much better in a chair or couch than an iPad, if trying to use a keyboard. When using an iPad with a keyboard, I feel like I'm stuck working on a hard flat surface of some kind.
(this comment is about using ipad as a general computer, rather than purely coding)
if you're like me and continually open new apps and browser tabs, never closing them, then one benefit of using iPad versus mac is the OS process lifecycle. iPad/iOS processes that are not in focus go into background/suspended state, and don't make your ipad slower and slower - whereas on mac you need to be a bit more disciplined, or else ...
If you include a keyboard, you're not going to do much better than a macbook air. A 13" iPad pro with keyboard is actually .3 lbs heavier at 3 lbs than a 13" MBA at 2.7 lbs.
The other issue with an ipad and coding is weight distribution. Tablets are too top heavy to work well in a clamshell setup if that's how you're going to use it.
This happens to me periodically as well. I can't explain it, but all the sudden I just hate being at my desk and/or in my office.
Luckily I don't use an IDE (just Vim) so my solution has been to take my laptop to different places, sometimes around the house and sometimes outside. A coworking space a couple days a week seems to help a lot too.
Apple is in a pickle because of background app restrictions.
On Android, OEMs and App developers play tricks to hack those restrictions and you end up with awful user experience and poor battery life.
If apple loosens background restrictions to allow for IDEs, compilers, terminals and any app that needs to keep a socket or child process alive -- an entire league of background battery-killers will hit the app store
This is a case of Apple discipline in favor of the iPad platform.
The apple silicon laptops get pretty close to all day battery life with real multitasking. I guess the iPad has a smaller battery, but I would be interested to see how long running macOS on an iPad would last.
Apple could even support switching the iPad into a desktop mode, which would be real macOS. Could be similar to how the Steam Deck switches to KDE.
I suspect the real reason is Apple wants the iPad to remain a consumption device so they can sell you more than one device.