Hacker News new | past | comments | ask | show | jobs | submit login
Write code for the web (mrmr.io)
446 points by mnvrth 3 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.


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

Search: