Learn it a mark at a time
Seven panels, one line each, from plain words to a question that carries its own probe. Each line is read again as you change it.
Spw is plain text with a few marks. A mark in front of a word says what the word is doing, and braces say what belongs together. A note stays readable as a note, and a tool can still find it, check it and follow its links.
Each mark has a reader's name, which is how you think with it, and a runtime behavior, which is what the interpreter does today. They are kept separate on purpose: a name is not a promise about evaluation. The numbers under a mark are the panels in Learn that use it.
potential ~
Keep a path open without taking it.
Runtime: Defers its first argument.
wonder ?
Open a question you can close again.
Runtime: Returns the second argument when the first is true.
action !
Commit a move so its consequence can be seen.
Runtime: Returns its first argument.
value *
Mark what carries weight here.
Runtime: Writes and returns a collapsed first argument.
ground .
Come back to the local default.
Runtime: Reads a property path, or the base value.
ascension ^
Lift parts into one relation you can inspect.
Runtime: Wraps its arguments as one integrated value.
vibration #
Name a structure so it can be found again.
Runtime: Reduces its arguments into a register.
perspective @
Say who is looking, and from where.
Runtime: Observes its first argument through a named observer.
subject &
Name what the relation is about.
Runtime: Merges its arguments into one register.
configuration =
Keep this here, under this name.
Runtime: Writes its first argument to a register.
measure %
Compare, weigh, or level the field.
Runtime: Measures a named or focused register.
substrate $
Name what carries the charge: time, money, memory, attention.
Runtime: Materializes a register's metadata.
< >concept What this is about.( )scene Where it happens.[ ]mode Which lens you are using.3 hold 6 ask{ }definition What belongs together inside it.3 hold 6 askRead together, the braces make a sentence: <concept>(scene)[mode]{definition}, what it is about, where, through which lens, and what belongs inside. Marks and braces compose: #[…] is a set, .{…} is a property sheet.
Seven panels, one line each, from plain words to a question that carries its own probe. Each line is read again as you change it.
Change the mark, the scene, or what the braces hold, and the rest of the line holds still.
!bake<sourdough>(kitchen)[overnight]{flour, water, salt, starter}
The workbench mounts at .spw/_workbench with a parser, a CLI and an editor language server. Setup stops before any commit.
Dated builds of the parser this page runs, one ES module each, with an integrity hash to pin.
The difficulty was not having language for what I was thinking about, so I could not tell when a thought was ready to set down. Spw gives a thought somewhere to land: one character says what a word is doing, braces say what belongs together, and a thought can be set down whole instead of chased.
It started in 2017, alongside reading about how people learn from text and helping with research in an adult learning lab. Part of it was wanting language to share what I was learning, in a place where I could keep learning what I wanted to. The question it keeps asking is about cognition: where do two understandings stop sharing ground, and what would help them share more?
And it wonders about geometry: how a mind represents the thoughts it holds, what shape a circuit of thought might take on a page, and how findings from different fields could sit side by side in one form you can read.
It is not built for anyone in particular. It has been designed with care, and it has turned out to be useful, most of all toward a culture where media literacy can grow across generations.
Recipe for agents · quest.json · Source · What was hard to follow