Hacker News new | past | comments | ask | show | jobs | submit login
Write code for the web (mrmr.io)
446 points by mnvrth 8 months ago | hide | past | favorite | 358 comments



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.


> except for maybe Uber, Google Drive, and games

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 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?


Imagine spotty, dropping connection, low bandwidth.

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.


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.


Uber had an excellent PWA, m.uber.com.

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.


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.


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.


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.


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'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).


> 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.


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


> 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.


I wish PWA advocates were more intellectually honest.

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.


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.


You're not talking about a sandbox then?

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.


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


You're speaking like Apple will get away with their malicious compliance and petulant behavior.

I'm not so sure they will, now that the cat is (finally!) out of the bag.


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


True.

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.


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:

https://chrlschn.dev/blog/2023/09/typescript-is-not-a-progra...


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:

https://youtube.com/shorts/bxs9ZpIJ6RM

Not sure that there's that much sacrifice when it comes to modern web apps.


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.


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 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.

[1] https://github.com/liveviews/liveviews


Ha, I’ve been a Phoenix LiveView zealot from almost day one, thank you much ;) <3


> 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.


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.


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.


> 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.


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".


Thank you!

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).


Developing in native GUI frameworks is just as frustrating. Using QT for complex GUIs is more frustrating than HTML5/react or whatever


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.


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.


Wow, that's a great way of putting it! Thanks, I had never linked the dots that way before.


> 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.


> See Microsoft in the 2000s, and Apple now.

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.

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...


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.


> 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!


> 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.


You can use extensions with PWAs,at least on desktop


I'm hoping the latest EU regulation enforcing alternate browser engines will make a dent in this.

...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 you meant Google's and Apple's incentives to make them (PWAs) worse...


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.


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.


Yes and no.

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.


Google is the one pushing them. Apple has the incentive to keep people on the device though because they don't have an advertising business

https://fugu-tracker.web.app/


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)


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.


Apple does not have a giant advertising business.

And it's so minor compared to what Google does it's ridiculous to even compare the two.


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.


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.


One word: sandboxing.


Is one of the ways they make browsers and app store apps more secure, that that is dissimilar to old school installation.


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.


> 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.


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.


> Google and Apple should be regulated to offer the same functionality and performance to the web

And who is going to determine which exact functionality they both must implement?


Why invest time fad-of-the-month technology at all?

Invest your time into foundational pieces of the technology stack instead.


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’ve heard stories of people putting fake QR codes linking to fake payment portals for parking. I don’t think an app solves this problem though.

https://www.schneier.com/blog/archives/2022/01/fake-qr-codes...


There are many reasons to have a parking app.

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.


it is "surveillance capitalism" -- they want names and contact info for "their customers" .. this is a serious sickness in the modern times IMHO


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.


This author seems confused about something that he, himself explains. The reason that Apple doesn't care about developers is that they have created such a walled garden cult w/ users that developers are forced to produce products for their platform or they lose half their market -- or more.

At my day job in mobile game development (for a small studio inside a large company), we have to fight Apple constantly -- not only on tech issues but on policies and approvals, too. But offering a mobile game without a way to run it on iOS would be unthinkable, so we comply.

In many ways, Microsoft's original strategy for the PC was the exact opposite. It catered to developers and provided copious documentation, examples, and tooling for devs. The companies behind those devs were, themselves, motivated to make software for MS and, in turn, to promote and sell it. The tidal wave of individual developers making Windows software (think back to the shelves at computer stores) is what created the desktop OS that still rules the roost.


I have been writing software professionally for 15 years and I have never written a single line of code for an Apple device, and I never would. Contributing to the Apple ecosystem is a choice, no one is forced to do it. Any developer who contributes to the Apple ecosystem is taking an active part in the situation.


Unfortunately for mobile games iOS tends to be where the majority of the money is.


Where are all the good iOS games? I don’t know if I’d be able to name more than a handful[0]. How many people are making -- and similarly monetizing: upfront cost sans micro-transactions -- things like Mindustry?

0: Mindustry https://apps.apple.com/us/app/mindustry/id1385258906 and two more which are available with an Apple Arcade subscription, maybe also for individual purchase: Dandara https://apps.apple.com/us/app/dandara-trials-of-fear/id15761... and Fantasian https://apps.apple.com/us/app/fantasian/id1517339045.


Over the past few years, the highest grossing games are freemium pay to win games, like Star Trek Fleet Comman. While they're available on both android and iOS, the fact that iOS users tend to me more affluent means that the revenue tends to come from in-app purchases on iOS more than android.


This was shared on HN a couple months back, I found some nice games there: https://nobsgames.stavros.io/


I don’t think it’s just games. iOS users in general are more willing to pay for software than Android users and Android users are more willing to pay than web users.


This was my experience doing consulting/contracting for most of the 2010s. Clients would want both iOS and Android, and we’d release with full feature parity. In every instance the iOS apps brought in 2x-5x the revenue, even when our Android apps had more active users.


I’ve always wondered why that is. I’ve had both Android and iOS phones and I’ve spent far, far more on iOS apps. I don’t think I’ve ever paid for a web app. There’s something about the platforms themselves then encourage or discourage spending.


Not just games, iOS App Store revenue is far higher in pretty much all categories vs Android.


> Contributing to the Apple ecosystem is a choice, no one is forced to do it.

This is such a disingenuous argument that ignores the huge pile of incentives at play. Here is an equally disingenuous argument: anyone who sells or gives away any software to anyone in the US is taking an active part in the US military industrial complex.


> anyone in the US is taking an active part in the US military industrial complex.

Its annoying how this isn't that far off. Even big consumer facing companies will end up working for or supplying intelligence to the MIC.


I think this is because Apple is a hardware company, that uses software to attract consumers. While Microsoft is a software company, that uses hardware to attract consumers.


A better way to describe their differences is that Apple started as an end-user company (and became a services company while at it) where hardware was a means to an end. The products they sell are based around an experience rather than just a bag of components/parts, as those are just the means to an end. It's why their design envelope is the way it is, and why the kept vertically integrating more and more over the decades. In a way, that's where the IWM and SWIM came in so long ago, not because they had to, but because it delivered a better solution to that specific experience than anyone else. (granted, back then using a computer had a very different meaning than it does today but the reasoning still applies)

Microsoft on the other hand is a typical SKU-mover, their business relies on selling 'parts' of someone else's workflow, but later on realised the only way to have a consistent experience is to also start making the hardware. Later on, they tacked on services, but because they kept the "spray the market with SKUs" business strategy it mostly just became 'more', rather than better integrated products for people. It's still "move as much stuff", even if it's not well-integrated. Heck, sometimes it is less-integrated because it enables moving more stuff.

At the end of the day, most large tech multinationals end up manufacturing a lot of stuff over the various layers (hardware, software, firmware, entire devices, individual components etc), but that no longer describes what the company actually "is". (just like it doesn't really describe much to group them together as "commercial money makers", it isn't very specific or useful)


> In a way, that's where the IWM and SWIM came in so long ago

I’m going to assume based on minimal context you are meaning the 40 year old floppy controllers?

Since these acronyms are fairly obtuse / not well known…

