5 Years and $5M Later: Inventing a New Programming Language for Web Development Was a Mistake
Posted by matijash@reddit | programming | View on Reddit | 92 comments
jhartikainen@reddit
This kinda makes me wonder how were the investors thinking of recouping their investment on this. I could imagine commercial support or licensing or something, but especially licensing could spell trouble for adoption (eg. why use it if you need to pay for commercial use)
Wonderful-Citron-678@reddit
I’d anything the conclusion to this is that VC money continues to be completely irrational s as always.
GregBahm@reddit
Is it irrational? This site, reddit, was built by the same Y-combinator VC money.
They've always seemed pretty open about their "fund 100 projects, expect 99 to fail, observing that the ROI of the 1 hit will more than cover the rest."
I don't know the exact monetization of a project like this, but I'm sure if I owned the abstraction layer between a company and all their web shit, I could make money off of that.
The virtuous path is to just sell support, like the way Linux providers do, or sell paid premium features, like most businesses do.
The more neutral monetization path is to get paid in data and sell the data. That's how you and I are paying for this site right now.
The least virtuous and most lucrative path is to get customers locked in, and then collect money from each front-end/back-end/deployment provider to have this use their front-end/back-end/deployment provider. "Docker"'s check clears, so now "wasp" pushes every business to "Docker," without "wasp" customers even knowing they're choosing this. The art of good business is being a good middle man.
EveryQuantityEver@reddit
ABSOLUTELY.
VC funding is extremely irrational. They do not fund projects based on their merits. It is entirely a "vibes" based thing. That is why so much of the VC money goes to fads, and goes to white men.
Adam Newmann, the WeWork guy, was able to raise $100 million for a new company AFTER it came out what an embezzling shit-show his previous company was. You cannot, in any semblance of good faith, claim that is rational.
Jump-Zero@reddit
Yet VCs are still profitable.
EveryQuantityEver@reddit
Which doesn't negate a thing I said.
Jump-Zero@reddit
I’m not trying to. I’m just looking at the bigger picture.
Synaps4@reddit
Yeah when youre the casino you can play the odds.
currentscurrents@reddit
They're not the casino in this analogy. They will lose money and even go out of business if they make too many bad bets.
MiniGiantSpaceHams@reddit
... which is very rational.
GregBahm@reddit
I am sure there is some amount of corruption in the world of venture capital, but I see nothing that leads me to believe this corruption is dominate over the basic premise of "invest in shit, and make money."
I don't know if I would invest in this "abstraction layer for web shit" product. But if an investor did invest in this "abstraction layer for web shit" product, I wouldn't be like "you're crazy man!" It seems like a bog standard startup pitch.
I think reddit gets in a tizzy over venture capital because they mistake sensational headlines for data.
EveryQuantityEver@reddit
I think you're intentionally trying to look over the corruption, and quite frankly, blatant biases and bigotry in who gets funded and who doesn't. Again, you cannot tell me with any semblance of good faith that Adam Newmann deserved the money more than any of the thousands of other people who weren't able to get funded.
EntroperZero@reddit
It's driven by the persistently low interest environment we've been living in since 2000, and since the COVID inflation spike drove interest rates back to something normal, the math isn't matching anymore. Startups can no longer extend their runways indefinitely now that money isn't free.
EveryQuantityEver@reddit
Which quite frankly, is a good thing, as this means the business has to be sound.
Jaggedmallard26@reddit
If its irrational but VCs still make huge piles of money is it really irrational?
EveryQuantityEver@reddit
YES.
They get lucky, and quite frankly, during the time of zero interest rates, they didn't have to try that hard.
And yet, they don't do any basic things which would get them higher chances of success.
hibikir_40k@reddit
Expecting 99 to fail doesn't mean that you should fund things that you think are very likely to fail and hoping for the best. Things can be risky, but you have to see a way forward. In a lot of projects, like a programming language that wants revenue.... it's an outrageous gamble, just due to the difficulties of finding a monetization model. If Docker didn't do well... how will a language manage?
GregBahm@reddit
If you take any specific VC gamble, that specific gamble should certainly be an "outrageous risk." It would not be prudent to gamble little Johnny's juice money on it.
But if you take all the gambles in their totality, it demonstrably becomes "a perfectly reasonable investment strategy."
I don't see any way to argue against the reasonableness of this investment strategy. We don't have to speculate. We can see the numbers on profitability clear as day. Y-Combinator had $160,000 invested in 2005, and it has upwards of $600,000,000,000 invested today.
Some little investment on a stupid idea like "Reddit" or "AirBnB" or "Stripe" ends up making billions, and covers all the other stupid little investments like in "wasp," (where they invented their own programming language to make setting up a website easier lol.)
When I see the endless parade of people clutching their pearls over this investment process, I'm no less convinced it's an effective process. I'm only convinced that the "it's ABSOLUTELY irrational" guy can't imagine an investment strategy that goes beyond "gambling little Johnny's juice money on one specific startup."
BmpBlast@reddit
It's not so much that it's irrational as it is that it's entirely a numbers game. The software version of it is based almost exclusively on two things:
So when a VC group is evaluating a potential investment they ask themselves three primary questions:
They obviously consider more than that, but if it doesn't clear those three it's not getting funded.
This might seem insane to you or me because we can't afford to lose money on bets over and over until we win big but for them it's no problem. We think it's absurd to throw down piles of cash for something with no clear monetization strategy. They don't care because they know if you hook enough people it's always possible to find ways to monetize it later. Your customers will probably hate you for it, but they will be so entrenched that by the time they finally manage to switch away you have recouped your investment and then some. And if you land any big fish they will never switch away because the inertia of change at a large corporation when it "technically works" is nearly impossible to overcome and you will milk them for the next 50 years.
And that is the foundation of why most modern applications end up sucking so hard in the long run. It's not that they slowly got more and more greedy and ruined it as a result. It was always the plan*, at least for the ones pulling the strings.
* Sometimes it wasn't the plan, but it eventually becomes the plan when the company goes public and big, immoral investors using this same playbook enter the picture.
In this instance if it had taken off they likely would have tried to monetize it under a strategy similar to how Oracle originally monetized all the open source projects it snapped up. Make the software free but charge corporations for support and integrations.
Corporations strangely love paying for that. A few years ago I assisted with a few smaller software acquisitions at Fortune 500 company that was in the top 50. A requirement from the business was that every piece of software have a 24/7 support hotline. If it didn't it was removed from consideration.
It didn't matter if the problem was actually quickly resolved, they just wanted to feel good about being able to call and talk to someone no matter the hour and then know their issue "was being worked on". (99% of the time it wasn't being worked on until the team that maintained it and worked standard hours was back in the office.)
Of course this meant good software where the focus was on making a quality product was usually rejected and bad software where the focus was on obtaining these contracts was purchased instead.
EveryQuantityEver@reddit
No, VC money is purely irrational. There is no rhyme or reason behind who gets funded, other than it's white men. Adam Newmann, the WeWork guy, was still able to raise over $100 million after what happened with WeWork. That is not rational in the least.
pstuart@reddit
FOMO
EveryQuantityEver@reddit
And as someone with quite a bit of FOMO, I can tell you it's quite irrational.
Radixeo@reddit
I'll provide a proof by counterexample that VC firms don't perform any sort of intelligent analysis before investing in a company. This example is so egregious, so obvious, that the only knowledge/reasoning needed to recognize it as fraudulent is that 20 > 11. If a VC invested in this company, that means they either didn't ask them what their business model is, or failed to recognize that 20 > 11.
StableGains was invested in by the VC firm Y Combinator. StableGains's business model was to take customer deposits, deposit them in the Anchor protocol crypto scheme, and skim a little off the top. That's not a simplification or a summary - that's their entire business model fully described in a single sentence. It was very simple and straightforward.
The Anchor protocol worked by taking deposits of their crypto stable coin and paying out a 20% APY, while lending out coins and charging an 11% APR. Anyone reading about this scheme would notice the obvious problem: 20% > 11%. Couldn't you take out a loan, then deposit it back in and earn more in interest than you're charged on your loan? Yes, participants in this scheme called it "looping". How does a lender pay out money at a higher rate than it takes it in? By using the value of new deposits to pay out the difference. It was a blatantly obvious Ponzi scheme with the fundamental flaw advertised for all to see. There was some complexity with how the scheme worked that obscured how the value from new deposits was being paid out to older depositors, but you don't need to understand that to recognize that "money out" was greater than "money in".
When the scheme collapsed StableGains went bankrupt and was sued by depositors. YC lost their entire investment. But for YC to have made this investment in the first place, they must have either not asked them what their business model was or failed to recognize that 20 > 11: "money out" > "money in".
There is a third possibility: YC recognized this was a Ponzi scheme and thought they could get their payout in time before it collapsed. But that's still a common mistake uneducated investors make - not something a supposedly "rational" VC firm should be making.
The reality is that many VC firms got lucky with one or two investments that have masked how irrational, unsophisticated, and unintelligent they are. If you look at their failed investments, you'll find many examples that are so obviously foolish that discredit the idea of them being intelligent investors.
zmaniacz@reddit
This frequently ties back to financial audit requirements. Supported software will be considered by the auditors to be lower risk. There's value in being able to check that off the findings list.
BmpBlast@reddit
Ah, I never considered the auditor angle. That's good info, thanks.
valarauca14@reddit
If you ever want to get blacklisted by YC, bring up the fact that YC's fund ROI is significantly under-performs index funds, the partners hate when people mention this.
MetaphysicalBoogaloo@reddit
IDK, 5 Million over 5 years is not that much to try and find out if something is feasible or not, at least from an investors perspective.
matijash@reddit (OP)
Wasp is actually doing better than ever, we're just switching fully to TypeScript! This is a technical post explaining this transition and our reasoning behind it.
Wasp is a fully open-source web framework (like Django, Laravel, or Rails), and will stay that way.
jhartikainen@reddit
Oh yeah I didn't intend it as a critique against the project itself or anything, just curious on the financial incentives that the investors saw in it :)
matijash@reddit (OP)
Ah, got it! Honestly, monetizing a framework is kinda becoming a playbook now (e.g., Next/Vercel, and Laravel/Laravel Cloud, then FastAPI, etc.).
Although back in 2021, when we started, it was a much harder sell because there were fewer examples we could point to (e.g., Rails never monetized, at least not directly). Terraform was one of the best inspirations for us back then (an open-source DSL that built a very successful company on top of it).
npisnotp@reddit
Sorry, I'm very surprised seeing FastAPI in that list of "frameworks monetized", is there any monetization source (apart from donations) for FastAPI that I'm not aware of?
inigohr@reddit
FastAPI Cloud. Seems like a new-ish development.
jhartikainen@reddit
Interesting, thanks for the insight
edgmnt_net@reddit
Yeah, not with licensing, not unless you first pump in insane amounts of money to capture a large part of the market. Because until then you have no ecosystem (libraries, devs, whatever).
You could hope to grow things organically, but not as a business which sells a product "after-the-fact". Even Google released Go for free, they invested a ton into it and had significant internal exposure.
Besides, domain-specific languages always suffer from certain issues. IMO it's far better to start, at the very least as a first approximation, with the expectation of a general-purpose language. Users might write web apps, but web apps might need a bunch of generic stuff you find in other languages, then how do you attract development in those areas? Is it all going to be standard library stuff implemented behind the scenes, some other way?
Not to mention there are tons of ways to accomplish similar things without a full blown shiny new language.
matijash@reddit (OP)
I agree. This is the reason why we decided from the start that Wasp must be plugged into the existing ecosystem. E.g., DarkLang appeared at a similar time, and we remember how hard it was for them to overcome the "you can't use existing libraries" challenge.
And yes, it also became clear to us that TS is the way, not a shiny new language. The benefits simply don't nearly outweigh all the cons we came across.
freecodeio@reddit
It's called money laundering
NfNitLoop@reddit
Goddamn, I wish someone would give me $5mil and 5 years to figure out writing a new programming language wasn't going to solve everything.
the_hunger@reddit
apply to yc
0xdef1@reddit
Too late, pretty sure VCs are not investing in something right now if AI is not involved somehow, best bet would be a programming language for AI.
zelnoth@reddit
What about a new prompting language?
Dioxide20@reddit
Here's $4 billion.
thy_bucket_for_thee@reddit
Congrats on the trillion dollar valuation /u/zelnoth !
Jaggedmallard26@reddit
Bigger problem is that we're not in a ZIRP environment and VC money for risky ideas is dependent on having huge amounts of money floating around that can't find anywhere to park.
Paradox@reddit
Imagine if Google hadn't shoved DART into cold storage for a decade and had actually continued to iterate on it.
For those who don't know, there was a period of time when Chrome browsers could run Dart code natively, no need to compile to JS. Mozilla had some code written that would have supported it, had it ever moved out of experimental stage, and it looked like a bright future for the web.
Then Google google'd and it died
autognome@reddit
Dart is far from dead 😉 It is really neat. It reminds me of Python, back in the day. I don't know of a language that has such a comprehensive first-class support for OS (ios,android,desktop), architecture (arm, x86, risc) and WEB (both JS and WASM) all in one package. It is pretty damn cool. And the fact that Agent's write the software now - who cares if its typed? In fact. Dart has very advanced linting plumbing and its frequent projects write linters to enforce correct usage.
It feels like Dart is pretty far ahead and positioned very well going forward. Oh and Flutter is cool as well.
zxyzyxz@reddit
Adding a proprietary language to a browser was always a terrible decision, giving Google even more control of the web. The correct decision was iterating on the approach of running a compiled language on the web, in the form of WASM. I say this as a daily Dart programmer via Flutter.
jessepence@reddit
What do you like about Dart?
vhanda@reddit
For me, it's a few things -
The LSP and linter ecosystem is wonderful. Super fast dev experience. Especially compared to TS. It even has hot reloading.
Rich type system supporting tagged unions / sum types (similar to Rust).
Proper null types (unlike Go)
Really good FFI support for interoperability with other languages. I routinely use Dart with golang and rust libraries.
Pretty easy to pickup.
There are also a lot of things I dislike about it like it's handling errors via exceptions, not immutable by default and the stdlib is quite lacking.
But pretty good language overall.
vips7L@reddit
Packaging and build tooling is really good too. You can compile to AOT or JIT with a single command.
Paradox@reddit
First off, I'll note that I don't hate JS. Quite the contrary. I've become rather comfortable with it, and view it much the same way as I view some LISPs.
But Dart is generally better in most ways. It's predictable. It's straightforwards. It doesn't have footguns every 3 feet. In a lot of ways its comparable to what Typescript set out to do.
Sure, its a bit ugly. It's a Google language, they tend to be that way. But it's stable and "safe"
vips7L@reddit
Dart is so good. It could have saved us.
azhder@reddit
Adding Dart to the browser made the browser code execution significantly slower even at times it did not run Dart code at all. Just the presence of its interpreter or compiler or whatever it was needed for Dart and the synchronization necessary between DOM/JS/Dart was why at the end we got WASM next to JS.
purbub@reddit
Well it didn’t really die thanks to Flutter, but yeah, the idea of running Dart natively on browser did die
retr0h@reddit
this is what happens when dude out of college is a ceo. this is a trap for those with no real world experience.
zxyzyxz@reddit
I mean, no shit, did we really need 5 years and 5 million dollars to find out? I could've told you that from the beginning, it's why Elm failed even if its philosophy didn't, and why TypeScript and arguably WASM succeeded.
Eric848448@reddit
Who remembers Dart?
Devatator_@reddit
I mean, it's alive and well, tho only used for Flutter
ddprrt@reddit
D'uh
tsrich@reddit
Bk is lm a x
torn-ainbow@reddit
I audibly gasped when I read this. They gave these guys 5 million bucks? Wow.
Brostafarian@reddit
https://xkcd.com/927/
matijash@reddit (OP)
Ha, sometimes naive ideas work the best! Wasp isn't the first attempt at this at all, honestly. Products like Meteor.js have shown the way, and we were heavily inspired by them, as well as some other solutions that never got that famous.
Would love to hear more about why you think and why it made you react this way.
amestrianphilosopher@reddit
Because the actual hard part isn’t what you guys seem to be solving. Sketching out a skeleton of the app, which pages need auth, what components they use etc is pretty easily standardized via good folder and file structure
IMO the difficult part is the underlying implementation that allows things to work smoothly in that environment. Properly handling auth login/expiration flows on each page for example. I don’t see how you could solve that without being a bespoke solution for a specific framework
yojimbo_beta@reddit
5 million is honestly not a lot of money in VC circles. So even if it only has a very low % of success it can still be a decent bet
brutal_seizure@reddit
That was the problem right there. You should have though more outside the box.
doterobcn@reddit
No way Sherlock....
mdrjevois@reddit
thicket@reddit
OP, thanks for being positive and constructive even in the face of a lot of skepticism. You seem like you'd be good to work with
simoncox@reddit
So, you created a new framework to learn to avoid having to learn about new frameworks? Pretty sure there's an xkcd about this.
plainnaan@reddit
Honest question after this pivot: what's the actual difference between Wasp-without-the-DSL and a decent Nest.js + Prisma setup? The language was the thing that made Wasp Wasp. Take it away and you've got a $5M TS config and a code generator on top of a stack half the ecosystem already uses.
Emphursis@reddit
If they remembered https://xkcd.com/927/ they wouldn’t have wasted all that time.
spcbeck@reddit
God, if I had any ability to be a salesperson and just lie all the time, I could bilk investors with dumb ideas like this.
matijash@reddit (OP)
We're actually really excited about this! We see more and more devs using Wasp and building successful products and startups. Would love to hear more about why you think it's a dumb idea.
lunacraz@reddit
i think people are conflating the framework with the language
i dont think people are realizing you're still moving forward with the framework and not the language (bc people dont read the article)
thbb@reddit
Honestly, I would have liked curl to become the web standard.
But when Tim Berners Lee realized it was the right framework, the industry was already too far engaged in the comb of HTML, javascript (and, at the time Java applets) to backtrack to what would have been the best approach.
Wonderful-Citron-678@reddit
Unfortunate that this was made 2 years after the other curl project
i_invented_the_ipod@reddit
This tracks pretty well with my experiences of DSLs in general in commercial products. It's often the case that what you need isn't so much a Domain-Specific Language as it is a bunch of Domain-Specific Types or Algorithms, or whatever.
Particularly for mostly-declarative solutions like this, you get almost no benefit from defining your own syntax. The original Wasp language example from the article looks very like a bunch of JSON objects, with file inclusion and a few type annotations added.
I'm not a huge fan of some of the stylistic choices in the TypeScript version, but it's not really any less readable than the original. And, as mentioned in the article, you don't have to maintain a language server, or get over the "why another new language?" question for potential new users.
I do think it's an interesting question to think about whether something like this even needs a language at all. In the examples given in the article it's not obvious what benefit you would get out of typical programming language features like loops, conditionals, and variables. I'm sure I could come up with reasons to iterate over a bunch of slightly-different pages or routes, of if I spent some time thinking about it.
In many cases, DSLs sit in the gap between "this is just a configuration file" and "this is just code", which is a good indication that often you might want to step fully in one direction or the other.
matijash@reddit (OP)
This is a fairly good analysis! Thanks for taking the time to read it and share your thoughts.
As the biggest value of Wasp's approach, we see having a declarative, high-level way to describe your app (a spec), but still be able to use the "standard" stack.
I agree that having access to for loops etc might not be critical, but it is just a nice "bonus" that comes with using TS. Developers will have greater flexibility and can manipulate the AST as they see fit.
andrerav@reddit
Cool story. Keep in mind that using Node/NPM on the backend exposes your application to the biggest ecosystem of package vulnerabilities on the planet though.
jessepence@reddit
It's just the most active ecosystem of packages. It's exactly the same reason why Windows machines had the most viruses back in the day.
andrerav@reddit
This copium excuse tends to come up. The numbers don't check out on that, unfortunately. NPM completely dwarfs all other package management system also when you account for traffic, number of packages, and so on. It's a security disaster, and that is a simple and true fact.
jessepence@reddit
What would you do differently?
andrerav@reddit
Not letting packages run scripts on install by default would be a great start.
jessepence@reddit
How would you design native libraries to work on any architecture?
andrerav@reddit
First of all -- I wrote "by default".
Second, take a look at how NuGet solves multi-arch targeting and native binaries for an example on how to do it right.
It is not a problem.
jessepence@reddit
That's a compiled runtime. Node libraries are not compiled. It's apples and oranges.
andrerav@reddit
Nah, category error. The fact that node itself is not a compiled runtime doesn't matter. We are discussing packages that include native binaries. Those already exist in the node ecosystem. For example sharp, sqlite3, better-sqlite3, canvas, esbuild, swc, etc. all need architecture-specific artifacts. NuGet selects the correct native binary by RID metadata. The distribution problem is otherwise identical. NPM just uses a fundamentally insecure way to solve it.
sionescu@reddit
Being "active" is not good by itself.
jessepence@reddit
I didn't say it was good, I just pointed out that the relation between the quantity of vulnerabilities and the quality of the software is not always as cut-and-dry as people want it to be.
There are no secure package managers that allow post-install scripts, and almost every single package manager allows them. They're essential for interfacing with native languages in Node.
sionescu@reddit
That's precisely what /u/andrerav was saying: NPM is insecure by default and it's not possible to make it secure.
jessepence@reddit
I remember this sparked a big conversation between my colleagues at the time it was announced. Some of them were enthusiastic about the way it generalized things, but I just couldn't get past the fact that we already have three standardized languages for web development: HTML, CSS, and JS. The wasp files didn't add enough on top that you couldn't do already do more idiomatically.
matijash@reddit (OP)
Glad to hear that the core idea resonated. I agree that having a custom language didn't add as much value as we initially thought it would.
We realized we can keep what's good about Wasp (maintaining a high-level spec of your app, managing the full-stack) without maintaining our own DSL.
And we can already see in the Wasp community that it's much easier for developers to work with tools they're familiar with.