Golan Levin: And we’re back. I’m Golan Levin, director of the Art && Code festival. And we are about to have the third presentation of our Saturday afternoon presentation series for Art && Code: Homemade. And I’m thrilled to welcome Tatyana Mustakos, who is an interdisciplinary sculptor, illustrator, new media artist, dollmaker, and educator. Her work focuses on craft and interactivity in a scale that creates an intimate experience between people and objects, with a sense of humor, delight, and surprise. Tatyana Mustakos.
Tatyana Mustakos: Hi, thanks for much for having me and thanks so much for hosting this talk. Or the series of talks. It’s been really exciting to watch. I’m just gonna jump in, and let me share my screen.
So welcome to my talk. So I’m going to focus primarily on one of my disciplines, which is dollmaking. And I got into dollmaking because my mom is an antique doll collector. So when I was a kid, she would always go to these doll shows.
And if you don’t know what a doll show is, because probably you don’t, it’s like a big auditorium where lots of people go and they have like tables full of their own dolls that have or dolls that they’ve collected. And there’s just such a large variety so I would go and I would help her set up and then I would spend the day walking around and they would have tables that’re full of like stuffed animals, or vintage Star Wars collection action figures.
They would also have like…some of the more weird stuff was dolls where the face is a carved apple. Because food can be a medium. And they’ve somehow not rotted. But they range from like, really old, like fifty years old or more. Probably the older ones are not as in good shape. But they also look pretty interesting.
But also stuff like fake bird cages with a little animatronic bird that will flap its wings and sing a little birdsong.
And they also had booths where people would sell the dolls that they’d actually made. And from going to those for a while, I decided that I was gonna make my mom a doll for her birthday. So that’s how I got started and then I kind of never stopped.
But here are some of my dolls. So the dolls that I make are specifically ball-jointed dolls. And what a ball-jointed doll is is, if you think of like a Barbie, a Barbie’s leg is just like, circled around a pivot. Which is one degree of freedom. But a ball-jointed doll has a ball that fits into a socket and basically moves around, and I’ll show you— I’m gonna stop sharing my screen for a second.
So a ball-jointed doll has a ball that fits into a socket. It’s strung together with elastic. And that holds it in place, also with tension. So if I move it, it just stays. And this has two joints for the body, so the torso’s jointed and then it’s got a joint for the shoulder and hips and the neck.
But you can also get more, so this one has an elbow joint. You can see how the elbow opens and closes which gives it a more natural movement and the wrist moves, the head can rotate in the same way. The legs, so it can kick.
I’m going to go back to screen share.
So these are some of my dolls.
And this is a diagram showing how the elastic ties. It goes from one leg, through the head, back to the other leg, and then one from each of the arms.
And so I make dolls but then another discipline that I’m interested in is programming and coding. And since I work in multiples a lot, something I think about is the difference in creating something physically versus digitally. So if I were to make these dolls here that I have on the screen, if I were to make like five of them, the easiest way for me to do that would be to just make five dolls that’re maybe similar but they’re not exactly the same? And if I’m making something digital, like the opposite is true. So even with like baking, if I’m making cookies they’re pretty similar but they’re not identical. But if I’m in a virtual world and I want five digital cookies, the easiest way to do that would probably be like I sculpt one cookie and then I copy and paste it so it’s exactly the same. Whereas in real life there’s natural forces and things that change it and make it, so there’s just a natural variation that occurs.
So something that I’ve found personally to bridge the gap between that is procedural generation. So going from these physical dolls that I made, I wanted to try making digital ball-jointed dolls. And this is a printout of a ball-jointed doll that I made in Blender. And I’m gonna scroll through this and then I’ll show you the Blender side of it more.
But I generate a 3D file that makes all the different parts for the doll, so then I can just run it through the 3D printer, and then…it makes the doll. And then you you string it.
So the way that I did this is in Blender. So here’s one of the pictures earlier, for reference, and this is the program that I wrote. So Blender if you don’t know is an open-source 3D modeling software. But it’s also based in Python. So it has the ability to script.
And if you look here, if I add a shape, it just puts it up. And you can move the location location X, Y, Z. And if you see here, I just added a metaball, and I’ll show you what a metaball is in a second. But it has this really complicated code which takes a little bit of parsing.
So what I did was I kind of wrote an easier version to do that. And this is just the basic stuff. So I made a code where you call “addMetaball” and then you just give it the XYZ and the radius, and then it runs that script for you. So that’s parsing the way that they do it into my own code.
But the main way that I made this, and I’ll talk about the code just a little more in a second, is with metaballs, which I mentioned. But a metaball is basically a shape that connects to itself. So if I have two metaballs and I bring them closer together you can see they’re becoming the same shape. And when I found out about that I was like wow, that’s great. That does a lot of the work for me, which I think if I’m making a digital thing it’s really important to find a way to make the tool do a lot of the work for you. So with this it’s easier for me to make an organic shape instead of…like if I want to make a neck I can just make two balls and it’ll automatically join instead of having to worry about the geometry and all the vertices, it kind of does that for me.
So the way that I generated this doll was I made the head first. So if you run it, it makes a new one each time. And the head is always different, the body’s always different.
But what I do first is I make the head. And the head has different options. Like it has a function for making the eyes, for making ears, making like a back of the head. And not all of those always run. So I could have one that has like a longer snout, one that just has a flat face, one that has ears, one that doesn’t. And then it stores the value of what I’ve generated into that body
So first you make a head and then I store the value for the radius of the neck, because the neck has to fit in to there. And this is informed by my knowledge of the traditional dollmaking, which is something that’s been around for thousands of years. And because I know how to make a doll with clay, once I’m approaching it from a different medium, which is Blender in this case, I know where I can take liberties. So I know that it needs to fit in, but if it’s not perfect that’s fine. It can just be good enough and it will work, and it will still operate and move around functionally.
So I store the value for the neck, radius for the top, and then I go in and from there I make the neck. The neck in this case is just the whole of two spheres.
And then I store the radius for the bottom of that neck. I bring it in, then I make the body. Which is this piece. And this piece is… I showed you the doll earlier that had a two-part one, so this has a one-part torso. But what it has also is the holes for the shoulders and for the hips.
So it generates the body, and then it stores the value for the hip radius, the shoulder radius. And then with those I go and I generate the leg. I generate the hand. And then I generate the arm. The arm length informs the length of the leg. And even within the arms there’s differentiation. So they’re usually at different angles.
And when I make stuff like this example, I feel like it’s more of a collaboration with the computer. Because I can go in and I can look at my code. And my code is a work in progress but also since I’m making it for myself it’s not something that I ever have to finish. It can be kind of an extension of my practice, so I can always come back to it and I can be like oh, maybe I want them to have like really weird fingers. So I can go in and script that. And as long as it works for me it’s something that…like I can just continue making them. Because even in a more traditional clay…I am not making the same doll every time. Like I go in and I go maybe if I try a different a ear that I’ve never done before. So that’s also something that you can do in the code.
And it’s more of like, I feel like it’s a collaboration with the computer even though I wrote the scripts. But if I go and I say I want this doll to have a long nose, then I can tell it to do that and it will still generate a new one for me that I don’t have complete control over but I’m like suggesting it and then it goes and it does it for me. Which I think is really cool. So it’s informed by my knowledge of traditional using clay.
So here is one that I printed out yesterday. And it’s got a little face, and legs and arms, and it fits together and you can move it around.
And something that I also think is funny is I make these dolls, but when I make them I’m just making like a creature. I’m not generally making like oh, this is like an alligator or something. I just make a creature that isn’t something specific but then when people see them they’re like “Oh, that’s a bear.” And I’ve always thought that was funny but then I made this and I generated this one I thought like “That’s a cow.” Which doesn’t make sense because I wrote it all and I know that it’s not anything, but I think that comes from the collaborative aspect of not having full control over it. So your mind just makes assumptions.
So the second project I’m gonna show you is this. So I made a tiny overcoat generator. And what this does is…I will show you him. So this is a doll. I wrote a program that specifically generates coats for this specific doll. And then it generates a pattern for the code. And then what I did was I ran it on an embroidery machine, sewed it together and then he can wear it. So he’s wearing two right now. He can layer them much like normal clothes.
So I made this on p5.js, which is another open source program, and this one is for creative coding. So if I open this, this is the pattern generator. The way I mean this was I used muslin and in real life I made a pattern for a coat that fit this doll. And then I scanned it and I upload it, and I looked at like the XYZ coordinates for all the specific points for that pattern. And then I wrote that to generate the shapes that I had. And then I went in and I added variables for randomness.
So if I press spacebar it’s going to generate me a new one.
And it also has different features. Since I wrote this for myself, I added more customization within the script. So if you press space and I like this but I wish it had sleeves, then I can just go and press S.
Or I like that but I don’t like the waist. So I can press a key for that. I can change the buttons. I can give it different neckline…
And once I’m happy with it I can save the file and it’s already to scale. So, once I have the pattern, I brought it into PEmbroider, which is another open-source project…this is a project I worked on with Lingdong Huang and Golan which is an open-source file generator for embroidery machines. And one of the features that I found really useful in it was you can just give it an image, which is I gave it just the pattern image that I generated, and then you can go and specify the outline of the shape and the fill of the shape.
So it has different fill options. Here’s some hatching. You can use Perlin noise, which I thought was really pretty, so that was one of the ones I use for the coats. There’s also full-color filling in with like a satin stitch, which is what this example is.
So this is a file that I fed in. This is it in PEmbroider after telling it to do a Perlin fill. And this is it printed out. It prints it out in this shape. Something I inspired in this project was I was really interested in seeing how the embroidery can add structure to the fabric. So in sewing this I just have to sew it together but it’s already embedded in the fabric. Like each piece is sturdier because it has the embroidery backing. And it fits together perfectly.
And here are some of the results. And it makes everything like small waistcoats to longer overcoats. It’s just a couple more variables, it gives it a lot more differentiation. And that’s another thing that I find useful with procedural generation, is that you can just give it like suggestions basically with random variables and then it finds something within that. So you don’t have to specify I want it exactly this length. But even if you want to, you can do that. So I think that freedom is really nice.
So the next project I’m gonna talk about is this mechanical puppet. So I made this as part of my residency at the STUDIO for Creative Inquiry. Which due to paperwork started the same day that lockdown started. So I started my residency and I had really wanted to make an animatronic, but then I was like…I don’t actually have all the tools available that I thought I would have. And I wanted to make an animatronic, so I thought about it, I was like okay, well I already know how to make things out of clay really well because that’s a medium that I’m super familiar with. And in my head I was like, well if I’m making an animatronic I have to use a 3D printer, I have to print things that are precise and completely fit together accurately. And I have to find a way to make like a metal armature and move it with motors… But then I thought well I could just use clay. And I can use what I have. And I can make it that way.
So I made…this is him without its face. His face is made of silicone. I made this animatronic doll which uses the same joint system as a ball-jointed doll. You can see here it’s got a knee, a hip, arm, shoulder, wrist, elbow. But also a face. And then it’s on a bigger scale. So this is about like a foot and a half tall, I think.
And then it uses a pulley system. So I use literal paper clips. What I embedded in the clay to tie this— I bought fishing wire to kind of channel the pulleys through the arm so that it didn’t get tangled. And when you pull it, the arm goes up. And then when you aren’t pulling it, due to gravity it’s heavy so it bends. Same with the legs. Pull it and it kicks up.
And here you can see the pulley system that goes through, but it also comes out the back. So there’s a hole in it, so when you pull it you can see what you’re doing and you can have access to that.
So whereas with my overcoat project and with my generative ball-jointed doll, I was using the traditional practice to inform the computer side for this. I was using my knowledge of CAD and stuff like that and thinking about rapid prototyping processes and how you make things. But then I was taking that and bringing it back into the traditional.
This is the inside of the head. So the head has a jaw that moves. And you can see it’s open here. As well as eyes. The eyes were also informed by…my mom has an antique doll that has eyes that had like a hinge in the middle of the head. And it’s got a weight at the back, so that when you lay the doll down the eyes close like it’s sleeping but then when you sit it back up, they open. And that’s just gravity. There’s no…it’s just a simple hinge that uses gravity and I think that’s wild. Like it’s really simple but then it makes a lot of sense and it’s really effective.
So I have a silicone face that goes over this, and it’s locked into these places so that it stays perfectly in place and then the elasticity of the face also holds the jaw closed. This is how the jaw works. It has a hinge. And the same with the eyes.
And this is it with the face on, this is it without it.
This is a little video showing the arms. Pull it up and it goes up. And then a video of the face. Just peel it off. And then you can see the mechanism inside and that’s also a pulley system, which the back of the head is open, in the earlier pictures. And then it fits. So I had made the face originally out of clay and then I designed the back of the face to fit perfectly into the clay face shell, and then that way I knew it would fit perfectly. Then I cast the face with alginate and then I used silicone, which I colored with foundation so that it matched the color. And then I just put that on.
So then the final thing I’m gonna show you is AlgoRat. So AlgoRat is a rat-based media collective that I have with my friends Char Stiles, Caroline Hermans, and Connie Ye. And basically what AlgoRat is is…we’d just like come together, and we would brainstorm, and we’d just say oh, wouldn’t it be cool if we made this fun little project. And then we’d just make it, and then we put it out. And for us it’s just like, to have fun and to be able to make stuff that’s digital and just brainstorm. But also it’s just for fun. So when I think of “homemade,” I think of the act of play and joy, and that’s I think really evident in this. Because we just come together and we have a fun project because it’s funny and we’re just making rats that you can customize.
So this project is called Sweateratcreator. And it’s a 3D rat, and then there’s a sweater. And we made this in the winter I think last year. And you just draw on it and then it shows up on your rat. You can change the color. You can rotate him.
And then we have the Ratmaker, where you can make a rat. And you can randomize it. You can change the background. If you want like a big foot in the back, or you want a thumbprint, or maybe you just want a road. And maybe you want to be a giraffe. And you can have your eyes closed, or you can have money eyes. Or fangs. And you can add some friends. And you can decorate it with roses, or diamonds. You can be blushing, or you can be crying, or you can blushing and crying. And then you can set the frame.
And then we also have Algotines which is a generative valentines maker. We scraped I think Hallmark to make…so we took Valentine’s Day filler text. And then you click “regenerate” and it makes you a valentine, which is good because Valentine’s Day is coming up next. “Love is like an endless love, and a haven for life, Gorgeous.” “You are my heart loves more special: effaces all my endless romantic movie.” So this is a Markov chain, and it gives you a different rat every time, and then when you click it draws on the screen.
But then another thing we do is we come together and we make birthday cards for everybody. So we’ll make birthday cards for a friend. Our friends. We have more than one friend. So this is one that we made for Caroline’s last birthday. And we just have like videos. This is just made on Glitch. And we just brainstorm like wouldn’t it be great if it had this?
This is another one, this one’s for Char.
This one is a little more interactive. You water the plants and then they grow. And once they’re all growing, it plays a little tune. And it rains rats.
And then this is our latest card, which we made for Connie, which it was her birthday last week. I’m not sure if she’s seen this yet, but happy birthday, Connie. And this is like a point-and-click adventure game where you click different things. That’s her her dog. If you click this…it’s really loud so I’m not going to play it, but he plays the guitar. Or there’s pictures of us.
And I think this is interesting… Or, something that I’ve been thinking about a lot during quarantine is like, what is the Internet if you…in terms of making… Because you can make a web page for anything. But like what does it mean to make a web site for one specific person, for one specific use. Like this is an e‑card that people are probably gonna see one time, but then it’s…it I think exemplifies “homemade” because we’re just here and we’re just making code that we want to make people smile. And I was talking to Char earlier but she was like it’s really fun because this is not code that somebody’s interface depends on, so it’s really low-stakes. And it’s just all about having an idea and just putting it out there.
And if you go to our Twitter, we put the stuff up, and I thought it was really cool because somebody saw our rat project and then they made their own.
So this was made by Stacy Yuan and Zeyao Li, and you just make a plant and you add friends and it’s lovely.
And then people were also sharing their own rats that they made on the Ratmaker.
So that is the end of my talk. And I’m gonna open it up to Q&A.
Golan Levin: Thank you so much Tatyana. This was lovely, and it’s been a real pleasure to to see your creative work, both with your collective and in isolation in your room. And sort of in the way that those things meet up.
I’m curious, in terms of your relationship to generativity…
Tatyana Mustakos: Yeah.
Levin: So you have this Blender program, it produces these ball-jointed figures which if you keep pressing a button each one is unique. And also generativity in the embroidery work you’re doing with PEmbroider, which is great. And then I see this kind of generativity that happens with the AlgoRat projects like the the sweater creator, for example. I’m curious if your relationship generativity is like you’re more interested in the way that it can help you make multiples, like towards having a clone army. Or you know, is it towards having surprise. Like you’ll keep hitting a button and you’ll get one that’s new that you weren’t expecting. Or if it’s more about interactivity and sharing it with the public.
Mustakos: I think it is in many ways like, all of them, but I also think mainly it’s… If you write a generative program for something you want to make, you’re kind of writing a program that constantly makes gifts for yourself. So if I write—
Levin: [“head exploding” gesture] Galaxy brain. Wow.
Mustakos: That’s why I— If I want another doll I just run this program and then I have one for me and then it’s just… But then it’s also really nice because I can also make it for other people. And I love giving gifts. Like I make a lot of dolls just to give people for their birthdays as like, one of my main practices, I guess. I just like making things for people and I like making things for myself.
Levin: I think your connection to gift culture is right at the heart of Art && Code: Homemade.