DEV Community

Prathyush
Prathyush

Posted on

Starting building Kolam: A Keyboard driven subjunctive history editor

My eventual goal is to come up with a typeface editor in WebGL. But initially, I want to explore some UI ideas. As a first pass, I’m thinking of building an application that makes maximal use of keyboard for drawing activities. This is because I am charmed by the quick editing capabilities and replayability of macros provided by Vim.

Vim Macros
Source: https://vimgifs.com/q/

There is a rudimentary example of this in constraint.systems.

Etch

There is also a cool app called Goya that keeps track of the history and allows one to retract the work done with a previewable event history traversal.

Goya Pixelart Tool

I want to see how an app that combines both of these capabilities, that is, keyboard driven editing with try replayable version histories and subjunctive results spawned out of them, would look like. Keyboard driven editing would enable a good amount of possibilities for quick prototyping and gradual refinement. Replayable version history will provide leverage to draw patterns or glyphs that needs to be drawn over and over again. Think Vim macros or the repeat command. Subjunctive interfaces will provide an opportunity to see what potentials multiple branches of histories hold. This is a good reading list by Jeffrey Guenther on subjunctive interfaces. He has also written a declarative dataflow language to test out his ideas called Shiro.

I am tentatively calling this app — Kolam. The name is derived from Kolam diagrams drawn in South India. I am creating a set of Malayalam glyphs on the side as part of 100 days of type and I was inspired by the Kolam artwork done by Nilay Chourikar for 36DaysofType in sparking this name.

Kolam

These are my inspirations and I’m having a go at this by keeping all these in mind. The work I have carved out for me next is to build a grid - both a line grid as well as a dot grid. Drawing this will be my current task. Let’s see if I’ll be able to finish this by day end. I estimate around 2 ± 1 hour for task completion. I will log the details here once I'm through.

The Github repo is here in case you guys want to check out on my progress.

Top comments (0)