Hacker News new | ask | show | jobs
by randomsearch 2874 days ago
I’m interested as to whether there really is complexity that can’t be simplified in general.

Here’s an obvious example where it could be: web apps are mostly conceptually simple: a thin client which is basically a UI framework talks to a process on a remote server. So you need something to develop the UI and something for the server. But instead of the “web UI toolkit” (which could mostly be a graphical tool) we have JavaScript, CSS, HTML, jquery, a gazillion hacked front end frameworks trying to (imperfectly) fix the mistakes of everything below it, a whole system for preprocessing, packaging, running tasks, deploying - just for a UI. And all those tools need customising, rely on knowledge of a bunch of random tools and languages and file editing.

So we could definitely improve 10x in making “web apps” or whatever you would replace them with something much much simpler (even if for a subset of use cases). And that’s just one example.

3 comments

conceptually simple, perhaps, but in practice they are far from it. HTML, CSS, JS, and web server tools are complex because web pages are extremely parameterized over different content, client sizes and types, user preferences, and data. From being a long time web developer, the graphical layout tools are basically only useful for graphic design, because they output code that only works for the exact layout and content initially created, which is typically useless for anything but static content.

I think the difficulty of making tools for abstracting web content are related to the difficulties of creating more intuitive programming tools.

Thanks for the thoughtful reply.

I was thinking at a more abstract level:

> because web pages are extremely parameterized over different content, client sizes and types, user preferences, and data

You've taken this as a given. Why does it have to be like that? If we're defining the standards, we can make the web whatever we want it to be. And I think if your explanation of why it is complicated is the above (and I think that's only a small part of why it is such a mess), then let's modify some of those assumptions to make it easier to simplify.

That, and also needs beyond the initial creation: Adding new types of content, modifying things without having to start from scratch, being easy to diff for change reviews and for merge-conflict resolution, supporting search engine crawlers, deep links, permanent links, interacting well with the back button. And that's without getting into the cases in which you have content that updates in real time, user content, the need to support offline mode, or any of the things that blur the website / application line.
Yes, it's quite complicated now (but it's getting better).

But it's not as easy as replacing it with something simpler. If you do, you will discover all the things you can't do with it. So you start to improve it, add features, etc. And after a short time, it's probably even more complex as html/css and still not as flexible and powerful.

Web apps are mostly conceptually simple: a thin client which is basically a UI framework talks to a process on a remote server. So you need something to develop the UI and something for the server. But instead of the “web UI toolkit” (which could mostly be a graphical tool) we have JavaScript, CSS, HTML, jquery, a gazillion hacked front end frameworks trying to (imperfectly) fix the mistakes of everything below it, a whole system for preprocessing, packaging, running tasks, deploying - just for a UI.

Exactly. So what do we have coming next? WebAssembly.

WebAssembly sounds great, although you could argue that running things in a sandboxed JVM in the 1990s was basically there already.

But it doesn't magically remove the problems we have made, for no real reason, at the front end in terms of UI.