I worked on microcontrollers, system software, desktop software, mobile apps, games and now I am a full stack web developer who mostly does backend and defers most of the front-end tasks to colleagues.
I don't like JS frameworks and it was far more enjoyable for me to use QT, Borland C++Builder, Windows Forms XCode and Android Studio than to use Angular and React and even Vue.
Aside from Web front-end to being a less enjoyable experience for me, the Web was designed for websites, not for apps. Web as an app platform means subpar experience for the users, too.
We tried with Flash and Java applets running in the browser. Those died and now we have the Javascript mess.
When, if ever, Wasm will have full access to browser DOM, maybe we can get rid of the Javascript mess. But then, again, why bother running a binary app in the browser when you can run it on the desktop or phone?
And even if web as an app platform is said to promote openness and impede gatekeeping it still has a terrible downside for the end user: it makes the user rent the software instead of owning it.
I would like to set my cruise control to just be "current speed limit". If these cars are going to start monitoring the speed limit to the degree of being able to tell if you're breaking the law, they better have such a setting. If they don't then it seems almost like some sort of entrapment.
Great! (Imagine having wallgardened Windows computer where you could not install whatever you want).
> This will mean a race to the bottom for iPad apps. Which, of course, means even more ads
iOS store is already at the bottom. Everything is with ads or subscription based. More ads won’t scare me because I won’t use app with any ads. If app offers one time purchase - I’ll buy it if I like it. Examples of apps I bought: Structured, Bobby, ArtStudio, MusicStudio.
> if I want to install things outside the walled garden, I use a my Mac not a mobile device
What if Apple decided you cannot install apps outdide off their App Store on a Mac neither? What would your “Apple-defending” argument be then? It’s NOT a far fetched idea. Microsoft tries it with Windows S Mode and they currently constantly threaten people when they download software from internet about how dangerous it may be, trying to scare people into using their store.
Again, you are presenting this as if it has only one side to it. I need a computer that has no walled garden for certain kinds of work. For other kinds of work I'm happy to know I can't break it. Even more important, I'm happy when my parents can't break the one I buy them.
>More ads won’t scare me because I won’t use app with any ads. If app offers one time purchase - I’ll buy it if I like it.
As long as such an option exists. But in a true race to the bottom situation, there may not be anyone willing to invest in developing an app and then selling for a one time purchase. One time purchase is a model that's nearly dead anyway.
>What if Apple decided you cannot install apps outdide off their App Store on a Mac neither?
This I wouldn't accept because I can't. It's a development machine for me. But an iPad is a consumption device, I need the thing to just always work.
For me personally, all of the above is the cost and what I get is something I wasn't using and didn't miss (if I want to install things outside the walled garden, I use a my Mac not a mobile device).
Exception handling, for example, uses dynamic scoping since you don't know what will be handling your exception when you write code which throws it.
Another way of thinking about it is, with dynamic scoping the value of the dynamic variable must always be on the stack and the closest one is the value that will be used. This is a really good behaviour for global variables since a common source of bugs is some global variables (and I'm considering class members "global" for this) getting changed unexpectedly. If the variable is lexical then it can be very hard to figure out what changed the value (especially when threads are involved) but if the variable is dynamic it's easy: the culprit is in the stack trace.
> For example, Koka has a “diverging” effect, which means that an expression may diverge (that is to say, it may not finish evaluating). An expression containing a diverging expression is also diverging. So you can distinguish in the type system between a function that is guaranteed to finish and a function that may not finish (this is imperfect, of course, because of the undecidability of the halting problem; some functions that do not diverge will be marked diverging).
As I think about it (and I’m not a programming language theorist, nor have I done much serious work in any language with any sort of effect system), there are two vague categories of effect: control-flow effects like exceptions, yields, async waits (Pending, sleep, or however you feel like modeling it) and non-control-flow effects (divergence, various forms of unsafety, nondeterminism, impurity, reads or writes of global state, syscalls in models that don’t treat IO in and of itself as an effect), etc.
I would like to be able to run and write code that is definitely free of certain kinds of effects. Xz should not be unsafe or do IO, for example. Leftpad is an entirely pure, non-diverging function. And I should be able to ask my language to enforce that, ideally with trivial code. Maybe even by default.
But mainstream languages seem to mostly limit their use of effect-like systems on the control flow part, like this:
> Overall, coroutines strike me as the most promising way to handle many kinds of effectful functions because they seem to be in the design sweet spot: They are statically typed, lexically scoped, and unlayered.
I think you can do this in Idris with "total" functions.
Identity is an innate and inalienable property of individual, not something that anyone else (another person, company/website, government or whoever else) can "provide". They can merely attest by providing a credential, by e.g. issuing a passport.
At least Webauthn got this right.
I suppose I've used some identities in enough places that it would be hard to deny to certain entities that the identity was mine, but even in that case it's a small subset of entities which have seen the identity that could prove that it's me.