Ruby

Sweaters as a service

Sweaters as a service

by Amy Wibowo

In the talk titled "Sweaters as a service" by Amy Wibowo at GoRuCo 2015, the speaker discusses her journey of transforming an old knitting machine into a modern, computer-controlled device, inspired by a proposed Nintendo knitting add-on from the 1980s that never made it to production. She details her motivation, the challenges faced, and the accomplishments achieved through the collaboration with a team of engineers from Airbnb. The following key points outline the content of the presentation:

  • Inspiration: Amy's motivation stemmed from an article on Kotaku about failed Nintendo peripherals, particularly a knitting add-on that ignited her dream of creating a networked yarn printer.
  • Acquisition and Initial Challenges: She found a broken 1980s knitting machine and, although daunting due to its complexity, she was excited to start the project, needing to first learn how to operate the machine properly.
  • Team Collaboration: With the help of engineers who knew nothing about knitting, they established a collaborative environment during an Airbnb hackathon to modify and hack the knitting machine.
  • Progression through Struggles: After stitching simple patterns, the team grappled with complex features, realizing the difficulty of knitting patterns available was reflective of the original target demographic (older users) and not aligned with current interests.
  • Web Interface Development: To democratize the fun, a web interface was developed to allow anyone in the office to upload their own images to be knitted. This was implemented using Ruby and Sinatra, creating a unique pipeline for image processing and machine control.
  • Lessons Learned: The project taught them respect for the craft of knitting, the importance of teamwork, and empathy for beginners in programming and hardware hacking. The ultimate success led to the production of custom sweaters, including novelty designs like Doge.

In conclusion, Amy emphasized the invigorating experience of exploring new domains and how integral it is to foster empathy in computer science education, bridging the gap between coding, art, and existing skills. She opened the floor for discussions centered on hardware hacking and related concepts, grateful for the opportunity to share her story.

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!