I find myself agreeing with him 100%. Not just on Gopher (although i did write a Gopher client some time ago - http://runtimeterror.com/tools/gopher/) but on the entire rant about wasting resources, UIs that waste screen real estate and become unusable in smaller resolutions, fonts that only look good with anti-aliasing and have weird misplaced pixels with antialiased disabled (which i also do), websites that make reading things harder and waste unnecessary resources on bling and fluff with all those javascript frameworks slowing them down, pagination often being replaced with "endless scrolling" which makes it hard not only to skip large bits of content but also hard to see how much content is there in the first place. And of course the newest worst trend of all - using an entire web browser as a UI framework for a text editor (i mean honestly, how people decided that HTML and CSS are the best technologies to use as the foundation for user interfaces?).
The only bit i'd disagree would be with games, at least on AAA games since i have some experience there and -at least at the engine level- there is still a lot of low level wizardry being done there.
> I've even seen functionality regression for the sake of modern and
> "responsive" design in many cases.
>
> For example, you used to be able to browse youtube favorites in
> pages. Whoops, not anymore! Now you need to scroll down and
> painfully wait for the site to make its stupid animation and load
> the next page.
> What's worse is, you can't just skip through pages. You have to
> load EVERYTHING and it all stays loaded, so after 10-20 pages the
> browser starts to lag and hog cpu just to scroll.
I see this issue more and more, scrolling is broken in so many sites,
even popular ones like FB.
Plus, often search doesn't look in the "scrollable" content, i.e. you
need to load (=scroll) all these "pages" and rely on the browser
search function.
Many small things like this, e.g. snippets of code that don't fit the
DIV box and you need to scroll horizontally. And news pages lagging on
a i7 w/ 16Gb or RAM. It's all so sad.
> Plus, often search doesn't look in the "scrollable" content, i.e. you need to load (=scroll) all these "pages" and rely on the browser search function.
That's a feature. They want all this valuable search data so the make you search via the site instead of the browser.
I agree that most of software stack seems bloated and wasteful, but there are good reasons for it. The IT has exploded in last few decades and it's no longer just engineers and computer scientists writing code. If they were, software would maybe be of higher quality, but it would be rare, expensive, and insufficient to support all industries.
Web is especially good example. With all its short-comings, it's still sandboxed and portable platform with very capable (and ugly) programming language for delivering same codebase across desktop and mobile devices (even servers, unfortunately). There are many hits and misses like TODO apps built on Electron, but that's to be expected with any technology and isn't a reason to dismiss all the good applications.
To me, consuming all the hardware resources of each new generation seems to be the price we have to pay to build more complex software in larger and larger quantity.
What's bothering me is that it doesn't seem to be converging in desired unification of different applications and services. Everyone is building their own stacks and environment without much care for interoperability. For example, few years ago it seemed clear that XMPP is a way forward in chat clients that everyone should adopt to enable federation. Nowdays we are expected to have 3+ chat clients installed on phone and remember which contact is on which service. I really don't understand how users put up with it.
That ground is mostly unexplored. IMHO, the sane middle ground between Electron and the 70s isn't shoving an entire browser inside a desktop app. It's using modern programming and compiler techniques to get close to the metal without having to deal with all of the shortcomings of C/C++. It's also using UI libraries that make creating desktop UIs as easy as making a website, but with better performance.
Sadly, neither of the things I mentioned above exist yet. People are working on languages that fit that space, but most of them aren't done yet. Nim is the only one that's officially released.
As for desktop UI libraries, your choice these days seem to be between bad and worse. I'm working on my own desktop UI library, but I don't know what the hell I'm doing. It'll be a learning experience, if nothing else.
You would be well-served to use Qt and Cocoa enough to get familiar with them. You may or may not like the language, but the organization and consistency of both are excellent. In particular, QT's signals/slots, naming consistency, and layouts make writing UIs easy without looking at the documentation (once you've used it a bit). Cocoa is well thought out, but a bit dated. (UIKit is not so well thought out, and forces MVC on you, which is often unnecessary and unhelpful, and then it completely botches UITableView by muddling up the M, V, and C. Qt's QTableView is much saner.) Unfortunately, it's also hard to write a UI in code in Cocoa, since you have to write the positioning system yourself due to no layouts. How they handle different screen resolutions is brilliant, though.
You might also want your UI library to be cross-platform, which will limit your choice of languages, especially if you ever want to port to mobile.
I agree. Something like QML is sort-of what we need, but that is still too closely tied to C++ and not mature enough.
I'm hopeful about Go GUIs though. Go is an easy language to use and performant enough for complex GUI apps. Google abandoned gxui but it seems like they are backing Shiny at least a little.
> The only bit i'd disagree would be with games, at least on AAA games since i have some experience there and -at least at the engine level- there is still a lot of low level wizardry being done there.
He explicitly calls out people "writing poorly performing code on top of pre-made engines". I'm pretty sure he's aiming most of his ire at non-indies using Unity3D or Unreal.
Indie games do this too. My favorite examples are:
Hatoful Boyfriend (remake that uses Unity), a simple graphical choose your own adventure with no animation at all that is painfully slow on my 3-4 year old laptop (although this must be intentional for some reason, it is hard to imagine how that could be achieved purly by abuse of unity)
Lethis - Path of Prgress a 'hipster retro' sim city in a steam punk world that fails to work at all with Intel integrated graphics.
The only bit i'd disagree would be with games, at least on AAA games since i have some experience there and -at least at the engine level- there is still a lot of low level wizardry being done there.