The build story
Iris in the loop.
Iris was nearly twelve when this started. She was always curious about what Dad did all day — those screens of gibberish the rest of the family politely walked past. Scratch and the other block-based tools were fun for a while, but she could tell they were not the same thing. The cat moved because you dragged a block, not because you’d typed words and the computer had read them.
Irenaverse is the bridge I built for her: a browser-based coding playground with its own language, Irene — the smallest possible language that can express the games a twelve-year-old wants to build without lying about how real code works. It sits deliberately between Scratch (too magical) and real tooling (too punishing — semicolons, stack traces, blank pages).
A language where the game loop is grammar
Most learn-to-code tools bolt the game loop on as a library. In Irene,
on tick:,
on key_down "space": and
on collide:
are part of the language itself, so a beginner writes a real moving game in three lines
without ever hearing the word “callback”:
dog = sprite("dog", 100, 100)
on tick:
dog.x = dog.x + 5
That’s lesson three of thirty-eight. Change the 5 and the dog runs faster. Change
x
to
y
and it falls. That feedback loop — type words, computer obeys — is the entire point.
Even the error messages were designed for her: no SyntaxError, no stack traces.
Irene says things like “I expected a number here, but I got the word
dog. Did you forget quotes?”
Safe by construction
Irene compiles to nothing and ships nowhere — it’s a lexer, parser, and tree-walking
interpreter (about 5,300 lines of TypeScript) running in a Web Worker in the kid’s own
browser at 60 Hz. The server never executes a line of user code. A step cap per tick means
the classic first crime —
while true:
— trips a friendly error instead of freezing the editor. Sharing works on an invite tree
(your games are visible to friends-of-friends, never strangers), and comments pass through an
AI safety check with one hard rule: if the AI is down, a kid’s comment is never silently
eaten — it posts flagged for review instead. Never silence a kid because of infra.
Three weeks, docs first
The first commit was documentation: what it is, who it’s for, the language spec, the architecture, a phased roadmap — all written before any code. Then the phases landed fast: language and editor first, lessons and accounts, an AI tutor (hint first, code only on ask), sharing and remixing, then polish. First commit to production on my own server: about three weeks of evenings.
And the name on the tin is real. The roadmap’s test for every feature is whether Iris or a real friend would actually use it. Playtesting her games surfaced physics bugs that got fixed the same week, and the sprites shipped at 100 pixels until kid feedback shrank them to 70. She’s not a persona in a product doc — she’s the user, and the loop is short: she plays it at the kitchen table, and the fixes ship before bedtime.
Got a domain that needs its own playground — or its own language? Here’s how we could work together.