teaching machines

Power Set of Venn Diagrams

In our introductory programming class, I try to reframe abstract logic into concrete spatial thinking. One way I do this is through the game Trux Falsy. Another way is through Venn diagrams. I want students to see how the AND operator creates an intersection, how the OR operator creates a union, and how DeMorgan’s Law […]

New Geometry

What do you call a portion of the shaded area between two arcs? A sharc. The figure above was created in Twoville, a little language for drawing vector art. Here’s the complete program:

Interpolants in Twoville

Shapes in Twoville are animated across time by interpolating their properties between keyframes. Time is a first-class concept in the language, with assignment statements storing values across a timeline rather than in a static memory cell. Here’s a rectangle that oscillates left and right using this keyframe-sensitive assignment syntax: The animation above uses linear interpolation. […]

Starring Matariki

During our last week in New Zealand, we attended the Matariki Festival at my sons’ school. Matariki is the Māori name for one of the stars that becomes visible in June, marking the start of a new growing season. The school celebrated with song and dance and an art show. For the art show, one […]

Annotations in Twoville

Software for creating digital media tends to be driven by a mouse or stylus. The user directly manipulates shapes until they feel right. Twoville and Madeup, on the other hand, are programming interfaces for digital media. While code opens the door to algorithmic generation, programming interfaces tend not to give as much feedback as direct […]

Starfish

Twoville got support for arcs a couple of months ago. Full SVG supports elliptical arcs, but I don’t think they’re very intuitive and their parameters should not face the user. I restricted Twoville to circular arcs and exposed friendlier parameters. In my original draft, the programmer specified an arc via its starting point (which is […]

University of Canterbury Seminar

Hi, I’m Chris and I teach people to teach machines. But I am a reluctant computer scientist. Sometimes I get concerned that the thing I know the most about is not directly linked to my survival. My father knew how to keep machines running. My wife grows vegetables. In a post-apocalyptic world, they would be […]

Lissajous

Twoville serves two purposes: to create SVG images that can be used as input to laser and vinyl cutters to create animations To support the second of these, I have been using time blocks to define geometric properties at particular keyframes, and then letting the animation system interpolate between the keyframes. Like this: Here we […]

Polar Graph

A year ago I decided to see if fifth graders could create shapes using polar coordinates. I bet myself that they could if we spent some time first traversing a polar grid, identifying the labels of the rings and the spokes. We didn’t think of them as angles and radii, because those semantics weren’t important […]

Phone Programming

Twoville now supports masking, which means we can subtract shapes from other shapes. Since I’m teaching a course on mobile app programming this semester, phones have been on my mind. Accordingly, here’s one of the first runs of the masking feature: In this code, hole is a container of other shapes that will be subtracted […]