IWM - integrated woz machine https://en.m.wikipedia.org/wiki/Integrated_Woz_Machine

SWIM - replacement for IWM which supported the SuperDrive


> Microsoft on the other hand is a typical SKU-mover

As far as I can tell there is nothing typical about Microsoft. The sophisticated, deeply-root long game they’ve executed extremely well puts them in a very different place. As a contrast to Apple, the differences are striking - not because of the difference between “bing” and “bling”.


Their "throw as many SKUs at the market and see what sticks" model is very typical. That is not uniquely Microsoft and is very common in broad supply enterprises.

The only thing that is unique about microsoft is being in the right place at the right time, making the right B2B licensing deals and entrenching for decades because of it. Operating systems, window managers, filesystems, graphics, SDKs, IDEs, it's all been done before (and after) at equal, better and worse quality levels.

Their broad catalog is somewhat unique in having more SKUs that don't work well together (or at all) vs. ones that do, but the same applies to IBM and Google for example. And the things that do work well together tend to be based on technologies that have little to do with the company itself (like WebDAV and Kerberos), and that's not unique to Microsoft either.

The sophistication is in their business and SKU broadness, not in making proper end-to-end vertically integrated user experiences that make people happy. (well, they have started to get there in the gaming market I suppose)

If you have an example where that is not the case, and there was a product choice that merited their offering, I would love to hear about it.


This. The Microsoft long term business execution is amazing despite their resources involved in zillions of failed projects and acquisitions, and some horrible apps (e.g. Teams). It doesn't matter they are a success anyway. Other companies would be buried much before that. Always recommend the book Hard Drive (just in a yesterday's thread) [1]. I need to not forget to add now "Idea Man" [2] by Paul Allen, Microsoft co-founder. It shows that the young Bill Gates was already a Titan.

[1] https://news.ycombinator.com/item?id=39243044

[2] https://www.amazon.com/Idea-Man-Memoir-Cofounder-Microsoft/d...


Apple is a vertically integrated company. They offer you (in theory) everything you need for computing


If you are a consumer or for example a creative pro. If you are a big enterprise, not so much.


Except cloud services for business, which are increasingly vital. And without AI, also a big deal now.


Re-read that. Microsoft uses hardware to attract customers?


I don't know the GP's intention, but I'm guessing it's that MS's actual products are all software (Windows, Office, etc) and the allure is that they can be sold on/come packaged with relatively cheap and available computing. Compare to Apple, where they primarily sell hardware, and use software (whether their own or 3rd party) to make that hardware desirable, especially at high price points.


Yeah I don't agree with that assertion either. Microsoft will produce hardware to show the art of the possible with their software. It largely comes out of a situation where the PC/device manufacturers were doing a sh* job of it.


Hardware manufacturers that aren't Microsoft have little reason to take speculative risks that might prove that there's a market for a new configuration of commodity hardware to sell Microsoft’s latest non-commodity software; it's all potential downside with very little potential upside.


Everyone universally loved the zoon and the windows phone.


You dropped this: /s


That's an old saying. It's not so clear-cut now.


Apple doesn't make developers do anything. Developers write apps for their platform because it is the one where consumers want to spend their money. They do this by being mean to developers, or, rather, not allowing developers to be mean to customers. It's the same way that apple leans hard on their suppliers but at the end of the day it has led to creating a healthy and wealthy ecosystem that those developers and suppliers still seem to contribute apps to.


> not allowing developers to be mean to customers.

apple has a history of denying apps for monopolistic reasons & collusion price fixing : https://apple.fandom.com/wiki/Criticism_of_Apple#Restriction...

> t's the same way that apple leans hard on their suppliers but at the end of the day it has led to creating a healthy and wealthy ecosystem

yes, like using child labour and working environments that require suicide nets: https://apple.fandom.com/wiki/Criticism_of_Apple#Student_and...


Not protecting Foxconn, but I suggest you to compare their work conditions with other Chinese companies, where the competing mobile devices are manufactured. Problem is China and its borderline slavery labor conditions.

Thankfully, Apple started moving out to India and Vietnam.


This feels like a different situation than the article author. My impression is that they were concentrating on services where mobile is just one point of access, but make sense in any scenario. Stuff like social networks, dating apps, reddit, stackoverflow, etc. Services that don't depend on the mobile experience whatsoever, unlike, say, Uber, that requires location tracking, or mobile games, which are often designed to be played on the go.

If a business doesn't depend on the mobile experience, then they are still able to offer their services without offering a native app. People on mobile can still access the service through a mobile browser--perhaps not the ideal experience on mobile, but it is still an option. And I think that is the author's point: If there isn't a necessity or dependency on the mobile platform, don't build for it.


What sort of mobile gaming related things have you seen Apple push back on?


> This author seems confused about something that he, himself explains... they have created such a walled garden cult w/ users that developers are forced to produce ...

In the presence of a cultish relationship, I think a persistent sense of puzzlement is reasonable.


Your description is basically aggregation theory in practice.


[flagged]


I take more abuse from developers than Apple in the majority of cases. But I agree that some of their decisions is overreaching. But most developers have bad intentions especially with telemetry, privacy invading measures and dark patterns. Apple offers a safe place for those with simpler computing needs. Other ecosystems are worse for them.


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.


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'm sad that AppCode is being abandoned instead of updated for the new SwiftUI world.


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.


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 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.


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.


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.


Everyone feels this way about Xcode, right? It’s a relic of the 90’s.


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 was some years ago

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.


> Whereas, if Microsoft just looks at you wrong, pitchforks are out.

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.


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.


> Apple's iOS and macOS have very similar dark patterns, but they go unmentioned

So you agree pitchforks should be out both for Apple and Microsoft.

Count me in.


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.


As an Apple user, the experience is generally fine, especially when compared to Microsoft.

Most of the complaints about Apple seem to have come from devs. And in contrast, Microsoft [in]famously loves developers (Balmer on stage...)


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.


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.


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.


> only the hottest and coolest are allowed in, permitting anything less would tarnish the club's reputation

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.


It would be kind of a cult, if Apple products weren't more pleasant and joyous to use by far than any of the alternatives.


They aren't. I find them worse by far than any alternative.


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.


That's not a fact. That's your an opinion.

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'm in the same camp but I do think MacOS has the best interface on a screenshot, it's when I'm actually using it that I find mountains of problems.

I think the whole thing is organized on how good it would look to screenshot rather than usability.


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?


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.


This sounds it's coming from 2006 when we would laugh at the mess that was Windows Vista.

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.


> Which sucks for most devs but it's part of being the coolest.

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.


> how Apple [...] gets a huge amount of love.

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.


