Comment by wiradikusuma

2 years ago

At the same time, I feel the gap is widening between these and professional apps. It's easier to write apps, and it's harder to write "real" apps (for the masses).

I'm writing a book (https://opinionatedlaunch.com) over the course of 3+ years and I have to keep updating the "Mobile" chapters. Not because of some fancy new framework, but because both Apple and Google keep adding "requirements."

Sure, they're for the better (e.g. more strict access to phone GPS, etc) but if you don't keep up, eventually you'll find your apps removed by the platform at some point in time. In this sense, there's no "done".

You probably can still distribute that little program you wrote in 1990 in Pascal. I don't know the equivalent for mobile apps. (Distribute, not run. You can run it easily on your old phones).

I've been thinking about this a lot, and I have two solutions:

* distribute on Testflight and never actually do a real release

* make an HTML app that works well on mobile, and can be cached for offline

Gradually I think I'm coming to prefer doing the HTML version

This happened to me. I wrote an Android app many years ago for my own need and after a month or two it was done. I have nothing to change, it works exactly as I want. But at some point Google decided that it didn't keep up and needed to be removed from the store. I'm not complaining, I can still install it with `adb` but nobody else can anymore. I'm not sure I can still build the binary though, probably not.

  • > I can still install it with `adb` but nobody else can anymore.

    You don't need adb to sideload applications. If you enable sideloading, you can copy it onto the phone and run it that way.

    • As of Android 14 you cannot install apks if the sdk target version is too old. You must use adb with a special flag.

Considerations like these have lead me to Nim. I don't have it working yet, but the vision is that if I constrain myself to a simple enough UI then I can then compile the same code to Objective C for iStuff, C++ for Android and desktop, and Javascript for web. Those apps can each then evaluate arbitrary nimscript in a platform agnostic way. I've log ago forgotten what the app I wanted to build was, but if I remember it, nobody will be able to stop me from running it anywhere. I hope.

> there's no "done"

I'm totally with you re: Android and Apple being walled-garden ecosystems with ever-changing rules. But, don't you feel like this is true of most software (that it's never "done")? In my experience, there aren't many categories of software that can be truly feature-complete unless they are fully decoupled from popular culture. Maybe GNU units or grep can be called "done", but most apps have to change with the world around them.

  • > don't you feel like this is true of most software (that it's never "done")?

    The problem is that "done" is a subjective term. Most of the software I use on a regular basis is "done" as far as I'm concerned. If it didn't meet my needs, I wouldn't be using it on a regular basis.

    This ignores security issues, of course, but most of the software I use on the regular doesn't have a networking component, so that's not as much of an issue.

Depends on your audience. In my field all the cutting edge tooling is used in script or interactive command line. Writing for that sort of interface is so much faster and easier than making a gui even with modern libraries. You can still get plenty of users writing for a command line audience. There are like 40 million conda users for example.