I ran 40km and knit a hat for my 40th birthday
For my 40th birthday I decided to run just over a mile (1.66km) every hour for 24 hours for a total of 40km (almost 25 miles) from midnight to midnight. This challenge is inspired by Beau Miles' video "Running a marathon, one mile every hour", where he ran 26 miles in 24 hours and did various chores between miles. But instead of chores my goal was to knit an entire cabled hat between laps. The hat pattern I decided to knit is Uljhan by Shweta Shankar Khatri, a two-color cabled worsted weight hat.
When my sister and brother-in-law heard about my plan, they bought me 24 snacks. They wrote the name of each snack on a card. After each lap, I drew one of the cards at random and at whatever it said. That was my calories sorted.
To measure the effects of sleep deprivation I also did one round of Puzzle Storm on lichess after each lap every hour — it is a game where you solve as many easy (but progressively harder) chess puzzles as you can in 3 minutes. I usually consider a Puzzle Storm score of over 30 to mean I’m feeling sharp (my all-time high is 39), anything between 20-30 is normal, and if I score below 20 I know I’m too tired to be trying to play chess.
I had expected the lack of sleep to be the most difficult part of the challenge. I’m someone who generally operates on a solid 9 or 10 hours of sleep per day. But it was surprisingly not an issue. Looking at the Puzzle Storm sparkline chart below, there’s not a pattern corresponding to tiredness. The only naps I took were between 4am and 7am, and those totaled less than an hour together. I think having the knitting to concentrate on (“just get one row done”) was enough to distract my mind from sleep.
Data
Explore the results with the interactive dashboard below (use arrow keys or the buttons to go to progress between hours). Full-screen version here. Click photos for larger versions.
Colophon
For details on the hat pattern, see my project on Ravelry: 40km Birthday Beanie
The dashboard I made from notes I took during each lap. I converted the notes to a JSON array of objects, and then used my usual approach of write an es6 class to store the state and a bunch of DOM references for each component. It is a technique somewhere between the spaghetti of storing state directly in DOM everywhere and using some “modern” framework like vue/react that I usually settle on for small projects (and sometimes big projects).
You can see all the data and javascript here: dashboard.js
It took me almost two years to get around to converting my notes into the interactive dashboard. I finally asked an LLM to prototype something up, and even my local model (qwen3-30b-a3b) got something working and fun almost immediately! I didn’t use the code it generated in the end, but it was enough to get me motivated to work on my own version. I also had it give me examples of the card flip animation and SVG sparklines that I based my code on.