What are these new roadblocks?

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


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.


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.


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 :(


The web is great in theory, but the bare-bonesness of the browser environment makes it an exceedingly unappealing platform for apps specifically when you’re used to developing with a throughly batteries-included experience like you get on Apple platforms.

Where on macOS a highly capable, polished app can be easily be developed with a list of dependencies and sub-dependencies that can be counted on a single hand (and with a little effort, none at all), the equivalent web app has many tens or hundreds because of all the feature gaps needing filling in.

For example, I don’t see why browsers can’t furnish basic list and table views that are capable of efficiently recycling their cells without any (or extremely minimal) JavaScript. It’s not unusual to need to be able to scroll through hundreds or thousands of items without causing the device to chug or run out of memory, and that’s handled nicely out of the box in AppKit, UIKit, SwiftUI, Android Framework, Compose, and probably even Flutter (haven’t checked) but in the browser you’re either pulling in a library or writing custom code for this very basic capability.

And that doesn’t even get into the package management and general tooling situation, where the same fundamental problems doggedly persist even as solutions come and go.


I find that developing with Electron is a much nicer experience than developing for Apple UIs. And I've written my share of iOS/iPad apps starting over 15 years ago.

The nice thing about the Web is that there usually is a library/framework that fits your needs (Electron, for example). For Apple, often there is no good library. Also SwiftUI is so buggy. React just works, and is conceptually simpler (folks, two-way data binding is a bad idea). Apple has this whole idea of making everything simpler for you, but are often making everything more cumbersome and difficult for you.


> For Apple, often there is no good library.

Do you have examples? I’ve not often run into this in my projects. These days there’s Swift packages for most things, and in the worst case I’ll have to write a simple wrapper around some C or C++ library.

SwiftUI is still green yes, which is why I’ve stuck to UIKit for anything moderately complex.


I stopped coding in Swift about 3 years ago, and SwiftUI was green then, too. I don't expect it to become much better soon.

Not much comes to mind right now in terms of libraries, I just remember constantly thinking that on the Web it is just an "npm install" away, while in Swift I would just have to code it up myself. UIKit is powerful, of course, but just requires too much ceremony most of the time. And SwiftUI is just not reliable. Writing wrappers for C libraries is not my thing, thinking about all implications of different memory models etc. is exhausting, and I'd rather not waste my time on low-level stuff like that if it can be avoided.

Mostly I am thinking about how easy it is to do UI stuff in React, it's much simpler and quicker. The ceremony that XCode and UIKit require are exhausting, as well. Why exactly do I have to give 100 different icons via drag'n'drop for my app? Funny, the Electron app only requires one icon, and I just place it in the right path.

What's a PITA in JavaScript is the commonjs / ecmascript modules mess, but I have a standard template now for coding up a module so that it works for both, and since then I much prefer npm over the Swift package manager, as well.

Coding in the Apple ecosystem just feels sluggish to me now. It feels like the equivalent of a luxury prison. Being able to access things like general compute shaders via Metal is the only thing I miss, but I think via WebGPU this will be fixed soon enough, and in a cross-platform way at that. Just like Electron runs everywhere, not just on my Mac. So what if it is 200MB large compared to a few kilobytes? That doesn't really matter. That's a one time price you pay, and it is well worth it.


Maybe we’ve just been writing very different types of software but as noted earlier, it’s been very unusual for there to not be built in or third party solutions to problems I’ve encountered in UIKit/AppKit.

The ceremony involved seems pretty minimal to me considering the trouble saved. It’s a relatively small front loaded cost that precludes problems further down the line.

As for icons there’s a bunch of shell scripts, AppleScripts, etc that will take care of minor one-time annoyances like icon scaling (though there’s actually good reason for 1x, 2x, and 3x versions of images to be distinct… scaling a single high rez icon down tends to look like a terrible smugdy mess on “normal” DPI displays).


Sure, you can streamline the process of icon creation. The point is that Apple often sets up things in a "simplified" way which is not really simpler, just more annoying. There are no "normal" DPI displays in Apple's ecosystem anymore, so one SVG should always be fine in many cases.

Again, my main point is that coding Apple apps just takes too much time and ceremony compared to what you get out of it (an app that only runs in Apple's ecosystem). The only way to justify writing an app specifically for Apple products is when you depend on their special hardware and ecosystem features. Or of course if you don't care if your app runs anywhere else. Or if you have resources to blow.

Apple treats software as an extension of their hardware: Generality and abstraction do not count for much, as long as this makes it possible to fit the software tightly to their current hardware. That's nice for Apple, but not so much for a developer who doesn't care for much more than generic hardware features.


There’s plenty of people in the Apple ecosystem that still use normal-DPI monitors. 2560x1440 27” monitors are very commonly used with Macs for example, and it’s not unusual for iOS devices to get hooked up to 1080p TVs.

I’d say the investment is also worth it for those who don’t like developing lowest common denominator apps.


> I’d say the investment is also worth it for those who don’t like developing lowest common denominator apps.

If I look at Electron, that lowest common denominator is pretty high. I'd argue that if you put the same effort into an Electron app that you have to put into an Apple app, you get a much better Electron app compared to the Apple app. And you can run it on Linux and Windows.

So, unless there is something essential for your app you cannot do in Electron, not liking the lowest common denominator still fits into the resource blowing category. Hell, blowing resources can sure be fun!


> For example, I don’t see why browsers can’t furnish basic list and table views that are capable of efficiently recycling their cells without any (or extremely minimal) JavaScript.

The web was built with documents in mind, so that the html files already has all the data needed for display. The tables are already populated with all the data needed and in the correct order from the server. There is no need for recycling cells and rows. And all of that is snappy because we're talking about KBs of data for thousands of rows.


Even static pages can get to be too large with a certain number of rows and would benefit from a variant of HTML’s table element that automatically recycles rows while displaying static data.

The problem isn’t the size of the transmitted data but the strain the resulting page puts on the browser engine due to the huge number of DOM nodes.


Flutter is pretty strong with it's out-of-the box APIs as they have a custom render engine.

Together with WebAssembly (& alternatives like Flutter) the bare-bonedness shouldn't be a problem anymore.


What’s wrong with Javascript


The web was originally a document sharing program for academics. JavaScript was never a "batteries included" language because the web wasn't built as an app platform.

It evolved into one, and the platform has improved for app development with things like modules, but it is still part of an ecosystem that expects the developer to bring the app framework. Custom Elements tried to solve this, but React came and solved the same problem in a more ergonomic way. So now, we're in the same place: apps are built with open source stacks like React where you have to bring your own toolkit because the browser doesn't make assumptions about which one you're using.

The web is a lot like Linux: it evolved as thousands of developers try thousands of different ways of doing things. Some of those things are great and become de facto standards, but it's an ecosystem you can't manage top-down.

If you've ever worked at Google, there's a famous internal deck about how decentralized ecosystems evolve like an amorphous slime mold. It's written in the context of Google product management, but it applies to things like Linux, and the web too.


It’s not JS itself that’s the problem, it’s the need to write it to fill gaps in browser facilities. Rather than there be 10k different implementations of a scrolling recycler list of wildly varying quality, there could just be one in each browser engine that web devs can rely on, allowing them to instead focus on writing application code.


Even if those facilities were available wouldn’t the complaints then shift to some other high level facility not being available natively?


It’d be rinse-and-repeat until browsers had a decent toolkit out of the box, yes. That doesn’t strike me as a bad thing.


Yes, and as the next and next gets resolved over time browsers would be easier and faster to develop high quality products on enhancing the value of the web ecosystem.


Nothing really but lots of it is not a nice experience.


> What’s wrong with Javascript

Javascript.


What is not ?


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.


Every day I think about how great the web is, and how much of a shame it is that Apple has tried to destroy as much of the web as possible by getting developers to make iOS apps instead of web apps. If there was no app store the web would be so much better. We'd have more variety in our content consumption, our social media sources, our algorithmic recommendations, our digital experiences.

The web runs on everything, and there are so many great APIs that can be used to make immersive/next gen applications like WebXR. But someone making some WebXR app and charging for it on their own site wouldn't make money for Apple, so Apple never promotes these web apps.

Long term... the web never dies. Companies come in and extract their profit and then die. But the web never dies.


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.


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.


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 tried developing on <platform>, actively avoided using their tools and tech, and the experience sucked because nothing I tried was supported."


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.


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.


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 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"


The analogy doesn't work.

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.


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.


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.


Are they what? Actively hostile? Yes, they are.

Of course they can do whatever they want. But it makes everyone slowly hate them.


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.


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.


I’ve had success with Qt building an app that compiles on Android and iOS. I’m not in the app development business at $dayjob though.


Oh cool - I started looking into Qt a while ago but was confused by their license. Would you recommend it?


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.

[1] https://www.get-plume.com/


Many apps have a cross platform C++ back end


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!!!


Actually I have my Oracle account since mid-1990's, and in some respects for DB development tooling, only MS SQL has feature parity.

Specially for applications where the DB is a platform on its own.


You put this better than I could have. Extended support can in fact be malicious. Appreciate your contribution.


They didn't have to develop their own language. It's part of the lock in.


> has created their own programming language

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.


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.


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'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.


> The whole thing takes 13GB to download

You're one of the lucky ones, eh?


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


I still can't figure out how to format on save in Xcode. Or format in general?


Format with this integration: https://github.com/ruiaureliano/X-SwiftFormat

Then make CMD+s the shortcut.


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


> Or format in general?

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.


You're supposed to end your document with a newline. That's a POSIX standard.


I know, but if your file already ends in one, it adds a second one, if it already ends in two, it adds a third one, etc.


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


Because otherwise, files can contain characters that aren’t on any of its lines.

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:

  > echo test | wc
         1       1       5
  > echo -n test | wc
         0       1       4


Me too. Feels like I have an uphill battle with this at $dayjob. Would be nice with some ammo for the showdowns.


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.


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.


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).


Are you writing this from the perspective of someone who has tried to consume an Apple API?


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.


Hey man.

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.


Such a nice and selfless friend! Will you also pay the same amount of money into the developer's bank account as Apple does for top selling apps?


>you worship

Yeah okay, I guess you worship google if you support webapps too?


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?


> ClojureScript + Dart

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.


Thanks for the advice jahewson and mnvrth. I have developed a few SwiftUI apps, so React may be similar.


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.


> the average Apple user is less capable

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.


Same concept with more charitable framing: Apple has built an ecosystem where users don’t want to mess with tech and are willing to pay for value.

But yeah, there is no morality here, it’s just business.


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.


> Apple users are conditioned to pay for things.

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.


When I think about it, it astonishes me that there are people in the world who take Apple's developer tools, and make some really beautiful and useful iOS apps. I've tried on and off since high school and have never been able to do it. I started in high school with Xcode and Objective-C, which is a very difficult language to work with (being not that far removed from C/C++). When they moved to Swift I thought "okay finally, now I can make some iOS apps!", but Swift also proved to be a bit of a strange language, it's like the pendulum swung in the opposite direction- Apple was trying to cater to non-devs with it. So we ended up with something that was sort of like Python but still retained some elements from Objective-C.

Of course during this entire time span, Xcode remained a garbage IDE. That's probably the main hindrance for devs and would-be devs. Swift can be navigated, Xcode is a black hole of doom.


I’ve been quite happy with Objective-C and Swift from mostly hobbyist experience, but Xcode truly is baffling.

Any time I’ve ever had to do anything with build configs or something relating to project metadata rather than just writing code, I’ve just been winging it based on some average of StackOverflow advice, weighted towards recency cause it all seems to change every few years.

I have no idea if this stuff is all documented anywhere; if it is I haven’t been able to find it.


ObjC is not “a very difficult language to work with” by any means, and Xcode is fine - it’s not the absolute best IDE out there, but having tried several, it’s ok.

Honestly, having “enjoyed” decades of different systems, from the days of 8” floppies onwards, developers today are spoilt rotten, and still find things to complain about. Grumble, mumble, kids today, get off my lawn etc etc


Objective-C is the only programming language that was genuinely unreadable on first glance to me so I would definitely agree that it's difficult to work with.


Personally i don’t see much difference between

class obj = new class()

and

class obj = [class new]

And i think the named parameters are easier to read

And ARC gives you pretty easy memory management - basically “don’t even have to think about it” except for more-obscure cases, even then weak properties can help out.

ObjC is really only a little more complex than C, but gives you so much more for that little increase. It’s orders of magnitude less complicated than c++, but is capable of handling enormous codebases just like C++

It is under-appreciated IMHO.


Your example isn't representative of an entire language, though. It's convenient to your case to use class instantiation, one of the easiest things to do in any language.


Well, yes, I didn't put everything in the language into a post. You got me there.

How about generic containers that can store any object ? Even using the old syntax, it's pretty clear what's going on

NSMutableDictionary *container = [NSMutableDictionary new];

NSString * item = [NSString stringWithUTF8String:"hi there"];

[container setObject:item forKey:@"greeting"];

Where @"..." is a shorthand for a constant NSString

And then the next thing to add could be a number...

NSNumber * age = [NSNumber numberWithInt:18];

[container setObject:age forKey:@"age"];

Then add in an NSDate, or another NSDictionary, or NSArray type....

The standard library that comes with ObjC is really powerful, and since it's ubiquitous, it works really well across a range of apps.

And then there are some really nice design patterns. Create an NSNotificationCenter and enjoy the Observer pattern, tightly integrated into the event loop. Any object can notify any other simply by posting a notification, and any object can listen for them by registering interest. And since collections can store anything, it's easy to pass state around and make large applications work well without interdependency hell. Just one of the built-in nice things... And all without caring about memory management.


I think you’re making my case for me. All of that seems easy and straightforward to you, but not to me. It’s worth noting that I struggle similarly with C++ and Rust. I just think the syntax is harder to read than a Java or a C# or a Python.


Jeez, Java is a nightmare! And I’m not a fan of Python either. I think we’ll just have to agree to differ…


I agree that Java isn’t pleasant to work in- but not because of the syntax. It’s everything else, like the JVM, Oracle’s shenanigans with licensing, etc.


can attest; I bounced off Xcode several times when trying to bootstrap my way into a dev career in 2010 or so, despite being a lifelong Mac user.


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.


For everyone that comes into Apple as an outsider, specially after iPhone and OS X saved the company, I advise getting

"The Cult of Mac"

https://www.goodreads.com/en/book/show/1341309

Those are the developers and users Apple cares about.


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.


Just here to praise the literary quality of the article. It is quite well-written and has a lovely flow, especially as tech-based blogs go.


Thank you for saying that! Such feedback is very encouraging, much appreciated :)


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.

