knitting + code workshop and residency report
In the last post I wrote about a residency and workshop I was preparing. This article will be a short account of the Tricodeur project.
programming and knitting
The residency started on Tuesday, September 2nd and lasted for 5 days. This period was dedicated to exploring the possible links between generative design and machine knitting using an old mechanic Brother KH-950i. Knitting machines and computer programming have a common legacy. At the beginning of the XIXth century, Joseph Marie Jacquard developed an innovation that combined three contemporary technologies:
- a loom controlled by analog cylinder,
- uninterrupted punchcards stripes and
- needle-based punch reading system adapted from watchmaking.
The resulting machine, the Jacquard loom, was a marvel of ingenuity but needed a few decades before being deployed in factories: it was at first much too complex and expensive to maintain. An engineer by the name of Jean-Antoine Breton improved the design and made it twice cheaper by making it simpler.
The Jacquard loom essentially enabled a single person to control the whole machine without external aid to create extremely complex patterns using 600 to 800 needles at once. These machines were not made for home use: they needed ceiling at least 4 meters high, demanded highly-skilled workers and required constant maintenance. Around 1867, though, the first domestic knitting machines were invented. They could knit with 84 needle and weighed 7 kilograms. Flat machines developed fully at the end of the XIXth century with simpler, reliable designs. These machines could not be programmed to knit a pattern automatically, though.
See this page for more information on the history of knitting.
Starting from the middle of the XXth century, more advanced machines were commercialized to the masses. These machines used various systems to allow two-colors-pattern programming, one of them being punchcards.
Reading a punchcard to knit a pattern.
A punchcard is made of flexible plastic and allows for programming patterns up to 24 stitches wide.
Programming the punchcard is done manually with a card punch. Punching a hole means it will be knitted with the contrast yarn while all unpunched spots will be knitted with the main yarn.
The result of the previous punchcard pattern (this picture is also posted on the other tricodeur article). Font and photo by Émilie Coquard.
Aside from punchcards, there were other ways of programming patterns. In the 70s, Singer came up with a kind of tangible programming interface called the Memo-Matic. A large number of pegs can be placed inside a dot matrix to create a pattern. This pattern is knitted row by row using an electronic carriage. Contrary to the punchcard programming, this system used electricity and allowed infinite recombinations. The patterns weren’t that much larger, though, but one could play on symmetries, or change the pattern halfway.
During the residency, I had the chance to work with a fellow knitter, Mathilde Robert, who brought her memo-matic and knitted a few patterns on it. Unfortunately, this one had aged a bit and some of the rows weren’t operational.
Zoom on the peg array. It is quite similar to the battleship game and actually fun to use!
More complex machines appeared during the eighties. Some would come with advanced electronics and hundreds of built-in patterns. The machine that I used during the residency and workshop was a Brother KH-950i, one of the most complex yet still broadly available for home use. This type of machine could allow for several ways of pattern programming.
One way is to input manually on the numeric pad all the coordinates of the stitches that have to be knitted with the second yarn. It’s a tedious process and one that takes a long time: a 100*100 pattern has 10.000 stitches, so programming 5000 of them to be stitched with the second color could take more than 7 hours. Afterwards, when the pattern was fully entered, the only way to make sure it didn’t have any errors was to knit it.
The panel of the Brother KH-950i. The two-digit monochrome screen seen on the right can show both the current knitted row number or the yarn to be used when knitting with more than 2 yarns.
Another way to program was to draw on Mylar sheet. These transparent plastic sheets would then be scanned directly on the machine and every darkened rectangle would be interpreted as a knitted stick. Though less time-consuming, these sheets were expensive and could not be redrawn: the marker/pencil sticks to them and cannot be erased easily. They can be combined to create 200 stitches wide patterns (one sheet is only 60 stitches wide).
Blank mylar sheets (on the right) next to reference paper sheets. In dark blue, a transparent cut-out to draw pre-defined shapes.
Scanning a (blank) mylar sheet on the KH-950i. An actuator loads the sheet line by line, similarly to a fax machine.
A final way (though there are more) to load patterns was through the use of cartridges. An external reader (sold as a separate add-on) would be plugged in a dedicated port on these machines, and would allow knitters to load new patterns to the machine. These cartridge usually contained hundreds of patterns and could store new ones that would be created by the knitter (by inputting coordinates, as mentioned above).
The PPD-110 extension to load new stitch pattern sold by Brother.
knitting custom patterns at home
Knitting machines from the 80s and 90s were the first means of making profesionnal-grade personalized clothes at home. These machine would empower a large number of home knitters and, through various visual or non-visual programming tools, help them create and knit their own patterns. In the middle of the 90s, a few companies (including Brother) quit manufacturing machines. At the same time, the appearance of the Internet through Newsgroups, Forums and the Web allowed knitting communities to form and keep the interest in these machines alive and well. Today, the maker movement and the return to a local production of consumer goods revived the fascination for these machines.
From the Brother manual: simple adjustments the housewife can easily do. Duh.
Hacking an electronic knitting machine
On June 24, 2009, Steve Conklin, a Linux kernel engineer, visited a hackerspace with his wife. Bre Pettis, a famous maker, introduced him to a japanese knitting machine that stayed unused on the shelf. He becomes instantly fascinated by the combination of high-precision mechanic and electronics to move the needle and knit any pattern. Conklin, with his expertise in electrical interfaces, reverse-engineers the protocol used by the knitting machine to communicate between the external reader and the machine itself and develops a floppy emulator. He then open-sources it for anybody to use.
Steve Conklin at NYC Resistor. In the back you can see Bre Pettis (with the black glasses). On the far right of the image, you can see the Brother KH-930 with its ribber in its box. This images comes from a great presentation by Steve Conklin. Video on youtube.
About a year later, Becky Stern of Adafruit develops a detailed step by step tutorial using code from Steve Conklin. This tutorial goes from the creation of the cable to communicate with the machine (by faking a floppy disk) to the installation of the driver and the commands needed to send simple patterns made with drawing softwares. This tutorial gets a lot of publicity in a very short time and a lot of projects will start thanks to of it.
Becky Stern with her knitting machine and a pattern.
Here is a short list of projects using code from Steve Conklin, or using the same type of hack:
- Knittington : https://github.com/stg/knittington
- PatternUploader : http://www.mcanet.info/patternUploader/
- Knithack by Kanno, Nukeme, and Tomofumi Yoshida : https://github.com/sokanno/KnitHack/
For the residency and workshop, we decided to work with img2track, a closed-source software that was build from scratch by Davi Post for Brother KH-930, 940 and 950i. The hack itself is very similar to Steve Conklin’s, but img2track is a reliable software that is also compatible with a bunch of image format. Img2track also added a graphical user interface to help its users choose and import images, which are then read and sent to the knitting machine. User can load any image, and it will be converted to a knitting machine-compatible version, with or without a stretch factor to account for the rectangular dimensions of stitches.
A screenshot of img2track. Some of the tools built for Le Tricodeur were made in collaboration with img2track creator Davi Post.
Other types of hacks were developed for knitting machines. Knitic, for example, replaces the brain of a KH-930 or 940 by an Arduino and a custom shield.
A screenshot of the knitic tutorial.
More recently, OpenKnit is a project that aims at making a knitting machine using 3d-printed parts.
OpenKnit is also open-source and all the parts can be downloaded and printed at home with a 3d printer.
These hacks and projects have developed in a rather open environment, with each project exploring a specific aspect of augmenting knitting machines with new capabilities. Tools to connect computers and knitting are now available and reliable enough to be used broadly and easily.
Programming computers to create images
Todays knitting machines are surprisingly similar to the Jacquard loom from 200 years ago: both machines’ needles move into one of two position depending on a pattern that is encoded. Programming these machines can be done through a physical artifact where the pattern is visually encoded (for a punchcard with holes and for a mylar sheet with drawn rectangles) or it can be done with the transmission of an electrical signal that encodes said pattern. All these methods rely on binary encoding: hole | non-hole for a punchcard, transparent | dark rectangles on a mylar sheet, or signal | no-signal for a digital file.
The Jacquard loom’s binary legacy isn’t limited to knitting machines, though. It was the main inspiration for a precursor to computers called the Analytical Engine and invented by a mathematician, Charles Babbage. The first computed algorithms were developed for this machine and it is widely considered that Ada Lovelace (who worked with Babbage) is the first programmer.
On the topic of the Analytical Engine, Ada Lovelace writes “We may say most aptly, that the Analytical Engine weaves algebraical patterns just as the Jacquard-loom weaves flowers and leaves.”
Nowadays, writing code to create forms is an established discipline called generative design. A designer creates a system and explores all the possibilities that it offers by changing the variable, or adapting the system itself through a feedback loop. I’ve written a bit about this on this blog, for example here and here.
Le Tricodeur is a collaborative project developed between three parties : Sew&Laine (an association dedicated to textile and hand-made creation), Studio 2Roqs (a design studio that focuses on creating interactive installations and interfaces) and me.
Le Tricodeur links stitches and pixels, and explores possible connections between one and the other. It started with a week-long residency I did at Sew&Laine in September 2014 to experiment with a knitting machine that I hacked.
The table and the knitting machine at Sew&Laine.
One of the sponsors for this project was Bergere de France, a famous brand of wool. They provided hundreds of wool hanks for the residency, and additional coton reels for the workshop.
First day of knitting: I settled on img2track as the privileged way of interacting with the machine. The software works with Becky Stern’s FTDI cable hack.
A timelapse of a pattern being knitted. The pattern was generated by a simple visualization program that gets local weather information and moves a pixel according to the wind speed’s and angle direction.
The back of the pattern. Long white lines are called floats, they are due to the fact that I knit only single bed (one side) in two colors.
A pattern inspired by OP art. It is the largest I have made so far for the residency (about a meter high for 80 cm wide (195 stitches).
More photos from the residency on letricodeur.com.
From October 10-12, I hosted a workshop on Le Tricodeur. The topic of the workshop is the following (in French on this website).
Create and knit beautiful and expressive visualisations from personal data. Explore the interaction between stitches and pixels to enable the reclaiming of dematerialized informations.
Softwares and smart objects recording us at all time have invaded our daily life: Facebook profiles filled with private data, Google search history captured without our knowledge, cellphones and always-on electronic devices keeping track of our geolocation, our physical activity, our communication meta-data, etc. These informations are coveted and exploited by governments and companies but rarely by the person that generated them and who should be their rightful owners. However, collecting and exploring these datasets is highly instructive, both to understand what these economic and institutional stakeholders can extract from them but also to reflect on ourselves, our habits, our interactions with the world and the way we are. It is vital to create the tools that will help us understand and manipulate this data. This workshop aims at creating data-visualisations out of each participants data (Facebook profiles, tweets history, or Google location history, SMS meta-data exchanges, …). Images that will be generated with the constraints of knitting, will range from figurative to abstract, evocative to explicit, but all personal to their wearers. These visualisations will become tangible and permanent records of a person, and will reveal an aspect usually hidden of our personal identities. The workshop lasted 3 days from 10am to 6pm with 6 participants. Thank you to Charlotte, Guillaume, Harmony, Émilie and Alice for attending! And thank you to Julien Gachadoat of Studio 2Roqs and to Sylvain Eveillard (my brother) for helping with the participant’s code! Teaching code, datavizualisation and knitting was a lot for 3 days, but everybody was able to knit his pattern(s) in the end! A few pictures from the workshop.
The room for the workshop at Cap Sciences, in Bordeaux. Cap Sciences is a large exhibition hall along the Garonne. We had a lot of visitors for this workshop.
Charlotte creating her first visualisation in code.
A visualisation made together from a twitter archive: activity since the beginning of an account. Each dot is a day, each row a month, each column one day and a band of 12 rows is a year.
The stitches library I created for the workshop.
Harmony’s pattern: a visualisation of the evolution of like from an Instagram account.
Harmony and Émilie practicing the knitting machine. Émilie knitted her pattern with two cotton threads, which is more difficult than wool.
Emilie’s pattern shows the city her friends live in currently geographically. The size of the city’s name in the caption represents the number of friends living there.
Charlotte’s pattern is generated from her Twitter profile: each bird is another profile she has talked about in her tweets. The more it was mentioned the more dark points it has.
Another pattern developed with a similar idea by Charlotte.
Some of the patterns knitted over the 3 days.
Vines of the workshop (should autoplay):
A video recap made by Cap Science during the workshop:
Exhibition at the Semaine Digitale
The project was on display at the Semaine Digitale in Bordeaux the week after the workshop. This exhibition featured the workshop’s productions but was also the place to experiment with another kind of generative design in a different context. I prepared two simple programs for visitors to easily create shapes and text to be knitted: a drawing tool where people could create patterns using the mouse, and a photo tool that uses the webcam to output visitor’s faces in stitches.
Presenting le Tricodeur to the public with Sew&Laine at #SDBX4
The drawing program that was used to enable people to draw their own pattern.
After drawing their pattern they could click on Tricoter (knit) to send the pattern through img2track to the machine. Below, you can see a visitor’s pattern made in around 20 minutes from the initial drawing to the knitted version.
Another tool prepared for the exhibition. The photo tool shows a webcam feed in stitches. Visitor’s can then output and print their own face in knitting.
Portraits made by visitors.
Le Tricodeur has been a stimulating and rewarding project with a lot of insights. The workshop proved to be a successful format for teaching code through knitting, and learning knitting with code. Connexions between stitches and pixels felt natural and generated great exploration of these two mediums. Even though the technical complexity of both these disciplines are substantial challenges (the code has bugs and the carriage jams), knitting a freshly generated pattern is a great satisfaction and brings generative design and personalized pattern knitting new opportunities.
The natural evolution would be to improve my knitting skills and create more advanced patterns than one-sided squares. A workshop where people actually get to wear their creations in the end is certainly an interesting prospect. I am also looking forward to learning lace knitting, I know very little about it and would like to adapt my generated patterns to these constraints, maybe while preparing another workshop.
documentation and code
Everything that was created for and during the residency and workshop is available in Creative Commons BY-SA. Please contact me if you need help in using any of these tools, or if you have any questions of feedbacks!
more photos and explanations of the projects and the residency (in French) : letricodeur.com/
the theme of the workshop, presentation of what was given to participants and initiation to generative design and dataviz for beginners (in French): letricodeur.com/workshop/
a Storify of the workshop (in French) : storify.com/le-tricodeur
all the content, a custom typeface for knitting, the PDF slides for the workshop presentation, the participants’ Processing sketches and sketches for public workshops that I made on github : github.com/louis-ev/Le-Tricodeur