Hacker News new | ask | show | jobs
by rwalle 1535 days ago
> Easily develop software, view code or take notes on the go

"Develop software", which means writing code without the ability to run them, or the ability to compile multiple files as a "project", like all the other code editors on iOS?

I stopped paying attention to these apps because of how App artificially limit what apps can do. Writing Java offline? Good, but you can compile one class at a time, and the possibility of importing another user package is thrown out of the window. This makes it only useful for absolute beginners. There are alternative approaches, e.g. using a web browser, online compilation (which is not too different from web browser) and using a terminal that happens to support JDK. I saw developers literally say "Don't write reviews to complain, we have to follow the rules"

Which is sad because these devices as expensive as $1k are very powerful and have all the necessary APIs to make that work, it is only the app store rules that prevent the device from becoming a "real" computer

4 comments

Used to be on android and it wasn’t that much better either. I love the GitHub app, and with good CICD I have made many PRs from my phone itself and let the GitHub actions tell me if I did something wrong (though creating PRs I need to open the website). If I can get a really good code editor integrated with GitHub I can totally see myself working half my day from the phone.
I don't think it's meant to work from a mobile device (iPad with keyboard and mouse is probably very acceptable) but pushing the period key on your keyboard while viewing a GitHub.com repo will give you a fully client-side vscode editor in the browser.
That's a bit surprising actually. The play store kinda sucks but I generally can find more flexible apps on there than iOS store.

I see a lot of people run an SSH client to a server in order to edit and run code. Is that an option for you?

There's ssh clients on iOS as well.

There's termux which is a linux userland compiled for Android, more or less. I vaguely remember some play store policy issues with that. Last time I tried it I couldn't install anything as they were out of CDN quota for the packages.

I have shellfish on my ipad and it’s pretty good. I also hav Textastic and Working Copy and with that you can do fixes if you need to.
On iOS the termux equivalent is iSH and a-shell. Both of these are, somehow, Apple-approved, free downloads from the App Store, and generally work well[0]. But they all have had to fight Apple on Section 2.5.2, which is kind of similar to whatever was tripping up termux on Google Play.

Ostensibly, 2.5.2 should mean "do not hide things from App Review by loading unreviewed code", which is entirely reasonable and defensible. But in practice, App Review likes to interpret it as "do not allow the user to load unreviewed code onto their device" - which neatly prohibits all emulation and virtualization apps. iSH was banned for a time because of this exact provision - it's an x86 userland emulator with an API-compatible Linux kernel shim, much like that weird Java MIPS emulator[1] a lot of old CS courses taught assembly and OS dev in. The reason why iSH is back up is because App Review changed their mind, for reasons I don't quite understand.

There are on-device code interpreters for scripting languages in the App Store too - 2.5.2 has a separate, explicit carveout for them that Apple made very clear in the iDOS 2 rejection does not apply to emulators. In fact, that rejection letter pretty much spells out in plain language that Apple thinks emulators are piracy tools. They rejected UTM's TestFlight submissions on a similar basis, albeit with less righteous indignation and more silence.

I think the biggest problem here is the "you're holding it wrong" factor, though. Apple didn't notice iDOS 2 until media outlets were telling people how to install Windows 3.1 onto it. One of Apple's big no-nos is "do not give the user a windowing interface", because the core philosophy of iOS is that touch inputs need dedicated software with different code from mouse input[2]. Likewise, Apple doesn't think coding on an iPad is a good idea. That 2.5.2 carveout I mentioned before patronizingly calls those script interpreters "learn-to-code apps", with the idea that these are educational tools and that developers are expected to graduate to a Mac in order to get real work done.

Google likes to blindly copy what Apple does sometimes, without understanding why and what tradeoffs Apple is making. In the case of termux, Android used to be way less strict about loading code and let apps load binaries straight from user data; but they decided to enforce the same restrictions Apple does, which broke the app if they updated it for Android 10. The underlying problem is, again, "you're holding it wrong" - the people who work on security for these devices at both Apple and Google do not consider development workflows and do not want to have to do so. It's much easier to keep malware off a device if you just put your foot down and say "no programming on-device".

[0] I can't get Rust to run on iSH, and a-shell would require patching it into `ios-system` or retargeting rustc to run in WASI hosts.

[1] MARS, I think it was called?

[2] This is literally the reason why the iPad was even created. Back in the days of Windows XP, one of Steve Jobs' friends was bugging him about how XP tablets were going to storm the market. Jobs had Apple make a tablet computer demo that only accepted finger input, and this demo later became the iPhone's touch input mechanism. The entirety of what we awkwardly call "mobile devices" today exists purely out of spite.

