{"word_count": 925, "character_count": 5086}
I've been thinking about the relationship between colour and weave effects, and double weave structures. It started with making the following chart, while thinking about the possibilities offered by alternating colours of weft and warp threads:  x o x o x o x ox X ? X ? X ? X ?o ? O ? O ? O ? Ox X ? X ? X ? X ?o ? O ? O ? O ? Ox X ? X ? X ? X ?o ? O ? O ? O ? Ox X ? X ? X ? X ?o ? O ? O ? O ? OThe lowercase x and o represents two colours alternating for the warp and weft, and the central grid shows X for crossing points which always have colour x on top, shows O where colour o is always on top, and ? where it depends whether the weft is over or under. This adds a constraint to the motifs that may be woven using alternating warp and weft colours, to a grid of possibly connected points (in a way that to me, seems to afford the meander pattern).Looking at the structure of the above, you can see a grid of Xs, diagonally offset from a grid of Os. This made me start thinking about double-weave, where for example two layers of plainweave are produced from a simple two dimensional pattern, one diagonally offset from the other. I realised that a doubleweave structure with alternating thread colours, should result in differently coloured layers.To test my naive thought, I did some weaving, using the following code to generate the pattern on my live loom:every 2 invert $ offset 1 $ intersperse down $ cycle [up, down]That worked pretty well! After weaving that for a while, I wanted to try swapping the two layers. After a bit more thought, I tried simply swapping all the 'up's with 'down's, by adding an invert instruction to the code:invert $ every 2 invert $ offset 1 $ intersperse down $ cycle [up, down]I had some problems with my fabric unweaving, but with some adjustments, this worked very well, with the bottom layer passing perfectly through the other to become the top layer. For readers who are not weavers - note that there are no knots involved here, this is one fabric passing through the other. Magic!Still, this all hurt my head a lot, and I wanted to understand more about what was going on. It was around this point that I looked up what the great Bauhaus artist Anni Albers said about double-weave, and found this:"Double weaves have a special nimbus about them for reasons not clear to me. They are thought to be intricate, hard to grasp, open only to advanced students. To my mind they are simple to understand and can be handled by anyone with just common sense -- which, I admit, sometimes seems rare." - Anni Albers Ouch! This is supposed to be common sense? Talking with Ellen, she agreed, that the workings of doubleweave is obvious for actual weavers. This is the problem with coming at weaving from the naive perspective of computer science. When looking a binary grid it is too easy to think about weaving in two dimensional terms, and it is only at the loom that the three dimensional interactions of weaving make sense, through embodied understanding. Still, there is something about the code I wrote to make the double weave: every 2 invert $ offset 1 $ intersperse down $ cycle [up, down] Here is the drawdown created by the code (the up-down structure, where weft goes over the warp for white squares, and under for black squares):  I am still very far from being an experienced weaver, and so so the above structure does not, to my naive eyes, say anything about how weaving it produces two separate layers of fabric. But then I realised that the code does! Reading it backwards: every 2 invert $ offset 1 $ intersperse down $ cycle [up, down] cycle [up, down] - this is the structure that each layer ends up with - the simple repeated (cycled) up-and-down (also known as over-and-under) steps of the plain weaveintersperse down - this puts an additional 'down' between each step, 'making room' for the extra layeroffset 1 - this progressively offsets each row by one step, which provides the diagonal movement in the structure. This does two things - it alternates between the upper and lower layer on the warps, and also creates the single warp offset of the plain weaveevery 2 invert - every other row, this swaps the ups with downs, in effect alternating between the upper and lower layer on the wefts. I find this really interesting. I wrote this line of code with an entirely practical task in mind - to produce the above binary grid of the weave structure in the clearest way I could think of (with Kolmogorov complexity in mind). In so doing, I've ended up with an abstract, linguistic description of the woven structure, which actually opens a window for understanding the three-dimensional, woven results. What's also interesting is that now I've better understand double weaving, it allows me a new way of perceiving colour-and-weave effects. I can now imagine two layers of textile, which interweave to produce the effect. This isn't the 'true' way of seeing these effects, rather one of many. But still, gaining this embodied, conceptual understanding through weaving, has altered the way I perceive the world, a little bit.