← Back to context

Comment by ohgodplsno

4 years ago

In the same way that Visual Basic offered simple, drag & drop interface builders.

What happened is also changing hardware, UIs that need to adapt to changing screen sizes, different needs, theming, and many more.

Making resolution-agnostic applications in C# Winforms wasn't hard, it was a simple flag to tell the OS how to scale the GUI. And if you used the native widgets and set tab-indexes you'd be all set for changing sizes, blind users, OS re-theming, etc. A good UI framework should handle that stuff internally... even a bad one should do that (bad, like how winforms set the wrong default font).

Imho, the real reason we don't see stuff like this for the Web is that the web isn't designed for modularity. CSS, Javascript, and HTML IDs are all global.

Programming 101 lesson 1 is "don't use globals" and the Web is the perfect object-lesson in why not.

  • CSS - Yes. JS - Not since 2015, I'll admit that is somewhat recent. HTML IDs - IDs are only good if they're unique. Since HTML had no notion of scope, they became global. Shadow DOM is the web platform answer for modularization, however any JS framework will allow you to slice your CSS and HTML in components.

  • > if you used the native widgets and set tab-indexes you'd be all set for changing sizes, blind users, OS re-theming, etc

    > Imho, the real reason we don't see stuff like this for the Web

    Where are you looking on the web? tab-indexes and extending native web components gives you responsiveness and accessibility. The browsers provide theming capabilities for light and dark mode, and OS level color preferences (I use "red" for selected on Mac) easily show themselves on CSS `outline` etc

    > Globals

    No one uses globals on the web. This isn't 2000, or even 2013.

Everyone seemingly unaware that this still exists and you can still do it in Hejlsberg's C#? Drag and drop WPF components and program in code-behind? With themes and responsive design?

(Big asterisk: mostly Windows-only and has recently lost product direction coherency)

  • My biggest problem with the drag and drop builders was how it played with version control. The last I used was nearly 20 years ago - Windows Visual Studio C++ with MFC. Even if the builder produced C++ code, it was hard to know exactly where and how the changes were made. CVS (and maybe svn?) didn’t exactly like tracking those changes.

    Is that any better now?

    • One thing I really liked about Delphi was its strict separation between generated and manually-written code. Delphi had a dedicated text file format that represented the form built in the GUI builder. So, VC would just pick up changes in the form file and save them like anything else.

  • Also Android Studio, XCode, all the React builder websites, etc. Basically every GUI platform + IDE has some form of a drag & drop interface builder.

    The problem is that outside of the iOS ecosystem, there are too many subtle differences in behavior to really trust the results. And because a lot of software gets worldwide distribution these days, it's economically worth it to squeeze that last bit of performance & user friendliness out of the framework. So most professional programmers learn how to do things programmatically and only use the interface builder if they're doing a quick internal tool.

  • WinForms still exists and is fine for the odd quick utility. Doing WPF without ever having to drop in the XAML is... unlikely to say the least. You're going to end up in there are one point, because styles are fucking you over or for some other reason (databinding? lol). But yes, C# is still keeping the drag & drop alive. So are plenty of tools (Lazarus, hell even Android Studio has a drag & drop designer).

  • Delphi still exists and you can still do it in Delphi. Responsive. Cross-platform on Android, iOS, macOS, Windows, and Linux. Single codebase single UI.

    • Can you point to any Delphi app on the android playstore that doesn't look and feel like shit? Or a Linux app? I used to be a Delphi fan, but the results I've come across are not exactly convincing. Compare this to Flutter, which looks and feels gorgeous, at least on Android.

> UIs that need to adapt to changing screen sizes, different needs, theming, and many more.

People keep saying that as if that is this new thing that wasn't ever heard of before the web or smartphones.

Open any desktop app and resize it. Boom, you've got "changing screen sizes".

And yeah, "needs are different, and we need theming is this new thing that never existed before the iPhone ".

  • I think forced aspect ratio was very common in the era of these oldschool UI toolkits. Additionally, handling multiple classes of pixel density and input (touch vs mouse) was unheard of.