One significant problem with making your hardware dependent on an app is that if you are a washing machine company, you probably don't make mobile apps. So, you hire a contractor. They design an app without any expertise in the product or the domain, and program it on the cheap. It is trash. Later, the contractor goes out of business and you give the code to another contractor. They notice that the code is garbage, and not even garbage that somebody there made. Feature work is impossible, the app languishes. 1.5 stars in the app store. Every time there's an iOS update, people can't do their laundry for a couple weeks, until the one programmer working half time on the app can push an update. Later, you (the washing machine company) decide to sunset that product line, which means there's no updates to the app. iOS changes, the app stops working altogether, everybody has to buy a new washing machine.
I've been that contractor, which is why I will never be the owner of an appliance that requires an app to function.
Better yet, don’t install apps. Cell phone apps are the enemy of good software and ethical computing and a threat to human freedom. They are well established as national security risk and the source of emerging health problems for our youth. If you are a programmer, consider whether working on cellphone apps is ethically sound. The entire industry from sweatshop production of the devices to the addictive mind numbing video game apps, it’s all very anti-human.
You really took OP’s point and ran with it to make a deeply radical and ideological argument. I can only imagine that the only way that you maintain this view whilst finding HN a palatable community is by drawing fairly artistry distinctions between technologies that you enjoy and those that you have declared “for the kids” or whatever. We were talking about an application for a washing machine, not TikTok. What if TikTok was implemented as a web app?…which it is I must add. Or is this all some deeply impractical RMS-style Lynx fetishism?
Compare the permission flow of native applications to the one of web applications explicitly opened in any browser:
You should notice some differences.
That being said, I strongly consider supporting arguments as invalid when "ideological" is part of the brief summary of your refutiation and the supporting argument is first in the enumeration of your supporting arguments.
It's just a subset of the infinite set of useless but convincing "ad hominem" arguments, unless you can specifically point out why exactly some argument is "ideological", rather than rational logic or an attempt at achieving this ideal.
- native applications push users into addiction and ease privacy violations
Useful native mobile applications exist too.
But they are mostly not superior to PWAs.
I read OPs comment as an observation about the market and society and the conclusion is categorization by correlation (there are technical arguments too, of course).
I have never considered the idea that native apps can be objectively evil. Thinking about it, it has its merits. Consider a smartphone with only a web browser which doesn’t support WASM and Web Workers, but supports installable PWAs.
* The tasks one strictly needs in a smartphone does not require intensive computing, the kind not possible already with JS. Games do. Banking, govt services, online shopping, messaging applications don’t. Name me one such application.
* Applications would consume far less power without compiled binaries or WASM, and without being able to run in the background. This would greatly extend battery life.
* All applications would be properly sandboxed with a permissions model and source-code inspectable.
In general, companies that are hardware manufacturers provide the worst software, with one or two obvious exceptions everyone here can point out.
Embedded software is the absolute worst. Think about the UI of your TV or car radio (unless it's from one of the few manufacturers who have wisely given up on software and licensed theirs from Google or something): My old Toshiba plasma TV's UI looks like literal clip art, with obvious "polish" problems like some of the icons being 32x32 and others being 31x31--that kind of shit. Fixed width text font. UI responds 3 seconds after you press the remote button. The full color palette is: 0xff0000, 0x00ff00, 0x0000ff, 0xffff00, 0xff00ff, 0x00ffff (very creative). The audio feedback that happens when you navigate a menu is 500-1000ms off from the animation. It's a total mess.
These companies look at "Software" as just another line item on the BOM, like a nut or a screw. Source it from the cheapest supplier you can find, and scoop it into the product somewhere down the assembly line. The idea that software is actually a vital part of the creative industrial design of their products is foreign to them.
I turned off automatic updates a few years back and it’s amazing how many apps have a required update each day that I use them. Almost none of them include meaningful release notes.
Even more amazing are the apps that require updates to run, yet they fail to display any meaningful 'you should update' message; instead, they abruptly crash with a catch () {throw new Exception("An error occurred");}.
That's completely un-amazing. If the ecosystem ensures 99.9% of your users are on the latest version, I wouldn't waste bandwidth on defensive programming for the 0.01%.
That is just what Continuous Delivery is though. Quicker release cycles keeps breakage short. It's a lot easier to manage "this edge case broke because of something we changed in the past day/week" compared to "something we changed in the past 3 months broke this edge case"
The lack of release notes is probably just not the effort, or even confusing for users and can deter them, or make them never read the release notes when they happen. I don't think most users know what semantic versioning is.
Like, if the only thing you did last week was refactor some module, add more unreachable code for a flagged feature, and update third party libraries, do the users need that info every week?
But not releasing all those small changes daily/weekly makes the releases more and more dangerous as they stack up.
There's a reason why we don't do Continuous Delivery in a high reliability embedded context: the costs of bugs can be very high if it turns out to brick the device or physically damage it. As the other poster put it, it's continuous beta, and I personally am not a fan.
I like my releases thoroughly tested.
You updated some third party libraries, and maybe there's some subtle thing that changed in them to cause a break. Maybe that refactor wasn't zero impact the way it was intended to be. As a user, sure I want to know about third party libs being updated. All of that is useful information for us to decide to take the update or not. Back in the good old days it was all information everybody gave as a matter of course. These days, especially on phones, it's opaque and you're forced to take it whether you want to or not.
edit: and the interface changing out from under us unexpectedly is incredibly off-putting. I hate that these days I never know when an application I use every day is going to decide to remove its menus or something similarly asinine inflicted on me because that's the latest trend in UX design.
A couple of places I have worked had a ton of extra work when Apple would want detailed information about each release note item, and it just became easier to make the notes generic. Which I would guess is one of the reasons, with the other being tracking/ads.
It’s more than that. The app likely has some backend dependencies that require some ongoing maintenance or cost. It’s not just that your washing machine depends on an iOS app, but on some DynamoDB table somewhere.
Leaving data uncollected is just leaving money on the table. It's far better to steal peoples data and flog it off. Making a product and selling it for a fair price is very 20th century.
>One significant problem with making your hardware dependent on an app is that if you are a washing machine company, you probably don't make mobile apps.
>I tried doing my laundry without a smartphone. This proved to be difficult, since our laundry machines can only be operated with a smartphone app. After lots of struggle, I finally managed to do it, leading me to reflect on whether technology is actually making our lives better.
The problem, as I have been endlessly ranting on HN. Is that everyone now think of Tech, and uses the word "Tech" to mean Software.
I only wish I am wealthy enough to start a NO-Tech trend. i.e Zero or minimal Software. No more digital panel in a microwave, no more endless menu washing machine, No more Smart TV or Smart Fridge. The actual Technology should be in Atoms, not in Bits. Making Washing machine cleaning cycle faster and cleaner.
Apart from InkJet Printer, the so called Smart Appliance is the next one on my hate list.
Well said! Fortunately, you can still buy internet-connected devices with "Our app is no longer supported" fallbacks. I have a washer and dryer that can be controlled via app, but they also have physical dials and buttons. My Roomba isn't connected to the internet at all, let alone to an app; I just push the big button on top when I want my floor cleaned. My cats' litter box is connected to the internet to let me know when there's a problem, but I can also configure it by navigating the on-device menu. Et cetera.
> One significant problem with making your hardware dependent on an app is that if you are a washing machine company ... everybody has to buy a new washing machine.
Maybe I'm cynical but I think this isn't a downside for the washing machine company, this is actually an upside.
I've been that contractor, which is why I will never be the owner of an appliance that requires an app to function.