Thank you for the comment! Much appreciated :)


> Apple’s own music player was, and still is, unusably bad.

And here I thought it was just me. I really like Dolby Atmos in their airpods, and it seems that it only works with Apple Music. But Apple Music just doesn't click with me.


Importantly, you also cannot uninstall Apple Music on Mac OS, forcing people to resort to (brilliant) things like https://github.com/tombonez/noTunes


It wouldn’t surprise me if Apple Music on iOS was in a similar boat to the Mac version (which is just the crusty old iTunes codebase with a lick of red paint).

It feels very much like it’s still the same old app built for the time when any music you’d be playing was locally downloaded, but with streaming haphazardly retrofitted.

It’s pretty sluggish even with a flawless connection, but if you’re somewhere spotty like on a train it becomes basically unusable. Even for stuff you have downloaded for offline playback, it seems like it will try to stream it instead if there is any network connection at all, regardless of how bad it is.


>The dependency goes Developer -> Apple and Apple -> Consumer, there is no reverse arrow from Apple to the developers.

Is that really true? If Apple is abandoned by large developers (let's say of Adobe, Microsoft calibre), does it not harm their sales or revenue?

It certainly isn't universally true. For young or new platforms, like the transition to ARM a few years ago, or the Vision Pro today, Apple needs developer adoption to be successful.

Of course, it's existing success on other platforms almost ensures a certain degree of developer engagement with their new products.


If a developer pulls out of Apple, the developer loses half of their mobile market, and Apple loses a single customer. I guess if you got all developers to leave Apple, and then all iOS users switched to Android, then it could hurt Apple more than developers, but that's probably not happening.


I am pretty sure iOS has way less than 50% market share globally? So if your target audience is global I am guessing you lose less, on average


iOS has the paying customers who respect developers by actually paying for their apps. This makes hackers rage and bite the hand that feeds them.


I doubt it is true.

Apple's recent malevolent compliance with the EU anti-monopoly rulings, show that Apple at least cares a lot about the money these developers have to pay Apple (fees etc).


Apple can make a new thing, while others (and the web) are playing catch-up. There are no open-standards for this VR road (yet (a-frame?)). These vendors will continue to "innovative" on their closed platforms.


> There are no open-standards for this VR road

There's a few, actually. WebXR is supported by Safari but coverage is supposedly really weak: https://www.roadtovr.com/apple-vision-pro-webxr-support-safa...

There's also OpenXR for native applications, which the Vision Pro does not cover. That's where the closed-platform "innovation" is happening, supposedly.


"They care for and need to collaborate with corporate dev “partners”, but that's different."


Go ahead and write "code for the web" but be prepared to have to choose among a bunch of different JS libraries and CSS design systems depending on who the CTO is for your organization and who has their ear; writing bare-metal HTML/CSS and minimal Javascript won't get you far with the C-suite and you'll be pulling your hair out trying to get things to play nicely with each other (or wind up digging through five or ten <div> layers to find a DOM element you need to augment).


I would, a million times, pick writing web apps over interacting with Xcode in any capacity or deal with the proprietary project formats or deal with git in an iOS app project or debug the arcane errors that xcode spits out. Drilling down to figure out where a div is that I need to change is child's play in comparison. You are citing imaginary problems. CSS-in-JS is not that bad and, given the choice, you don't even need to use it. In contrast, you have no choice but to use Xcode and Apple's incredibly poor DX to ship to iOS and I do not want to suffer that


They are not imaginary problems. And Apple's DX isn't "incredibly poor"; coding SwiftUI views with Canvas and the #Preview macro is a dream compared to farting around with Eclipse or one of it derivatives.


Xcode's DX is probably a decade behind competitors, possibly even more. Android Studio is far better than Xcode because, for one, the dependency management and version control actually works and is mostly something you can safely ignore for most toy and small apps and ,for two, is a reasonably well rounded IDE built by a company that specialises in making IDEs. You're comparing Eclipse to Xcode when I don't think Eclipse has been used to build Android apps in 7+ years. The moment you have to do anything complex like even simply debugging errors and performance, Xcode falters and drops the ball. If all you're doing is building a +1 counter then I'm sure that works. For anything more complex, Xcode is hell. Or at least was when I was working on it until the pandemic post which I gave up

This isn't even going into what an utterly horrific editor it is that is plagued with bugs and is missing basic IDE features like a functioning autocomplete, refactoring etc. Mind you, at one point I was celebrating because they finally added highlighting your cursor line in an update after the extensions I used to add that broke. That's how bad Xcode was circa 2015 when simple text editors had those features baked in. If you're comparing Xcode to Eclipse and ranting about JS, then feels like you kept up with how engineering has evolved for Android and JS in maybe 5-10 years. In contrast, it feels like Xcode only adds incrementally miniscule changes and every time I look at it, they seem to not have improved it much at all

All this isn't even getting into what an awful experience simply updating the damn thing is. Why does it have to download 20GB every couple of months and why does it fail so often?

I'm sorry I'm so aggressive but nothing has made my hairs more gray than trying to work with Xcode. It is appalling that it's basically the only way you can develop apps for the Apple ecosystem


And I hate Xcode as much as the next person, but that's not even getting into the dumpster fire of trying to have CI/CD pipelines for iOS or macOS artifacts. I am aware that both GitHub and GitLab are now offering macOS runners, and AWS has macOS instances, but it's still "not the same" and is one more innovation token to manage


I feel like a lot of these answers come from a circa-2010 understanding of JS, that haven't updated to the present.

By analogy, if we answered this way about mobile phones, it'd be like someone asking 'how should I do mobile development?' and someone else responding 'good luck, you have to pick between Windows phone and Blackberry and Palm and iPhone and ...'

In 2024, that's easy: you develop for iPhone and Android, and if you have to pick one, make it iPhone. Simple.

Similarly, for JS, you pick React Native. It's dominant and the alternatives are like infinitesimals - so small you can ignore them.

"What about..." Again, you're thinking of the options that lost. It's 2024, React Native won. So you just use React Native. It's not complicated.


Well, not all web development is exclusive of JS nowadays, we have the WebAssembly based Blazor framework where you use C# throughout 98% of the web app development, no JS library is ever required of you want to.


C-suite is too busy migrating to yet another database to worry about frontend.


Echoing what others have said - Xcode is worse than all of that.


Huh? If you don't want to write bare HTML/CSS/JS you can use one of the many frameworks that make writing web apps easier. Even if you hate React or Vue you can use Alpine. If you really hate Javascript you can use HTMX.

The web has the best tooling out of any platform because it's the biggest platform. It also has the best documentation... because it's the biggest platform.

I don't know what your point is, that web development is hard or complicated? Writing web apps are way easier than writing iOS apps.


Web tooling is still not great.

It’s still too low-level. We shouldn’t be writing div over and over with different interacting class properties. Something like SvelteKit’s level of frontend/backend integration feels 5 years too late.

Ultimately it seems like the web ecosystem gets trapped in local maxima (“put JS in everything!”) and really seems to avoid actually creating useful, productivity-enhancing primitives. And that comes from loving the trinity of web tech so much you cannot imagine life without them.


> We shouldn’t be writing div over and over with different interacting class properties.

This is why we have frameworks like React with components, so you don't have to do this.

Even if you don't want to use a framework, you can use Web Components which allow you to create "productivity-enhancing primitives".


Is writing a div and classes really low level? Even if you think that, there are numerous full featured component libraries available for web, where you don't need to write a single div or a class.


My point is that web development is a lot more of a moving target than iOS Native Development and it's largely because Apple makes the hardware, the software, the development tools and the languages and frameworks and they all work together. There are open source libraries in there (SQLite for the default data persistence layer) but it's all vetted and works.

I've been a web developer before (all the way back to and before the ExtJS days) and while I _can_ do it I really prefer not to. The web does not have "the best tooling out of any platform" or "the best documentation... because it's the biggest platform". The tooling tends to be all over the place (until Visual Studio Code takes over the planet... :/) and frameworks like React or Vue hide a lot of complexity that you have to dig into if something goes blooey. This is not to mention the page bloat or security holes you get when you include some handful of analytics "libraries".


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.


>the form factor my mother uses has changed from a laptop to an iPad. But it still satisfies that core value prop.

>Let's consider a different context. Even if there were no apps in my phone, I would still buy an iPhone. For myself likely, but most certainly for her.

I have been thinking about this since COVID. I recently posted [1] on Apps required for setting up a new Mac. Apart from BitTorrent client, VSCode, a Video player and related library, 99% of time I am inside a Browser. i.e We are very very close to a point where a Web Browser is all we need. Especially for consumption devices similar to iPad.

This also means having a platform other than Google, Microsoft or Apple is more feasible than ever. Unfortunately Facebook or Amazon doesn't seems to be interested. I dont see any other companies to have this appetite. Ideally something similar to Mozilla or WikiPedia would be better. But both are too small right now to try something of this size.

[1] https://news.ycombinator.com/item?id=39164362


Yeah, "everything being in the browser" is probably a big part of the reason I can happily daily-drive a laptop from 2012 with a resolution of 1366x768 and 8gb of RAM (ThinkPad X230 running OpenBSD). All the other non-browser stuff I do is like, coding and terminal stuff (other than gaming, which I have a different machine for).


How can we normalize/streamline using the "Add to Home Screen" bookmarking feature as an alternative to the App Store installation?

What if we created an App Store that was solely focused on getting users to “install” using a bookmark.

And convinced top app players to forgo the App Store and advertise “get a 10% discount if you install our app with App Store X, the alternative App Store.”


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.


Agreed, but it's because Apple has deliberately and relentlessly sabotaged PWAs as a competitive option.

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.


But a surprisingly large amount of apps don't need hardware functionalities or could easily provide (most of) their value without them.

Sure, some high end games. But they're more an exception. What other app are you thinking of?


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..


notifications, storage, camera and offline are all supported by web-apps though.

Maybe not safari, IDK, but globally the most used browsers support this and have done so for many years.


> 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.

On a recent project I was working on, I noticed that having a long list of items in an overflow: scroll container would still allow the root page to scroll as far down as the items theoretically would. You could just scroll far past the actual HTML root tag because somewhere on the page I had a long scrollable list.

The catch? I only noticed this on Safari.... and Chrome. Firefox is the only browser that doesn't shit the bed on that page.

I just find it amusing that the most annoying problem I've experienced recently with web dev was not because of Safari's "princessness" (it was doing the exact same thing as Chrome), but just because browser engines have become complex enough to be eldritch gods we just have to pray to and hope.

Finally, parity with the desktop.


+1 for your invocation of eldritch gods :)

I know what you're saying, there is undoubtedly a complexity angle too, not all of it is malice. But after a while, one starts noticing the pattern (or maybe it is just me) that Safari has a holier-than-thou attitude towards standards. Their way of standardization is - I'll just go ahead and do something my own way, and then rest will just follow suit because I have so much market share.

Which isn't, as you say, far from Chrome's actions in theory. But in practice, the feeling I've been getting recently is that more Chrome is happy to accommodate. Safari seems to (intentionally or culturally) drag its feet a lot more in picking up stuff that has been ratified.


> 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.


Writing for the web of today is merely changing one walled garden for another. We don't live in a state of "free and open web" - it's dominated by two ad companies controlling the browser and social aspects of it.

Some would argue that we should keep pumping browsers with native-like APIs to escape the "big bad App Store" while in reality this merely increases the foothold of Big G and their cousin Meta.

The issue is not how much Apple cares about developers (they do, because developers make Apple's ecosystem but this is a business relationship, not a friendship). In my view, the root cause is that the "happy path" of creating an app mandates choosing an ecosystem. For everything from tools to where you'd store your data and how you'd send push notifications - you have to choose which one of the MFAANGs you will support or else.


I don't understand this rationale.

Web apps can be used by many devices, mobile or desktop, iOS, macOS, iPadOS, Android, Windows, and Linux.

If web dominance changes I'm still left with an application that works everywhere.

How is that comparable to native applications that only work in the latest versions of a single OS?

The only reason web apps didn't dominate yet is because Apple can't force them to pay 30% of their revenue plus $100/year per developer license so Apple goes out of their way to nerf web app functionality.

Safari is historically lagging behind in implementing functionality to enable web apps.


> If web dominance changes I'm still left with an application that works everywhere.

That's the faulty assumption in my view. It doesn't work everywhere - even on the web, you're bound to whatever the dominant browser thinks is right for you.

Some random examples from recent months - 3rd party cookies (putting aside the fact that they were enschitified for ads), Google suddenly decides to turn them off and they're gone. Ad blockers don't make it as an extension (so extensions are not, in fact, a solid substitute for apps). See AMP - you don't even get the choice if your website will be transformed into whatever Big G thought was an "optimised experience". What's to stop them from forcing you to enable "privacy-focused topics" or Web Bluetooth to sign into your Gmail account? Let's not even begin to discuss Search - all from your browser company.

You see, browsers have become much more than simply web agents. Your app's documents and hypermedia are technically downloadable "everywhere". However, just like on an App Store device, if and how users can discover your web content and how they experience it is entirely locked inside the walled garden of your Chrome-like browser vendor.

PS: Since before the browser Interop initiatives (now more than 3 years ago), Safari has been leading the race when it comes to accepted standards.


The problem is, I want to be able to run apps on my device entirely offline.

On Android, I can do that with web apps, because Android for the time being has "web server" apps that let you run a local Apache server. So if your application files are stored locally on phone storage, you can use the app entirely offline.

Anything similar on iOS?


It was obvious to me that Apple doesn't care about developers the moment I learned that they charge a $99 per year fee to open a developer account.

I refuse to pay a company so that I can contribute value to their ecosystem.


The point of the article is that you, as an individual, don't contribute to their ecosystem — that "Apple has no dependency on individual developers".

The way that Apple cares for developers in aggregate is by keeping the ecosystem vibrant. This means giving developers what they need, but not necessarily what they want. It means that when it comes down to what developers want vs. what users (like the author's mom) need, users win.

$99/year is nothing in terms of development costs, but even that token amount will generally keep out the Apple fanboys who just want to download iOS developer releases and should not be let into the developer party.


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.


I haven't needed to learn a framework in 5 years. What you're describing is FOMO developer, which is not a good idea anyways.


Not even new ways, just old ways repackaged and reorganized based on a developer’s ability to get 15 minutes of fame.


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.)


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.


> 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)


