Visualizer
The main tool. Several β-reduction strategies side by side in multiple panes, your own definitions, shareable URLs, and export to PNG or WebM so a reduction can leave the page as a video.
A lambda calculus you can watch reduce. A database you can poke at with SQL. A LaTeX editor that keeps your files on your own disk. Online games, a recipe app and a crafting table. Almost none of it has a build step, and almost none of it needs a server.
λm n f x. m f (n f x)
That is the entire notation, and it is enough to draw every program that has ever been written.
λx. x
Takes a thing, hands it straight back.
λx. λy. x
Takes two, forgets the second. Also true.
λx. λy. λz. x z (y z)
With K, enough to express anything computable.
λf. (λx. f (x x)) (λx. f (x x))
How a language with no names writes a loop.
(λx. x x) (λx. x x)
Reduces to itself. Runs forever, on purpose.
λf. λx. f (f (f x))
A number, written as "do something three times".
The big one
A whole site for looking at lambda calculus instead of only reading it. Type an expression, watch it become a diagram, then watch the diagram evolve. Twelve pages of it, in plain HTML, CSS and JavaScript: no build step, no package manager, no backend, and no dependency on anything outside the folder.
The main tool. Several β-reduction strategies side by side in multiple panes, your own definitions, shareable URLs, and export to PNG or WebM so a reduction can leave the page as a video.
You get the diagram. You guess the expression.
Several strategies advanced in parallel, so you can see where they branch and where they meet again.
Reference pages that carry their weight: an encoding lab for naturals, booleans, pairs and both Church and Scott lists, a combinator zoo with diagrams, a step-by-step walk through the halting problem, and where all of it came from.
Guided lessons from variables and abstraction up through booleans, pairs, numerals and lists.
A headless reducer that skips the drawing entirely and just runs, for big expressions that take thousands of steps.
Because I can, and that's all I need.
Let me ask my best friend.
I say this a lot, and yes the best friend is either ChatGPT or Claude, and while most people don't agree with me, I still believe using AI in your everyday life isn't harmful.
In fact, most of what is on this page was built with AI. That is not a shortcut, or at least not the kind people mean. The parser still has to parse. The reducer still has to reduce. Nobody else is around at two in the morning when something breaks, so I still have to understand every line well enough to fix it.
What changed is how quickly an idea turns into a thing you can click on, and as someone who has a lot of ideas, what a relief !
Where it started
The first thing I built that had a schema, a route and a template which all had to agree with each other: a crafting table in Flask, backed by SQL, rendered through Jinja2.
So here is one made out of the things I have used since. Put materials in the grid and it hands you back a project.
emyot.fun
For real, they are really hard, pretty much impossible.
A programming puzzle. Place chips, wire their ports, and write assembly that turns one stream of numbers into another. Twenty-three assignments.
Top-down horror exploration. A cursed house that rearranges itself every night, across five nights. Honestly kinda trash gameplay.
Decipherment. Ninety signs of a dead script and no dictionary: work the language out from the clay tablets alone. Every seed generates a different language.
A reactor control room on the night shift. Analogue panels you have to turn your head to read, thirteen ways a night goes wrong, and a plant simulated honestly enough that the faults cascade on their own.
A 1v1 tactical race on a 9×9 board. Move one step, or place a wall to lengthen your opponent's route.
Six other things, in six other directions. One of them ships as an installer, one of them runs a village at night, and one of them is a flappy bird from a tutorial.
A LaTeX editor that never takes your files anywhere. The project stays as ordinary folders on your own disk and compiles with the TeX distribution already installed on the machine, so nothing is uploaded and nothing is locked in. Electron, TypeScript and React, with two runtime dependencies in the whole application.
Thirty-nine roles and thirty-five painted cards, in French, for the game that normally costs one person their evening. Around a table the phone goes round and deals. Online, the site itself takes the night: it calls each role in private, applies the powers, resolves the deaths and counts the votes, so the game master gets to play too. Nothing secret travels on the shared channel — every player has a second one that is only theirs.
The model is not a chatbot bolted on the side: it finds recipes on the real web, imports them, rewrites them when you ask, and rides along while you cook.
Trade skills, not money. The entire backend is http.server and sqlite3 — a working platform with nothing to install.
Folder, then file, then task. A Node server of no dependencies that saves everything as real files, readable with or without the app.
A flappy bird, from the Unity tutorial, in 2025. It is on this page because everyone starts somewhere and pretending otherwise would be silly.
SeQuenceLab
One of these is a small lab for exploring databases with SQL in the browser, so it only seemed fair to let it introduce the rest.
| name | made_of | where_it_lives |
|---|---|---|
| Sheaf | Electron, TypeScript, React | A local-first LaTeX editor. Projects stay as ordinary files and compile with the TeX distribution already on your machine. |
| Loups-Garous | HTML, CSS, JS | Thirty-nine roles, and the site can run the night itself. |
| EasyCookAI | HTML, CSS, JS | A recipe app where the model finds recipes on the real web, imports them, rewrites them on request, and rides along while you cook. |
| TODO | HTML, CSS, JS, Node | Yes, I made my own TODO app. A tiny zero-dependency server that persists everything as real files you can read without the app. |
| emyot.fun | JavaScript | The games shelf. Only a few games but a lot of hours of gameplay available. |
| Coreloom | JavaScript | Wire up chips, write assembly, twenty-three assignments. |
| Decay Heat | JavaScript | A reactor night shift, simulated honestly enough to cascade. |
| The Drowned Lexicon | JavaScript | Ninety signs, no dictionary, a new language every seed. |
| The Shifting Mansion | JavaScript | A house that rearranges itself, five nights running. |
| Detour | JavaScript | Quoridor-style tactical game. |
| SeQuenceLab | JavaScript, SQL | Explore a database with real SQL in a browser tab. Local first, then rebuilt so it could be hosted with no server behind it. Made primarily for school. |
| SkillSwap Hub | Python stdlib, SQLite | Trade skills, not money. A peer-to-peer learning platform whose entire backend is http.server and sqlite3. No pip install. |
| The Mansion | Unity, C# | The original: a mansion with bossfights. Later reborn in a browser as The Shifting Mansion. |
| Tromp Diagrams | HTML, CSS, JS | Lambda calculus, drawn. The one this whole page is built out of. |
| Flipy Bloup | Unity, C# | A flappy bird, from the tutorial. Everyone starts somewhere. |
| HTML Crafting Table | Python, Flask, SQL, Jinja2 | Where it started. Private repository. |
16 rows · nothing installed in eleven of them
From a school project to a desktop application.
About
I like ideas that turn out to be simpler than they look, and I like being able to see them work. That is most of what is on this page: a calculus with three rules that can compute anything, a database you can ask a question in a sentence, a crafting grid where the whole game is which square you put things in.
I build nearly all of it without a framework, a build step or a package manager. Not out of principle, but because I want to still understand it a year from now, and because a folder of files will open on any machine for as long as browsers exist. Most of it happens at night.
If you got something out of one of these, or found something broken, or just want to argue about whether Omega should be allowed to exist, write to me.