Infinite Weft (Exploring the Old Aesthetic)

How can a textile function as a digital object? This is a central question of Infinite Weft, a project that I’ve been working on for a the last few months. The project is a collaboration with my mother, Diane Thorp, who has been weaving for almost 40 years – it’s a chance for me to combine my usually screen-based digital practice with her extraordinary hand-woven work. It’s also an exploration of mathematics, computational history, and the concept of pattern.

Most of us probably know that the loom played a part in the early days of computing – the Jacquard loom was the first machine to use punch cards, and its workings were very influential in the early design of programmable machines (In my 1980s basement this history was actually physically embodied; sitting about 10 feet away from my mother’s two floor looms, on an Ikea bookself, sat a box of IBM punch cards that we mostly used to make paper airplanes out of). But how many of us know how a loom actually works? Though I have watched my mother weave many times, it didn’t take long at the start of this project to realize that I had no real idea how the binary weaving patterns called ‘drawdowns‘ ended up making a pattern in a textile.

IW - Process - January 8th 2012

To teach myself how this process actually happened, I built a functional software loom, where I could see the pattern manifest itself in the warp and weft (if you have Chrome you can see it in action here – better documentation is coming soon). This gave me a kind of sandbox which let me see how typical weaving patterns were constructed, and what kind of problems I could expect when I started to write my own. And run into problems, I did. My first attempts at generating patterns were sloppy and boring (at best) and the generative methods I was applying weren’t very successful. Enter Ralph E. Griswold.

Ralph E. Griswold

Ralph Griswold was a pioneering computer scientist, best known for developing the string programming language SNOBOL. He spent a decade at Bell Labs, studying non-numerical computation, and went on to become Regents’ Professor at the University of Arizona. After this illustrious career in computing, he shifted his attention to the mathematics of weaving. Mr. Griswold died in 2006, but he left behind a huge archive of resources for weavers and curious learners, including academic papers on pattern generation using cellular automata.

The first successful pattern possibilities for Infinite Weft came from applying and modifying the techniques in the paper. I built a simple interface in which I could advance the automata generation by generation, and switch between a set of very simple rules (courtesy of John von Neumann). Here’s what a sample pattern generated from these von Neumann automata looks like on the software loom:

von Neumann automata patterns on a software loom

And here’s a sample, woven on a table loom with black & white yarn to make the pattern clear:

Infinite Weft - Samples

While these techniques produce fairly satisfactory results, the automata themselves tended to repeat after not too many generations – while you can alternate between rules, and start with different ‘seed’ patterns, and adjust the threading of the loom to get a variety of finished patterns, the systems themselves would inevitably repeat. What about a truly infinite weft?

As it turns out, there are some cellular automata that are non-repeating. Given any generation N, the result of the next generation, N+1, can’t be predicted from the outcomes that have happened before. Could I apply such an automata to generate an infinite ‘pattern’? Well, I gave it a try, and the results look promising. Here is a look at a pattern generated using Wolfram’s Rule 30, a (quite possibly) universal cellular automaton:

IW - Process - Jan. 8 2012

And a similar pattern, hand-woven by my mother:

Infinite Weft - Samples

Now we get into some pretty interesting conceptual territory. In theory, a long enough stretch of this woven textile would be Turing-complete – a computable fabric. Embedded somewhere in the pattern would be instructions to solve any conceivable problem. Past the math, this system also lets us challenge what we think of as a pattern, in a fabric context (after all, this pattern has really no pattern at all).

This project is still very much a work in progress – this blog post is a peak into the process and chance to get some of my thoughts into writing. The next obvious step is to finalize work on the pattern generation, and get some large-scale textile woven from my mother’s ‘real loom’, which is a 16-harness floor loom (for this we’re going to need a computerized dobby head, which is a bit of an investment). I would also love to see other weavers outputting sections of this ‘infinite’ weft – please get in touch if you have a loom and would like to try weaving a section.

Source code for Infinite Weft is available in a public GitHub repository here.

And, as always, please don’t hesitate to leave a comment if you have any questions or suggestions.

11 thoughts on “Infinite Weft (Exploring the Old Aesthetic)

  1. Great stuff. I've been exploring the same theme of CA in textiles, but using needlepoint (aka 'tapestry') instead, which means computing and making everything by hand rather than with a loom. Textures such as those created with rule 30 may be classified as 'non-repeating patterns'.

  2. I study Maya weaving,won a MacArthur for it decades ago, and am still finding new things. One Maya Community in Chiapas, Cancuc, wears patterns that look like a computer generated designs and they are very mathematical. If you'd like to see them I put up a photo album in face Book, open to the public. http://www.facebook.com/media/set/?set=a.21168390

  3. Hi Jer. I happened to see your woven textile at Bridge Gallery last night and was very excited! I'm a weaver and textile designer. Jhane Barnes, the menswear designer I work for, has been using math to generate woven fabric designs for years. Like you, she got interested in cellular automata and Ralph Griswold. This led her to vector automata, and Color Expansions, a software program written by John Stokes, which she's used to make patterns for woven fabrics.

    You might want to take a look at one of Jhane's fabrics using fractals. Here's a link: http://store.jhanebarnes.com/men/clothing-48/long

    Also, please get in touch if you happen to be in New York and want to stop by Jhane's design studio. We have a 24-harness dobby loom, which you and your mom might like to see!

  4. I knew Ralph, and worked with him on his weaving-related papers and publications. I've been exploring Farey fractions and signature sequences with interesting results (you have to watch out for floats though).

    1. Marg,

      Thanks for the comment. I didn\’t know much about Farey fractions – looks very interesting. We\’ll be trying out some new approaches in the New Year, perhaps I can build something into the tool.

      Thanks!

      -J

    1. Thanks for posting! I like that sweater – which uses a much more straight-forward and ultimately more geometric looking automata than the one that I used!

  5. Hurray. You are doing something I've wanted to see ever since I bought "A New Kind of Science" about ten years ago. I've used cellular automata in knitting where I employed the rules row by row, but haven't either the right equipment or the programming ability to use it in weaving. Debbie New published a book, "Unexpected Knitting", in 2003 with a chapter on cellular automata, in which she shows about half a dozen different sweaters.

  6. Great work on the mechanical visualization of the weaving process! As an instructor of woven textile design, it is much harder to get across to students the concept of what harnesses do on a loom, than how to plan colors and textures. Will look forward to any more research you do on this line..and please get in touch if you are in NYC!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>