I was trying to do a mini-project using EdgeDB, but not surprisingly, it didn't work on my old macOS 10.13.
Well, it actually could work with a simple workaround: using Unix socket instead of TCP (the problem was failing to connect through a TCP port, in fact any TCP port, for unknown reasons).
That's no longer the point. What's up with my inclination for cool new techs? Sure, it served me well, both Elm and Rust were considered new. New isn't bad. But recently I've been feeling something else, this No Country for Old Men vibe. I'm not really stuck because my hardware (mid 2017) supports up to Monterey. But it's the risk evaluation that's important here, i.e., is it worth it?
I don't know if EdgeDB is worth it, haven't had the chance to try it. Same goes for Zig, etc.
Learning Elm was a great call because it introduced me to UI app architecture proper (before that I was using data- attributes for states), and things all made sense, a great escape from the JS world. But I barely did anything in JS, so it wasn't like I was a recovering JS guy embracing a new life. It's just about enlightenment.
But I still see people make great, important things in JS, like CodeMirror, and uBlock Origin. I'm sure people can just build things along the line of the Elm Architecture, or something similar, but using JS instead. And I don't miss that. Same goes for Rust vs C++. It's mostly about ergonomics and just getting help with ease. I do not have a hardcore programming upbringing that let me have all the necessary skills ingrained in my LTM. I cope. And try to improve.
Think of it as a bootstrapping process. Ideally, we eventually become "self-hosting", something like that. But that will only happen if we want it badly enough, it's usually a lot of work.
As I said before, Elm and Rust are relatively new but they are not that new. In practice, my fucking Windows 7 machine, and the Mac, handle them fine. Is that too arbitrary of a criterion for decent backward compatibility? Maybe. Engineering is full of incidental decisions anyway.
But I'm trying to get at a point here why I lost the passion to learn and use EdgeDB in my own project, and I think it's a good thing.
EdgeDB attracted me because it had certain similarities with Elm (funny that they instead brag about sharing the Rust values). Next I'll also discuss how it's significantly different from Elm.
EdgeDB is saying, we can do so much better than SQL, for both data modeling/schema and query writing, plus other DX stuff like migration. And they want to emphasize that it's not just an ORM. But at the same time, they are relational DB advocates, and praise how solid Postgres in particular is, such that they choose to build EdgeDB on top of it. Which makes sense, but what makes me somewhat uncomfortable is how tightly their work is coupled with the specific implementations and feature sets of Postgres (they "pushed Postgres to its limit"). People asked them if it was feasible to swap out Postgres for another implementation, like SQLite (in early days, the devs themselves entertained the idea of switching to CockroachDB). And their response was, unlikely.
I don't know nothing about EdgeDB, and don't have the motivation to dive deep, but I'm guessing, although what they do is translating EdgeQL to SQL and tell Postgres to execute it (which is very much like the job of the Elm compiler), but apparently, that resulting SQL is not something other relational DB engines can handle, and that's where it differs significantly from what Elm is about.
Elm is not producing some voodoo JS that requires a specific JS runtime, heck, if Elm required, say Chrome, to run Elm apps (and thus the distribution of the Elm toolchain would probably bundle a copy of Chrome, just as EdgeDB includes Postgres), would people be as interested in this new tech?
That's why I think, in terms of EdgeQL, it's very much in the same school of thoughts as Elm, they are both, in a sense, domain-specific languages that are designed to help developers write better code, easier. (Although I cannot testify how good EdgeQL really is for I haven't learned/tried it.)
But how, or how much of, this goal is achieved, differs. Say if EdgeQL is really much handier than SQL (at least for certain category of use cases), then can I use it with my DB of choice for a particular project? No, you will be using Postgres. Actually, you'll be using EdgeDB, Postgres is just an internal backing mechanism. Again, what if Elm were to tell people, hey you will be using the Elm browser, yes it's Chromium, but that's an implementation detail; you prefer writing Elm code for your app? Then tell your users what browser to install.
OK, enough sarcasm. Moreover, I'm seeing more light about this matter of choosing the tech stack. Writing JS is in a sense like writing C. Great programmers can do it well, be both productive and outputting reliable, feature-ful software. But there aren't many of them, that's just a sad fact. For me, I had been clueless with JS, and after learning Elm, apps started to make sense.
Relational DB is actually much more intuitive of a scenario, and ORMs or NoSQLs never made me think, fuck yeah this is how you do DB - they were instead just handy shortcuts or alternative viewpoints/trade-offs, respectively. But in general, entities and relationships, what's more intuitive than that?
That's why now I feel encouraged to actually run through the "old tech" course for personal experience, instead of relying on faith (yes, in case of Elm and Rust, it was pure faith, or should I say, word of mouth).
Is SQL really that bad? I mean it's not like it's a general-purpose PL; and the experience during school days wasn't bad either.
I'm even open to learn C someday, if I come up with actual projects for it. But then that always reminds me how nice the Rust DX is, where we have good compiler error messages, rust-analyzer, Cargo, rustfmt, great documentation and learning resources.
And EdgeDB's main attraction was also about DX, and that cooled my head a bit. I can imagine how much effort it was to build up all the DX secret sauce, for Rust, for Elm, and I just don't think EdgeDB, with it's young age and limited human resources, could even come close to that atm. Plus, they started the "managed deploy" journey relatively early in the product lifecycle, which in itself is a reasonable business model, but one can say that that does not help boost the priority of optimizing the "DIY" aspect of UX (naturally, people would appreciate the service more if it's far from trivial to set everything up on your own).
But I digress. Heck, it doesn't even run locally for me, and how can I fix it? Just upgrade the OS, dummy.
In conclusion, it's a test. A test that makes me appreciate the "good old techs". For example, I'm pumped to dive into SQLite for my newest project. It'll be primitive DX I can imagine, but it runs everywhere, it's super light (lite), and I even heard it's quite featureful.