Recho: A Lighter Way to Code with Creativity
Bairui Su, Luyu Cheng / 2025-10-07
UIST 2026 paper, CHI 2026 poster

Recho is an open-source notebook for learning and exploration. It uses a plain code format that echoes output inline as comments, so you can code in place with instant feedback. Built on vanilla JavaScript and the reactive model of Observable Notebook Kit, it is a place to explore algorithms and ASCII art. It has been accepted as a UIST 2026 paper and a CHI 2026 poster.
How It Works
Unlike Jupyter or Observable, Recho treats code and output as one document: output echoes inline as comments above your code, and updates as you type. The core is the built-in function echo, which executes the expression and echoes the result inline as a comment. In addition, it supports reactive programming, in-place inputs and animation via JavaScript generators. Here is a quick preview.
Addition: How echo works
Word Counting: Echo makes programming more visible
Reactive Vanilla JavaScript
Animation with Generator
Racing Game with recho.interval
Sphere Rotation with recho.numberExamples
ASCII art, algorithm visualization, and in-place inputs. More in the examples gallery.
Starter Notebook
Binary Search
Moondial: Moon Dial
火炎焱燚 (Fire!)
Moondial
Maze
Select Pokemon with recho.radio
Visualize Stack with recho.button
CG: Text-Based Shaders
More Spheres with more Lights
ASCII Hands with Ml5.js HandPose
Sorting AlgorithmsCHI 2026
We presented Recho at CHI 2026 in Barcelona. It's great to see people interested in the project. The poster session was a lot of fun.
CHI 2026 poster



Workshop
A workshop hosted by ITP Open Source Club. Thanks Mumu for the poster. Most people were more interested in the computational side than ASCII art.
Poster of Recho Workshop
Recho Workshop in ITP Open Source ClubProcess
Some stories I shared on Instagram while developing Recho.




































Donuts!!!
If you are hungry, Recho has a donut. The code is a donut, and the formatter is a donut too. The formatter formats itself into a donut.
Donut Output
Donut Code
Donut Formatter
Donut Formatter Function
Donut, Donut, Donut