Hi everyone, my name is Jasper and this is work I did with my colleagues Chandra and
Khang and my advisor Nadya at the University of Washington.
I’ll be talking with you about why making with digital fabrication machines can be incredibly
frustrating, and how we can help makers out by using the same computer-supported reasoning
that lets programmers work quickly and accurately.
Even as researchers in HCI have explored many new interactions and pipelines for fabrication,
makers will always have to deal with difficult questions when working with machines.
For example, consider three off-the-shelf 3D printers.
Before a maker can start making anything, they need to decide how they are going to
fabricate their design.
Particularly in the case of larger prints, a natural question is “can this machine
fit the model I want to print?”
Questions also arise after selecting a machine.
Consider this open-source pick and place machine which precisely places components onto a printed
circuit board using several needles with different sizes.
A maker experimenting with different placement orders will want to be sure that they are
always using the correctly sized needle for a given component.
If a maker doesn’t already have personal experience answering these questions, the
resources that can help them are quite scattered.
These include material sheets, tips hidden in online forums, sites for looking up and
debugging problems, datasheets hardware datasheets, and community wikis.
However, it’s an awful lot of work not only to find this information, but also to know
how to interpret it.
It would be very helpful if we could distill some of this informal knowledge to a more
accessible form.
This leads us to ask how can we formalize knowledge about when and how to use machines?
To do this, we built Taxon, a language that encodes machines, workflows, and rules of
thumbs as programs.
Taxon applies the safety and extensibility of programming to hands-on making.
We implemented Taxon in a web interface where makers can browse a database of machines that
are all represented programmatically as machine plans.
These are loaded into the scene which provides a simulation of the physical version of the
machine.
Here, we’ve loaded a machine plan for a 3d printer.
Then, makers write workflows which control the simulation, in this case, we’re printing
the first two layers of a cube.
Finally, makers can browse and apply rules of thumb, which either filter the list of
machines based on requirements, or apply safety checks to workflow code.
Now that we can return to our original question which is “which machines can fit my model?”
Now, we could implement a special feature in our interface, but we actually don’t
want to stop there: there are thousands of decisions that an increasingly diverse base
of makers makes with a plethora of machines, and we could never build an interface for
all of them.
Instead, Taxon’s strength is that, with its programmatic foundation, it lets makers
write and share their own rules of thumb for selecting and using machines.
Specifically, there are two kinds of rule of thumb.
First, filtering rules of thumb narrow down the database of machines to only show machines
that satisfy certain requirements—in our example, being able to print a model of a
certain size.
Second, action rules of thumb apply checks to the machine simulation as the maker is
stepping through the workflow to ensure properties like picking up a PCB component with the correct
needle in the case of our pick and place machine.
So, to check which printers can print a model of a given size, a maker goes to the list
of rules of thumb and selects the one called “work envelope is larger than,” plus a
value they enter, here a height of 100mm.
Enabling the rule narrows down the list of machines.
Increasing the minimum height to 200mm, the list narrows to only 3 machines.
Any filtering rule of thumb is a function that takes a machine and possibly a value
entered by the maker through the UI.
We parse the input for minimum width, height, and length of a model, for example, this low
poly Pikachu.
We compare each machine’s work envelope dimensions to the minimum dimensions for the
model and return true only if the work envelope dimensions exceed all minimums.
The big idea here is that through code, we were able to take this knowledge about selecting
a machine based on model dimensions and make it accessible to and extendible by all makers.
So filtering 3d printers is just one example, but Taxon provides an infrastructure for representing
all sorts of different machines and rules of thumb.
To learn more, please see our paper where we investigate several challenges in representing
various experimental machines and workflows.
Taxon applies the safety and extensibility of programming to hands-on making, and our
next step is to move Taxon beyond simulation into physical settings.
In the meantime, I’d like to thank my collaborators as well as the Alfred Sloan foundation for
generously funding this work.
Thank you for listening and I’ll be happy to take any questions.