I didn't move from Google because of this bug. I'm just using that bug as a (pretty symptomatic) example.


The only reason why native apps is : Control !

they really want keep you inside their ecosystem. so they can control you as much as they can.

* they want you to pay the apps submission fee.

* they want your user payment subs processed within the ecosystem

* they want easily track everything.

they keep doing this hyprocysy to the web eco. while they really know: almost the problem in native can be solve under the web browser stack.


I develop native applications for Windows and Mac (using Qt and C++). I get a strong feeling that Microsoft (for all it's flaws) cares a lot more about developers than Apple does. I wonder if some of this is because Gates was a developer and Jobs wasn't.


That is why we built this open source platform:

https://qbix.com/platform

We bet on the open Web since 2011. We believe Wordpress had huge success for Web 1.0, but for Web 2.0 everything is proprietary. Mastodon is an exception, but it doesn’t go far enough.

This is our vision:

http://laweekly.com/restoring-healthy-communities/

https://qbix.com/ecosystem

Anyway, use it! Let’s opt out and wrest the power from Big Tech!


The author is like a toddler that accuses his parent not caring when he doesn’t get his way. I mean what do you expect corporations that tries to make a good ecosystem for developers to do? They can’t satisfy every concern


What hole has this guy been living in? It took him a decade to figure out who Macs are primarily for? Hasn’t that been known since 1984?


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.


> "just pay for iCloud bro!” The entire reason I'm doing this is to NOT do that.

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.


Swift and Apple APIs are the most pleasant environment I have ever experienced by far.

If only their documentation wasn't so often lacking though.


One thing about the web is that GPU compute is still not so straightforward to achieve, and even CPU multithreading has a bit clunky at best. For many kinds of apps, web is really not the right answer for these reasons. If all you need is a UI and some fairly minimal background logic, the web could be just fine, though.


Unfortunately from a non-professional perspective, writing for the web is just soul crushingly boring and honestly depressing. I'd rather not be reminded that this is where the cross-platform development takes place. It genuinely makes me hate programming and I find negative joy in it


I feel sad that you feel like that, because it really isn't! Of course, different things work for different people, and you and I just might have different ideas of fun, but for me it's the opposite. I find great joy in writing web code.

I will give it to you though - the ecosystem is complex. It takes a while to figure out what works for oneself and what is just chaff. And there is a lot of needless complexity.

Anyways, my point here is - do try to give the web another try. Maybe it'll click, and you'll start having fun writing code knowing that you can send a link to anyone and they'll be able to enjoy what you've created irrespective of what device they're on, and instantly.


What parts of it do you find boring, specifically?


I find working with abstraction boring generally. I want to program a machine to do things, not feel like I'm working in some kind of abstract virtual space. Further, I could maybe tolerate that if it were a nice abstraction, perhaps like smalltalk or something, but the web is a terrible abstraction, being made to do nothing like it was designed to do. It's extremely unpleasant.


Quirky that DDG is mentioned as a Google alternative when it's a meta search engine. I'd hope the average developer appreciates that DDG isn't a "true" search engine as in, they don't have their own index of web documents.


Apple and their fans always represented peak arrogance to me. Idiots who would spend $1000 on a phone and $3000 on a laptop that had more bugs and compatibility issues with hardware and gaming than Windows. Only decent product they made was the iPod


I must say, I am very happy with my 16" M3 MacBook and iPhone 13. The new 16" MacBooks are the nicest laptops I've used since the old 17" MacBooks. I guess enjoying quality products makes me an idiot to some people. I'm not easily offended. :). The M3 Mac is a real beast of a machine and the iPhone does exactly what I want it to.

