That would be a huge mistake if we expect many more hardware and OS running them efficiently than just iOS and Android.
Best is to have an IR.
Now maybe that IR can be turnt into native code. But we shouldn't be constrained.
As an incoming framework author, SwiftUI is problematic for instance because it has a programming model which is dated.
And I don't particularly enjoy the language either. Looked fine at first and then got more complex than I feel is needed.
oh yeah, disclaimer: I write UI frameworks and dabble in PLs.
Just like any engineering and business decision, this is a tradeoff.
I probably don't see things from the same vantage point.
Can't help but notice a trend however. What if this accelerates, especially with AI being an enabler?
It is virtual dom like.
We don't have access to a stable underlying element like we would with plain UIKit.
You can build declarative models without this virtualdomness. But SwiftUI was created during the react boom so they went with the Zeitgeist, understandably.
Now this is somewhat problematic if someone wants to implement better fine grained reactive systems. And I posit that the next paradigm is going to be in that direction given what I've been working on (furthering current reactive systems which only go halfway).
This is such a clueless take, and I see it surprisingly often. Declarative UI does not inherently mean virtual DOM nor does it "automatically" mean slower than UIKit.
The abstraction is huge advantage, especially when targeting different devices and screen sizes. We (and that includes Apple) have been learning the value of those kinds of abstraction boundaries for years, well before React.
It's also important to note that SwiftUI and UIKit are composable, so if some small part of your app needs low-level, finer grained control, then go ahead and use UIKit/Core Animation/Metal and SwiftUI for the rest.
Yes, declarative UI is just an abstraction of imperative code. :)
The rest is properties of the internal implementation.
The VDOM way obfuscates the internals more. Doesn't let you control rendering appropriately.
It is so because the diffing and reconciliation algorithm have to be able to remove any subtree of views/nodes from the UI tree.
Then you can only have islands of either paradigm within each other. UIKit and SwiftUI do indeed compose, albeit coarsely.
I can't blame them, they got influenced by react.
Don't even blame react, it was a good attempt. Basically trying to build a UI from a snapshot of a tree. Except this is too simplistic a model.
They designed it as if you could equate the number of games and the number of positions in chess. Like a markov chain.
Except playing chess has side effects. A mere snapshot does not encode those.
Unfortunately I can't do that. My projects are too big now.
In fact, this is how I deal with projects: I build the base manually and then I can iterate with AI faster once the fundamentals are solid.
Sometimes the AI tends to forget those fundamentals or tries to change those and add unnecessary stuff on top. If I stay invested in what the AI is doing, I can usually spot it and nudge the AI back to sanity.
With rust a handwritten base sets the standards, and I feel like I have lower usage rolling the first few hundred lines of code and then gradually expanding rather than going in blind.
Also reverse engineering an existing product and using the information to map out behavior and structure is incredibly valuable
Why do we need humans in the loop, what exactly can’t be replaced by an AI in your workflow?
It sounds like having another AI telling the first AI not to “drift” away from the fundamentals would do the trick? Does this activity require some kind of super human abilities that can’t be done by an AI?
What exactly is it that gives satisfaction? Bossing around a junior developer or reviewing code generated by said junior. What's the point of being a “programmer” when one is really just some middle manager defining issues and pushing them out to a factory floor of digital monkeys.
If the satisfaction lies in role playing middle management then I can understand all the hype. Certainly it has nothing to do with programming any longer.
AI still does not do pattern matching the same way my brain works. I still see things that can be improved where the AI just go with what is most common.
If I nudge it, it realizes it. If I don't, I get basic software.
Just as I speak, it is reworking a UI compositor design, after I told it to use the reactive framework I have built for damage restoration, because in the end, this is a reactive problem. The implications, it drew on its own. But I had to nudge it.
But who is going to trust Facebook/Meta with everything?
Even my parents are wary of their products.
I can't see a personal assistant coming from them and being successful.
I don't think I can ever be motivated by such challenges.
It's either I'm getting up to speed to the state of the art from the very basics and then I can try to figure out if something was missing along the way or solve unsolved useful problems, or I will not be interested.
I just can't tinker for the sake of tinkering. Too goal oriented I guess.
Just me? (that is also why school started to bore me right before high school and why I learn better on my own, I did go too College but thank god I didn't do CompSci or that would have disgusted me...)
It has to be a bell curve doesn't it.. I am too much of a perfectionist...
Then again, my llms constantly claim that I am doing things that are beyond the SOTA. Even my own mom lost hope.. Still haven't shipped a single thing... haha.
(half joke aside, it is finally coming in a couple days.. which I have been saying for quite some time to the extent that my peeps don't even trust me anymore.. 3 things are coming and it is genuinely research grade apparently, for the amount of research I am aware that is released publicly.
I really don't know how people ship things, the tooling I see is terrible, or maybe I have NIH syndrome...)
oh yeah, disclaimer: I write UI frameworks and dabble in PLs.
reply