Apple provides thousands of APIs to make developing on the platform easier, has created their own programming language that integrates nicely with the platform and has a fully integrated IDE that works with both above.
Sure, buddy… They don’t care about you unless you develop for their platform. And who can blame? The above is a terribly expensive and timely investment.
My only concern is that standard would easily place Oracle as the winner of most corporate care for developers in a terribly expensive and timely investments!!!
Lol. Have you ever used their “IDE”? My guess is you haven’t based on the tone of your remark. Apple has been developer-hostile for years, and OP was just synthesizing their thoughts around this and TBH I found the conclusion to be fairly nuanced and apropos.
I don't mean this as snark, I'm genuinely interested: do you have a phrase I can search for or a link to that? I don't think I've ever heard that before but I would love to start citing it
thats great (i use swift format plugin myself) but really apple should provide these features not 3rd parties and ideally format while typing not just save
Lol. Have you ever used Android Studio IDE? The grass always looks greener on the other side but Xcode and iOS development is miles ahead of how slow and unhelpful Android Studio is the majority of the time. Don’t even get me started on opening up your app 6 months later to update the code and it’s a 99% chance some Android gradle build system or dependency has changed and broken the build…
I love how it has become a meme in Android developer circles that a "stable" Android Studio release always requires a fix release shortly thereafter.
Also Gradle breaking the DSL all the time has become such a pain, that eventually they had to create an upgrade wizard, as if debugging performance issues with the build wasn't fun enough.
Say what you want against Gradle, but that method of project/workspace configuration is miles, no, lightyears ahead of the dumpster fire that is the xcodeproj format, especially when working in a team.
You should try to write an app for a GNU/Linux phone, to see how being free from a duopoly helps in real life. For that, you simply use all desktop tools (and the app will also run on desktop).
I cannot disagree more on just about everything you wrote.
In my experience, Xcode has been terrible, sometimes borderline unusable. The horrible project format, merging pains when working in a team, interface builder being trash in general but completely unusable when you use a lot of custom components with @IBDesignable properties across multiple modules - in that scenario it sometimes rebuilds everything in an endless loop, and brings even the most powerful Mac machines to their knees.
In that state even changing a simple property on a view takes 15 seconds of 100% cpu time.
Sure nowadays there's SwiftUI but IMO it can't be considered as anything more than an alpha until they fix the horrible navigation woes. And even then it still uses UIKit under the hood and you can see countless internally used constraints breaking all the time in the logs. At least that's how it was when I tried it a year and a half ago.
And that's not even touching on the cruel joke that is the xcodeproj project format.
Apple didn't even provide a package manager until relatively recently for God's sake. It was left to the community (cocoapods) to fend for themselves in this regard.
I've used every major ide since turbo Pascal in the 90`s and xcode is the less intuitive ever.
I'm not an Apple user and when I have to do anything I don't know on Mac, the way to find it is always with the question "what's the simplest way to do it".
Except xcode. I always have to google or gpt to find what I want.
xcode is indeed the worst coding software I ever used, it looks like some kind of 90s software which got left rot since.
The whole thing takes 13GB to download where resuming fails, has an undocumented config format which doesn't work with git properly and is more sluggish than an Electron app.
The app upload process itself is so broken that even Apple had to release a third party tool to bypass it.
I refuse to believe they are using this thing internally, they must have some kind of special internal process to make this mess sort of work.
I could say similar things about appstoreconnect where even reordering app images is broken with a race condition if you click too quickly and you have to reload the page.
When the stars align and the mighty gods bless me, I am lucky to have Xcode download only 15GB to update. Once, the update got borked and consumed all free space in my Macbook when I kept retrying and almost bricked the laptop
It is utterly insane to me that this is the only way to build and sign apps for Apple devices locally. At one point, I almost burst into tears cause I was excited that they finally added an update that highlighted the line the cursor was on
It’s eternally expensive as they extract more and more money from the developers in new ways too. Building those APIs and tooling is never paid off because there’s enough unpaid evangelists socially guilting you into paying for it. We should be so lucky that Apple extracts billions every year and says when and where to stop and go.
Swift is great, but the vast majority of apps really don't need to be lovingly hand-crafted for each platform, and Swift is (currently) a bad choice for anything non-Apple.
Personally if I were working on mobile stuff, I'd be looking at .NET MAUI.
I'm not sure why you think MAUI is a great choice considering its current status. There is a huge lack of learning resources, a very tiny community, and very few-to-none successful applications built entirely using MAUI at this point. There isn't any strong guidance or opinionated advice for how to architect or scale your app from Microsoft, either. Avalonia is a much better choice if you must use .NET, but outside of people who really, really like C# or have legacy apps they want to migrate, I don't think either will be very good choices for new greenfield apps. If anything, Microsoft has been signaling that Blazor Hybrid is what you should be using, and while it does use the same core technology under the hood, it is much more at home for C# developers who have been doing ASP.NET which has far more developers than WPF or Xamarin ever did.
They don't develop those APIs out of the goodness of their heart - it's a lock in strategy.
They've made it practically impossible to write native cross platform code that runs on IOS, and they've everything they can (within political limits) to prevent web apps from being able to compete with native apps.
The license may look confusing, but it's pretty permissive. I highly recommend Qt. I developed a block editor[1] (similar to Notion) using Qt C++ and QML, and my development experience is pretty great.
I likewise have a fairly sunny perspective of Apple development, I even like XCode (since SwiftUI, at least… could never get the hang of Interface Builder).
But the fact that he got in to work on a music app is illuminating. The Apple audio APIs are an absolute mess. Media Player, AVPlayer, Core Audio, AVFoundation, AVAudioEngine… it's like competing teams dating all the way back to NeXT kept writing their own libs and somehow they all persisted through the iPhone era.
I spent about three months of the COVID lockdown trying to make a Shoutcast/Icecast player, it was excruciating.
OP here. Funny you mention Shoutcast, because a Shoutcast player is what I'd made earlier - https://github.com/mnvr/Soundtrack. So I sort of know what you mean :)
And you know the reason why it's macOS only? because the Apple App store reviewer rejected it heh.
You left out that they lock down anything that isn't those things. I tried developing an app of my own on macOS, not using Swift and their tools, and it's a huge pain. They have deprecated and version locked OpenGL for no other reason than to push their own tools. Trying to just get an external DLL to load was nearly impossible. Anything cross-platform needs to be converted down to their tooling, such as Vulkan to Metal. MacOS is even more of anomaly and special case than all the Linux distributions.
It's crazy how much easier development on Windows is. And Microsoft's is almost all cross-platform. None of those things you mentioned allow you to work in a platform agnostic manner. Whereas Windows supports their own stuff like DirectX but still allows direct running of Vulkan, OpenGL, etc.
It wasn't that it was not supported. It is that Apple is openly antagonistic to and actively blocks anything that isn't theirs.
And you also left out key information. I don't have any issues with the same development on Windows or Linux. Apple is the outlier and isn't doing some reasonable thing.
Apple is by far the most troublesome platform to develop for. They literally make you do it their way, and you cannot recover any of that work for other platforms.
I generally agree with you, but on the other side of the coin, if you follow the processes they’re forcing on you… it’s pretty seamless. Sometimes it’s a bit buggy when they release new APIs or versions of tooling, but given the amount of people who do Native development and the money it generates, it gets resolved.
I don't have infinite time and energy. It would be easier to just not support macOS rather than learn an entire stack just for them. Microsoft also has a Windows-only stack, but its perfectly fine to use others.
This is an overestimation of how much effort it takes to learn another language and stack, especially in a world with Google, Stack Overflow, and LLMs.
I’m not sure what you mean by “entire stack” when it comes to mobile development, especially with iOS. If you want to target >85% of all devices, you aim for iOS current version - 1, then Swift and xCode your way into AppStore.
I am obviously over-simplifying it, but my point is it really depends on the market you’re aiming for. Like if you think you’ll make an app for users in North America, not supporting Android makes more sense. On the opposite side, if you want India, LATAM, you can drop iOS and never learn anything about Swift since your ROI will be very little. Again, heavily depends on what your goal is.
I agree with the GP. I feel like you're trying to walk into a steakhouse and ask for pancakes KNOWING it was a steakhouse before you went in. Pancakes are great, but it says steakhouse right on the sign that says "We sell steak and nothing else"
It's not like Apple provides their platform and then if you don't want to use it then fine, you're on your own. They are actively hostile towards you doing something else.
If I leap off your analogy, which again doesn't really work, it's as if they throw tomatoes from their steakhouse as you go towards the pancake house.
Are they? They own the OS. And they reserve to themselves the rights to change how it behaves. There’s no standard API, only tooling. So yeah, it’s obvious that you’ll be in great pain if you try to sidestep the tooling. Everything apart from their SDK is and will always be an hack.
If you go and develop for android (the pancake house) how can they possibly be hostile toward you? Sure if your want to develop for both then it's not ideal, and I agree it sucks to have to learn two languages, but that's not apples problem.
This. Apple has been slowly, relentlessly, sneakily squeezing out any open or cross platform dev options.
If you want to develop for Apple's devices, you have to sacrifice your future career options with any other tech stack/vendor by investing your limited time into skills that are only relevant in the Apple ecosystem.
Then you have to hope that it's still financially viable to do software dev in Apple's world for the next few decades - which given their demonstrated behavior of scraping back more and more of the pie for themselves and their shareholders, seems like a risky bet.
I don't know you, but even if you had a highly successful app on the appstore, I (an internet stranger) would care more about you being hit by a bus than the Apple corporation would, or any of the MBAs over there that you worship.
Any relationship you think you have with Apple is completely in your head. They take advantage of people like you all the time. Developing for Apple is an abusive relationship, and that's always a difficult thing to come to terms with.
I know this comment is probably just going to annoy you and result in a long, ranty, defensive, passive aggressive response. I don't care. I still love you more than Tim Cook/Steve Jobs does/would, my fellow dev.
For me, that's part of the problem. I'm sure Swift is a nice enough language based on what I've seen. But I'm not going to invest a substantial amount of time learning a language that is realistically only ever going to be useful to target one platform by a single company.
I think some of the processes you include nudge your presentation in a positive direction. ex's:
Google is an example where I never grieved much because I understood the dynamics ... With Apple I didn’t understand the dynamics.
The point where I disgustedly gave up was when I found out that while I was jumping all these kafkaesque hoops, instead you could just go to Apple's own web music player, type MusicKit.getInstance().developerToken in your browser console, and you’ll get an unrestricted root token for free!
Eventually, this is what getting-to-usable-tech looks like. I think it gets withheld from the narrative because
1) people wrongly heap damnation on wrong roads and
2) some folks who missed some particular wrong road will demean those who ran into it.
And there's this...
This realisation has made me happier since I now know my place. I can like their products without wanting to develop for them.
...which neatly defuses some (pointless) stigma tied to helpful errors & failure. I think it makes healthy thinking more approachable.
I believe that there is too much negativity going around, and I try my best to nudge things in a positive direction, and reading your comment I feel happy that it now that is also being reflected in how I write.
Apple users are conditioned to pay for things. Apple applications have higher buy rates than other platforms because outside of HN the average Apple user is less capable and less likely to pirate or need "Free" to entice their attention. I don't think anybody writes software for Apple thinking that they "care" any more than Google or Microsoft.
Most users are incapable, that’s why they’re buying and using other peoples software.
How much is your time worth? Apple does happen to capture the market of users that are able to pay more to save more time, though.
Not that I entirely disagree, but that doesn't seem to be consistent with the complaint from app developers that they are unable or barely able to cover their development cost from app store sales.
Everyone is conditioned to pay for things. Either in the form of taxes or directly. Everyone is used to recccurent payments (internet, electricity, water,…). Google, Facebook have been the biggest proponents of software in exchange of your data instead of money.
Do you actually have any evidence to back up this claim? I’m assuming the real reason is because the average Apple user has a higher income than the average non-Apple user.
I once had to setup an Apple developer account to have one of our municipality apps shown as ours. I'm not sure why that was considering all our other apps never needed that, but it was what it was. It was a pretty terrible experience. First I needed an Apple account, and since I didn't really want to use my private one, I needed to create one for work. I couldn't create an "organisation account" so it was tied to me. Luckily we had an old iPhone waiting to be thrown out, so I could use that. Then I had to wait for days to have Apple confirm who I was, but this was basically just Apple calling the person I had listed as my boss and then having him say yes. I hope they did more research than that, but I'm not sure they did, and the people who called us were even worse at English than us so it was hilarious to say the least.
Then we had to set up payments, because for some reason you need to pay money to have an Apple developer account. Whatever, in the budget of an entire city of 60.000 people, that's not even going to show up anywhere, right? Well... Since it's a foreign subscription and since Apple has no way of doing this as a B2B purchase that can be easily registered with our local tax agency, it had to go under yearly reviews. It was also only possible to pay with a credit card which again tied it to something the organisation would need an actual person to renew and since organisational credit cards are tied to people, and since people change jobs, and since you need to be in actual human contact with Apple to change owners... well you can imagine how much fun that was.
This was some years ago, so maybe things have changed, but out of any of our 300+ enterprise IT solutions that I ever worked with, Apple was the only one that was this horrible. To be fair, I'm a developer, I'm not sure how I ended up with the task and maybe these things are simply more common in the operations side of IT than I know.
This is probably worse today, they're all the time throwing more roadblocks to avoid people to publish apps in their "ecosystem", except if you're a large US company that can easily handle the paperwork.
I have never understood how Apple gets away with it and even more than that gets a huge amount of love. Whereas, if Microsoft just looks at you wrong, pitchforks are out. I'm not cheerleading any company here, but it has been frustrating in my career where people absolutely refuse to touch or even consider anything Microsoft related but love their Apple computer. Apple is probably hundreds of times more agressive, more stubborn, and moat building than Microsoft. Microsoft's dev tools are some of the most open in the world for a big company, certainly more so than Apple and Google.
I was an Apple user and even fanboy for many years. I left because they ignored macOS and then started making it iOS like. I have far less issues on Windows than I do on macOS.
Apple sucks dealing with anything that doesn't have their name on it. External monitors have terrible support because Apple refuses to implement a specific protocol making that nice, like everyone else does. You basically have to use Apple's monitors or their overpriced officially supported LG monitors they sell in the Apple Store if you want an integrated monitor experience. Several other issues with Apple exist with peripherals. I have to make special router settings in my home because my partner's work Macbook can't switch between the mesh network. My partner also had to get IT to give her admin access so that she could rename iTunes because it was the only reliable way to keep iTunes from opening every time her non-Apple Bluetooth headphones connected. Search about what it takes to rename an app like iTunes. It is literally insane.
Apple's entire stock in trade is "computing as it should be". Their stuff is the coolest platform ever to exist, which means that developing for their gear is like getting into Studio 54: only the hottest and coolest are allowed in, permitting anything less would tarnish the club's reputation. Which sucks for most devs but it's part of being the coolest.
Microsoft just wants to dominate. They don't care if the UX is garbage, as long as the user doesn't have a choice.
Experience is subjective I'd say, I certainly disagree with that after using the old iPhone of my wife for a year to not make more ewaste. I found the whole thing buggy and confusing, I finally got rid of it after an error loop when installing apps meant that I had to format it again to fix it.
I'm sure most users do love it though, to each their own. There's certainly enough space for all kinds of products and all kinds of consumers.
Sorry, but I use Mac and Windows computers (by job requirement). Windows is and has always been clunky and difficult to use. Maybe you don't feel that, but it is a fact. I wound't spend any time with windows if I had a choice.
In my opinion, macOS has an horrific UX especially for power users. It's so bad that there is a cottage industry of third party developers creating apps to refine the bad out of the box experience with macOS. Most macOS users buy several of these apps and it's just an accepted part of the culture around Macs.
Windows isn't great and has other issues but I think it has a better UX overall.
There's ample room to criticize either OS, and given the opportunity I'd avoid either both. Nobody I've ever met will unilaterally defend stock MacOS. You criticize Spotlight, they say "buy Raycast!" You mope about window management and they tell you to install Rectangle. You get jumpscared by the Apple Music popup when you put on headphones, and a concerned user will always chime in with the registry command to disable it. It's a jack-in-the-box of modal advertisements and sophisticated service clients.
On Windows, I get the APIs I want like Vulkan without arbitrary software restrictions. It's also a ghoulish wasteland of service integration and user hostility, but at least they let you do what you want. That sort of immediacy is probably why a lot of users prefer Windows even if it's arguably poorly-designed.
> Maybe you don't feel that, but it is a fact.
Facts normally come with citations. Do you have anything better than your opinion to cite?
Apple's iOS and macOS have very similar dark patterns, but they go unmentioned. Yes, Windows has been making some really bad decisions with the Windows and Edge products, and it is really annoying. But at least their dev tooling is top notch, and you can easily interact with actual Microsoft employees in their repos. It's a nice experience.
Yes, I agree. But Microsoft should recieve some kudos for VS Code and .NET. What they've achieved is quite astounding. No one else has done what they have with the transition of .NET. Although, there is definitely an argument that it should have been cross-platform since the beginning.
I don't understand why these companies make the OS level decisions they do though. They make billions. You think they could relax and try to capture users by making them happy instead of kidnapping them.
If somebody dared to write a comment on HN criticizing Apple in the 10s, downvotes rained down on that comment. HN's policy is to downvote to express disagreement, among the other things.
That's not been the case anymore since a few years. This very thread would have been nearly impossible 10 years ago, maybe 5 years ago too.
It's because Apple doesn't have users, they have fanboys. Apple customers aren't there because of the quality of the product, they're there because they've been convinced that Apple is cool.
I think you mistyped the URL - this is Hacker News, not Slashdot. Let's keep the discussion intelligent and not bother with the mud slinging or other insults.
An interesting observation is that users of Apple products rarely go out of their way to insult others based on their choice of hardware / OS, while users of Android (and Windows & Linux to a lesser extent) seem to get quite needlessly enraged at the Apple users. No one is forcing Apple products on you guys, chill out.
As someone who uses iOS, Android, Windows, Linux, Mac, and FreeBSD on a daily basis, I believe all of them have their pros and cons.
On topic:
Apple used to quite strongly prefer (and tell) developers to use web apps when appropriate instead of a native app. As someone that has helped many companies develop apps - the biggest complaint about not having a native app is that they won't be listed in the App Stores without one.
Many of the apps I've helped develop could be web apps, but, companies really want to see their app in the App Stores.
From a North American perspective, the only thing I can think of that has changed is Google now requiring DUNS numbers for business accounts (while Apple has required them for a very long time, for business accounts).
It's still the same, I had some error loop on the iPhone when setting up a developer account and their support just didn't understand what's going on until something like 6 months after, it somehow worked suddenly.
It's as random as ever, it might work straight away or you are unlucky and hit some of the random bug in this process and it'll fail for a long time
If you were doing it today it’d probably be much easier from the enterprise procurement side. They often give out single-use virtual card numbers per service now.
I believe governments and nonprofits are eligible to have the $99 Developer Program membership fee waived, not sure when this started but it is not super new.
Obviously I can’t speak for others, but I was, for a long time, a part of this world (parents bought a Quadra as our first home computer in 1993, I had a colored iMac in 1999, I released a few crappy freeware OS X 10.2 “Jaguar” desktop apps as a teenager, had an early iPod and an early iPhone, shipped a couple of iOS apps, watched keynote livestreams, actively participated on the MacRumors forums etc etc), yet I have become increasingly frustrated with Apple’s approach and have switched to using Linux on my primary (non-Mac) computer.
I don’t feel like Apple cares about my business in the slightest. Macs have become increasingly locked down in both software and hardware, and the level of control Apple wants over what end users can do with their hardware feels more onerous than ever. When that book came out, being a Mac user felt like being part of a fun community of oddballs (I was one of like 5 or 10 in my school of 600), which is absolutely nothing like today.
> increasingly frustrated with Apple’s approach and have switched to using Linux on my primary computer
That's what happened to me too. In my youth I grew up with a Macintosh, and it was a lovely machine, a marvel of design and technology. You could tell the creators were inspired, intelligent, artistic. They cared about the user, the person using the computer - which included programmers.
As the years went on, it seems Apple got consumed by a different kind of people, it gradually bacame another soul-less corporation with profit as its main motivation. They still make good(-looking) products, but riddled with user-hostile design and dark patterns. The iPhone is not a computer in the full sense of the term, it's an appliance where the user is just a consumer.
Eventually I gave up and switched to Linux, which I had been using off and on the entire time. It's not an artistic computing experience, but there is a fundamental respect for the user. The web is similar, despite the on-going enshittification, it feels like the original spirit has managed to live on and even thrive.
Early on, I made the choice to not to invest in learning native mobile development. I focused all my limited time on the web, and I think that, for once, I made the right choice.
Today, one can build amazing stuff for the browser. And, in my very humble opinion, the vast majority of apps should've been WebApps — except for maybe Uber, Google Drive, and games.
I worked in the journalism business, and, in my country, the early 10s were filled with media outlets spending so much of the little money they had to build mobile apps.
I was the sore thumb that rejected such trend.
I knew very well that the quality of most of these apps would be questionable at best. And of course these companies won't be investing regularly in updating their mobile fronts.
And that's exactly what happened: they're stuck with apps that are barely maintained, most of which looking like ancient artifacts from a bygone era. Because that's what they are.
PWAs, especially those built with an offline-first approach, are so much closer to the native experience than those from half a decade ago. However what concerns me is Google's and Apple's incentives to help them get better to a point where they can rival native apps which could hit their bottom line.
My understanding is that there is a lot of political power inside Google (from the Chrome side of things) working to ensure that PWAs are the primary way that users interact with their phones. It's definitely a point of contention, with pressure on both sides, but there is a balance there.
Apple on the other hand is only incentivized to funnel everyone through their App Store, and for some ridiculous reason, app developers use this to justify going all in on native apps, which I think is what this article is addressing.
One really good thing about native apps versus PWAs is that once the user installs a native app and learns the way it works they don't need to learn it again until they upgrade. With anything sourced from the web, the user is at the mercy of the wevdevs, who are at the mercy of the marketing and merchandising wizards who want to shake up the UI to try and goad users into buying more stuff. It's kind of like those round baskets that supermarkets like to clutter the aisles with; somehow they think it prompts you to buy things, but for me it adds one more product to my "no, not buying this ever again" list.
Yes because for example I'm sticking to K9 mail 5.6 because of the UI change in the next versions. I picked K9 exactly because of the original UI so I'm not using the new one, which is like every other mail client. I saved the APK and I'm installing on any device of mine, also when my fingers slip on the update button. Uninstall and install 5.6 from the file manager.
And no, because if the company behind the app wants to force people to upgrade they'll make the backend incompatible with the old app. Also no, because I don't think that many normal people invest time not upgrading an app because of the UI.
not my experience. Apps update automatically for most people so they are no different than web pages. You can turn off the updating and then in 2-3 months you'll get a message the app no longer works with whatever service it's tied to and you're required to upgrade.
On my desktop there might be a few apps that don't need to upgrade but on my phone, 90% of all apps are tied to a service. Uber/Lift, bank apps, apartment apps, hotel apps, bike rental apps, social media apps, dating apps, streaming music apps, video apps, etc.
Apple has a giant advertising business, but yes, it's not on the web like Google's is. It's on their own app properties like Apple News and the App Store.
Right. Google is incentivized to push PWAs and other forms of cross-platform mobile app development (hence Flutter).
How often will the hot new app from some SV startup launch for iOS first with no Android app? Resource strapped companies that have to prioritize one platform will tend to pick iOS and that hurts Android (but is obviously good for Apple)
Google and Apple should be regulated to offer the same functionality and performance to the web. Their grip on the most important technology of the century is astounding and harmful.
Honestly first-class web mobile installs without hoops and scare walls would be the thing to strive for.
I'm not aware of any scare walls on iOS. On Android is a site is installable a little banner is supposed to pop up and ask if you want to install it. On iOS one has to open the site's share sheet and pick an install option nestled in there somewhere. I suppose that counts as a hoop, but how else would you surface the functionality without it being invasive and annoying for most users?
I think a more pertinent problem is that most devs don't want to distribute their apps as PWAs because Apple deletes saved data at unpredictable intervals and PWAs can't push engagement notifications as effectively as native apps.
When I switched from the Uber PWA to their native app I suddenly started getting bombarded with ads from them in my notifications.
Those are downloads though the app stores. The links merely funnel you though the stores.
Native web downloads of apps are impossible on iPhone/iOS. You have to go through the app store.
Native downloads of apks are possible on Android, but not until you navigate to the hidden settings and enable them. And even then, Google scares users from installing apps this way. Nobody in practice does this. It's effectively not permitted.
> but not until you navigate to the hidden settings and enable them
This used to be the case for older Android versions, but isn't anymore. Currently any attempt to install an APK from an app without permission to do so will pop up a missing permission warning with a deep link into the relevant settings page with a switch you can flip. Flipping the switch will initiate the installation of the APK. I can't imagine sideloading being any easier without removing the permission barrier entirely, which seems ill-advised.
> devs don't want to distribute their apps as PWAs because Apple deletes saved data at unpredictable intervals
Does anybody know what the current situation in iOS looks like? I researched this recently and the information is conflicting. The OPFS data (Origin Private File System, which is the new storage API for PWAs and is supported in Safari) is supposed to not be deleted without explicit user confirmation, but what this confirmation looks like is unknown (is it just the usual delete Safari history button?) and I didn't run any experiments. However I've seen someone claiming Apple separates a website and it's installed PWA's storages. This is reinforced by the fact that I can see the storage space each PWA takes in Settings (which was oddly not updated when a PWA using OPFS used some more storage). However I just deleted that PWA but there were no special prompts, just the usual native app deletion prompt, absent of the usual phrase "Deleting this app will delete its data.", only the phrase "Do you want to delete this bookmark." was present.
Google and Apple, both of whom make web browsers as well as OSes and could therefore cheat loads with anything like that. Of all the places to find someone conflating the companies with the operating systems Android and iOS.
But even then…
> same functionality
> Honestly first-class web mobile installs without hoops and scare walls would be the thing to strive for.
Coming to a future near you: npm install rm_minus_rf_slash
What's the old quote?
"""
Tech Enthusiasts: Everything in my house is wired to the Internet of Things! I control it all from my smartphone! My smart-house is bluetooth enabled and I can give it voice commands via alexa! I love the future!
Programmers / Engineers: The most recent piece of technology I own is a printer from 2004 and I keep a loaded gun ready to shoot it if it makes a strange noise.
"""
Except all the banks and railways require me to have a smartphone these days whether I want it or not.
> what concerns me is Google's and Apple's incentives to help them get better
I think that despite that, they did a decently good job. A few years ago, I created a voice-only social app: people can easily record and send voice memos.
I built it using fairly new tech at the time: the web audio api and native web components. (I refuse to touch react-style frameworks with a 20-foot pole.) It was 99% compatible with all major web browsers from the get-go, even with its fairly advanced "tech."
The only thing that wasn't cross-platform was the audio files themselves. I had to make a deep-dive into the world of encodings and codecs so that I can offer users audio files in the formats that work on their machines.
Obviously, there are areas where cross-platform-ity (??) is abysmal, but things will probably continue to evolve for the best ― hopefully.
And yes, PWAs with their offline capabilities are just awesome!
The nice thing about the web is that while it’s no company’s favoured platform, it’s valuable to all of them as a way into each other’s platforms. That’s why whoever is “winning” the platform war a particular point tends to neglect the web. See Microsoft in the 2000s, and Apple now. But all their competitors are incentivised to push the web forward, because it’s a useful fallback as a way to get their apps into the walled garden. Then, eventually things shift and the company that was dominating falls behind a bit, or is facing antitrust problems, and suddenly they care about the web again. In that way, the web is a perpetual underdog, but never goes away.
This. Apple's Safari (on iOS and macOS) is the Microsoft IE of 2020s. It's unbelievably behind the more sophisticated browsers (Firefox, Chrome) and yet, Apple couldn't care less.
It's not IE by any imaginable standard. And it's only "unbelievably behind" if you count all the non-standard APIs that Chrome ships by default and calls them standard.
A browser that doesn't support extensions unless they're installed as separate apps on the platform is not worthy of the name "browser"; it's a lock-in mechanism.
> The nice thing about the web is that while it’s no company’s favoured platform
It is effectively Google's favored platform. They effectively get to be the gatekeepers for what standards become accepted. They control the most widely used engine, and fund the only opposition so they have an incentive to avoid going against them. Just look at how everyone dropped the ball in the recent JPEG-XL vs WebP news.
> PWAs . . . are so much closer to the native experience than those from half a decade ago.
On the one hand I love this. I'm glad PWAs are helping drive people who wants and expect a certain thing towards the web.
I am also however super sad that PWAs removed so much greatness of the web. Most don't launch in the browser. None have visible url bars. They just added a new mode so PWAs can have some kind of tabs. They don't integrate with bookmarks, or extensions. They don't have forward/back. I like the web a lot, and I feel like PWAs are a major step backwards for me.
What's really scary to me js that new permissions are being added which are PWA only. I no longer can have a web like experience; I am forced to have an app like experience, without any of the affordances I get with a user agent/browser at my back. I feel so undermined here.
So tired of junk apps cluttering up my phone and tablet. Examples: There's a parking station near me that has an app, the library photocopier has an app. Could all be done on the web.
I also don't understand why a parking meter needs an app, it should have a QR code>web>stripe payment (or a text to pay), rather than 2 buggy apps on iPhone and Android, which require data to download
I understand Drive working better as a native app; it needs to be able to provide a virtual filesystem to the OS and do background syncing and such. But why Uber? Uber has (or maybe had) a mobile site that works fine for requesting rides and basically everything the app can do. I don't see what value Uber being a native app adds for the user. The same goes for most mobile games; they tend to have simple graphics that the browser is perfectly capable of rendering with great performance, and they tend to reinvent all common UI components so losing access to native system buttons and such wouldn't make a difference. PWAs should also provide plenty of storage for local save files and other game data. The exception of course being games that really push the system to its limits. I don't expect, say, Death Stranding or the RE4 remake to work well without direct access to native graphics acceleration, and they're too large to load as a single webpage. I will reiterate though that this is not the case for most mobile apps, even extremely profitable F2P ones that would benefit greatly from an extra 30% revenue. Why then do they not target the web? My gut feel is that it's because mobile users are trained to look in the app store for apps and games, not the web, while desktop users expect apps to be available in the browser with the exception of some professional tools and high-end games. That is to say, it's largely a cultural problem. Of course, Apple's lackluster support or PWAs doesn't help.
Uber could have been coded to a PWA just fine. Parent comment is simply unknowledgeable.
It's funny because the very first thing that Steve Jobs pushed when the first iPhone came out was PWA's, essentially, and not an App Store, which didn't exist yet... and the same API's are still available in Webkit I believe
Uber provides features like push notifications and Dynamic Island support to users. Web Push only became available recently, and it’s only available if you install the web app to the Home Screen.
I just opened it and it seems to be a simplified version of the app lacking a lot of features like stops and groceries.
Curiously I just realized it's the same view I get from the app on my phone a lot of the time due to some kind of error when loading the normal app view.
> I understand Drive working better as a native app; it needs to be able to provide a virtual filesystem to the OS and do background syncing and such.
That's a circular dependency though. You want that stuff because you want to use Drive with native apps and not web apps. But Drive is a first class backend (actually even more featureful, frankly) to web apps too. Basically the native Drive client is for native/legacy interop, not a barrier to a PWA future.
> Of course, Apple's lackluster support or PWAs doesn't help.
Holding the web back is entirely intentional and makes strategic sense from Apple's point of view. They're well aware that a majority of apps would work perfectly fine as web apps -- but that also removes Apple from the equation. Only allowing Safari on iOS and intentionally gimping it solves the problem.
I mean, I can't even blame them. Can't lose out on that sweet 30% cut, y'know?
I'm only disappointed that legislation took this long to catch up to their shenanigans, and only in the EU.
Honestly if their new revenue share scheme stands up to the court I could see them taking 27% from PWAs as a possible future. It would be the only thing that spurs them to make it more robust.
I don’t agree with it at all to be perfectly clear. I’m only postulating that realistically the only way Apple takes PWAs to first class status is if they get a cut. Its rather unfortunate
I'm not as hopeful that globally Apple will face regulatory scrutiny as much as it has in the EU, and even then, the EU only goes so far as well. They have as of yet had nothing to say about Apple's solution to their regulations around this
However, if the EU is silent because it considers Apple's reaction acceptable, the new laws are meaningless, unnecessary, a total waste of time, and an embarrassment to the EU.
So my hope is that they realize this and the silence is due to the EU preparing to put Apple in its place.
Well, I wish Apple advocates would stop strawmanning and posting incorrect generalizing accusations.
I care deeply about privacy. That means I trust the browser sandbox a lot more than native apps. There's obviously a reason sites like Twitter and Reddit try to force their native apps on you as soon as you visit their web page on a phone -- it'll allow them to spy more on you.
> That means I trust the browser sandbox a lot more than native apps
You shouldn't.
The most privacy invading behaviour by far is the cross-site tracking that happens on the web. Where large data companies as well as Facebook/Google are building behavioural profiles with thousands of features and data is being packaged and sold to entities you have no knowledge of.
And all of which is being facilitated by browser fingerprinting courtesy of Google recklessly adopting APIs with little care about privacy.
A native app won't prevent Google or Facebook (or Apple) from tracking you. In my experience, native apps typically always require login, and then fingerprinting is unnecessary.
Avoiding their services, and using an open source and privacy respecting browser with uBlock Origin installed will protect you however.
The latter can be done on all OSes I've used -- except iOS.
It's interesting because Apple had to be pressured into even allowing native mobile apps. When the iPhone was launched they told everyone to develop web apps.
There was a lot of internal pressure as well, smooth scrolling was such a key product feature that they eventually admitted it was impossible to do in a browser if there was any complexity to the app at all.
Uber has the same problem that Death Stranding and Resident Evil have: you can't keep shittons of data cached on-device unless you have it installed as an app and not a webpage. Uber specifically needs to support someone traveling from Sao Paulo, Brazil to Mumbai, India without needing to have more than a whisper of connectivity at their destination. The way you do that is by keeping the UI for every payment provider in the world in the app.
F2P mobile games need to be able to send you notification spam, because they're based around habituation and addiction. You couldn't do that in MobileSafari until very recently[0].
[0] Supposedly. I pinned Google Fi to my homescreen on my iPad, it asked for notification permissions, I see a notification count badge on it's app icon, but it still doesn't actually notify me when I get a text message or call.
I haven't run into no-network situation with Uber ever since every airport has wifi nowadays, but in that situation with no network, how does local on-device Uber data help to book a ride?
It's not "no network", it's "minimal network". i.e. bad wifi or garbage 3G. Or you're data roaming, in which case you'd get charged out the nose if the app decided to redownload stuff.
You do not want to load big chunk of JS because it was never cached, or as Uber used to do, download all the possible new promos every time you opened the app...
You want to squeeze through the minimal data you need to arrange your core business function.
Uber's native app and its focus on acting partially like webapp to dynamically download new content based on locality is one of the worst aspects using Uber, and is even worse with PWA.
All it takes is for network connectivity to be a little bit spotty (admittedly, Uber made it work a little bit better these days).
In the past, I've been more than once frustrated to rage from the fact that Uber couldn't just grab my A-GPS position, ping for address and send a short packet to order a car, but it had to download potentially megabytes of promo html before it let me actually do anything useful.
Avoiding it with PWA is afaik even harder (currently looking exactly into making PWA because I don't want to deal with iOS).
Uber gains benefit of functioning better under low/no connectivity, better location access and local/remote notifications as well as visual integration (e.g. showing ETAs and updates in the Dynamic Island or on the Lock Screen).
Some of these (increased caching and remote notifications) you can get on iOS if you install a web app as a Home Screen icon, but as just a website Uber might not get their minimum bar of functionality for widespread use. So far, I haven't seen any large companies have installed web apps as their go-to-market strategy.
I just wish Web wasn't such a frustrating development experience. While it has improved leaps and bounds in the last decade, I still find it to be suboptimal when compared to native offerings.
Most of that frustration comes down to tooling and more specifically TypeScript. I'm not sure how to succinctly express my pain here but I have found generally that I wrestle with the type system in TypeScript far more than native offerings.
> I just wish Web wasn't such a frustrating development experience
It's got to be better than building to target two totally different platforms (and even more once you factor in tablets, Windows desktop/Linux/macOS) and then jumping through hoops to get your app packaged, reviewed, and updated consistently onto the target devices.
> Most of that frustration comes down to tooling and more specifically TypeScript
I think that a lot of folks get frustrated with TS because they are coming at it from the wrong perspective. Instead of thinking about it like a static type system, think about it like "JavaScript with shape definitions". Give this a shot:
There are plenty of options e.g. React Native, Flutter if you want one codebase.
And if you want to have a lowest common denominator user experience that's fine but you shouldn't expect users to reward you for it. That's why successful apps tailor the experience for each platform.
Neither solution takes away the fact that you have to jump through hoops for distribution.
Web apps and PWA's built with HTML and JavaScript are likely to work as-is for a decade or more given we are likely to see minimal incompatibilities with existing HTML, JavaScript, and CSS in that time and likely to see more net new capabilities.
> if you want to have a lowest common denominator user experience...
One is a native app with a budget in the millions built by dozens of engineers. One is a web app built by...me:
That's because you're doing something much harder with web dev. You're making something that works almost everywhere. It's actually insane this is even possible. I bet one day, computronium will run Javascript.
Nah, the shitty parts of web dev are in basic building blocks other ecosystems handle without a problem. The fact that javascript can run anywhere doesn't mean it needs to have crappy build systems. It doesn't mean it needs to have constant breaking changes and flaky dependencies. CSS is crap for layouts. I've build apps with at least 10 layout systems, and CSS is the worst of all of them.
Correct, but HTML + JS + CSS is the standard we seem to have settled on, and having a globally accepted standard for anything is a unique and historic achievement, let alone for free, fast, and robust global distribution of Turing-complete computation and content delivery.
Now we can hope that those building blocks improve over time, but the current situation is so much better than it could have been.
This is beautifully put! I hope more people are able to understand the point you're making, especially how "having a globally accepted standard for anything is a unique and historic achievement".
I guess I can make myself more clear - the good thing about CSS is not the way it does layouts, but that it can do layouts on almost any device.
You can come up with a better system that runs on your own machine (1 unit of effort), but then you have to convince everyone and their dog to adopt your new standard (1 billion units of effort).
> having a globally accepted standard for anything is a unique and historic achievement, let alone for free, fast, and robust global distribution of Turing-complete computation and content delivery.
It really is amazing.
> Now we can hope that those building blocks improve over time, but the current situation is so much better than it could have been.
I think the web is under-appreciated in part because most people have never used internet connected GUI computers without it, but it's important to remember that there's no a priori reason for why the web had to exist.
In an alternate timeline we could be living in a world where all interactive software has to be reviewed by a gatekeeper. I wasted an inordinate amount of time playing with this a few days ago: https://news.ycombinator.com/item?id=39205020 and I remember thinking, it's pretty cool that you don't need anyone's approval to release something like this, nor do you need to pay excessive fees to distribute it, nor does it take any meaningful time to download/install, and yet it works on all my devices, and it's relatively secure.
The TypeScript type system is obscenely complicated because it has to be able to type almost any weird pattern people used when there was no type system.
Most dynamically typed languages are adding type systems right now, and they all face the choice between rewriting/wrapping the whole ecosystem or build a very complex and ultimately unergonomic type system.
It’s too bad that Swift → JS compiler projects are all stalled. Swift syntax is similar and I think it’d be a nice step up for people who don’t care for compatibility with legacy JS and want uncompromised static typing on the web.
I enjoy building for the web using "native" tooling, writing CSS and JavaScript "by hand."
Years ago I tried to up my game and learn to use grunt and babble and other build tools. However, I found the process extremely complex, only to end up with finicky systems that made me even more stressful, not less.
I decided to ditch all that PoS and do things the easy (and logical) way. Never looked back.
I came from the much cleaner, simpler type system of AS3, but I don't really see a problem with the complexity of TS. There are a lot of aspects of its type system I will probably never use... but I don't have to. I've written a lot of fairly complex business and game software for the web, and never found myself reaching for a conditional type. Meanwhile, keyof and union types are handy for autocomplete hints. And to me that's all TS is really about. It's just there to make large scale javascript less of a dynamic, chaotic, untyped mess.
Keep your business logic on the server and use whatever language you want. I stick to vanilla JS and only use it for DOM manipulations. I try and leverage CSS for simple manipulations when I can. I don't go out of my way to, but it can do a lot these days.
Keeping this mindset, I encourage you try liveview in any language of your choice [1].
This approach allows you to handle business logics on the server, and update the screen in browser from the server as well.
I stopped wanting to write SwiftUI because the compiler there is the worst I’ve ever used. It uses some kinds of complicated inference for ViewBuilders, and the inference can get confused if you have a type error and deadlock checking a View. It’ll put an error squiggle on an entire function and say “sorry we timed out trying to typecheck this, can you figure it out?” I’ve never used any typed language compiler that gives up on 100 line or less functions.
> I just wish Web wasn't such a frustrating development experience.
I have to say, having recently gone back to doing some web dev work (doing some dashboards with lots of D3 visualisations), I was pleasantly surprised to see how better things have gotten. working with CSS is better (with stuff like grid, flex, nested selectors), and JS is also much much better (import maps, fetch API).
I'd say for developing cross-platform apps it's a pretty good deal.
This comment almost reads like from another dimension. I made the choice to stick to web too.
But everywhere I look, IOS, mac, android, windows on the phone, tablet, tv, cars its all apps. Be it under the guise of security, features or whatever, all of the UI is driven from apps. Some do a better job than others, but sucky or not you're forced to go the app route.
There really is nothing like the web. Having spanned the gamut of native development, I can say confidently give me my HTML and CSS any day of the week. Concerns about framework churn and build system complications are nothing in the face of dealing with a locked down platform that simply will not allow you to do something you want to do.
Sometimes, we forget how open the original web/www was and even today, how open it is overall compared to the "app ecosystem" monopolized by Apple and Google. Yes, there is "cloud" but nothing stops me from renting a server and hosting my own stuff. That didn't work out ? Np. Get it out of there and rent another one. Yes it may have "lock in" and not that easy but it's not impossible.
With the whole App ecosystem, you only have 2 choices and you are at their mercy. Literally.
I personally would never build an entire business around an "app". Never. I may have an app as a small supplement if at all and that too if my audience really demands it. I hate products that force an app on me when I am on a mobile device. No Thanks. Heck, bring back the whole m.website.com thing but I prefer to avoid the whole app ecosystem.
> With the whole App ecosystem, you only have 2 choices and you are at their mercy. Literally.
And if it's the two I'm thinking of, one of them is a customer-service black hole with a ban hammer, so overnight one could find oneself in the "beg the front page of HN for help" camp for any reason or no reason
I say prayers that the new sideloading thing for the EU will inspire similar calls here in the US, but also I'm super cognizant that such a thing would require a sufficient mass of folks who know or care what "walled garden" or "sideloading" mean :(
Writing for the web would be great if you didn't have to learn a new framework every six weeks because people will not stop coming with new ways to do the same thing over and over again.
Just go with react bro... Now seriously, React has been working fine for 10 years. If you need to chase something different every 6 months, I'm inclined to say you are doing something wrong.
You don't have to do any of that. The older options never go away, and don't stop working unless they are so complex that they require a working npm-enabled requirements solving. (But then, if they do that, they are best avoided anyway.)
I like the author's healthy attitude towards large corporations - basic modern survival skill.
If I had my way, I would not have to install any apps on my iPhone or iPads but platform limitations make this a requirement. I noticed that on Safari, the X/Twitter web app is not playing videos, even after I turned off Lockdown Mode for X. Is this Apple's fault for a platform inconsistency or X trying to force users to install their app? I would like to know.
I specialize in deep learning and LLMs, but I have also always enjoyed web development. What holds me back is how complex the tooling is. That said, someone I know has been writing a lot about ClojureScript + Dart so maybe I will give that a try. I would like to find a simple stack for web apps that I could learn in a few days and that was well supported. Any suggestions?
Ignore people who write about finding the perfect stack. The perfect stack does not exist and it is not requisite for shipping great software that real users value.
Much of web development consists of knowing the browser well, and web.dev is a great resource for that. Beyond that just go and learn React + TypeScript, the new react.dev is great. While React is not perfect it’s such a good paradigm for creating UI that even Apple copied it when they created SwiftUI. Grab yourself Vite and get coding.
The number one thing that I would recommend is to really go and study those resources. Start from page one of the docs and work your way through. There’s not much that you’re going to learn in a few days though, frontend work is hard for a good reason.
I would second that. Frameworks are secondary. React + TypeScript was the key (for me at least). After that it is just learning web standards - starting with CSS, HTML, JS - and then moving on to Canvas, WebAudio etc if one desires.
Thank you! :) What has really made me happy recently is realizing the web now has at-par capabilities, and I can make all sorts of cool AV stuff that works straight out in the browser. It's heady really, the possibilities, I'm excited to learn more and make more of these.
I don't think it's true that developers do nothing for Apple. If there were no third party apps for iPhone, Apple would sell many fewer phones. I suppose many could theoretically move to the web, but then the point still stands that third party apps are still making the iPhone much more worthwhile to own.
With proper competition, OS makers work hard to attract developers - think of Ballmer's "developers developers developers" clip from back in the day - as they recognise that developers add value to their platforms and help sway consumers. The trouble these days is there is no meaningful competition. No matter what Apple's rules are, developers are obliged to provide something for iPhone, and Apple can rest assured there is negligible chance of a third mobile platform gaining traction.
Apple know this and through their strict policies have imposed a cruel reversal of the situation: they claim they are doing developers a favour by deigning to allow them to access all of Apple's iPhone customers, and tax all their revenue for the service they ostensibly provide, even though developers do a lot to make iPhones worth having. It's an abuse of their market position and there's not much anyone can do about it - except as the blog says, publish to the web instead. It's not perfect but it's the only meaningful alternative to regulation, which Apple are obviously going to use every trick in the book to wriggle out of, because why willingly shut off billions of revenue from taxing app developers? Hopefully the web can gain traction as a way to avoid abusive app publishing rules.
To the degree that you can describe a company in general as such, Apple is one of the most arrogant companies I've ever had to deal with, sometimes as a customer, more often as a developer and very much so when I was involved with a partner in one of their many supply chains.
I think this is true at the same time that it's also true that they currently create some of the highest quality, almost perfectly fully integrated computing products in the world.
I have a real love/hate relationship with this company. I'm deep in their ecosystem, I don't really want to have to leave it, but I still see the arrogance bleed through and it pisses me off every time I notice it.
What this article describes - a seemingly widely perceived arrogance and disdain towards developers - isn't purely developer focused in my view - though I think they get the brunt of it. I think this is symptomatic of a wider issue. A cultural thing which is as deeply embedded in Apple as is their high attention to detail, technical excellence and sense of design.
I wonder if it came from Jobs himself - who, a bit like Musk, was by many accounts a bit of an asshole to those around him, but was also an extremely talented visionary, with that rare ability to pull together talented multi-disciplinary teams to help synthesise beautifully designed and - often - thoughtful products. (The current trend is against also thinking about Musk like this but I do think he and Jobs have a lot in common).
The high quality output of the company is either in spite of or dependent upon the slightly morally compromised and contradictory means of producing that output. I'm not sure which.
I often feel like I'm in a bit of an abusive relationship with Apple. I can't quite put my finger on it. They make wonderful things, which I often really really love using, but then in another moment they seem to manage to gaslight me in some way - making me feel utterly stupid for continuing to give them my money. Sometimes I think their products are literally unmatched and I focus on the fact that their attention to quality and innovation pulls the whole industry forwards, other times I just think I'm in their predatory ecosystem simply because they're the best of a bad bunch.
I think the thing the most annoys me with Apple is the disparity between the "perfect" public image they try extremely hard to portray - more than any other tech company - and the very obvious contradictory behaviour that can often be revealed just by scratching the surface.
While I agree with your opinion, my own stance is that my needs supersede the tools. I have a few HomePods, but only because my music sources are my MBA and my iPhone. While I've wished that they have bluetooth and line in. And they will be replaced if I ever switch to something that does not support Airplay. I have the Apple TV, but that's because Infuse exists. I'm prepared to switch from anything that does not allow me to do what I want to do.
> Ironically Google is the good guy here, they’re doing great work for the web.
Still naive, eh ? I would be extremely wary of following in Google's footsteps : the use Chrome(ium) and their web apps as a trojan horse to wrestle control of general computing from the OS and native apps.
And it typically results in a worse user experience, because you lose performance by running in an emulator (and/or the extra, always somewhat leaky, layers of abstraction complicate the developer's job), and the browser's interface gets in the way.
So no, please do NOT write code for the web (except if your program is extremely basic and you don't think it will ever get more complex), write code for Linix (or other libre software/hardware, and excepting the likes of Android) - Librem 5 and PinePhone are particularly in need of your help, since they have quite the task ahead of them, going against Google, Apple, and Huawei.
Apple has done an incredible job of gaslighting developers into believe they care about them and are making generous investment into APIs and tooling, while simultaneously doing everything in their power to lock those devs into the platform and and force them to spend their limited time/resources learning the Apple-exclusive tech stack.
The intolerable part for me is that after you've spent years investing in learning their (non-portable outside of Apple) languages and APIs, they can reject anything you build for mobile for any reason, and you ultimately have zero recourse.
In other areas of software you could take the skills you've learned to your next job/project - but as Apple is moving more towards declarative frameworks where you aren't supposed to think about what's going on under the hood (I.e. SwitfUI), the amount of actual deep, transferable software engineering skills you gain from working with these frameworks approaches zero.
The investment just doesn't feel worth it to me, when there are so many other things I could be learning to advance my career.
Reading this reminded me of two recent experiences I've had with Apple products, myself being solely a Windows and Linux user my whole life.
1. Friend gave me his old iPhone. I'm already happy with my current Android phone, so decided I would turn into a Retro emulation machine. I went to install Retroarch only to find that the steps for installing Retroarch on iOS is convoluted, doesn't allow auto update of cores, must be sideloaded with AltStore unless you have a jail broken phone, and apps installed with AltStore expire after 7 days if you don't pay $100/year to Apple for a developer account. I gave up and the phone is collecting dust in a drawer now.
2. Mom has an iPhone with 512GB storage that she filled with photos and videos. She's not keen on the iCloud pricing. No worries, I'll just back up her photos on her 2TB laptop I bought her a while back. Simple right? Just transferring files from one device to another just 2 inches away with a USB cord. Nope. iPhone won't give me access to those photos from her PC because it's Windows. Let me try the Windows photo backup tool... failed, crashes, and iPhone disconnects. OK someone told me I can backup photos using iTunes, lets get that started. Oh wait, Apple encrypts the files in some proprietary format when I back them up. Let me just use what iCloud storage she has, back them up in batches and... oh she has the free tier, 5GB. That will take ages and its damn ridiculous that I have to rely on a cloud middleman to transfer files to a device sitting literally next to the iPhone. OK my last resort, I'll install Syncthing... oh... no Syncthing for iOS.
What ended up working was a $5 app on the AppStore called Moebius that is just a wrapper around an outdated Syncthing. The most frustrating experience were the amount of people online whose solutions were "just pay for iCloud bro!” The entire reason I'm doing this is to NOT do that.
Anyway, after those two experiences, I swore off Apple products. Not for me, and apparently not for normal people like my mom either.
1. A quick research would have shown that Apple don't support sideloaded software on iOS
2. I see that Photos on iOS has an "Export Unmodified Original" on the share sheet that send the picture to Files. So you could probably connect to SMB share and export that way.
I agree that Apple products are not for you. But Apple has always specify a Right Way (tm) to use their products. You either like it or not. Anything else will be an hack.
1. Yes, if it wasn't clear, I realized this in my attempts to install Retroarch. It was unintuitive to me as someone who uses Windows, Linux, and Android where I can install and run whatever I want to.
2. Chances are that was not obvious to me, or I tried and had no success. This was a while ago, so I may have forgotten other things I attempted. Still, I'm dumbfounded that these amazingly innovative silicon valley companies have failed (or refused) to make transferring files between devices simple.
You're right about Apple having their "Right Way". I think it's an absolute dogshit way, but I guess that's why they call it a walled garden.
I would absolutely love for companies to embrace standards and interoperate better. Apple products' limitations never make sense other than "Profit". But AFAIK, their products work well together. And I agree it's painful when you're not invested in the ecosystem. But their focus is that ecosystem and I can understand their line of business.
At the end of the day it's "just" a display, a few sensors and cameras strapped to your face, it's not exactly rocket science. Quest 2 gets you 80% of the way there for 1/10th the cost, and if VR/AR become widespread, there's probably going to be a few dozen companies that will compete on hardware.
VR currently suffers from a chicken & egg problem. There isn't a ton of investment in software & hardware because the user base is relatively small and vice versa. Once that changes, other hardware manufacturers will follow.
> Google has a bug. I have dynamic light/dark mode, and if I search on Google at night, the first page shows up in light mode. [...] In the morning, my laptop automatically switches back to light mode. [...] The people like me who use alternate search engines like DDG have already moved on years ago. The rest of the (overwhelming) majority is stuck with Google.
You don't move from Google for this bug because there's an easy workaround: F5 (aka refresh the page)
Years ago I decided to delve into learning Swift and native iOS development. I simply could not get accustomed to using XCode. The UI/UX of XCode is atrocious in a way that I’m struggling to articulate. I found myself constantly opening and closing panels just to click on icons that weren’t intuitively grouped together. To open one panel would forcefully minimize the other. It’s like a tenth of my time was dedicated towards “panel jockeying”.
I got the sense that Apple’s designers wanted to make an IDE that was visually pretty and minimalistic, not one that was low-friction for the developers. But IDE’s aren’t supposed to be minimalistic, they should be allowed to be as customizable and cluttered as each individual developer would like, according to the needs of what they trying to build.
Imagine a physical garage workstation. Whereas Visual Studio would let me make my workspace as cluttered and customizable as I would want, Apple would insist that I put each tool back in the box before grabbing the next one. This is what I mean about panel jockeying.
I’m curious if other developers feel the same way, of if my analogy makes sense.
IMHO XCode is both great and terrible. I miss it when I'm in vscode, but I also hate it when I'm in XCode, if that makes sense?
It's like a heavy IDE of yore, which means the more you comply with it, the more you'll enjoy it—but that also leaves a feeling that you're not really in control.
It's definitely worse than it could be if Apple cared enough to make it half as snappy as vscode feels. The shitty support for vim keybindings alone makes me furious (e.g you can't redo most actions like "c" or "r")
Finally, I'm not sure if you were using SwiftUI back then or if you were fighting with storyboards in UIKit. The latter is an ATROCIOUS experience I wouldn't wish upon my worst enemy. SwiftUI in comparison feels like the future, even if it's still in its early days and some stuff needs to be ironed out
Storyboards are indeed terrible. XIBs are notably better due to not bogging the editor down with N screens but still not great. Both suck for version control being gigantic blobs of machine generated XML.
This is why I abandoned storyboards and XIBs in iOS development 7-8 years ago. UIKit is actually a pretty decent code-only experience, particularly since the addition of anchor-based autolayout constraint building.
It was actually a major point of frustration that it’s not practical to go code-only with Android Framework on Android and WinUI/Windows App SDK on Windows, both of which are heavily invested in XML layout and resource files. Jetpack Compose thankfully fixes this on Android at least.
> Storyboards are indeed terrible. XIBs are notably better due to not bogging the editor down with N screens but still not great. Both suck for version control being gigantic blobs of machine generated XML.
I guess these problems stem from their heritage in XIBs being NIBs, i.e. binary “deep frozen” object graphs.
Using XML to make them version-control “friendly” was always a bit of a crutch.
It also doesn’t help that Xcode will make random little edits to storyboards/XIBs by simply viewing them. It conditions developers to commit minor changes to these files without looking closely which leads to unintentional changes finding their way into production.
This really speaks to me and is exactly what stopped me from my multiple attempts to get into native Mac/iOS development - the IDE. Your assertion of form over function has helped me articulate what I hated about xCode - so thank you for sharing.
I've been in the JetBrains ecosystem for over a decade now and while there are faults, I've never felt that JetBrains wasn't designing their IDEs to work how I wanted them to work.
I would agree. Most times I look for something simple to find in other IDEs (Build Output, Project Settings, etc), I get lost easily and have to search Google on how to open that pane.
I agree. Another thing I really dislike about XCode is the error/warning messages – you stop typing and wait with bated breath for them to appear, only for them to be positioned over the very line of code you’re trying to debug and can no longer see.
Really depends on development style and what you’re used to, IMO.
Xcode doesn’t bother me at all while Android Studio, which is built around the vaunted IntelliJ, is constantly getting on my nerves. Visual Studio (the IDE, not the editor) is similarly frustrating and has odd restrictions to boot (I can’t use italics in syntax highlighting? Why??).
This goes for editors too. I find VS Code mildly irritating in ways that Sublime Text and TextMate aren’t.
I agree that Xcode usability is absolutely horrible. It's also unbelievably slow and it's crashing so much it would never survive an App Store review.
But what really turned me away from making native apps for Apple platforms is the combination of bugs and lack of documentation.
SwiftUI was just not fit for purpose when I last used it a year ago. But even more mature libraries are often barely documented. It's hard to know what's obsolete.
The advantages of native apps for my work are small to begin with (from a user point for view). It's mostly about more reliable local storage.
If productivity is so much lower than making web apps it's impossible to justify the cost and the extra risk putting myself at the mercy of some oligopolist overlord.
Native stack is tailored for native devices, using web for that is just not as reliable/maintainable/cost efficient in my opinion. Sure, you can have less devs to support both platforms, but as soon as you need some hardware functionalities, you're not gonna have much of an options, besides what web tech libs you have in the store.
This is true, if it's basic app I'd certainly recommend web technology. But it's also true that clients many times don't know what they want and where they're heading. So, before we decide on tech, I do analyze with my clients what are their plans for the future with the app. It does pan out many of them would like to have notifications, storage, camera, offline..
The $100 developer fee is very annoying, but understand it's there to add a small barrier to entry. It makes people think twice about whether they really want to launch an app on the app store and therefore stops many users from publishing junk apps.
And yet, also impairs enterprising folks from also wanting to kick the tires on an idea. I don't mean established software engineers, I mean some teenager for whom $100 is an annoying enough sum to be a headache.
I would guess the long and capricious review cycle stops a lot of junk submissions, not the $100. If my mental model is correct any such junk app would easily make back the $100 in spammy ads on every click
To my knowledge, the fee is for the dev kit rather than the ability to publish on the app store. If it the aim was to prevent junk from being published, then surely the fee should apply at the point of submitting an app for review.
[quote]Ironically Google is the good guy here, they’re doing great work for the web. On the other hand, literally every single workaround I’ve had to write in the recent past in web related code has been due to Safari's princessness.[/quote]
There's no mention of Firefox or other browsers (except Safari because he hates it) so my conclusion is that 'for the web' means 'for Chrome'.
So it's not 'write code for the web because Apple hates you', it's 'write code for Google'. Doesn't look like such a good idea to me.
363 comments
[ 2.8 ms ] story [ 317 ms ] threadSure, buddy… They don’t care about you unless you develop for their platform. And who can blame? The above is a terribly expensive and timely investment.
Specially for applications where the DB is a platform on its own.
I use the workaround of Command-A, command-X, command-V aka “Select All, Cut, Paste”.
Unfortunately that loses cursor position in the file and gives you a free newline at the end of your content.
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1...:
“3.206 Line
A sequence of zero or more non- <newline> characters plus a terminating <newline> character.”
That’s consistent with:
Then make CMD+s the shortcut.
Also Gradle breaking the DSL all the time has become such a pain, that eventually they had to create an upgrade wizard, as if debugging performance issues with the build wasn't fun enough.
In my experience, Xcode has been terrible, sometimes borderline unusable. The horrible project format, merging pains when working in a team, interface builder being trash in general but completely unusable when you use a lot of custom components with @IBDesignable properties across multiple modules - in that scenario it sometimes rebuilds everything in an endless loop, and brings even the most powerful Mac machines to their knees.
In that state even changing a simple property on a view takes 15 seconds of 100% cpu time.
Sure nowadays there's SwiftUI but IMO it can't be considered as anything more than an alpha until they fix the horrible navigation woes. And even then it still uses UIKit under the hood and you can see countless internally used constraints breaking all the time in the logs. At least that's how it was when I tried it a year and a half ago.
And that's not even touching on the cruel joke that is the xcodeproj project format.
Apple didn't even provide a package manager until relatively recently for God's sake. It was left to the community (cocoapods) to fend for themselves in this regard.
I'm not an Apple user and when I have to do anything I don't know on Mac, the way to find it is always with the question "what's the simplest way to do it".
Except xcode. I always have to google or gpt to find what I want.
The whole thing takes 13GB to download where resuming fails, has an undocumented config format which doesn't work with git properly and is more sluggish than an Electron app.
The app upload process itself is so broken that even Apple had to release a third party tool to bypass it.
I refuse to believe they are using this thing internally, they must have some kind of special internal process to make this mess sort of work.
I could say similar things about appstoreconnect where even reordering app images is broken with a race condition if you click too quickly and you have to reload the page.
You're one of the lucky ones, eh?
It is utterly insane to me that this is the only way to build and sign apps for Apple devices locally. At one point, I almost burst into tears cause I was excited that they finally added an update that highlighted the line the cursor was on
Personally if I were working on mobile stuff, I'd be looking at .NET MAUI.
They've made it practically impossible to write native cross platform code that runs on IOS, and they've everything they can (within political limits) to prevent web apps from being able to compete with native apps.
[1] https://www.get-plume.com/
But the fact that he got in to work on a music app is illuminating. The Apple audio APIs are an absolute mess. Media Player, AVPlayer, Core Audio, AVFoundation, AVAudioEngine… it's like competing teams dating all the way back to NeXT kept writing their own libs and somehow they all persisted through the iPhone era.
I spent about three months of the COVID lockdown trying to make a Shoutcast/Icecast player, it was excruciating.
And you know the reason why it's macOS only? because the Apple App store reviewer rejected it heh.
It's crazy how much easier development on Windows is. And Microsoft's is almost all cross-platform. None of those things you mentioned allow you to work in a platform agnostic manner. Whereas Windows supports their own stuff like DirectX but still allows direct running of Vulkan, OpenGL, etc.
And you also left out key information. I don't have any issues with the same development on Windows or Linux. Apple is the outlier and isn't doing some reasonable thing.
Apple is by far the most troublesome platform to develop for. They literally make you do it their way, and you cannot recover any of that work for other platforms.
I am obviously over-simplifying it, but my point is it really depends on the market you’re aiming for. Like if you think you’ll make an app for users in North America, not supporting Android makes more sense. On the opposite side, if you want India, LATAM, you can drop iOS and never learn anything about Swift since your ROI will be very little. Again, heavily depends on what your goal is.
It's not like Apple provides their platform and then if you don't want to use it then fine, you're on your own. They are actively hostile towards you doing something else.
If I leap off your analogy, which again doesn't really work, it's as if they throw tomatoes from their steakhouse as you go towards the pancake house.
Of course they can do whatever they want. But it makes everyone slowly hate them.
If you want to develop for Apple's devices, you have to sacrifice your future career options with any other tech stack/vendor by investing your limited time into skills that are only relevant in the Apple ecosystem.
Then you have to hope that it's still financially viable to do software dev in Apple's world for the next few decades - which given their demonstrated behavior of scraping back more and more of the pie for themselves and their shareholders, seems like a risky bet.
I don't know you, but even if you had a highly successful app on the appstore, I (an internet stranger) would care more about you being hit by a bus than the Apple corporation would, or any of the MBAs over there that you worship.
Any relationship you think you have with Apple is completely in your head. They take advantage of people like you all the time. Developing for Apple is an abusive relationship, and that's always a difficult thing to come to terms with.
I know this comment is probably just going to annoy you and result in a long, ranty, defensive, passive aggressive response. I don't care. I still love you more than Tim Cook/Steve Jobs does/would, my fellow dev.
Yeah okay, I guess you worship google if you support webapps too?
For me, that's part of the problem. I'm sure Swift is a nice enough language based on what I've seen. But I'm not going to invest a substantial amount of time learning a language that is realistically only ever going to be useful to target one platform by a single company.
1) people wrongly heap damnation on wrong roads and
2) some folks who missed some particular wrong road will demean those who ran into it.
And there's this...
...which neatly defuses some (pointless) stigma tied to helpful errors & failure. I think it makes healthy thinking more approachable.Thank you for the comment! Much appreciated :)
But yeah, there is no morality here, it’s just business.
Not that I entirely disagree, but that doesn't seem to be consistent with the complaint from app developers that they are unable or barely able to cover their development cost from app store sales.
Do you actually have any evidence to back up this claim? I’m assuming the real reason is because the average Apple user has a higher income than the average non-Apple user.
Then we had to set up payments, because for some reason you need to pay money to have an Apple developer account. Whatever, in the budget of an entire city of 60.000 people, that's not even going to show up anywhere, right? Well... Since it's a foreign subscription and since Apple has no way of doing this as a B2B purchase that can be easily registered with our local tax agency, it had to go under yearly reviews. It was also only possible to pay with a credit card which again tied it to something the organisation would need an actual person to renew and since organisational credit cards are tied to people, and since people change jobs, and since you need to be in actual human contact with Apple to change owners... well you can imagine how much fun that was.
This was some years ago, so maybe things have changed, but out of any of our 300+ enterprise IT solutions that I ever worked with, Apple was the only one that was this horrible. To be fair, I'm a developer, I'm not sure how I ended up with the task and maybe these things are simply more common in the operations side of IT than I know.
This is probably worse today, they're all the time throwing more roadblocks to avoid people to publish apps in their "ecosystem", except if you're a large US company that can easily handle the paperwork.
Most of the complaints about Apple seem to have come from devs. And in contrast, Microsoft [in]famously loves developers (Balmer on stage...)
Apple sucks dealing with anything that doesn't have their name on it. External monitors have terrible support because Apple refuses to implement a specific protocol making that nice, like everyone else does. You basically have to use Apple's monitors or their overpriced officially supported LG monitors they sell in the Apple Store if you want an integrated monitor experience. Several other issues with Apple exist with peripherals. I have to make special router settings in my home because my partner's work Macbook can't switch between the mesh network. My partner also had to get IT to give her admin access so that she could rename iTunes because it was the only reliable way to keep iTunes from opening every time her non-Apple Bluetooth headphones connected. Search about what it takes to rename an app like iTunes. It is literally insane.
Microsoft just wants to dominate. They don't care if the UX is garbage, as long as the user doesn't have a choice.
What if we determine that the "coolness" motivation is a scapegoat for anticompetitive behavior?
AT&T could have argued the same thing but I'm not sure if the coolness of their infrastructure would have saved them from a breakup.
It's kind of a cult in other words, personally I'm not part of it and not afraid of blasphemy when I see stuff broken.
I'm sure most users do love it though, to each their own. There's certainly enough space for all kinds of products and all kinds of consumers.
In my opinion, macOS has an horrific UX especially for power users. It's so bad that there is a cottage industry of third party developers creating apps to refine the bad out of the box experience with macOS. Most macOS users buy several of these apps and it's just an accepted part of the culture around Macs.
Windows isn't great and has other issues but I think it has a better UX overall.
I think the whole thing is organized on how good it would look to screenshot rather than usability.
On Windows, I get the APIs I want like Vulkan without arbitrary software restrictions. It's also a ghoulish wasteland of service integration and user hostility, but at least they let you do what you want. That sort of immediacy is probably why a lot of users prefer Windows even if it's arguably poorly-designed.
> Maybe you don't feel that, but it is a fact.
Facts normally come with citations. Do you have anything better than your opinion to cite?
Only the hottest and coolest allowed in? Let me share the good news with the thousands of developers making Bible apps and Clash of Clans clones.
Not to nitpick, but Microsoft looking wrong at you is more like the Eye of Sauron looking wrong at you.
Just pointing to the gigantic amount of dark patterns on Microsoft products, especially Windows.
So you agree pitchforks should be out both for Apple and Microsoft.
Count me in.
I don't understand why these companies make the OS level decisions they do though. They make billions. You think they could relax and try to capture users by making them happy instead of kidnapping them.
The wind is changing.
If somebody dared to write a comment on HN criticizing Apple in the 10s, downvotes rained down on that comment. HN's policy is to downvote to express disagreement, among the other things.
That's not been the case anymore since a few years. This very thread would have been nearly impossible 10 years ago, maybe 5 years ago too.
An interesting observation is that users of Apple products rarely go out of their way to insult others based on their choice of hardware / OS, while users of Android (and Windows & Linux to a lesser extent) seem to get quite needlessly enraged at the Apple users. No one is forcing Apple products on you guys, chill out.
As someone who uses iOS, Android, Windows, Linux, Mac, and FreeBSD on a daily basis, I believe all of them have their pros and cons.
On topic: Apple used to quite strongly prefer (and tell) developers to use web apps when appropriate instead of a native app. As someone that has helped many companies develop apps - the biggest complaint about not having a native app is that they won't be listed in the App Stores without one.
Many of the apps I've helped develop could be web apps, but, companies really want to see their app in the App Stores.
From a North American perspective, the only thing I can think of that has changed is Google now requiring DUNS numbers for business accounts (while Apple has required them for a very long time, for business accounts).
It's as random as ever, it might work straight away or you are unlucky and hit some of the random bug in this process and it'll fail for a long time
"The Cult of Mac"
https://www.goodreads.com/en/book/show/1341309
Those are the developers and users Apple cares about.
I don’t feel like Apple cares about my business in the slightest. Macs have become increasingly locked down in both software and hardware, and the level of control Apple wants over what end users can do with their hardware feels more onerous than ever. When that book came out, being a Mac user felt like being part of a fun community of oddballs (I was one of like 5 or 10 in my school of 600), which is absolutely nothing like today.
That's what happened to me too. In my youth I grew up with a Macintosh, and it was a lovely machine, a marvel of design and technology. You could tell the creators were inspired, intelligent, artistic. They cared about the user, the person using the computer - which included programmers.
As the years went on, it seems Apple got consumed by a different kind of people, it gradually bacame another soul-less corporation with profit as its main motivation. They still make good(-looking) products, but riddled with user-hostile design and dark patterns. The iPhone is not a computer in the full sense of the term, it's an appliance where the user is just a consumer.
Eventually I gave up and switched to Linux, which I had been using off and on the entire time. It's not an artistic computing experience, but there is a fundamental respect for the user. The web is similar, despite the on-going enshittification, it feels like the original spirit has managed to live on and even thrive.
Today, one can build amazing stuff for the browser. And, in my very humble opinion, the vast majority of apps should've been WebApps — except for maybe Uber, Google Drive, and games.
I worked in the journalism business, and, in my country, the early 10s were filled with media outlets spending so much of the little money they had to build mobile apps.
I was the sore thumb that rejected such trend.
I knew very well that the quality of most of these apps would be questionable at best. And of course these companies won't be investing regularly in updating their mobile fronts.
And that's exactly what happened: they're stuck with apps that are barely maintained, most of which looking like ancient artifacts from a bygone era. Because that's what they are.
Apple on the other hand is only incentivized to funnel everyone through their App Store, and for some ridiculous reason, app developers use this to justify going all in on native apps, which I think is what this article is addressing.
Yes because for example I'm sticking to K9 mail 5.6 because of the UI change in the next versions. I picked K9 exactly because of the original UI so I'm not using the new one, which is like every other mail client. I saved the APK and I'm installing on any device of mine, also when my fingers slip on the update button. Uninstall and install 5.6 from the file manager.
And no, because if the company behind the app wants to force people to upgrade they'll make the backend incompatible with the old app. Also no, because I don't think that many normal people invest time not upgrading an app because of the UI.
On my desktop there might be a few apps that don't need to upgrade but on my phone, 90% of all apps are tied to a service. Uber/Lift, bank apps, apartment apps, hotel apps, bike rental apps, social media apps, dating apps, streaming music apps, video apps, etc.
https://fugu-tracker.web.app/
And it's so minor compared to what Google does it's ridiculous to even compare the two.
How often will the hot new app from some SV startup launch for iOS first with no Android app? Resource strapped companies that have to prioritize one platform will tend to pick iOS and that hurts Android (but is obviously good for Apple)
Honestly first-class web mobile installs without hoops and scare walls would be the thing to strive for.
I think a more pertinent problem is that most devs don't want to distribute their apps as PWAs because Apple deletes saved data at unpredictable intervals and PWAs can't push engagement notifications as effectively as native apps.
When I switched from the Uber PWA to their native app I suddenly started getting bombarded with ads from them in my notifications.
Native web downloads of apps are impossible on iPhone/iOS. You have to go through the app store.
Native downloads of apks are possible on Android, but not until you navigate to the hidden settings and enable them. And even then, Google scares users from installing apps this way. Nobody in practice does this. It's effectively not permitted.
This used to be the case for older Android versions, but isn't anymore. Currently any attempt to install an APK from an app without permission to do so will pop up a missing permission warning with a deep link into the relevant settings page with a switch you can flip. Flipping the switch will initiate the installation of the APK. I can't imagine sideloading being any easier without removing the permission barrier entirely, which seems ill-advised.
Does anybody know what the current situation in iOS looks like? I researched this recently and the information is conflicting. The OPFS data (Origin Private File System, which is the new storage API for PWAs and is supported in Safari) is supposed to not be deleted without explicit user confirmation, but what this confirmation looks like is unknown (is it just the usual delete Safari history button?) and I didn't run any experiments. However I've seen someone claiming Apple separates a website and it's installed PWA's storages. This is reinforced by the fact that I can see the storage space each PWA takes in Settings (which was oddly not updated when a PWA using OPFS used some more storage). However I just deleted that PWA but there were no special prompts, just the usual native app deletion prompt, absent of the usual phrase "Deleting this app will delete its data.", only the phrase "Do you want to delete this bookmark." was present.
But even then…
> same functionality
> Honestly first-class web mobile installs without hoops and scare walls would be the thing to strive for.
Coming to a future near you: npm install rm_minus_rf_slash
What's the old quote?
"""
Tech Enthusiasts: Everything in my house is wired to the Internet of Things! I control it all from my smartphone! My smart-house is bluetooth enabled and I can give it voice commands via alexa! I love the future!
Programmers / Engineers: The most recent piece of technology I own is a printer from 2004 and I keep a loaded gun ready to shoot it if it makes a strange noise.
"""
Except all the banks and railways require me to have a smartphone these days whether I want it or not.
And who is going to determine which exact functionality they both must implement?
...but when I see how petulantly defiant Apple's responses to other regulations which threaten their lock-in strategies have been, I'm not optimistic.
I think that despite that, they did a decently good job. A few years ago, I created a voice-only social app: people can easily record and send voice memos.
I built it using fairly new tech at the time: the web audio api and native web components. (I refuse to touch react-style frameworks with a 20-foot pole.) It was 99% compatible with all major web browsers from the get-go, even with its fairly advanced "tech."
The only thing that wasn't cross-platform was the audio files themselves. I had to make a deep-dive into the world of encodings and codecs so that I can offer users audio files in the formats that work on their machines.
Obviously, there are areas where cross-platform-ity (??) is abysmal, but things will probably continue to evolve for the best ― hopefully.
And yes, PWAs with their offline capabilities are just awesome!
This. Apple's Safari (on iOS and macOS) is the Microsoft IE of 2020s. It's unbelievably behind the more sophisticated browsers (Firefox, Chrome) and yet, Apple couldn't care less.
As for why Safari isn't the new IE, I recommend Breaking the Web Forward https://www.quirksmode.org/blog/archives/2021/08/breaking_th...
It is effectively Google's favored platform. They effectively get to be the gatekeepers for what standards become accepted. They control the most widely used engine, and fund the only opposition so they have an incentive to avoid going against them. Just look at how everyone dropped the ball in the recent JPEG-XL vs WebP news.
On the one hand I love this. I'm glad PWAs are helping drive people who wants and expect a certain thing towards the web.
I am also however super sad that PWAs removed so much greatness of the web. Most don't launch in the browser. None have visible url bars. They just added a new mode so PWAs can have some kind of tabs. They don't integrate with bookmarks, or extensions. They don't have forward/back. I like the web a lot, and I feel like PWAs are a major step backwards for me.
What's really scary to me js that new permissions are being added which are PWA only. I no longer can have a web like experience; I am forced to have an app like experience, without any of the affordances I get with a user agent/browser at my back. I feel so undermined here.
https://www.schneier.com/blog/archives/2022/01/fake-qr-codes...
You can extend your parking time, find closest parking meters, download tax invoices for businesses etc.
All of these are much faster to do on a native app than a clunky mobile web site.
I understand Drive working better as a native app; it needs to be able to provide a virtual filesystem to the OS and do background syncing and such. But why Uber? Uber has (or maybe had) a mobile site that works fine for requesting rides and basically everything the app can do. I don't see what value Uber being a native app adds for the user. The same goes for most mobile games; they tend to have simple graphics that the browser is perfectly capable of rendering with great performance, and they tend to reinvent all common UI components so losing access to native system buttons and such wouldn't make a difference. PWAs should also provide plenty of storage for local save files and other game data. The exception of course being games that really push the system to its limits. I don't expect, say, Death Stranding or the RE4 remake to work well without direct access to native graphics acceleration, and they're too large to load as a single webpage. I will reiterate though that this is not the case for most mobile apps, even extremely profitable F2P ones that would benefit greatly from an extra 30% revenue. Why then do they not target the web? My gut feel is that it's because mobile users are trained to look in the app store for apps and games, not the web, while desktop users expect apps to be available in the browser with the exception of some professional tools and high-end games. That is to say, it's largely a cultural problem. Of course, Apple's lackluster support or PWAs doesn't help.
It's funny because the very first thing that Steve Jobs pushed when the first iPhone came out was PWA's, essentially, and not an App Store, which didn't exist yet... and the same API's are still available in Webkit I believe
I used it for years, but it didn't seem to work right on a new phone, with some UI elements not visible or off-screen, so I went back to the app.
Curiously I just realized it's the same view I get from the app on my phone a lot of the time due to some kind of error when loading the normal app view.
That's a circular dependency though. You want that stuff because you want to use Drive with native apps and not web apps. But Drive is a first class backend (actually even more featureful, frankly) to web apps too. Basically the native Drive client is for native/legacy interop, not a barrier to a PWA future.
Holding the web back is entirely intentional and makes strategic sense from Apple's point of view. They're well aware that a majority of apps would work perfectly fine as web apps -- but that also removes Apple from the equation. Only allowing Safari on iOS and intentionally gimping it solves the problem.
I mean, I can't even blame them. Can't lose out on that sweet 30% cut, y'know?
I'm only disappointed that legislation took this long to catch up to their shenanigans, and only in the EU.
I don’t agree with it at all to be perfectly clear. I’m only postulating that realistically the only way Apple takes PWAs to first class status is if they get a cut. Its rather unfortunate
I'm not so sure they will, now that the cat is (finally!) out of the bag.
However, if the EU is silent because it considers Apple's reaction acceptable, the new laws are meaningless, unnecessary, a total waste of time, and an embarrassment to the EU.
So my hope is that they realize this and the silence is due to the EU preparing to put Apple in its place.
They don't care about the web and what is good for end users i.e. more APIs = less privacy.
They simply want to build apps without Apple's fee and controls.
I care deeply about privacy. That means I trust the browser sandbox a lot more than native apps. There's obviously a reason sites like Twitter and Reddit try to force their native apps on you as soon as you visit their web page on a phone -- it'll allow them to spy more on you.
You shouldn't.
The most privacy invading behaviour by far is the cross-site tracking that happens on the web. Where large data companies as well as Facebook/Google are building behavioural profiles with thousands of features and data is being packaged and sold to entities you have no knowledge of.
And all of which is being facilitated by browser fingerprinting courtesy of Google recklessly adopting APIs with little care about privacy.
A native app won't prevent Google or Facebook (or Apple) from tracking you. In my experience, native apps typically always require login, and then fingerprinting is unnecessary.
Avoiding their services, and using an open source and privacy respecting browser with uBlock Origin installed will protect you however.
The latter can be done on all OSes I've used -- except iOS.
F2P mobile games need to be able to send you notification spam, because they're based around habituation and addiction. You couldn't do that in MobileSafari until very recently[0].
[0] Supposedly. I pinned Google Fi to my homescreen on my iPad, it asked for notification permissions, I see a notification count badge on it's app icon, but it still doesn't actually notify me when I get a text message or call.
You do not want to load big chunk of JS because it was never cached, or as Uber used to do, download all the possible new promos every time you opened the app...
You want to squeeze through the minimal data you need to arrange your core business function.
All it takes is for network connectivity to be a little bit spotty (admittedly, Uber made it work a little bit better these days).
In the past, I've been more than once frustrated to rage from the fact that Uber couldn't just grab my A-GPS position, ping for address and send a short packet to order a car, but it had to download potentially megabytes of promo html before it let me actually do anything useful.
Avoiding it with PWA is afaik even harder (currently looking exactly into making PWA because I don't want to deal with iOS).
Some of these (increased caching and remote notifications) you can get on iOS if you install a web app as a Home Screen icon, but as just a website Uber might not get their minimum bar of functionality for widespread use. So far, I haven't seen any large companies have installed web apps as their go-to-market strategy.
Most of that frustration comes down to tooling and more specifically TypeScript. I'm not sure how to succinctly express my pain here but I have found generally that I wrestle with the type system in TypeScript far more than native offerings.
https://chrlschn.dev/blog/2023/09/typescript-is-not-a-progra...
And if you want to have a lowest common denominator user experience that's fine but you shouldn't expect users to reward you for it. That's why successful apps tailor the experience for each platform.
Web apps and PWA's built with HTML and JavaScript are likely to work as-is for a decade or more given we are likely to see minimal incompatibilities with existing HTML, JavaScript, and CSS in that time and likely to see more net new capabilities.
One is a native app with a budget in the millions built by dozens of engineers. One is a web app built by...me:https://youtube.com/shorts/bxs9ZpIJ6RM
Not sure that there's that much sacrifice when it comes to modern web apps.
Now we can hope that those building blocks improve over time, but the current situation is so much better than it could have been.
I guess I can make myself more clear - the good thing about CSS is not the way it does layouts, but that it can do layouts on almost any device.
You can come up with a better system that runs on your own machine (1 unit of effort), but then you have to convince everyone and their dog to adopt your new standard (1 billion units of effort).
It really is amazing.
> Now we can hope that those building blocks improve over time, but the current situation is so much better than it could have been.
I think the web is under-appreciated in part because most people have never used internet connected GUI computers without it, but it's important to remember that there's no a priori reason for why the web had to exist.
In an alternate timeline we could be living in a world where all interactive software has to be reviewed by a gatekeeper. I wasted an inordinate amount of time playing with this a few days ago: https://news.ycombinator.com/item?id=39205020 and I remember thinking, it's pretty cool that you don't need anyone's approval to release something like this, nor do you need to pay excessive fees to distribute it, nor does it take any meaningful time to download/install, and yet it works on all my devices, and it's relatively secure.
Most dynamically typed languages are adding type systems right now, and they all face the choice between rewriting/wrapping the whole ecosystem or build a very complex and ultimately unergonomic type system.
Years ago I tried to up my game and learn to use grunt and babble and other build tools. However, I found the process extremely complex, only to end up with finicky systems that made me even more stressful, not less.
I decided to ditch all that PoS and do things the easy (and logical) way. Never looked back.
[1] https://github.com/liveviews/liveviews
I have to say, having recently gone back to doing some web dev work (doing some dashboards with lots of D3 visualisations), I was pleasantly surprised to see how better things have gotten. working with CSS is better (with stuff like grid, flex, nested selectors), and JS is also much much better (import maps, fetch API).
I'd say for developing cross-platform apps it's a pretty good deal.
Invest your time into foundational pieces of the technology stack instead.
But everywhere I look, IOS, mac, android, windows on the phone, tablet, tv, cars its all apps. Be it under the guise of security, features or whatever, all of the UI is driven from apps. Some do a better job than others, but sucky or not you're forced to go the app route.
With the whole App ecosystem, you only have 2 choices and you are at their mercy. Literally.
I personally would never build an entire business around an "app". Never. I may have an app as a small supplement if at all and that too if my audience really demands it. I hate products that force an app on me when I am on a mobile device. No Thanks. Heck, bring back the whole m.website.com thing but I prefer to avoid the whole app ecosystem.
And if it's the two I'm thinking of, one of them is a customer-service black hole with a ban hammer, so overnight one could find oneself in the "beg the front page of HN for help" camp for any reason or no reason
I say prayers that the new sideloading thing for the EU will inspire similar calls here in the US, but also I'm super cognizant that such a thing would require a sufficient mass of folks who know or care what "walled garden" or "sideloading" mean :(
If I had my way, I would not have to install any apps on my iPhone or iPads but platform limitations make this a requirement. I noticed that on Safari, the X/Twitter web app is not playing videos, even after I turned off Lockdown Mode for X. Is this Apple's fault for a platform inconsistency or X trying to force users to install their app? I would like to know.
I specialize in deep learning and LLMs, but I have also always enjoyed web development. What holds me back is how complex the tooling is. That said, someone I know has been writing a lot about ClojureScript + Dart so maybe I will give that a try. I would like to find a simple stack for web apps that I could learn in a few days and that was well supported. Any suggestions?
Ignore people who write about finding the perfect stack. The perfect stack does not exist and it is not requisite for shipping great software that real users value.
Much of web development consists of knowing the browser well, and web.dev is a great resource for that. Beyond that just go and learn React + TypeScript, the new react.dev is great. While React is not perfect it’s such a good paradigm for creating UI that even Apple copied it when they created SwiftUI. Grab yourself Vite and get coding.
The number one thing that I would recommend is to really go and study those resources. Start from page one of the docs and work your way through. There’s not much that you’re going to learn in a few days though, frontend work is hard for a good reason.
I’m sure they left shortly after finding out all they’ll actually be doing is putting fields in structs and waiting on CI/CD to see if it worked.
With proper competition, OS makers work hard to attract developers - think of Ballmer's "developers developers developers" clip from back in the day - as they recognise that developers add value to their platforms and help sway consumers. The trouble these days is there is no meaningful competition. No matter what Apple's rules are, developers are obliged to provide something for iPhone, and Apple can rest assured there is negligible chance of a third mobile platform gaining traction.
Apple know this and through their strict policies have imposed a cruel reversal of the situation: they claim they are doing developers a favour by deigning to allow them to access all of Apple's iPhone customers, and tax all their revenue for the service they ostensibly provide, even though developers do a lot to make iPhones worth having. It's an abuse of their market position and there's not much anyone can do about it - except as the blog says, publish to the web instead. It's not perfect but it's the only meaningful alternative to regulation, which Apple are obviously going to use every trick in the book to wriggle out of, because why willingly shut off billions of revenue from taxing app developers? Hopefully the web can gain traction as a way to avoid abusive app publishing rules.
I think this is true at the same time that it's also true that they currently create some of the highest quality, almost perfectly fully integrated computing products in the world.
I have a real love/hate relationship with this company. I'm deep in their ecosystem, I don't really want to have to leave it, but I still see the arrogance bleed through and it pisses me off every time I notice it.
What this article describes - a seemingly widely perceived arrogance and disdain towards developers - isn't purely developer focused in my view - though I think they get the brunt of it. I think this is symptomatic of a wider issue. A cultural thing which is as deeply embedded in Apple as is their high attention to detail, technical excellence and sense of design.
I wonder if it came from Jobs himself - who, a bit like Musk, was by many accounts a bit of an asshole to those around him, but was also an extremely talented visionary, with that rare ability to pull together talented multi-disciplinary teams to help synthesise beautifully designed and - often - thoughtful products. (The current trend is against also thinking about Musk like this but I do think he and Jobs have a lot in common).
The high quality output of the company is either in spite of or dependent upon the slightly morally compromised and contradictory means of producing that output. I'm not sure which.
I often feel like I'm in a bit of an abusive relationship with Apple. I can't quite put my finger on it. They make wonderful things, which I often really really love using, but then in another moment they seem to manage to gaslight me in some way - making me feel utterly stupid for continuing to give them my money. Sometimes I think their products are literally unmatched and I focus on the fact that their attention to quality and innovation pulls the whole industry forwards, other times I just think I'm in their predatory ecosystem simply because they're the best of a bad bunch.
I think the thing the most annoys me with Apple is the disparity between the "perfect" public image they try extremely hard to portray - more than any other tech company - and the very obvious contradictory behaviour that can often be revealed just by scratching the surface.
//rant
Still naive, eh ? I would be extremely wary of following in Google's footsteps : the use Chrome(ium) and their web apps as a trojan horse to wrestle control of general computing from the OS and native apps.
And it typically results in a worse user experience, because you lose performance by running in an emulator (and/or the extra, always somewhat leaky, layers of abstraction complicate the developer's job), and the browser's interface gets in the way.
So no, please do NOT write code for the web (except if your program is extremely basic and you don't think it will ever get more complex), write code for Linix (or other libre software/hardware, and excepting the likes of Android) - Librem 5 and PinePhone are particularly in need of your help, since they have quite the task ahead of them, going against Google, Apple, and Huawei.
The intolerable part for me is that after you've spent years investing in learning their (non-portable outside of Apple) languages and APIs, they can reject anything you build for mobile for any reason, and you ultimately have zero recourse.
In other areas of software you could take the skills you've learned to your next job/project - but as Apple is moving more towards declarative frameworks where you aren't supposed to think about what's going on under the hood (I.e. SwitfUI), the amount of actual deep, transferable software engineering skills you gain from working with these frameworks approaches zero.
The investment just doesn't feel worth it to me, when there are so many other things I could be learning to advance my career.
1. Friend gave me his old iPhone. I'm already happy with my current Android phone, so decided I would turn into a Retro emulation machine. I went to install Retroarch only to find that the steps for installing Retroarch on iOS is convoluted, doesn't allow auto update of cores, must be sideloaded with AltStore unless you have a jail broken phone, and apps installed with AltStore expire after 7 days if you don't pay $100/year to Apple for a developer account. I gave up and the phone is collecting dust in a drawer now.
2. Mom has an iPhone with 512GB storage that she filled with photos and videos. She's not keen on the iCloud pricing. No worries, I'll just back up her photos on her 2TB laptop I bought her a while back. Simple right? Just transferring files from one device to another just 2 inches away with a USB cord. Nope. iPhone won't give me access to those photos from her PC because it's Windows. Let me try the Windows photo backup tool... failed, crashes, and iPhone disconnects. OK someone told me I can backup photos using iTunes, lets get that started. Oh wait, Apple encrypts the files in some proprietary format when I back them up. Let me just use what iCloud storage she has, back them up in batches and... oh she has the free tier, 5GB. That will take ages and its damn ridiculous that I have to rely on a cloud middleman to transfer files to a device sitting literally next to the iPhone. OK my last resort, I'll install Syncthing... oh... no Syncthing for iOS.
What ended up working was a $5 app on the AppStore called Moebius that is just a wrapper around an outdated Syncthing. The most frustrating experience were the amount of people online whose solutions were "just pay for iCloud bro!” The entire reason I'm doing this is to NOT do that.
Anyway, after those two experiences, I swore off Apple products. Not for me, and apparently not for normal people like my mom either.
Even if you do pay for iCloud you have essentially no way to know what's going on apart from owning a Mac or using iTunes.
There's not even a basic progress bar on the iPhone of what's being backed up there or not.
2. I see that Photos on iOS has an "Export Unmodified Original" on the share sheet that send the picture to Files. So you could probably connect to SMB share and export that way.
I agree that Apple products are not for you. But Apple has always specify a Right Way (tm) to use their products. You either like it or not. Anything else will be an hack.
2. Chances are that was not obvious to me, or I tried and had no success. This was a while ago, so I may have forgotten other things I attempted. Still, I'm dumbfounded that these amazingly innovative silicon valley companies have failed (or refused) to make transferring files between devices simple.
You're right about Apple having their "Right Way". I think it's an absolute dogshit way, but I guess that's why they call it a walled garden.
VR currently suffers from a chicken & egg problem. There isn't a ton of investment in software & hardware because the user base is relatively small and vice versa. Once that changes, other hardware manufacturers will follow.
You don't move from Google for this bug because there's an easy workaround: F5 (aka refresh the page)
I got the sense that Apple’s designers wanted to make an IDE that was visually pretty and minimalistic, not one that was low-friction for the developers. But IDE’s aren’t supposed to be minimalistic, they should be allowed to be as customizable and cluttered as each individual developer would like, according to the needs of what they trying to build.
Imagine a physical garage workstation. Whereas Visual Studio would let me make my workspace as cluttered and customizable as I would want, Apple would insist that I put each tool back in the box before grabbing the next one. This is what I mean about panel jockeying.
I’m curious if other developers feel the same way, of if my analogy makes sense.
It's like a heavy IDE of yore, which means the more you comply with it, the more you'll enjoy it—but that also leaves a feeling that you're not really in control.
It's definitely worse than it could be if Apple cared enough to make it half as snappy as vscode feels. The shitty support for vim keybindings alone makes me furious (e.g you can't redo most actions like "c" or "r")
Finally, I'm not sure if you were using SwiftUI back then or if you were fighting with storyboards in UIKit. The latter is an ATROCIOUS experience I wouldn't wish upon my worst enemy. SwiftUI in comparison feels like the future, even if it's still in its early days and some stuff needs to be ironed out
This is why I abandoned storyboards and XIBs in iOS development 7-8 years ago. UIKit is actually a pretty decent code-only experience, particularly since the addition of anchor-based autolayout constraint building.
It was actually a major point of frustration that it’s not practical to go code-only with Android Framework on Android and WinUI/Windows App SDK on Windows, both of which are heavily invested in XML layout and resource files. Jetpack Compose thankfully fixes this on Android at least.
I guess these problems stem from their heritage in XIBs being NIBs, i.e. binary “deep frozen” object graphs.
Using XML to make them version-control “friendly” was always a bit of a crutch.
I've been in the JetBrains ecosystem for over a decade now and while there are faults, I've never felt that JetBrains wasn't designing their IDEs to work how I wanted them to work.
Xcode doesn’t bother me at all while Android Studio, which is built around the vaunted IntelliJ, is constantly getting on my nerves. Visual Studio (the IDE, not the editor) is similarly frustrating and has odd restrictions to boot (I can’t use italics in syntax highlighting? Why??).
This goes for editors too. I find VS Code mildly irritating in ways that Sublime Text and TextMate aren’t.
But what really turned me away from making native apps for Apple platforms is the combination of bugs and lack of documentation.
SwiftUI was just not fit for purpose when I last used it a year ago. But even more mature libraries are often barely documented. It's hard to know what's obsolete.
The advantages of native apps for my work are small to begin with (from a user point for view). It's mostly about more reliable local storage.
If productivity is so much lower than making web apps it's impossible to justify the cost and the extra risk putting myself at the mercy of some oligopolist overlord.
If it were in their financial/competitive interest for PWAs to be amazing on iOS, they would be.
Unfortunately for us this would circumvent their 30% app tax, so they'll be dying on this hill.
Sure, some high end games. But they're more an exception. What other app are you thinking of?
Maybe not safari, IDK, but globally the most used browsers support this and have done so for many years.
I would guess the long and capricious review cycle stops a lot of junk submissions, not the $100. If my mental model is correct any such junk app would easily make back the $100 in spammy ads on every click
There's no mention of Firefox or other browsers (except Safari because he hates it) so my conclusion is that 'for the web' means 'for Chrome'.
So it's not 'write code for the web because Apple hates you', it's 'write code for Google'. Doesn't look like such a good idea to me.