This is a program that I started a few years ago. At the time, I had recently become interested in text-based user interfaces. I was also looking at project management and planning programs. I looked at a variety of diagramming tools, but none of them quite suited my fancy. I liked the simplicity of planning in a plain text document, but also wanted the freedom that came with an infinite-canvas-type diagramming tool. I decided that I might as well combine all these things together to create the ideal (for me) diagramming tool.
I wanted elements to be able to interact with each other, so I implemented a “binding” system where a property of a shape could be derived from properties of other shapes. In order to accomplish this, I wrote a parser of a custom command syntax that allows you to perform math, logic, and string operations.
I had a lot of fun making this project and thinking through the challenges that came with integrating the binding system and a command parser. Unfortunately, the program has turned out to be pretty hard to use. The command system is pretty unituitive, and the keyboard navigation leaves a lot to be desired. Despite this, I still see the project as valuable because it was enjoyable to build.
Here is an example of something that can be created in this program. There are boxes that adapt to the size of their content, and elements like lines, arrows, and brackets.