Yes, I know Catalyst muddies the waters on this, and the Magic Keyboard breaks this ideology in half. I'm literally typing on a Magic Keyboard right now and it absolutely does make the iPad the most confused device I've ever used.

Why should Apple be obligated to make their hardware open? You have the option of not buying Apple products. Apple is not forcing anyone to buy their products. Apple is a private company. The vast majority of their customers don’t need to worry about compiling their own software. Apple is selling a product for the average consumer. Arguably, Apple doesn’t want hardcore users like yourself as a user. Hardcore users are nit picky and complain a lot. They are not selling raw hackable hardware. If that was a sufficiently compelling market , another player would have provided comparable hardware/software/platform already. What we have is a few niche Linux hardware makers, but they aren’t reaching the scale of Apple because I guess the business is not a Scalable.
Because it is a really expensive device I own, it is not apple’s business to decide what I am allowed to do with it after purchase. As far as I know I don’t rent it — even though they would prefer such a business model.

Also, come on - this “you have a choice for another device” is just such a stupid “argument”. There are 2 tradeoffs to choose from, period. And there will likely not be another for a very long time, as the main reason Windows Phone couldn’t gain traction is that mobile app developers had more than enough work to support 2 markets.

Same way as Apple isn't obligated to make their hardware open we're not obligated to abstain from criticism.
This is a forum for technologists who are often interested in this functionality. Many have fallen for Apple's shiny marketing, and they have every right to complain if they feel they have been hoodwinked. It helps other people make better purchasing decisions.
> Many have fallen for Apple's shiny marketing

Has Apple marketed iOS as a self-hosting software development device ?

> This is a forum for technologists who are often interested in this functionality

Are people who are interested in functionality seriously expecting Apple to be the most “functional”? Isn’t that the whole schpiel of Linux, open source, where everything is customizable? Why are people seeking out Apple then? This same forum frequently complains about Apple’s pricing and does comparative pricing for similar, or rather analogous, commodity hardware. If things were really comparable and substitutable that easy, then all else being equal people would be happy with the cheaper option instead of being upset that Apple doesn’t provide x, y, z.

People are desiring Apple’s hardware, form factor, quality and design. The R&D in these areas are funded by the preferences of average consumer, and the pro/semi-pro media creatives. It feels like a sense of entitlement that Apple’s R&D / strategy in building sleek consumer products that made Apple the most valuable company should now focus specifically on developers, who may not make ROI sense.

Opening up the platform for such things that running arbitrary code poses security risks, but controlling that risks makes the user interface / preferences more complex. That’s the strategy that Google / Android took. But if this approach was superior, why are these same technologists fawning over Apple then ?

> Has Apple marketed iOS as a self-hosting software development device ?

Apple has marketed iPhone as an everything device. "There's an app for that."

> But if this approach was superior, why are these same technologists fawning over Apple then ?

People feel a psychological need to justify their expensive purchases. On some axes, Apple's hardware is superior to alternatives. On pretty much all axes, Apple's software is inferior. People understandably want the best of all worlds, but in practice, they have to make compromises. If they find that they do not like the compromises they have made, they understandably will complain. Complaining about what is wrong with each device incentivizes companies to make them better, and criticizing people for complaining is not helpful.

> Complaining about what is wrong with each device incentivizes companies to make them better

Not really. Financial incentives incentivizes companies to make devices “better”. Additionally, adding more complexity and adding low level hooks for developers is likely to make things worst for the majority of users.

>Financial incentives incentivizes companies to make devices “better”.

Financial incentives follow from people complaining about devices prompting other people not to buy them.

> Additionally, adding more complexity and adding low level hooks for developers is likely to make things worst for the majority of users.

Who is asking for more complexity? The additional complexity of iOS comes from giving Apple special APIs that nobody else is allowed to use.

There is nothing not already implemented needed for compilers other than AppStore pulling the trigger on already working apps.
Running arbitrary Turing-complete programs that output Y from X is not customizability. I’m not asking to change the lock screen.

They have more than capable enough processors for that, it’s not some happy meal menu present that can only run a single stupid game.

I've never used those. Can you write and release the code for anyone to modify/install and run on their iPhones without Apples approval?

Because if so, that's great.

Can you do that with any computer? I figured you need apples blessing to use TestFlight at minimum.
Not really without Apples approval I guess, but in Playgrounds you can build full apps and distribute them via TestFlight, even submit them to the App Store.

I have also found getting the TF approval is trivial. I use it to build small apps for myself and friends for one off things.

*Apple