32 comments

[ 3.3 ms ] story [ 78.2 ms ] thread
The ironic thing is that despite the emergence of more walled gardens and the decline of general purpose computing, high level tooling has exploded. Look at the amount of new JavaScript frameworks and tooling that come out every year. The areas that are most lacking in innovation are generally all difficult and boring with no quick pay-offs; VHDL/Verilog, cross platform GUI applications, low level code that can run on multiple hardware architectures. These are all important problems to tackle that would drastically improve general purpose computing but nobody's truly interested to work on those problems and make something production ready.
> cross platform GUI applications

That's handled by Electron already. Unfortunately in a very inefficient way, but I don't think web-based UIs on the desktop will disappear soon. The comfort of using the same tech as websites and compatibility with many systems is hard to beat. I just hope all those projects aiming to replace Electron with their smaller footprint hold what they promise.

There are lots of non-web solutions for this, for eg Qt, wxWidgets, Flutter etc.
I've had not-terrible luck with PyGTK on Win,Mac,Linux. But my apps are simple.
Tauri is a light and fast electron-esque platform written in rust. I’m pretty bullish on it, as it seems like the best of node and rust without the bloat. Using Svelte to write super light and fast cross-platform apps on Tauri is such a treat.
If possible, could you share some examples made using Svelte/React/Vue you've created or encountered?
Those are too hard for beginning programmers. And the Web has all the best-in-class UI design tools (except for maybe Interface Builder, which isn't cross-platform). Plus there's thr fact that Qt apps need extensive cross-platform testing; by contrast, because Chrome works the same way everywhere, so too do Electron apps, so you can deploy to multiple platforms much more quickly.

When it comes to TCO and time to market, none of the non-Web solutions come close to Electron.

Even web based but without Electron or Chrome e.g. rocket.
I remember in the late 80s when I started professionally ... the impending obsolescence of the programmer due to 4GL code generators was upon us. Those stinking edge cases though. Where 90% of the problem/requirement can be addressed by said tools, but the final 10% (the part that really matters) can't. I'm not so sure we are any closer now than we were then. Needless to say, I've had a fruitful career.
Interesting. What sorts of "10% problems" was 4GL unable to handle?
I thin WASM will help with the GUI problem

Everyone wants to reuse their web app on the desktop, but soon it could flip the other way around if you can suddenly run your native app in a browser

I'm not yet totally convinced. There are no WASM apps that handle full unicode, with CJK input, right to left input, etc.... that I know of. I'm not looking forward to every wasm app having it's own quirks that are vastly different than the quirks of my OS.
This is such a dull take at this point.

I'm sorry, but WASM won't magically be able to port your UI app to the web. Just because it can convert some basic logic doesn't mean that it will be able to create a performant application that uses the underlying browser APIs correctly.

Lets say there was some sort of framework that did this in your language of choice, there's still significant downsides in terms of interop with the rest of the JS ecosystem and debugging.

> low level code that can run on multiple hardware architectures

I thought SIMD Everywhere was a pretty interesting project for that, lets you write x86 SSE/AVX code and run it on non-x86 architectures:

https://github.com/simd-everywhere/simde

The ironic thing is that despite the emergence of more walled gardens and the decline of general purpose computing, high level tooling has exploded. Look at the amount of new JavaScript frameworks and tooling that come out every year.

I think it's not "despite" but "due to". If all you have is a locked-down user-herding media consumption "device"[1], the web stuff is pretty much the easiest way to have access to something like a Turing-complete language.

[1] the fact that a word which used to primarily refer to computer peripherals is now increasingly applied to a general-purpose computer itself is a telling sign of where things are going next. Destroying the general-purpose nature of computing little-by-little and selling you back small specific pieces of it seems to be the trend today.

> The areas that are most lacking in innovation are generally all difficult and boring with no quick pay-offs; VHDL/Verilog, cross platform GUI applications, low level code that can run on multiple hardware architectures.

Those are exactly the areas hindered by vendor lock-in.

I you didn't check them out follow the links and try out orca with casetter and the synth - really nicely done in all areas
I have been coding things that interest me as part of https://github.com/imvetri/ui-editor. This idea had been in my head when I was introduced to visual foxpro and I told the person it can be made more efficient if it can build components that can build components.

In my second company I came to know about eval - I called it a browser runtime that can execute source code. I don't have to learn anything about AST. Also I learnt about graph structure and I used it for the component tree in my tool.

In my third company I saw a technique where component configuration is saved as a JSON - I learnt that code can be a configuration and configuration is just a JSON, I dont' have to learn anything fancy about Object oriented concepts to build application.

In my fourth company I saw a neat codebase where view, css, reducers, state, events are all split into separate files and used that idea and made them as inputs.

Overall, its a hobby tool I have been building and whenever I learn interesting, simple and efficient techniques from the projects I work on, I use it in the tool.

I honestly can't tell if I love this piece or hate this piece.

On the one hand, it really kicked off my imagination, and I started to yearn for absolute computing simplicity and efficiency. A world where I can run absolutely anything I want off of a Raspberry Pi Zero and a small battery pack. I even spent half an hour looking into the most lightweight GUI toolkits available, to start to contribute to this vision.

On the other hand... it all seems so futile, and out-of-touch with reality. In the real world, I need to pick the best tool for the job at work, regardless of the philosophy of the tool. And in my spare time, I can't help but feel like it's a pointless endeavour. I'm not living on a boat, and I'm not working on a Raspberry Pi. Why rewrite the software I use into something more lightweight when I can just use the software without consequence now, and save all that pain?

Plus, there's a certain amount of 1. pretentiousness and 2. hypocrisy that I read in the article, that I don't want to touch with a 10 foot pole. Using your own time system is nothing more than a "I want to be different" gesture. I honestly can't see the benefit at all, despite his explanation. If you want to do 2 week sprints, just do a 2 week sprint. If you want to work to 40 minute Pomodoros, just do 40 minute Pomodoros. The main benefit that I can see is the element of mysticism to seeing things on the wiki timestamped as `14X05`, to add to the feeling that this is some other-worldly operation going on that's just out of reach. Yet he scoffs at the interview for suggesting it's an aesthetic thing.

Regarding the hypocrisy - Devine preaches for energy efficiency and simplicity above all else, then writes half his tools using <canvas> on a bloated web browser. It doesn't quite stack up for me.

I mean, sure, he’s living a life out of a Wes Anderson film, free from kids/family/house/whatever.

I quite like the idea of numbering sprints A-Z, though. One thing I’ve noticed at work with sprints and dates is that time marches on and it feels like an abstraction, an endless future and cycle.

26 sprints, a, b, c, d, ..., z, well, that’s something with a clear start and finish, a sequence we’ve internalized from a very young age. You get to R or S, you start thinking, whoa, not many sprints left for me to finish some big goals. I think it could help focus team members a bit.

I definitely get having distinct sprints and seeing where you are at in the bigger picture, but this can absolutely be achieved without distancing yourself from the rest of the human race who are all using a different timekeeping system. It's just arbitrary contrarianism in my eyes. Keep 2 week sprints, label them A-Z, but use standard timestamps so the rest of the world can join in.
> I need to pick the best tool for the job at work

the best tool isn't the best on the market but often the one currently at hand. Imagine cooking – my knives are like that. Decent but definitively not high end.

Agreed, but that only hammers home the point even more - I don't have time to mine the ore and smelt the iron and fashion the perfect knife tailored to me when I've got deadlines to hit and there's a perfectly good knife ready to be used on the wall.
Funny you mentioned hammer. I only have a hammer hanging on the wall. Im gonna use that to slice my onions. Is what my mind drifted to...
(comment deleted)
I like your comment because i can see the ambivalence between the hobbyist curious to see where this path leads to and the "pragmatist" wondering whether this path is worth even thinking about.

> I'm not living on a boat, and I'm not working on a Raspberry Pi. Why rewrite the software I use into something more lightweight when I can just use the software without consequence now, and save all that pain?

There is a very real trend of people in the computerspace who are applying the "questions" that climate change and working towards a more sustainable world ask us: much like in the physical world, doing always more is a mistake and if we can do what we need to do with fewer resources, then changing our tools to reach this state is a worthy goal in itself. Not only because we should reduce our usage of resources and energy and make sure our tools last longer than the single-digit years they usually do in computerland, but also because if/when TheCollapse (TM) finally comes we won't have access to the latest and shiniest tech anymore so we'll have to make do with what we come up with, and that's going to be old computers and phones lying around unused.

So as always it's a question of priorities: if you don't consider resources usage and climate change as an important enough issue, doing what they're doing will always remain in the domain of hobbyists enjoying their little fun, just like those people who build the most insane programs with fewer characters than are in this very comment.

I'm absolutely on your side in theory - big bloated layers on bloated layers for a Todo list app grinds my gears more than you can imagine, but moving back to more primitive tools and inconvenience in the name of climate change seems like such a tiny drop in the ocean as to be a pointless sacrifice.

There's also the question of prepping, but I'm a chronic optimist, so I don't think a true collapse is coming in my lifetime. And if does, there's always that CollapseOS which was posted here a year or so ago to get me through. Though thinking about it - I think perhaps whether or not I can browse HN during the apocalypse will be the least of my worries.

I think the more compelling argument against the project trajectory being sustainable is the ongoing growth of the platform that's being built and the resulting terrarium problem. Uxn isn't just a 100rabbits thing now, but a community of collaborators...and the things that platform does are really pretty trivial "dawn-of-microcomputing" things in most respects. So you end up in a space where it could have been accomplished in an emulator and tooling that already existed, but this sanctified "simpler" codebase was made instead, and now it's seeing gradual, irresistible growth, such that it will inevitably go beyond the needs of its creators at some point if it continues like this. PICO-8, the original "fantasy console" billed as such, has also grown, its execution model has changed multiple times, it's added significant new features. At some point you will want to configure the emulator, and when you configure the emulator the uniform experience starts to slip away - allowing features for recontextualization is more accessible, more powerful. The quaint little terrarium you thought you had under your control grows back into the jungle of computing again.

This is a quandary that has occupied my attention for the past year: what's actually sustainable in computing? But the answer, when I came to it, is simple: formats and protocols, all the way down. Endianness, word sizes, textual encodings, state machine I/O signals, and forms of structured data on up to parsable source documents of various kinds. Everyone's always like "just use JSON" or "just use a PNG" or "just write an HTTP request". Formats are where all the real power is, and they do things platforms can't.

And the format's never really the whole codebase. Wherever you have "the code" you have the platform. If you just describe a "simple" stack machine's code and I/O and then proceed to build a massive amount of stuff on it, what you most likely have is an underdocumented platform. When you go to build a game on that, you still build an engine, and the engine implements some rendering algorithms, specifies a timestep, and reads some assets. That's a more completely specified medium that could be turned into a simple format of its own, which indicates that the fantasy console was just a method of constraining the engine. But you could start by defining the rules of a constrained engine instead, no?

And that's kind of where my thoughts have gone. It's irrelevant whether it's on Javascript or hand-tuned assembly or a VM: the actual progress is made when you can stop indulging your inner Microsoft by building platforms, but it's so, so hard to avoid doing that.

Beautifully put. Do you have a community where you talk about this stuff?