I originally bought a MacBook after years of using Linux desktops because I wanted a stable POSIX compliant OS (with a complete nix user land) AND a nice desktop environment that "just worked". And that's what I got.

I have about 30 years of development and sysadmin experience on nix systems, so, I feel a bit neutered on Windows. No doubt Windows guys feel the same way in *nix environments.

Unfortunately the "year of the Linux Desktop" still seems years away. Yes, Linux as a Desktop Environment is feasible (and I do use it often), but, it's still an inconsistent pain in the ass.


> One would think that of all the leetcode certified staff…

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.


I wish I'd read this article a few years ago. It would've saved me discovering the "just doesn't care about developers" the hard way, especially with SwiftUI (which Apple recommended to use, as if it was ready) and some of the APIs we needed. It's first surprising, and then concerning/infuriating.

I also could've forwarded the piece to non-developers.

I successfully did a fancy production-grade app, despite Apple, but after I told one of the non-developer co-founders how I'd been cursing to myself about Apple (e.g., buggy libraries and tools, bad/incomplete docs, poor API in some places, flaky developer-facing aspects of App Store, authoritarian and Kafkaesque processes around App Store), I got the impression he didn't understand. I'm guessing he assumed it was much like Apple consumer quality and vibe, as I would've, and a superficial look at a developer marketing page or demo video would also make it appear like that.


Having been in apps for the past 10 years I am not incredibly motivated to build for the web. PWA works, has local storage, and best of all no 30% profit sharing!


Isn't building PWAs building for the web?


Yes you're right! I said "not" but I meant "now. Had to think about that for a second.


I really like the sights and sounds section on your website


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.


[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.


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.

//rant


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.


I'm deeply worried that this new Apple Vision Pro will get successful and there is no real competitor or openness.


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.


What's the most beginner friendly framework for web app development that is lean and not bloated like angular


IMO if your goal is to get up and running fast as a single developer I would suggest that you pick a battle-tested server side framework in a language you already know (Django, Rails, Flask, Laravel, Play, Express, ASP.net, whatever), and use HTMX or its equivalent for the framework you’ve chosen (Hotwire for Rails, Livewire for Laravel, etc.) along with vanilla JS and either Bootstrap or Tailwind for CSS. Keep it simple.

On the other hand, if your goal is to make complex interactive apps, or if you do not want to to launch apps yourself and instead want to be more employable by midsized or large companies, pick up React.


React/JSX is the easiest to read and comprehend. I find it a little more intuitive than Vue. If you want something simpler I would suggest Alpine. If you want something even simpler than Alpine I'd suggest HTMX.


The author confuses development for an Apple platform with using Apple's service API in development, and suggests to write for web instead. If you can use Apple Music API in web development (I don't know if you can) then you'll face exactly same issues as described, because the problem is this service's API.


Web app developers which I also used to be once upon a time seem to some how miss always miss the point that making a web app and having them run on the desktop is not the same as having them run on a mobile device. The constraints for power consumption, memory usage and cpu time simply don’t apply on a desktop/laptop sized machine. It’s very easy to have a browser bee the biggest resource hog on a laptop if you have more than 5-6 tabs open with some big apps. Thats what these native mobile dev bashers seem to never get.


