Imba – Create complex web apps with ease
imba.io
imba.io
The tagline of "Create complex web apps..." also turns me off. If there is one perspective that needs to change in modern app development it is to stop making "complex apps." Simple is good. KISS, and all that. I'd respond far better to "Simplify your app."
Some web apps ARE inherently complex. You might dislike that, but it seems unfair to criticize Imba for that fact.
Actively searching for simple solutions to hard problems encourages high quality design and architecture. Moreover there is no one way to do simple things; simplicity requires a wider toolset than complexity. If your marketing explains how your tool helps people to make a complex thing, it's either incorrect or it's a bad solution.
I've dreamed of creating a multi-phase approach to software where simple and complex can co-exist and methodically transition along the way, but I've yet to be able to crack the problem.
Honestly even if you're complexities aren't known in advance, it's still easier to build composable solutions out of off-the-shelf parts.
It is an interesting perspective that adding routing and components makes it more than a new flavor. It still compiles to JS, and doesn't add new capabilities to the language, just simplifies how you get those functionalities to run.
Which again takes us back to my point... "Simplify your apps" sounds like a better marketing strategy than "Build complex apps."
If business logic and specs were simple, I, and most of the industry would be out on my ass.
The tagline though doesn't really have anything to do with this
Potentially soon we will be seeing more of such things. MSFT WebForms didn't work out for all sort of reasons, but with stuff like front end Flutter, WebAssembly, the whole server-control GUI over WebSockets thing with Phoenix LiveView, Plotly Dash, .NET server side Blazor we are seeing a resurgence of this idea. Building rich UI and having to manage state both ends is a pain in the butt and makes stuff like authentication/authorization tremendously difficult to implement properly and correctly. We have come a full circle.
What's almost ridiculous is all the manpower and engineering effort that was put in over the years just so we can have a better UI and UX. You can build a shiny GUI in React and use the same COBOL accounting software code running in a DOS simulator that once powered a TUI software and the end user would not know the difference and would be more than happy to hand over money.
Things like this scare me because it's like a more tightly coupled coffeescript that's gonna be hell to maintain in 10 years, will become awkward with new (JavaScript) language features, or will just omit those features until its untimely demise...
Scrimba.com is extremely impressive, however. It’s written in Imba, and also has a couple of Imba courses [1]. Looks like a good place to start!
On one hand, people should absolutely go where their passion projects take them. Building languages and compilers is often a critical step on the path of deeper understanding.
However, there's no way to get past the fact that there are too many front-end frameworks that offer same-but-different syntaxes. Most of these have no chance of achieving a large enough ecosystem, but every framework demands reinvention of everything all over again.
It pains me to consider how much smart person energy is currently channeled into creating flavor of the day JS instead of building stuff with whatever tech they are already proficient with.
Case in point: I am MUCH more excited by the Scrimba screencasting platform than I am by the prospect of spending an open-ended amount of time learning another, not-obviously-better framework.
I always thought `diversity is good`, but maybe in certain instances it's not. Perhaps a certain saturation level is reached and diversity just adds noise to the system and causes enormous overlap and your "smart person energy" is mostly spent re-inventing the wheel
Honestly, after React, Vue, Angular, Ember, Stimulus, Meteor and Backbone, how does anyone truly have time to learn learn about Svelte, Marko, Knockout, Aurelia, Riot, Omi, Foundation, Catberry, Composer, Yo-Yo, Vomit, Mithril, Polymer, Sencha... I'm not making a single one of these up. I know that I'm forgetting at least a half-dozen.
Note: try Stimulus!
Seriously though, if you're following every development on more than two JS frameworks, you are procrastinating, lying to yourself and not achieving your full human potential.
Many people thrive in these kind of frenetic, fast changing environments. Others (myself included) don't.
All I know is that after I help my friend with her React stuff, I go back to Rails and thank my lucky stars.
I wonder if its technical complexity and what it would be under the hood. I know Fiber was redone recently-ish.
JS semantics are neither simple nor elegant. There's a reason there are whole books dedicated to avoiding certain parts of the language, and it's not the syntax.
For example, the syntax of the == operator is trivial. Its semantics however is complex and inelegant (it looks like an equality operator, but it doesn't express an equality relationship).
This makes its semantic more elegant and simple than some other mainstream languages, like e.g. C++, Java or C#, IMHO.