Good afternoon everybody. Welcome to this week's GPU brown bag. I'm really excited for this one. If any of you have talked to me recently, you know how interested I had been in textiles and just generally computational craft lately. And today, we're very lucky to have Jim McCann, who's an assistant professor at Carnegie Mellon join us. He's in charge of their textiles lab and does more interesting work than I could sit here and talk about in the time that I have. And so rather than me try to do a bad job of explaining his work, I'll just go ahead and let him have as much time as possible for himself. Oh gosh, thanks. Alright, so hey everyone. As we're getting started here, I want to test just a few of our channels feedback. It looks like you should have the ability to enter some things in chat and to enter some questions in Q&A. So I want you to go ahead and try to be the first person to put something in chat and the first person to ask a question at you. And I do it right now. And I'm going to check how much land there is. And the answer is going to be quite a bit. Apparently. It looks like about 20 seconds of lag. I'm going to expect some of that too. I've been trying to find the old Chat button in the interface and some of that to have been the the actual lag. That means I'm going to, when I do pause for questions, I am going to try to give you a little bit of a longer pause. All right, so let's get started. We're going to get started talking about what do knitting machines make? And this is a question that's been on my mind a whole lot. And the reason that's been on my mind is actually a little bit interesting. So we're going to start not by going deeper, but by stepping back a little bit. Talking about research. Talking about research in general, my philosophy has research is that research is toolmaking. Though. As researchers we do things like come up with more effective ways of thinking, more efficient processes or literally new apparatus, new tools will restrict this to computer science. You can think about kinetic theory. We develop things like information theory, complexity theory that really help us reason about the world. Processes. We build better software compilers systems, and we even build chips. Literal hardware do to help us do things. And beyond research being toolmaking, I think it's really important to realize that tool shaped behavior. Given the choice of doing two things that have the same utility to me, I'll probably choose to do the one that cost me less in terms of resources, that generally is the one that's easier, right? Though, when you're doing research, you're making stuff easy. And whenever you do research, therefore, it behooves you to ask, what do I want to make easy? And I decided a while back that the thing I value about humanity, the most I think is humanity's ability to create things. And so that's why I have been working on tools to encourage creativity. Just encourage making. Thanks, especially tools that do that with existing manufacturing infrastructure. Why? Because tools that work with existing manufacturing infrastructure make the world instantly better. You read a little bit of software that makes everybody's 3D printer 20 percent better. You've just had a huge benefit in the world as soon as you can deploy that software. Whereas if you, for instance, develop a new piece of hardware that makes the 3D printer better, it's going to take you much longer to deploy. The software has lots and lots of upside. Yet. I had a particularly interesting from that perspective. Now I'm going to talk about a bunch of, well, I'm going to talk about knitting a lot, it just a moment. But the way I'm going to structure talking about it is by using a diagrams are a series of diagrams that look kind of like this. Because I think to understand a creative tool, you have to understand sort of the universe of things that you might be interested in. What subset of those things actually be made. We'll call that the realizable upset. And then what sine of subset of the things that can be made can be designed in your tool. Call it design of all. And then maybe even a subset of that, which is what the tool is good at. And I am going to argue just for a moment that you already have a picture like this in your head. Like if you work with images on computers, you probably have a picture, something like this in your head. You know that of all grids of pixels on the computer, you can certainly get to all of those grids of pixels using pretty much any piece of software. But there are certain breeds of pixels that are easy to make it Blender certainty that are easy to make it Inkscape certain breeds that are easy to make and give hands. Not all of those grids can be shown on every display or printed out on paper. Particularly images with very high dynamic range, might be up in this corner. Though. I think this is a great way of capturing understanding in a particular space. And both tool makers and users benefit from this understanding. You know, if you're trying to make a tool, you might want to say, well, what's uncovered? Or is my tool covering everything that's realizable? Alright? And so the title of this talk, what do knitting machines make really is a, a way of getting at this picture. You can express this picture in a good way. Your head, you can express this realizable set than you know what? Knitting machines bank. Alright, that was kind of a long rambling way of actually getting back to the title slide where we started in the first place. But don't worry, we're going to get into some more detail. Just now. Though. I'm going to talk about what knitting machines make on a continuum of abstractions are the very left. We're going to talk about what the machine actually does. And then on the very right, we're going to talk about the most abstract representations I've seen in research days. And we're going to jump around a little bit, but let's start with what the machine actually does. This is a knitting machine. The picture of in fact, my my lab's vending machine, as it existed in the basement at Disney Research pittsburgh many years ago. It's, it looks a little bit different now we've put some more yarn feeders on the top and we've obviously moved it to a different building now that I'm at Carnegie Mellon, but it still functions basically the same. There are cones of yarn in the back. Urine travels from these codes up to the top through some yarn Chuck contention and mechanisms, and then down into things called Yarn feeders that bring the yarn to that needle bed. I'm going to highlight the deal bet here. Draw the exciting stuff happens. That's the way the machine works. And actually just realizing, I should probably try to convince you that this is worth understanding. So here are just a picture of some things made by knitting machines from little mechanical grippers, complicated cables, clothing, clothing for dogs, thing, a thing that says denim on it despite not being done, um, and this set of silverware, all of, or I guess these are civil work covers. So that's actually where it's zooming enough. Resolution like this is actually knit silverware cover. It, boggles the mind. I love the stack. Anyway. All of that as possible. Now let's talk about how right, Let's get back to this. So I was just talking about how urine got into the machine. What does your undo once it's in the machine? Well, it gets manipulated by needles. And as is my wants, I will going to just do this little interactive visualization. Now, those of you who've seen me talk about this stuff before, we'll notice that I'm not using the same visualization as before. And that's because I set myself the ridiculous goal of rewriting my visualization for this talk. And that's my way of saying there might be, might be crashes. Anyway. What have we got? We've got these yarn carriers. Though. There are three yarn carriers. This machine that sort of our prototype actually has the, the machine over here as ten yarn carriers. Bunch of them are parked over to the right. One of them is active on the left, but you have three yarn carriers are a little example machine. We've got these needles. Let's take a look at one of these needles before we try to get it to do any tricks. This is what's known as a, actually let's skip one on the other side here is what's known as a compound needle. That's one of the two main types of needles used in machine knitting. The compound needle has two controllable degrees of freedom. Got the slider degree of freedom. And it's got the hook degree of freedom. Using these two controllable degrees of freedom and moving the yarn carrier, you can actually make the machine do quite a few little tricks with yarn. But let's go through and see if we can execute all of these tricks. The first trick is called a tuck, and it is when you add a loop, do the loops that are held by a hook. She then do attack. The machine extends the hook, runs the carrier over it, pulls look back and I might hold, pull the hook back a bit just to pull more slack into the loop. And that is called a tuck. What's a loop onto a needle? Notice that this so our kind of, our tucks are direction dependent. So I can tuck a needle going to the right or to the left. So this needle on the right I touched going left. This wild-type going to the right direction is the direction the yarn carrier travels over. But it's also, are there additive in a nice way. So I can, I added one loop from the red urine. It can bring the purple yarn in and add another loop to the needle. Just add more loops and you can keep doing this until your needle breaks or your simulation breaks. Okay, though, add a loop, we understand how to do that trick. The next trick, pulling a loop through all the loops that are on our needle. This is known as a net. And as you might imagine, that's one of the things knitting machines do a lot. Before I actually talk about doing a net though, I think I'm going to talk about doing a drop. And you'll see how it's very similar in a moment. So what we'll do here is have the machine extend the slider to pick up the loops that used to be on the hook. And then push the slider all the way up and passed the top of the hook. Now as it's doing that, it's going to pull the bed back also or pull the needle back. Now what's not, what's not shown in this visualization is that right about here and about here. Here. There are actually some pieces of metal that stick out between the needles and that prevents loops from going back too far away. It tends to push loops forward, keep them out of the rest and that's good because otherwise your machine will get all tangled up. What will happen is I'm pulling acetyl back, is those loops are going to run into that piece of metal. And they're going to get pushed and pushed and pushed and pushed and eventually they'll fall off all off the machine. So this thing is this, this move is called a drop. Where I think obvious reasons while yarns. And the reason I talked about the drop just then is because you can actually do this pull through tract. You actually use the drop as part of the pull through. So I want to pull a loop through this existing loop on the machine. I can have the machine actuate the needles as if it's about to do a drop. But whoa, bring the loop in. And how you've got this really cool setup where the new loop is kind of sitting under the slider, but sitting on the hook under the slider. And the old loop is sitting up on the slider, which means that I can have the machine push the old forward and then pull everything back. And the old loop will fall off. And they've had more time to hack on my yarn. Sam would actually has settled around the new loop and you'd actually see a sweet look in net. As it is low, you got half of that. So as such are the vagaries of physical simulation. That's the pull through operation, also called a net. Now the final thing you can do, let's just drop this loop to get it out of the way. Now the final trick you can do with these maneuverings on this needle is alcohol I tighten up. That's actually not a thing you could really do on knitting machines, because real knitting machines don't have yarn that phases through other yarn. But hey, we can take a moment and appreciate that though. That not it's running away, It's not long for this world. Well, I see some questions about, Hey, what visualization software using. I'm just going to get this out of the way right now. Visualization software I'm using here is called press hack to I wrote it as a sequel to a visualization flash presentation software I used to use called Prozac. If you want to make good talks, you should write your own software. Don't try to have somebody else tell you what your talk needs to be structured like. Right? So I'm going to try to show you this final trickier pull through and save. To do that, I guess I want to. But to do that, the first thing I'm going to have the machine do, let's get these are encouraged by is put the RNA keep up here on the slider and then run another yarn carriers. So basically we're going to start out like we're trying to do a pull through or a net. But now we don't have a fancy additional move or get the, we'll get the back bed needle associated to disrupt that needle into play. So now what will happen is we'll have the machine extend the slider as if it were going to just drop this new loop off. But instead, have it pull the back. That needle in. Rock will rip off on the back needle. Now it is looped. In theory at least it is created a new loop around this old loop. The while loop with the red DO Loop. Modulo untangling that has happened here. Brown that all right, and that, that crazy tract is called the split. Or if you do it without any yarn, you've just moved the needle, the loop from one needle to another, and that's called the transfer. Those are all of these tricks that you can do with needles, all of these little things you can have the needles make. Now. You might ask, well, wait a second. Well, let's see. You might have a couple of observations here. One you might note, hey, wait a second. There's like a nice structure here where everything in the left column involves adding a yarn, running a carrier, and everything in the right column doesn't involve any running a carrier. That what goes in this box up here. What happens if you tried to talk but you don't run a carrier. So remember tucking is extending loop, running a carrier, pulling back. If you do that without running a carrier, you're asking the machine to extend the needle and then pull the needle back. So it's not very exciting. But yes, you could actually ask the machine to do it. All right? You might also ask, well, wait a second, is this everything the machine can do? And it turns out that with knitting machines, you can actually answer that with a resounding yes. Because the way that the needles on it in the machine move, if we look at a needle from the style, try to draw a picture here. Needles. The needles have a little tab on them and there's a thing that runs over them, call a cam plate. So again, we're seeing the camp plate from the side, there's a groove the group holds that's happened, the needle. And this is what a template looks like for a relatively simple knitting machine. So here are all the grooves that some needle tabs my move it this path. Other needles, depending on how solid-phase player might go through this path, go through this path. And each of the paths can be customized. Pieces of the path can move up and down. Under motor control. There's arrangement of solenoids, motors on the other side of this plate. And so what we can do is just go and check that we have accounted for all the paths. It well, that's the path. This is like the do-nothing path. Maybe one of these paths is the TOC path. Generally it would be one that extends less hard than the that path. And in fact, you can inspect all of these paths out the template and you can then gain some confidence that yes, indeed, you know, the machine, that you have, all the operations that machine can do captured. And I have m, So I'm convinced. I realized that I'm convinced is not a great proof, but that's somewhere to start. All right, So now that we know exactly what the machine can do, the next question to ask is how do we program it? And my answer is programming with knit, knit out as a generic knitting assembly language, primitive language control language. That, yeah, we came up with in my lab back at Disney and that we renamed it and we came up with it outside of Disney. So we get public debate and stuff and did out names each of these operations in a pretty compact way that you can just write them all down at the file. Though, the outer loop operation, which I claimed was the puck is called tuck. The parameters tok takes is a direction to run the carrier, a needle front-back, plus an index to run the carrier over. And the name of a carrier to run. This pole to pole through operation is called, as I said. Again, takes a direction, a needle name of a carrier, hole through and save operation is called split. That do nothing operation is called AMS. Hey, we want to be complete here. And the, the drop operation is called drop. Like the naming on that one. It is what it is, what it is. You don't need to be an expert to understand that while. And the, the movement of a loop operation is called transfer. Add that to a bunch of additional operation or not a bunch, a few additional operations for urine handling. I will make I also want to highlight like I. This is a yarn handling operation. If you get into knitting, you're going to disagree with me, but then you should email me and I can explain my position on that rack which actually shifts the needle beds with respect to each other. I didn't really talk about that, but it's really useful. One, movie loops around and then supports extensions because an unacceptable language is a dead language. And in fact, we generally use these extensions for machine specific features like take down systems and as elastic yard advance. Basically there's a bunch of details that I didn't go into in a lot of that falls into extension. Poof. All right. So I'm going to show you just some, I guess these are little relax simulations, but some examples of code and the things they made. And propose our first idea for what knitting machines make, which is that knitting machines instantiate it out code. And I'm actually just going to pause here and try to give you a full 30 seconds in case you want to ask any questions just about knitting machine mechanics or net out. Where are these various operations? Maybe I'll pause back here that you can see the operations are. So I know Ellyn mentioned a little bit ago that a lot of these operations that you've been showing, it'll look a lot more like crocheting, knitting. Is that pretty much true for any machine learning? So I didn't see that. Thank you. Oh, and that's a pretty good insight. And I think the reason that you might say that is because in crocheting, you're using a thing called a latch hook. Which if I can get this, there we go. Here's some blank space. So and in crocheting, you're using potentially a latch hook, which is effectively a knitting needle, like it's a knitting machine needle, though, it has a little latch that potentially it has a latch. Maybe you just have a way of closing this up yourself, but you're basically using a hook to manipulate your loops. But whereas in knitting, what you'll see is you're holding a bunch of live loops at once. So you have all of these live loops. And each live loop, or at least a milling machine is how long needle. In crocheting. You're most of your live loops are held potentially on your crochet needle. And you are, Let's see, the way you're routing yarn between the loops is slightly different, especially at the beginning and ending of the crochet operation. So this is going to be a very wishy-washy answer, but sort of basically you can make the same structures. There's some overlap. Crochet is a fair bit more flexible because you're holding everything. And I, at least from my perspective, when you're reasoning about crochet, you kind of reason about the free end of the yarn and the position of the HUC at the same place. You're kind of reasoning about carriers and needles at the same time. But when you're reasoning about knitting, you're reasoning about the free under the urine and the ellipses or help independent link. Yeah. Though. In case you want a slightly more detailed description of the way I think about crochet, at least there we have an SCF paper called representing crochet stitch meshes. Which kind of goes into how to think about are how we think about it with respect to resources. Yeah, I think you're looking for a cool project some time trying to figure out how to make a crochet robot would be awesome to get back to this slide. So I saw a couple other things pop up. A comment saying, Hey, this reminds me of like the G code. I think it's sort of like that. But honestly there that is simpler. It doesn't have such things as control flow, which is actually why these little code snippets I put enter are really JavaScript that writes out than it out because I'm not going to write all of the debt out commands by hand for something that's just silly. Though ON asked, is there any way to add multiple loops into one loop? The answer is basically yes. Though, if you want multiple loops to get through, you just put multiple loops on one needle. And if you want to knit through multiple, if you want to knit through with multiple loops, you actually just run multiple loops during this, this net operation. So you can see how I have multiple loops in the hook that will get knit or that will get pulled through the old multiple loops that are now on the slider. So yeah, in fact, this idea of running multiple loops on the outside of your net, making here. Running multiple loops on the outside, on the inside of you to putting multiple loops on the hook during a net that is called Leydig. But the excitingly, it's called that's, yeah, let's get out here, get off. They think like that. Sorry. The software times. It's called plating. Not think, which it's just infinitely confusing to me. That really seems like it should be plating. It's actually cladding are a great question from Becky. Knitting machines don't pro, know they, they, they don't. There is no pearls. Remember, pearls just an illusion. Perl is just knitting from the other side. So what knitting machines do is they net on the back bed. Though, they only front net and backed it. I actually think we should just do away with Perl has a term in general, because I think it's really confusing. It sounds like it's a real different thing when in fact it's just doing a debt from the other side. Final question was, how do we communicate our code with the machine? The answer is that knit out goes through, I think, called the backend and gets translated into a machine specific format, different for different kinds of machine. We have backends for she'd mistaking which we use a lot, mitigate, which we use a little bit, and Troll, which sort of works. And if you want a backend for your machine, just invite us to come hang out with your reading machine for a while. We'll make it happen. All right. I am going to move it on though. We could. Let's get back to this question. So I ask the question, what are knitting machines make? And I propose the answer that knitting machines instantiate that out. So let's draw the picture. Let's draw the picture of the space. If we think about the things in the space as knit our probe though, the space in it. So we'll say, Okay, well, look at the spaces that our programs, how much of that space is realizable on the machine? Well, the whole space is realizable on them sheet you can run any knit out program knitting machine. And how much of that space is design of all, say with the text editor? Well, you can design the whole space. You can write any did our program in a text editor, though it seems at least to a first cut like this idea of knitting machines make knit our programs is great because it gives us a really nice picture where what's decidable, realizable exactly coincides. But there are some problems. I want to point out. The biggest problem here is that notice there's no easy said if there is no knit our program that is easy to write. Interesting it out, a little bit tricky, it requires domain knowledge. Also, there's a very unintuitive notion of inequality here. You could have multiple programs that caused the same piece of fabric. You all saying Reckoning to fall out of the machine. But for instance, maybe they bake that piece of fabric on different needle. So these little program snippets, one of them as making the fabric between needles 10, 20 and 30, 20 wide fabric. And this other little step it is making the fabric between one and 20 still at 25 fabric. And there's a ton, a ton of different programs, you know, countably many different programs that will result in exactly the same fabric falling out of the machine. But this doesn't seem great from a understanding the space perspective. Maybe did OT programs isn't a great way to look at. Thanks. Finally. And all of you who do CS stuff know this most programs are junk. And this is doubly true of net our program square. Most of them will cause the machine to twiddle its needles in various ways. But you might not even get anything out at the end. Though. Knit out is maybe a little bit of a non-starter at least as a final way of thinking about whether machines can do. But it's good to have a low-level language to work with. And also I will, I will say better you, I can help. So we have a live coding sort of setup, which you can get to on our webpage. And this are webpage URL will be at the end of the talk to, so you don't have to write this down right now. And you can put your run it out. Javascript that writes that out. Javascript that writes it out using a particular library on one side. And you can see what it makes the other side. And you can hover things and it'll highlight so you can make connections back and forth between your code and your output. Now the visualization is a little bit simple and so on, but it's certainly better than nothing. And it's certainly better than forcing you to run everything on a machine. I'll thank you for posting that link in chat. All right. Let's zoom out again. Knit up programs, give us a picture of the space which is maybe a little bit too granular, a little bit too divided. And maybe the problem was that this was just to mission-oriented, where we're thinking about the space as the machine made things, rather than thinking about the space of what the machine made. Though. I glance at my timer go from I had a lot of material. Let's go really quickly through a few other things. Let me propose a different idea to you. Knitting machines make paths in space, but let's focus entirely on the output of a knitting machine. It'll say, Okay, everything in an even sheets that she makes is going to be some non-intersecting path in space. Maybe one or more paths actually because you could have more than one yarn. So here is a yarn. And, well, what's a good set of equivalence relationships for these urines in space? Any sort of intersection tree length preserving deformation. And so you'll feel very smart about that. I certainly, you know, when I think about this way, this way I'm like, yeah, it seems like a great idea. And then there's this problem which is, well, wait a second. This stuff unravels. You could just take your nets and unravel them, pull them apart. Fact, any, any path in space. After about a loop, you could just turn into a straight path that space, even if it's tangled up with a bunch of other paths that space, you could just turn them into straight paths in space. And so this is a big problem for thinking about getting this way. Because what ends up happening is instead of making structures, all you're really doing is making things that collapse into these equivalence paths. Equivalence classes that are essentially sorted lists of yarn lengths. If you know, if this is your, if you're subscribed to this paths in space under length preserving deformations equivalence relationship. Then every, everything that has the same length of yarn is the same type. Now there are ways around this though, so that a Besser over there at Georgia Tech as a paper from 2020 that talks about how, if you think about it, these infinite sheets of knitting, you can take their unit cell embedded in a torus and then use some tricks to transform that tourists. That you have a link IT space. And now you have all these closed paths and now you can actually deploy the tools of say, not theory. I'm not sure how to do that for things that machines are actually making because then he wishes don't make infinite sets of things. But I think this is promising and perhaps, perhaps we will be saved by so that at some point. Yeah, So under this idea, the idea of knitting machines making paths and space things go pretty horribly wrong pretty quickly. You just have too much equivalents. So sure, paths in space, everything is realizable in the machine. It can cut your arm length. Everything is design of all. You just have to list a bunch of yarn lengths. Everything is easy because listed yarn lengths is easy. But wait a second. There's way too much equivalence here. You know, a, a, a cone of yarn and a sweater or a, you know, an outfit are the same thing if they have the same amount of yarn to them. In this picture, though, we try focusing on what the machines dope did, that didn't work. We tried focusing on what the machine we tried to focusing on what the machine makes and it didn't seem like it worked either. We had too many degrees of freedom. So what if we go higher level and try to lock things down a little bit more. What if we start thinking about surfaces in space? So let's talk about, let's take our knitting and embedded in a surface. I think. If you've ever, if you've ever used manipulated a knit object, most at objects week, we pull on our surfaces in space. Though. Why don't you kind of think about the surfaces that have genetic. The way that you might do that is built some sort of a mesh structure and decorate each face of the mesh with a label of what genetic. And then equivalence again, you could use like an intersection free deformation plus label matching. But now you're deforming a surface, though. It can't get away from you. It's all nicely locked down. All the all the urines are nicely contained and held together. This is a better idea or at least a more productive idea. In fact, this is a very popular idea as well. This is something that we've used through all of our genetic papers that are out of my lab, that other folks from other labs have continued to use this idea. But it's a very popular option now. Particularly what all of these papers do more or less is they each make some guarantee along the lines of if you can surface your flatten or if a surface can be flattened in a particular way, then it can be machine net, potentially with some resolution loss. There. Just to give you an example of one of those guarantees, auto net says an oriented 2D manifold with a boundary M is livable if and only if there exists an inverse function F from M to negative 11 such that the graph of f has a plater upward planar embedding. And that's a much more, this is actually a compact and meaningful thing. If you become familiar with this statement, you could look at objects and decide pretty quickly whether the interval, I will say that actually would cross out the if and only f. Because the notion of double that the paper introduces is actually a little bit more strict that true, general that ability. Though it particularly says nibble at half gauge, which is keeping your loops together a particular tight way. If you relax that to just be double that and engage that. This no longer is difficult. Or alternatively, you can get rid of the the planar part. Diabetic. A brother, a little asides. But the main takeaway is that this is basically how Graphics has talked about bidding for quite a while. Now is we say, we think about surfaces because we're good about reason, that we're good at reasoning about surfaces at graphics AD. Then we come up with some subset of all surfaces and a guarantee of how to knit. And that results in a picture that looks kinda like this. You think of all surfaces in space. We have some notion that there's a realizable set of surfaces in space. Exactly what this set is. Kind of, I guess definitely the union of what every paper can do and maybe even a little bit more. Then each paper kind of comes in and builds a design of all space or comes in and tries to make it even bigger space and so on. But like every visualization here we've got were like every thing we've seen so far, we still have a problem here. I think you may have spotted the problem. It's, it's this. Now this is not a graphical error. This is illustrating the fact that, in fact, knitting machines that can make stuff that aren't surfaces, though, particularly, I would call this stuff volumetric bidding. And examples include spacer fabrics. Though this is a fabric that has these intrinsic and lumps in it. Intrinsically won't be as it comes off the machine. And the way those lumps are made and these are these are actually thickness changes. So it's not like the fabric is bumping up and going back down like a surface. Now if the fabric is getting thicker and thinner, the way that those lumps are made is by putting lots and lots of monofilament into the inside of the fabric, connecting to other layers of fabric. That's really just this dense forest of monofilament or the inside of the fabric. Want to learn more about how those work. Or you could look up spacer fabrics. Aliyah Elba wrote that up. And it'll go a lot. I mean, the real purpose of this paper was just to tell you how to make space for fabrics, because it seems like things that people didn't really know. Let's face it, fabrics are just 1 in this big land, a volumetric nutmeg, which the idea of paths in space just does not, or surfaces in space doesn't really allow us to capture. And so pass in space, had too much freedom. Equivalence really mess things up. Surfaces in space was insufficient. And we lost part of the realizable set. Though. Let's talk about a sort of Goldilocks point between those. And then we can bring this thing in for a landing. The Goldilocks thing, the Goldilocks idea here. The compromise, if you will, that is that knitting machines make labeled paths in space. The paths and space was great, but it had just a little bit too much freedom. So how about we ask you to take your paths and space and ease them. So pick some regions of your path that must be isomorphic to a countable set that will provide you that actually corresponds to the things that the knitting machine needles can do that we saw earlier. Breeze them, stick them in spheres. Basically you can see all these little spheres with, with paths stuck in. And then you still get to route, route between those spheres freely. And now for equivalence, you're gonna get the same continuous intersection free deformation idea. In fact, we're not even going to restrain you to length preserving. You just get to continuous intersection for you deformations. But you have to rigorously transform the labels. And this is cool because basically what it's doing is it's saying. But all the interesting stuff in the digging into these little spheres, The prevent them from unraveling and then transform everything else freely. And this gets you into a space that is nice. I think. Though. Looking at my time, I don't actually have time to talk about this nifty fact, but it turns out there's a property called UFO upward forward and ordered. That is true of one of these labeled paths in space. If and only if it's machine-readable, which is pretty nifty. It means that not only can machine the double thickness, everything that she did Hubble has an upward forward ordered label path. But everything that's an upward forward ordered label path is machine that, that's kind of a nice two-way connection. And importantly, unlike the surface papers which make up a water two-way connection and a restricted domain. This connection works for everything the machine cadet to this gives us the following picture. Label paths in space. There's an area, every label path and spaces design of all wisdom, labeled path drawing tool. Not necessarily evil, easy. And then some subset of that space is realizable, and that's the entire realizable space of that sheet. Notice no leaks here. And then maybe some subset is easy to design. It's a pretty small subset right now. Currently, the only tooling we have to design these things is just to convert out-of-state meshes. So they haven't got any additional desirability. But hey, that's because we're still building tools. Also it's problematic because this path to upward forward ordered path thing is hard. From a complexity theory standpoint, you could show it's at least as hard as not isomorphism, which is, well, there's no, no polynomial time algorithm for not isomorphism. And finally, you still have to think about a lot of stuff. But you still have at each one of these little frozen bits is kind of like one that out instruction. So you have to think about thousands, tens of thousands, millions of things if you're trying to decide these by hand. But I guess, you know, D1, the better design tools. But that does complete our picture. And so sort of in summary here, what do knitting machines make? Well, I think the answer is, I'm away something glib like. It depends what you mean by what. But more concretely, I think label pads that space is probably the best answer we've got going right now. So to wrap up and then I'm going to address these questions. Let's do these sort of in increasing order of generalities. Though. Knitting machines make upward forward ordered labelled paths and space, gray couldn't really get into what those were. I did have a section about it, but I timer says I should not use that section. Please do feel free to strike up a conversation, post to talk if you're interested. Yeah, there'll be, I hope a paper coming out about this at some point are still really working on it. But stepping outside of knitting, like these, I actually really like how these pictures came out. I think that's kind of a cool way of thinking about your domain and illustrating how you understand the domain. Maybe if you're doing some research stuff, you should think about drawing a picture like that for your domain. If you do, you should send it over to me. I'd love to see it is a great way to talk about how you understand that domain. And then finally, just remember in the framing here, I'm doing all of this stuff because I think it's pretty cool that people can make stuff. It gives me a good reason to work on this kind of research. So if you're doing research, you're just starting a research career. You're in the midst of one. It always makes sense to ask what is your research encouraging? Maybe even asked that a future presenters at this webinar. So with that, here is by contact information, you can always email me if you don't get your question. The remaining three minutes here, you can go to textiles lab.github.io to get code data, et cetera. And all of the stuff that I've worked on talked about this talk is really work this together with a whole host of collaborators. And I think even some folks who didn't make it onto this list, Jonathan make an Kelly killer, Bernstein, Bernstein UK, Karachi, over at MIT. Some of the folks who are foundational in this upward, forward or work. And also of course, we've been supported by some NSF grants done by the funding from cima, say key for work that actually didn't talk about it all in the stock. Disney got the lab started. And honestly, the most work that we've got DOD is just volunteer effort. People who say, I like what you're doing. I have a knitting machine. You want to come use it. And that's it. Looks like I have just a smidgen of time for questions. And I already see a great question from Ellen here and the top or in the chat, which is, what is the relationship between machine-readable and human-edible? And that's a great question to ask. It turns out that humans are really, really flexible when it comes to editing. You could basically, you can human net kinda anything. It's really unclear even what it, what that object is versus any other form of fabrication, because knitting is just manipulated yarn. So human-edible is sort of this huge space, huge space. And then machine that Ebola some tiny little space inside of it. That's the relationship. All right, So it looks like I am way I see one there. Thank you. Have a clever name for these pictures of domains. I call them domain pictures. We have one from ON. Have you gone backward and taken upward, forward ordered sequences and seen what the knitting machine will produce. I think the short answer to that is we have some tooling that allows us to do that for particularly relatively short sequences. And it makes the thing that you want it to me like it makes it, it is definitely every upward forward order sequence you can fabricate on the machine and vice-versa. Get out the yarn that you'd think you'd get out from the sequence, from the the label path. Well, thank you a bunch for coming and giving this talk. I know, you know, this is a bit more mathy and craft exceed that. Not a huge really get into. But it is a really interesting way to me. I think my biggest takeaway from this is this is basically why we're able to get away with, like the clever things that you've done with nato and everything is, what we're looking at is math and pads. And so it's a very programmatic BYU. And I find that like a really engaging way to think about these sorts of things. Yeah, I think just a riff on that for a moment. I think there is this wonderful kind of separation in any craft or manufacturing process between like how you make a thing and what's the effect guess. And playing with that divide and trying to understand that divide leads to things like more efficient processes. Because you new way to make the same object or yeah, just really helps you design better tools. And just anyway, thank you for the invite. I realize we're basically at time. I invite anyone who has any further questions, do not hesitate to e-mail me, get in touch. I will answer emails already. Thanks so much. Have a great afternoon. Farewell.