Denicek Computational Substrate for Document-Oriented End-User Programming
Tomas Petricek, Jonathan Edwards
UIST 2025
User-centric programming research gave rise to a variety of compelling programming experiences, including collaborative source code editing, programming by demonstration, incremental recomputation, schema change control, end-user debugging and concrete programming. Those experiences advance the state of the art of end-user programming, but they are hard to implement on the basis of established programming languages and system.
We contribute Denicek, a computational substrate that simplifies the implementation of the above programming experiences. Denicek represents a program as a series of edits that construct and transform a document consisting of data and formulas. Denicek provides three operations on edit histories: edit application, merging of histories and conflict resolution. Many programming experiences can be easily implemented by composing these three operations.
We present the architecture of Denicek, discuss key design considerations and elaborate the implementation of a variety of programming experiences. To evaluate the proposed substrate, we use Denicek to develop an innovative interactive data science notebook system. The case study shows that the Denicek computational substrate provides a suitable basis for the design of rich, interactive end-user programming systems.
Paper and more information
- Download the paper (PDF)
- View the paper in ACM DL
- Scroll down to supplementary videos
- Talk slides from UIST 2025
- Check out the source code on GitHub
Watch the talk
Check out the 5-minute video that came with our UIST 2025 submission. You can also take a look at the 30-second teaser video.
Bibtex
If you want to cite the paper, you can use the following BibTeX information.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: |
|
If you have any comments, suggestions or related ideas, I'll be happy to hear from you! Send me an email at tomas@tomasp.net or get in touch via Twitter at @tomaspetricek.
Published: Tuesday, 30 September 2025, 12:00 AM
Author: Tomas Petricek
Typos: Send me a pull request!