Mark Russell
I build languages, engines and frameworks for TypeScript.
Vex is a formula language that tells you why a value is missing. render is an engine whose interface edits its own expressions. client serves one typed registry to a CLI, HTTP, WebSockets and Claude.
Every project here is live. Open one and use it.
Projects
- Vex: Typed spreadsheet formulas over TypeScript objects. When a value is missing, Vex tells you why.
- async-browser-context: AsyncLocalStorage for the browser. The context stays through await, timers, events and generators.
- lag: It measures how long the main thread makes users wait, and exports the result as OpenTelemetry metrics and traces.
- client: Procedures as data. One typed registry for the CLI, HTTP, WebSocket and the MCP tools of Claude.
- render: A reactive expression engine. Its interface shows its own expressions, and you can edit them.
- systems: How long until a client knows that its peer is gone. An algebra calculates the time, and a harness measures it.
- page-lifecycle-tracker: The Page Lifecycle state of a web page, from active to frozen, for monitoring and telemetry libraries.