Dittos in Array Literals

Color is often represented in computers in triplets of red, green, and blue intensities. Expressing a color is a matter of finding the right mix of these intensities. For example, here are the triplets for six of the most famous colors: red = [1, 0, 0] green = [0, 1, 0] blue = [0, 0, […]

Twoville Limerick

In October, a collaborator and I presented a poster on our 2D vector graphics languages at FabLearn 2020. The session started with everyone in the main Zoom room. Each presenter had 30 seconds to introduce their project, and then the crowd dispersed to individual breakout rooms. Ever since I saw someone preview their paper with […]

Rotating Checkerboard

Yesterday I posted a checkerboard that reorganized itself by translation. This one reorganizes by rotation. And here’s the Twoville source code.

Sliding Checkerboard

There are a lot of amazing animator-geometrician-illusionists on Twitter, and I want to be like them. But I can’t figure out how they have the time to make what they make. I comfort myself by assuming that they have no friends and no job. Despite having heaps of friends and a job, I did manage […]

FabLearn 2020 Demo

A collaborator and I had a short paper on programmatic fabrication accepted at FabLearn 2020, and we’re presenting that work in a demo session on Zoom next weekend. Herein I walk through some of the example programs that we plan to work through with our visitors. Button Let’s start with a practical example—one inspired by […]

Timing in Twoville

Twoville serves two very different domains: physical fabrication and digital animation. Fabricators use Twoville to describe static geometric shapes that can be fed into a cutting machine and turned into a tangible object. Animators use Twoville to orchestrate purely virtual cinematic progressions in which the actors are geometric shapes. The thread binding these two domains […]

Snap Circuits Bridges

We got my oldest son a Snap Circuits kit when he was very young. The product seemed like a great way to learn about electricity, but we quickly ran into the issue endemic to all educational technologies: you really need an informed human teacher to learn. We tinkered with the kit, but neither of us […]


I challenged myself to make a tulip in Twoville, and here’s my response:


I was challenged to make a raindrop in Twoville, and here’s my response: The exercise helped me fix an issue with mirror. Previously if the middle vertex was not on the mirror axis, I automatically inserted a straight line segment to bridge the gap between the mirrored segments. That produced more of a Hershey’s Kiss […]

Direct Tweaking in Twoville

A student and I working on tools for composing SVG files. The scenes are programmatically generated, but the geometric properties can be tweaked via direct manipulation. In other words, the user can drag on the shapes to modify both the scene and the source code. Consider the following program, which plots a rectangle. Select the […]

1 2 3 4