Abstract
The sleep blanket is a visualization of my son’s sleep pattern from birth to his first birthday. It has a crochet border surrounding a double-knit body. Each row represents a single day. Each stitch represents 6 min of time spent awake or asleep. The blanket itself is just another way I get to tell my son I love him.
The sleep blanket is a visualization of my son’s sleep pattern from birth to his first birthday. It has a crochet border surrounding a double-knit body. Each row represents a single day. Each stitch represents 6 min of time spent awake or asleep. The blanket itself is just another way I get to tell my son I love him.
Main Text
Description and Thoughts on the Sleep Blanket
When I had the first inklings of the idea for this project, I really just wanted to make something nice for my son, something to commemorate our first year together which was incredibly intense and more full of love than I could have possibly imagined. My wife and I were diligently logging his activities every day with an app called BabyConnect, and I’d seen sleep pattern visualizations in the past and knew I wanted to do something similar. The app we were using presented the data in a bar chart format, and the nature of the data sort of lent itself to a rectangular shape, so a blanket seemed like a good fit. A little after my son’s first birthday when things were starting to settle and get a bit easier, I finally had the time and energy to work on the blanket and dove in headfirst. I made a rough crochet pattern and got started, hoping to figure out the details as I went. I only ever made it a few rows into that attempt.
At first, I kept trying to design the blanket using crochet. I had more experience with crochet and was more confident that I could create something this complex and fix any errors I made along the way, but everything I tried was either unmanageably fiddly or just didn’t look right. When I finally landed on double knitting, everything kind of fell into place. Knit stitches have a regular uniform appearance which makes them much more suited for conveying the complex granular sleep pattern data. Double knitting allowed for relatively simple color changes at the expense of effectively knitting the blanket twice; the back side of the blanket shows the same data mirrored horizontally with the colors inverted.
Since I was new to knitting, I practiced a lot, and I’m really glad I did, because it revealed the need for the tracker I eventually built in HTML and JavaScript (https://lagomorpho.com/patterntracker/). Prior to that, I was using paper printouts or marking up images on a tablet to track progress, and I kept making mistakes on smaller pieces that were much simpler. I felt fine spending the time to make the tracker and prepare properly so that when it finally came to actually knit the blanket, I could just put my head down and go. One drawback of having all this data and writing code to manipulate them is that I was excruciatingly aware of just how much work it was going to take. The stats I posted on Twitter with the number of stitches in the blanket weren’t calculated after the fact. I knew from day one that this was going to be a marathon and not a sprint, and that made it really hard to get started. One morning, we’d just put my son down for a nap and I was sitting there staring at the pile of yarn that would become the blanket and I just said out loud, “Okay, fine!” and got the first few rows of stitches done.
After that, I basically spent every free moment I had knitting. The panels that make up the blanket are small enough that I could take it with me everywhere. I was knitting in coffee shops and on trains and buses and planes. It traveled with me to the Bay area for work and back to the East Coast to visit family. At the beginning, I considered about 500 stitches to be a productive day. Toward the end I was averaging around 1,500 stitches a day. The most I did in one day was over 3,000.
Even after all the panels were knit, there was still a lot of work to clean up edges and seam it all together. That took another two weeks, but when I was finally really done, I was so relieved and happy at how it came out. As soon as I finished it, I stopped thinking about all the work that went into it. Instead, I thought about how nice it looked and how soft it felt and how when I told my son I made a blanket for him, he said “Blanket! Blanket!” and then asked to sit on it and rolled around and wrapped himself up in it (Figure 1).
Figure 1.
The Completed Blanket, Well-Received by My Son
There’s nothing quite like the feeling of someone loving the thing you made for them.
In the time since I completed it, I’ve thought a lot more about this project. The “how” of it is pretty straightforward—a confluence of several things I love: scripting, crafts, incremental progress with dramatic results. The “why” of it was simple at first: I love my son so, so much, and I needed to say it as often as I could in as many ways as I could. But I found myself thinking about my motivation for this project in a broader context, and it boiled down to the same reason we all do what we do as technologists, as makers, as parents: I imagined something cool or interesting or beautiful and I thought the world would be nicer if it existed. So I did everything in my power to make that thing as good as it could be.
Blanket Statistics
- Dimensions: 42” x 45”; 244 × 370 stitches of double knitting
- Total including the border: 185,000 stitches
- Time spent: 300 h (not including planning, practice, and development)
- Realtime: 104 days
How to “read” the blanket: It’s top down, left to right. Top row is the day he was born, bottom row is his first birthday. Leftmost stitch is 12:00am. Rightmost stitch is 11:54pm. Blue is “asleep,” and gray is “awake” on the front side, reversed on the back.
Data Collection
The data were collected using an app called BabyConnect, which allows you and your caregivers to log all kinds of activities for a baby like sleeping, nursing, and diapers. All the data we logged were painstakingly entered manually by myself, my wife, and my mother-in-law.
The app visualizes some of the logged data as bar charts, which was one of the initial inspirations for this project. BabyConnect lets you export all your data as comma-separated values (CSVs), and I imported those into Google Sheets so I could manipulate the data. Sleep events were stored as single rows with “start” and “stop” timestamps, so there was some conversion necessary to build the knitting pattern.
I built a 2D array with each row representing a day and each cell representing a 6 min interval which corresponded to a knitted stitch. Then I used the sleep event timestamp data to flag cells in the array as either awake or sleep intervals. Once I had this JSON object generated, it was fairly simple to do all kinds of things with it.
One of the first things I did was make the image seen in Figure 2.
Figure 2.
A Visual Representation of the Sleep Pattern
The sleep data were collected with the BabyConnect app, which lets you export to CSV. The CSVs were filtered and converted into JSON (using Google Apps Script and Python) which could then be used for visualization and tracking.
It was really nice to see the visualization come together, which was a great motivator to get moving on the project.
Then, I formatted the data as a JavaScript object so it could be read by my pattern tracker (https://lagomorpho.com/patterntracker/). I also eventually had to split it into four pieces for logistical reasons. It was hard to read the tracker when a row was 244 cells wide, and the physical blanket itself is almost 4 feet wide, so it would have been unwieldy to work with and not portable at all, which meant it would take longer to complete (Figure 3).
Figure 3.
Blanket in Progress
I built a tool with HTML and JavaScript so I could position stitch markers for the color changes and track overall progress. I made it browser-based so I could pull it up on any device wherever I was. https://lagomorpho.com/patterntracker/
Once I had these, there was nothing left to do but knit 180,000 stitches!
Biography
Seung Lee is a dad who likes food, animals, and making neat stuff. He works as a Senior IT Specialist, but more importantly, he’s been knitting for 3 years, crocheting for 6 years, and mashing HTML and Javascript together for two decades. Born in South Korea and raised in Brooklyn, he currently lives with his wife, son, newborn daughter, and two cats in Seattle, WA.



