Amy Wibowo

Sweaters as a service

@sailorhg
In the 1980's, Nintendo had plans for making a knitting add-on to the NES, with an interface that resembled Mariopaint, but with patterned mittens, sweaters, and scarves as output. Sadly, this product never saw the light of day. Devastated upon hearing this and dreaming about what could have been, a group of engineers (who knew nothing about machine knitting) set out to hack a knitting machine from the 1980's to be computer-controlled, using a tutorial from adafruit as a starting point. Hear about our struggles and triumphs, which ranged from learning to replace knitting machine needles and conduct basic repairs, to emulating a floppy drive and hacking together a custom cable cable to send our own patterns to the machine, to writing our own yarn printer API in ruby/sinatra and printing our first doge meme in yarn. And watch us (LIVE!) as we send images and knit requests to our yarn server, and behold as it knits ugly sweaters from those images!

Talk given at GORUCO 2015: http://goruco.com

GoRuCo 2015

00:00:14.030 Hi, my name is Amy Wibowo, also known as sailorhg on the internet. I recently started my own publishing company to write computer science scenes for high school age students and to make computer science more accessible through drawings, comics, and stories. I left my job as a developer at Airbnb to pursue this full-time. If you care about computer science education and want to talk to me about it afterwards, I'd be super happy to chat.
00:00:28.200 Today, I'm going to talk to you about knitting. I'll start with my inspiration. 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 have heard of some of the peripherals that did make it, like a baseball add-on to play baseball video games, a golf add-on to play golf games, and a Super Scope for shooting games. However, you might not have known that Nintendo was seriously contemplating making a knitting add-on.
00:00:50.179 This is the proposed advertisement for the knitting add-on, complete with bad puns. In the right corner, it says, 'Why needle the competition?' The interface would have been just like Mario Paint, but rather than seeing what you drew on a screen, it would knit what you drew onto a sweater, mittens, or a scarf. Most of the comments left on the Kotaku article were along the lines of, 'We can see why this one never made it to production,' but I had a totally different reaction—I was heartbroken. I had never wanted something to exist in my life so badly.
00:01:14.600 I did my research, looking for any prototypes that I could get my hands on. I wondered if anyone else had made home knitting machines that I could use. It turned out that in the 1980s, there were a few companies that made home knitting machines, but they weren't very popular, so production ceased. That’s when my dream was born: to get hold of one of these old machines and hack it into the Nintendo add-on that never was.
00:01:36.600 I found one of these super old knitting machines for sale on Craigslist, just an hour and a half drive from where I live. I went to pick it up; it was broken, and parts were missing, but it was a start. This was the beginning of my dream, and I was really excited about it. To reiterate my dream: I wanted to take pictures, send them to a knitting machine, and end up with sweaters—basically, to create a networked yarn printer.
00:02:00.160 Once I obtained one of these machines, the first thing I needed to do was learn how to use it. A knitting machine looks quite complex—it has 200 needles that move in and out, and you can thread up to two different colors of yarn to create patterns. Using a knitting machine can be daunting; I worried that if I pressed the wrong button, it would result in chaos or at least break some of the needles, and I wouldn’t know how to fix it.
00:02:25.000 Luckily, I had a team of fearless and inventive people to help me face this challenge. I had a group of engineers from Airbnb who assisted me in hacking the knitting machine for an Airbnb hackathon. Airbnb hosts internal hackathons twice a year for the entire product team, including engineers and designers. Many different kinds of engineers signed up to work with me on this project: an iOS engineer, an SRV performance engineer, a front-end engineer. To put it simply, we were a bunch of engineers who knew nothing about knitting—let alone machine knitting—but my teammates were amazing. This was one of the best teams I've ever worked with.
00:03:03.000 After we set up the knitting machine and managed to knit rows of solid color, the next step was to learn how to knit patterns. Even though this feature was already built into the machine, it was twice as complicated as our initial goal because we had to deal with twice as much yarn getting tangled and read an additional fifty pages of the knitting machine manual to understand how to set it up. Our first attempt at knitting one of the built-in patterns resulted in a creation that was far from the intended polka dot design.
00:03:52.000 But even after mastering the built-in patterns, it still wasn’t quite our dream. As far as we could tell, the intended user of the knitting machine was a grandma in the 1980s, because all the patterns available were polka dots, teddy bears, and roses. Personally, I would much rather have a sweater with Grumpy Cat on it than a teddy bear. Therefore, it was important for us to figure out how to send our own images to the knitting machine, which was the third step in our goal. Since the machine was from the 1980s, it required input via floppy drive, and we could purchase floppy disks containing additional patterns to upload to the machine.
00:04:55.000 We set out to emulate a floppy drive in software so we could send our images to it. We then needed to build a custom cable that would connect the knitting machine to our computer instead of the floppy drive, converting it from serial to USB. We had to make this custom cable because the knitting machine had a unique pinout. Fortunately, we found documentation on that specific pinout. Additionally, we had to convert all our input images into low-resolution 1-bit bitmaps, as this was the file format the knitting machine accepted.
00:05:46.000 Here is one of our first custom patterns of a funky cat. By this time, we were having a fantastic time with the knitting machine. However, we felt we might be hogging all the fun, so we wanted anyone in the office to be able to send pictures to the knitting machine.
00:06:07.000 The next step was to make the knitting machine image upload available on the web. We created a super simple interface: users could choose a photo to upload, then send the image to the machine, which would print out instructions for which buttons to press on the knitting machine, especially for those who had never used it before. Here's a video of it in action.
00:07:00.000 We showcased how the uploaded image turned into knitted output. The code that made this possible was written in Ruby and Sinatra. We created a library to convert images into 1-bit bitmaps, which we called 'knitting pattern.' There was also a wrapper for the floppy disk library, which we named 'pattern disk drive.' When the user pressed the upload button, we saved their image to a file, used the image processing library to convert it to a bitmap, then emulated the floppy disk drive, and finally displayed instructions in the browser for what buttons to press on the machine.
00:10:30.000 From this adventure, we learned several key lessons. We developed immense respect for grandmas and anyone else who knits because it is hard work. We discovered that teams work exceptionally well when egos are at stake, and it's enjoyable to apply Ruby to any hobby, no matter how unrelated it may seem. Most importantly, we found it invigorating to dive into something entirely new, which is both humbling and challenging. This experience reminded us of what it’s like to be a beginner, which is crucial for gaining empathy with new programmers we might work with, teach, or mentor.
00:11:37.000 In the end, we became proficient enough at using the machine to knit full sweaters with our designs on them. Here is a Doge sweater that I brought with me today. Lastly, I would love to discuss ideas about hardware hacking, combining code with art, and computer science education. Thank you for listening, and thank you so much for having me!