Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I love functional concepts such as stateless systems, but young folks should acknowledge that two way event binding is something graphical desktop toolkits are doing since decades. For instance, Qt signal-slot mechanism https://doc.qt.io/qt-5/signalsandslots.html or https://libsigcplusplus.github.io/libsigcplusplus

Furthermore, MVC is, when done correctly, a sane two way data-GUI binding. However, I have never seen a sane implementation ;-)



Hopefully one day we can get to where Visual Basic was in the 90's.


I keep vainly hoping for undo/redo, configurable keyboard shortcuts, cross-app files, app help, you know... the wins of the Windows 3.x 90s.

I'm honestly amazed some (especially undo!) were shrugged away so easily.


Can you elaborate? Undo/redo in what contexts? What applications had undo/redo besides for editing things?


Is "editing things" (i.e. data) not central in the majority of apps?


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.

What apps are missing undo functionality for you?


Sure, but the text editor does have undo.


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".


Apparently iOS?


iOS has undo when you shake your phone. Or what kind of undo are you referring to?


There are also gestures for it now - undo is swipe left with 3 fingers and redo - same but to the right.


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.


Worth a mention that https://www.lazarus-ide.org/ is aiming to replace Delphi, and runs on Linux.

They also seem to support app development for Android: https://wiki.lazarus.freepascal.org/Portal:Android and iOS: https://wiki.lazarus.freepascal.org/Portal:iOS


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.


The traditional, standard, component library was built around the native Win32 controls[1].

Some time ago they acquired a cross-platform component library, FireMonkey[2], which does not use native controls.

[1]: https://docs.microsoft.com/en-us/windows/win32/controls/indi...

[2]: http://docwiki.embarcadero.com/RADStudio/Sydney/en/FireMonke...


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.


"Low code" on trend, many devs using Visual Studio (Code), we're nearly there.


Access too. Hypercard, and others as well.


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.

[1]- https://samnewman.io/patterns/architectural/bff/


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.


> html documents inside browser windows are naturally stateless content systems

what about inputs? or do you consider them stateless because their entire¹ "state" is reflected in the DOM, i.e.

  <input type="checkbox"/>
  // *click*
  <input type="checkbox" checked=""/>
---

¹ - well, except focus, open/closed for <select>, and probably a bunch of other things


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.


ah gotcha! for some reason i thought you were talking at the component level, not app level.


The sanest MVC implementation is AppKit and classic UIKit.


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.


You might not like Svelte.


There's a big difference between something being new vs being new to a developer that I try to see if a developer understands.


Yes and yes. And I think that as a whole the industry moved towards MVVM which is a lot more achievable than MVC for the better.


I wish I could figure out the openwrt MVC gui stuff




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

Search: