Textiles are one of the most ancient art forms humanity has created, with the loom — an instrument for weaving fabrics — being invented before the invention of writing, perhaps even as old as 10,000 years ago.
What’s amazing, though, is that this ancient device ties into the history of one of the most defining modern human inventions: the computer.
In this article, we’ll be exploring both how weaving technology influenced the development of computers, how computers are also influencing textiles, and how patterns of weaving and programs are similar in the right light.
First, we need to explain how weaving with a loom works. Weaving involves a mix of horizontal and vertical threads. The vertical threads, called warp threads, are fixed in place. The actual weaving is done by working horizontal threads, called weft threads, through the warp threads. For every warp thread, there is a choice of whether the weft thread should go above or below the warp thread. It’s a binary choice, I pointedly say peering over my glasses, hinting at the connection we’ll discuss further on.
The actual patterns of the fabric are given by these choices of overlap, creating a kind of grid of colors almost like pixels like in the image below:
So in summary, you can think of each line of the fabric as being encoded by a sequence of binary data — up and down or just as easily one and zero — to create the pattern.
In this way, a loom was the first example of a kind of programming!
The first loom to explore this idea was Jacquard Loom, an invention of the early 1800s, which used a sequence of cards that had lines with a pattern of holes punched in each. These punch cards encoded the binary decision of how the weft thread should move above and below the warp threads. A hole encoded that the warp thread should be moved up above the weft thread, a blank spot in the card meant that it should stay down. In other words, holes encoded a one and a space a zero.
With this, a designer could create patterns for textiles that could be reused and replicated: clearly a form of programming!
In fact, this punch-card-as-binary-number encoding was so useful that it was the basis of most programming in the early history of computers!
Programs were typed on what looked like a kind of typewriter, which would type both the code in characters that a human could read and punch out the appropriate holes in the card to encode the line of code as ones and zeros.
This way of programming computers, with huge stacks of punch cards just like the huge stacks of punch cards used for Jacquard looms, was the main way computers were programmed up through most of the 1970s!
So that’s one direction of connection between weaving and computers, but it also goes the other direction!
Since a loom itself operates by something that looks a lot like binary numbers, then you should be able to control looms with a computer. This is exactly what some people have done: building programmable looms, like in the project linked in the further reading of this article!
But there’s so much more! One of my favorite projects, one that fits into the idea of art in partnership we talk about in another article this issue, is a loom where code generates the patterns for the loom, and even lifts or lowers the warp threads as needed to fit the pattern, but a person does the weaving by hand and has the ability to override the computer’s pattern at any time.
It’s such an amazing inversion of the typical relationship between computer and creation, one where you the human practice the actual craft but in conversation with the computer, that in turn is running the code you wrote and sharing the implications and surprises of it with you.
So, yes, there are wonderful still unfolding relationships between one of the oldest technologies and one of the newest through an interwoven future.