2,081 karma · joined December 8, 2020
"Sales and marketing includes compute for free access to the service"
It's safe to say that free inference is not profitable, but some back of the napkin calculations will show that getting an order of magnitude more tokens out of a subscription than the API price is not profitable either. Nobody else offers anything close to that much compute for the price, except OpenAI, which is running the same advertising strategy. If this was profitable, you'd have a a cottage industry of compute re-sellers selling plans for access to comparably-sized open models at similar token volume for a similar price.
Semianalysis estimates that subscriptions make up 40% of tokens generated for only the 10% of the revenue:
https://newsletter.semianalysis.com/p/anthropic-subscription...
I'm also not saying that this subsidy is irrational, it does buy mindshare, but it still distorts the true demand for tokens. I wouldn't be using anywhere near as many tokens if the price was as high as the API costs, if anything I would switch to a cheaper model, and likely not an Anthropic one.
If you're gonna point to gross margins on the API, those 85% really are meaningless in isolation. They can charge top dollar because they have one of the top models, but only because they keep spending top dollar on training it, as does OpenAI. It's a game of chicken where whoever stops heavy training investments first is likely the one to lose market share to whoever keeps spending. So the play is to try and keep the investment capital flowing and be the last one standing, which only works if you can keep selling a fantasy of future revenue, not the dire reality of current revenue.
We just don't know the true value of tokens until those subsidies stop, and the subsidies don't stop because the respective companies don't want to know, at least until everyone cashed out. The valuations of AI companies are very difficult to reconcile with current revenue (which doesn't cover cost) and with a sober mind it's hard to imagine where all this additional revenue is going to come from, down the line. And that's not to say the the technology isn't fundamentally transformative and revolutionary. So was the internet, but it still created an investment bubble.
The RAM prices are in yet another pork cycle, which will be exacerbated by the fact that many previous pork cycles left RAM manufacturers with excess capacity and rock-bottom prices, so they're much more careful investing and more assertive negotiating contracts now.
The title "software engineer" is just a bullshit name that sounds more important - for the same task. Very few programmers work like real-world engineers. There is no licensure or liablity, there is no legal code. If a real-world engineer makes a mistake in a design that causes structural failure, they're on the hook.
We sure added lots of processes and practices to make it seem like we're more diligent about what we're doing, but none of these are empirically verified (or verifiable in practical terms).
I would disagree that "the grievances" are not fundemantel. The _profession_ of the programmer is about to cease to exist, much like the human computer. Sure, you can still compute without a computer and perhaps enjoy it, but you will not find anyone to pay you to do it. Whatever you think "babysitting an LLM" is, it's not programming, even if presumably programmers are fairly well suited for it.
If you're not interested in "average", volume isn't going to make up for quality. I'm certainly not perfectly satisfied with LLM output quality, but even the best programmer in the world will undeniably be helped by LLM tooling, even if only for having it write tests, benchmarks, run experiments, create research summaries, and so on.
LLMs are tools like motor vehicles. They allow you to get somewhere, quickly but brutishly. You won't be able to appreciate the beautiful scenery much, as it rushes by. You're going to have to compensate for the exercise you would have gotten, had you walked, or it's going to be unhealthy. It's undeniably bad for the environment (electric or not) and has other negative externalities. The politics of many of the countries supplying most motor vehicle fuel to the world are beyond fascist by modern leftist standards. Yet, we depend on them, we have constructed a lot of the infrastructure we need to live around their existence, and even if every city became walkable over night, the last mile for most transport would be covered by some motor vehicle. There are many "what ifs" surrounding motor vehicles where the answer boils down to: "Well, then we're fucked". But we're not fucked today, and so on it goes.
Of course you can try not to partake in motor vehicles, and insofar as you don't make a moral grandstand about it, that's totally fine with me. But the rest of the world is in it for the ride. The first cars weren't very good either.
In all client-server systems, state is distributed with "two copies floating around". The difference between SSR and REST+SPA is that in the SSR, your server code is creating the markup to make it presentable to an end-user, but it's still fundamentally a copy of the state that exists on the server, and it's not obvious why the transformation to markup rather than structured data (like JSON) is desirable on the server. If anything, with SSR you need to copy more state from the client to the server, where it doesn't really belong.
No, nobody needs any more "experimental" Chrome bullshit.
The use case you mention, scrollable lists of static contents, works perfectly fine with DOM manipulation and virtualization, if you have a lot of content. Sure, maybe you can speed it up a bit with string manipulation (good luck not introducing XSS) but if you have so much content that this is a noticable factor, you probably want virtualization anyway.
The reason we moved away from this and into functional/reactive programming with things like React is that it eventually creates a mess too big to untangle. We made this experience with human developers and I made exactly the same experience with LLMs, trying to go "vanilla". It works for a while but the defect rate rises quickly und the LLM spends a large amount of time navigating the mess it created. I ended up with React again because it lets you express a lot of stuff as pure transforms, which are easy to reason about for human and LLM alike, and the LLM knows it very well out of the gate.
And by "React" I don't mean "react router" and all the other unstable crap in the ecosystem. React itself is stable and that is extremely important for LLMs, otherwise it will constantly conflate what the API actually looks like now. Breaking API changes are poison, worse than going with an in-house library that the LLM doesn't know how to use, because at least then it will look it up straight away, rather than messing it up (because it _thought_ it knew how it is supposed to work) and _then_ looking it up..
In my view, the right course of action is to specify an official strictly typed subset of the language with compilation and static analysis as the justification, then implement both JIT and AOT on top of that. Legacy code can be rewritten or thrown out in phases, C extensions can be ported.
Of course, any such proposal would invite monumental amounts of bikeshedding, which is why it wouldn't get far, much like the JIT proposal.
Now, if you have program that is highly complex, written by a single author who is not you, hinging on the ongoing goodwill and capability of that single author, that is a liability you do not want to have, operationally. Again, that is just how it is.
Inevitably, this is the new tradeoff to make, above average quality comes from asking for more, and knowing what to ask for comes from expertise.