 My name is Amy Wobello, I'm a sailor HG on the Internet, and a little bit about myself. I recently started my own publishing company to write computer science scenes for high school age students and make computer science more accessible through drawings and comics and stories, and I left my job as a developer at Airbnb to be able to do this full time. If you care about CS education and want to come talk to me about this afterwards, I'd be super happy to talk to you. And today, I'm going to talk to you about knitting. All stories start with an inspiration, and here's mine. A few years ago, a video game review site called Kotaku published an article about Nintendo add-ons that didn't quite make the cut. You might here have heard of some of the peripherals that did make the cut, a baseball add-on to play baseball video games, a golf add-on to play golf games, a super scope for shooting games, but you might not have known that Nintendo was seriously contemplating making a knitting add-on. And this is the proposed advertisement for the knitting add-on, complete with bad puns. I'm not sure if you can read it, but in the right corner, it says, why needle the competition? So the interface would be just like Mario Paint, but instead of seeing what you drew on a screen, it would also knit what you had drawn onto a sweater or mittens or a scarf. Most of the comments left on the Kotaku article were along the lines of, lol, we can see why this one never made it to production. But I had a totally different reaction. I was so sad and heartbroken. I had never wanted so badly for something to exist in my life. So I did research. Didn't Nintendo make any prototypes that I could get my hands on? Did anyone else make home knitting machines that I could use? And it turned out that in the 1980s, there were a bunch of companies that made home knitting machines, but they weren't very popular, so they stopped making them. And that's when my dream was born to get hold of one of these old machines and to hack it to make the Nintendo add-on that never was. As fate would have it, there was one of these super old knitting machines for sale on Craigslist, an hour and a half drive from where I live. So I went to pick it up, and it was broken and parts were missing, but it was a start. It was a start of my dream, and I was really excited about it. And this is to reiterate the dream, again, in cartoon form, to be able to take pictures, to send them to a knitting machine, and to end up with sweaters. Basically to create a networked yarn printer. So now that I had gotten hold of one of these machines, the first thing I needed to do was to learn how to use the damn thing because this is what a knitting machine looks like. It has 200 needles that move an out, and you can thread up to two different colors of yarn to create patterns. And if this is what using a knitting machine looks like, this is what using a knitting machine feels like. And I was worried that if I pressed the wrong thing that this would happen. Or at least that I would break some of the needles and have no idea how to fix it. Luckily I had a team of people to help me face this challenge that was both fearless and inventive. I had a team of Airbnb engineers that helped me hack the knitting machine for an Airbnb hackathon. Airbnb hosts internal hackathons twice a year for the entire product team, including engineers and designers. And so many different kinds of engineers signed up to work with me on this project. An iOS engineer, an SRE, a performance engineer, a front-end engineer, and this is all to say that we were a bunch of engineers who knew nothing about knitting, let alone machine knitting. But all of my teammates were super amazing, and this was probably one of the best teams that I've ever worked on in my life. And I think that partly it was because we all had zero ego attached to knitting. This was just kind of a wild adventure that we were all in together. So after we set up the knitting machine and were able to successfully knit rows of solid color, the next step was to learn how to use the machine to knit patterns. And even though this was something that was already built into the machine, it was twice as complicated as our first goal, because there was twice as much yarn to get tangled and 50 more pages of the knitting machine manual to read about how to set it up. And just to show you how non-trivial this step was, on the left is our first attempt at knitting one of the built-in patterns. And then many hours later, you can see that the polka dots that they were supposed to be. But after we had figured out how to use the knitting machines built in patterns, it still wasn't quite our dream yet. As far as we could tell, the intended user of a knitting machine was a grandma in the 80s, because all of the patterns that they had available were like polka dots, bows, teddy bears, roses. And I don't know about you, but I would much rather have a sweater with grumpy cat on it than a teddy bear. So we're still important to us to figure out how to send the knitting machine our own images, which is step three of our goal. And this goal would be split up into several parts. So because it's from the 80s, the knitting machine took additional patterns via a floppy drive. And you could buy floppy disks that had additional patterns to upload to the machine. So we can emulate a floppy drive in software and send that fake floppy drive our images. And then we would need to build a custom cable, one that would have connected the knitting machine to the floppy drive, but would instead now connect the knitting machine to our computer. So it would be serial to USB. And we had to custom make this, because the knitting machine had a really weird pinout. And luckily, we found documentation about that. Then we had to convert all of our input images into low res 1-bit maps, because that is what the knitting machine took as its file format. So here's one of our first custom patterns. And here's floppy cats. So by this time, we were having entirely too much fun with this knitting machine, but we thought that we might be hogging the fun. We didn't want sending pictures to the knitting machine to be limited to just us. We wanted anybody in the office to be able to do it. So the next step was to make knitting machine image upload available on the web. And it would be a super simple interface. You'd choose a photo to upload, and then you'd send the image to the machine. And it would print out instructions for which buttons on the knitting machine you should be pressing in case you would never used it before. And here's a video of it in action. And I don't know if I have the audio hooked up. So we wrapped the library that converts the image into a one bit bit map, and we call that knitting pattern. And there's also a wrapper for the floppy disk library that we found, and we called it pattern disk drive. And when the user presses the upload button, we save the user's image to a file, use the image processing library to convert the image to a one bit bit map, and then we start emulating the floppy disk drive. And then in the browser, we display instructions for the user for which buttons they should be pressing on the knitting machine. So things that we learned from this adventure. We gained mad respect for grandmas and anyone else who knits because that shit is hard. Another learning is that teams work really well when they operate with zero ego at stake. Also, it's really enjoyable to apply Ruby to any of your hobbies no matter how unrelated they might seem. And then the last learning is that it feels really great to take up something that you know absolutely nothing about. Learning something brand new and very different from what you do day to day is really humbling and challenging, and it's refreshing. And it reminds you what it's like to be a beginner, which is important to gain empathy with new programmers that you might work with or teach or mentor. And the epilogue of this story is that we eventually got good enough at using the machine to be able to knit full sweaters with our designs on them. And here is a doge sweater, which I also brought today. And lastly, I would love to talk to you about ideas if you care about hardware hacking, combining code with art, and about CS education. Thank you for listening, and thank you so much for having me.