I'm asking for specifics because I actually can't think of any apps where "undo" would make sense, but is missing. I'm probably not creative enough. But that's why I asked for examples. These are the things I thought of:
Text editor? Those have undo.
Image editor? Also have undo.
Video Games? Depends. Should you be allowed to "undo" in a game of minesweeper? Probably not- it kind of ruins the game. Should you be allowed to "undo" in Chess? Probably not. Should you be allowed to undo in Solitaire? Maybe.
Chat client? What would you undo? Can't unsend a message.
Web Browsers have back buttons, to the extent that those can undo.
I could see file managers maybe having undo. I honestly don't know if the popular ones today do or not.
Text is important, but its datum is rarely independent. More undo is useful than the text in the current text control. Anything else requires (and rarely gets) more substantial command undo/redo. I'm not making a black&white point, I am honestly surprised it so easily became "non-essential without apology".
I regret Delphi is a niche product now as it's quite powerful now, with native apps also for mobile platforms. Pity that the Community Edition doesn't support Linux.
Do native Delphi applications use native controls (when available)? Do they feel native, or are they their own thing? I'm thinking specifically of Java Swing applications that never felt native.
Delphi is definitely 100% native. I'm not sure about Free Pascal's Lazarus; it looks native when I've used it, but I'd need to break out Spy++ or WinObj or something to actually poke at what's going on.
The BFF pattern[1] may be more useful today to many, due to various types and sizes of devices and different sorts of integrations.
MVC can be used in its place, but it would often introduce unnecessary complexity, e.g. additional controllers.
MVC works for contextually equivalent interaction, which is still very useful, too.
Mostly just do what makes sense.
The challenge is, as it has been, how to be flexible, smart, and forward-looking, but developing quickly for what’s needed now.
But whether you’re coding a quick prototype or designing a large project (which is risky because a feedback loop from all users may be longer), focusing too much on the how and specifics instead of the overall experience may get you into trouble later.
For example, you could have what sounds ideal: microservices, individual teams each working on them focused on their own goals, powering a site with the latest, well-used JS framework, able to deploy quickly and developing quickly with a lot of fun-but-professional-looking communication, and end up with a slow, broken application.
The problem with two way data binding is it assumes a function call is free. Two way data binding breaks when a function call is many orders of magnitude slower, like over the web. You end up with classic ASP.NET.
Additionally, html documents inside browser windows are naturally stateless content systems, but applications have never had this constraint. The design patterns that are successful on a browser are usually overkill in application development. Android has baked a few of these stateless design patterns into their core frameworks and then spent years coming up with various support libraries to overcome them.
In this context stateless usually refers to access to the wider system. When an html page loads, it has no state it can access right away, it has only raw data in the url and cookies. You are constantly having to recreate the state of the system as a user moves from one page to another. Design patterns like react are a natural fit for this system, its turtles all the way down.
Applications on the other hand start their lifecycle as a singleton and because you can guarantee a parent child relationship from top to bottom it tends to facilitate design patterns with sharing of state more easily between pages.
Yup thank you. Web is only now coming to terms with desktop application development world of doing things. While I support the movement, however there are too many legacy stuff in the web and how front end developer use JS like jquery type of thing to manage a document base page. Maybe there should be a mode like 'stric mode' to support two way data binding.
The problem, if there is one, with the web stuff discussed here is not that it is not strict enough to facilitate two way data binding but the opposite. Modern web frameworks use stricter one way data binding because they posit two way data binding is too dangerous / hard to reason about. It could easily be added and vue does in fact have some of it.
Furthermore, MVC is, when done correctly, a sane two way data-GUI binding. However, I have never seen a sane implementation ;-)