> The dependency goes Developer -> Apple and Apple -> Consumer, there is no reverse arrow from Apple to the developers.

The App Store gets a developer’s apps in front of a huge audience and significantly simplifies distribution and billing and so forth. People complain the cut is high to use the App Store which is probably valid.


I’m a developer (Indie and pro) and I’m still glad the user is put first.


This provides yet another reason for a FOSS phone platform.


Which already exists. Sent from my Librem 5.


Write code for the web if you like, but please don't make your text 500px wide. It's awful to read. I don't have a big monitor so that you can take up a small thin vertical strip.


And you are cared for if you code for the web?


I think this is beautifully written. Giving a lot of context as to "why" they way they are now. I even like it was tagged as "Rant". Which isn't really my standard rant at all. At least not "angry" rant.

It also capture a lot of things that I share. Especially post Steve Jobs' Apple.

>With Apple I didn’t understand the dynamics.

The dynamics is very simple. Once you understand one thing. As a developer, the user using your App are not your user, they are Apple's user. Apple is granting you access to their user base. Another way to think about it is the App Store, Apple is sharing 70% you earned from Apple's user to you. Rather than Apple taking 30% from you. The first one implies Apple think that 100% ( or vast majority ) of those value belongs to Apple in the first place. While the second is Apple's tax on your value you created.

That is to say Apple treat its developer as an extension of their own. And ultimately only to serve Apple's user ( or Apple's interest ). This is not just on software but also on hardware. As anyone in supply chains working with Apple would understand this.

>Apple’s own music player was, and still is, unusably bad....... think it is because the people who're making these apps were never around in the Justin Frankel era of Winamp.

I have been stating this since the dawn of Apple Music. If anyone remember, when Tim Cook launch Apple Music. It was all about the magical "Next Song". That is the modern day speak of AI knowing what the next song should be. That was the pitch from Jimmy Iovine on Beats Music, from a guy who thinks they have some of the best sound quality in the headphone market. Luckily the original "taste" of Apple's speaker quality didn't get diluted by this acquisition. Many thanks to those ex- B&W engineers. But iTunes was basically swallowed by Apple Music, or Beats. For some time Apple Music doesn't even have a loop for listening to the same song repeatedly. They want you to listen to the "Next Song". It was a platform primarily designed for New Music Discovery. Hence the Design is centred around Radio and curated playlist. Rather than "letting what user want which is to curate their own music library in iTunes". Quote from an NBC interview with Steve Jobs in 2006. ( Full Interviews on the Internet are all dead for some strange reason. ) And then every version of Apple Music they added back some pieces of iTunes function. But the design remains the same as it was in 1.0. It was first and foremost designed for New Music Discovery. Or to quote Jimmy Iovine, 2016 that the intention for the service is to become a "cultural platform", and Apple wants the service to be a "one-stop shop for pop culture". It you watch Apple closely and think where some of these culture changes came. That is probably the start of it.

>Which brings me to the third thread of this story, how all this made me reevalute my relationship with companies.

The bulk of many of these conversion is that we are comparing Steve Job's Apple against Tim Cook's Apple. Those of us who were there before the iPhone. And the two are a very different company. Modern day Apple is very much profit driven development model. From Product segmentation, service strategy to operational efficiency.

The Final Quote :

"If you were a product person at IBM or Xerox, so you make a better copier or computer. So what? When you have monopoly market share, the company's not any more successful.

So the people that can make the company more successful are sales and marketing people, and they end up running the companies. And the product people get driven out of the decision making forums, and the companies forget what it means to make great products. The product sensibility and the product genius that brought them to that monopolistic position gets rotted out by people running these companies that have no conception of a good product versus a bad product. They have no conception of the craftsmanship that's required to take a good idea and turn it into a good product. And they really have no feeling in their hearts, usually, about wanting to really help the customers.

So that's what happened at Xerox, that the people at Xerox PARC used to call the people that ran Xerox tonerheads. And they just had these tonerheads would come out to Xerox PARC and they just had no clue about what they were seeing." - Steve Jobs


> I think this is beautifully written.

Thank you! I'm so happy that what I wrote other have found beautiful to read :)


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.


I spent most of my career in the gaming industry(apart from the last few years really). To be more specific, mobile gaming. A very lucrative industry but that's a whole different topic. Either way, back in the days when I started, Adobe Flash played a big role. The games the company was developing were banking heavily on Flash: all menus were built with Flash and it worked as a charm on both Android and iOS. At that point Apple had already put the final nails in the coffin but the company I worked for had managed to figure out a hack to keep using it and it worked up until mid 2017. I guess it was around that time Apple figured out the hack the company was making to keep it going. That entire fiasco caused several big shock waves around the company: it wasn't a small company, so there were a fair bit of Flash and ActionScript developers. Also there were several EOL games which the company wanted to keep since money was still flowing in through them so a large amount of people had to deep dive into legacy codebase no one had touched in years, just to re-make the menus using something else.

My point is, Apple has a long history of wanting to keep it's ecosystem closed, which is a huge problem for both large companies and even more so for small publishers and indie developers. It is one of the many reasons I've hated Apple with a passion for as long as I can remember.

Meanwhile I am working on an app with several friends/former co-workers and we opted for Flutter. Since I am the only one who has any experience with smartphones in general, this seemed to be the best candidate. For one, I know Dart more or less - I'm by no means expert in either Flutter or Dart but I can navigate myself with ease and documentation is fairly good. Which is enough to be fairly productive. Also Dart is an OK language overall - at least you know what to expect from it, unlike js or ts.

Having said all that, I won't lie, I have this fear in the back of my mind that at some point Apple will try to lock flutter out of their ecosystem and be like "Tough luck, rewrite it in Swift, deal with it". Which does sound like a very Apple thing to do, even if you are the most die-hard Apple fan.

The situation is bad, there's no way to sugarcoat it. But I'd argue that even with everything I just said, the web is in a worse state. If we roll the tape back to when I wasn't even a teenager, I learned basic HTML by simply looking at Yahoo!'s source. Yes, there weren't fancy animations or shiny colors and whatnot but it was simple enough to get it going. These days, it's an absolute nightmare. A simple "hello world" page adds an ungodly amount of node_modules to your drive, long, slow and convoluted build systems, horrible setup processes and horrible development experience. On the subject of the app we are making, having a few microservices, a few databases, a set of docker images, a docker compose setup for development and kubernetes with ingress for deployment is a lot of work as it is. We can get it up to speed in a matter of a few hours since we have a total of 25-30 years of experience between the 3 of us. But if we have to add web to the equation(which personally I would not mind, considering I'm more likely to use a computer rather than a phone), it would be a catastrophe. We'd need to rope in at least 3 other people to work on that and keep in mind that this is a project for our spare time and we are investing our private time and money. The web is simply not feasible.

In the early 2010's when I was coming out of uni, I would have preferred to work with web out of the two options - you had to endure Apple's products which I wouldn't have wanted to spend money on and you had to endure Java for Android. No way I would want to deal with either of those. But these days, I'd do anything to avoid the web, simply because the web is an absolute mess - I'm far more willing to risk shooting myself in the foot than having to deal with it.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: