Language Design

Why We Started With the Language the Models Already Dream In

Why LLLTS begins with TypeScript instead of chasing novelty through a brand-new syntax.

Back to blog March 18, 2026
Historical photo of a worker weaving rope memory for the Apollo Guidance Computer used in NASA's Apollo program.

There is a childish temptation in language design: invent the new alphabet, invent the new cathedral, invent the costume so everybody can see the revolution from the street. We took the opposite road. TypeScript was already burned into the statistical reflexes of modern models, already carrying enough syntax memory to let us spend our ambition on discipline instead of novelty. LLLTS begins there because a stricter future does not need alien grammar. It needs the old grammar with fewer exits and better consequences.

Starting from TypeScript was not a lack of courage. It was the refusal to waste courage on the wrong fight. Models already carry deep statistical familiarity with TypeScript syntax, naming habits, and project structure. That existing memory is leverage.

So the point was not to invent a brand-new alphabet. The point was to spend the novelty budget on stronger rules: clearer intent, less ambiguity, and more visible contracts. The syntax can stay familiar while the discipline stops being optional.

Do Not Make The Brain Learn Two Revolutions At Once

People fall in love with the costume. New language, new symbols, new little sacred marks all over the page. It looks radical. It photographs well. It also means the model has to spend effort learning your accent before it can even begin working within your standards.

That is the vanity tax. We were not interested in paying it. The problem was never that TypeScript had too little novelty. The problem was that ordinary codebases let too much slop sneak through wearing a friendly syntax.

If the real mission is stronger software, then the syntax should stop demanding attention like a drunk at a wedding. Let the familiar surface stay familiar. Put the violence where it matters: in the rules, in the constraints, in the places where bad habits go to die.

The Models Already Live Here

Worker weaving rope memory for the Apollo Guidance Computer, the hand-woven memory system used in NASA's Apollo program
Apollo Guidance Computer rope memory being woven by hand for NASA's Apollo program.

Modern models have been soaked in TypeScript for years. Repositories, tutorials, arguments, half-finished startups, overbuilt monorepos, brilliant code, cursed code, all of it. The pattern density is already there. The reflex is already there. The muscle memory is already there.

You can treat that as contamination, or you can treat it as terrain. We treated it as terrain. A serious system designer does not stand in front of a mountain and complain that the ground was there first. You build with the slope you have.

So the first move was obvious. Start where the models can already breathe. Then tighten the corridor. Demand @Spec. Demand paired tests. Demand structure. Demand evidence. Do not spend your opening move teaching the machine a new alphabet when what you really need is a new conscience.

Familiar Syntax, Unfamiliar Consequences

This is the part some people miss. Starting from TypeScript is not surrender. It is camouflage over the part that actually bites. The page looks readable. Then the compiler starts asking rude questions. What is this unit for? Where is the contract? Where is the companion test? Why is this file so bloated? Why does this method think it deserves a second job?

That is the game. Keep the front door recognizable so adoption is cheap, then make the inside of the house stricter than people expected. The shock should come from the discipline, not from whether angle brackets now wear hats.

A new syntax can make you feel brave while changing nothing important. We wanted the opposite: a familiar syntax that quietly removes escape hatches. Less theater. More consequences.

Novelty Is Cheap. Constraint Is Expensive.

Anybody can invent a glyph. Anybody can rename a function declaration and call it a movement. That kind of invention is cheap because it does not have to survive maintenance. It just has to impress somebody for six minutes.

Real language design gets expensive when the rule starts costing everyone something every day. Now you are not making a poster. Now you are deciding what pain is worth imposing. Now you are deciding which shortcuts are forbidden because they keep leading the machine into the same ditch.

We put our ambition there. Not on shiny syntax. On pressure. On making drift harder. On making intent visible before the code starts freelancing. On making tests feel less optional and decomposition less negotiable. That is where the money goes if you actually mean it.

Start Where The Machine Dreams, Then Teach It Better Habits

There is no glory in forcing the model to crawl through broken glass just to prove your language is original. Originality is not the same thing as leverage. We wanted leverage. We wanted a surface the models already know how to move through, so every extra unit of effort could go into reliability instead of translation.

That is why we started here. Not because TypeScript is perfect. It is not. Not because the old ecosystem deserves loyalty. It does not. We started here because this is where the model's dream-life already lives, and because discipline layered onto a familiar base is more useful than a pristine new grammar nobody can inhabit yet.

Let the models begin in a language they already dream in. Then close the exits. Tighten the rules. Make the dream grow a skeleton.