The value of streaks

MP 75: Streaks are quite different than New Year's resolutions.

Note: A new technical series will start next week. The first post introducing the series will be open to everyone. Also, if you’ve been hearing about Substack’s issues around content moderation and are interested in my take, I posted some thoughts here.

I bought a rowing machine a couple years ago, to help stay in shape when I didn’t have enough time to get outside for a longer run. I rowed crew in college, and that background makes it easy to hop on and do a quick, effective workout.

This fall I tried Concept 2’s Holiday Challenge, where you try to row 100 kilometers between Thanksgiving and Christmas. That’s about twice as much as I normally row. I just finished the challenge last week, and it had me thinking about what I’ve learned from attempting various streaks over the years.

Streaks are much more flexible and attainable than typical New Year’s resolutions. A resolution is supposed to be a permanent change, which is notoriously difficult to see through. A streak requires commitment, but it also has an end. If you choose the right kind of streak, the benefits can be much more attainable and significant.

Rowing 100k

Most of the time, I like to stay in shape by doing a number of different things: running, hiking, biking, paddling, and anything else I can do outdoors. But falls and winters in southeast Alaska are cold and rainy, and this winter is one of the wettest I’ve seen in 20 years here. It was a perfect fall to focus on indoor exercise.

When I row, I typically go for a specific time rather than a set distance. I’ll do 20 minutes at a faster pace, or 30-40 minutes at a slower pace. Before I started the 100k challenge I sketched out a rough schedule with a short, medium, and two longer rows each week. I did that for the first week, but then found I was really enjoying the longer rows. The core workout I settled on was a 10k row, which takes me just under 50 minutes at a steady pace.

Chart showing a variety of workouts from ~5k through 15k
To meet the 100k challenge, I did a few longer rows every week. Some people approach it by trying to row every day, but I really enjoy spacing out longer workouts.

Once I got into a routine, I enjoyed the longer rows so much I started pushing past that 10k mental limit. I did a 12k, and then a 15k row. I’ve always been much more of a distance athlete than a sprinter. I often find my pace around 30-40 minutes into a workout, and if I can make the time for it I really enjoy stretching that out to 60-90 minutes.

Physical benefits

Whenever I attempt a streak, there are some things I know I’ll get out of it if I’m successful. But I also know there will be some unexpected benefits as well, and I’m always curious to see what those end up being.

For this streak, I knew I’d get in better shape for rowing. That definitely happened, but I had no idea what directions it would take me. I’ve been surprised to find out how much I enjoy rowing longer distances. I rowed an 18k piece after the challenge was over, which worked out to just under 90 minutes. I chose that distance to see if I’m ready for a half-marathon, where you row the equivalent of a half-marathon in running (21,097 meters).

The 18k piece took more out of me than I expected, but I’m still planning to do the half marathon in the next week or so. We’re moving to North Carolina this summer, so much of our spring will be taken up with cleaning out from 20 years of living in one place, and sorting out the logistics of a cross-country move. If we weren’t taking that on, I’d keep going and prepare for a full marathon. I don’t want to spend too much of my life sitting on a rowing machine, but I’d love the satisfaction of rowing a marathon once.

I’ve also found that shorter pieces feel much easier than they used to. My results in 20-minute pieces are much better than they were before, because a 20-minute piece feels so much shorter and easier now. I can push myself harder for these shorter times, knowing it’s going to be over soon. I’m looking forward to testing myself on a variety of shorter pieces after finishing the half marathon.

Mental benefits

One of the things I really like about these longer rows is that they’re a perfect way to sit and watch the conference talks I’ve been wanting to see. For each long row, I set up a queue of talk videos. Throughout the month I watched about ten talks: all the talks I missed in person at DjangoCon US, the PyCon 2023 talks I wanted to see, and a few classic talks I’ve had on my playlist for a long time. After most workouts I’d write a few notes about how to use what I learned from these talks in my current projects.

still from video, showing green commits and red commits. Sometimes we want the red commits.
Brandon Rhodes’ PyTexas Keynote, Walking the Line, was an excellent way to pass 40 minutes of rowing.

For the longer rows I found it helpful to queue up technical talks for most of the workout, followed by outdoor videos for the final stretches. I couldn’t really concentrate on a technical talk when I was running out of energy and trying to push myself at the end of a long piece. I started putting climbing videos at the end of these playlists, and it was much easier to push myself while watching others push themselves. For anyone interested in long-distance hiking, a short documentary about the Pacific Crest Trail was really satisfying to watch during the end of a long row.

Aside: Concept2 is an amazing company

It’s worth sharing a little about the company that makes the rowing machines that almost all experienced rowers use. Concept 2 started as a small company that built rowing machines out of repurposed bicycle parts. Their machines have evolved steadily over the last 40+ years, but throughout this entire time they’ve focused on durability and backwards compatibility.

Concept 2 rowing machines (ergs, short for ergometers), are used by college and Olympic rowers every day for years on end. If you buy one for home use, it’s likely to last 20 years or more. And if it stops working, you can still buy parts for your 20-year-old machine. As a software developer who pays attention to backwards compatibility, this is an amazing thing to see from a company that focuses on athletic equipment.1

A modern Concept 2 rowing machine. These new machines are incredibly smooth and reliable, but the basic design hasn’t changed in decades. They last millions of meters, and almost every part can be replaced.

Other streaks

90 days of open source contributions

A while back, I completed a streak of making at least one commit to an open source project each day, for 90 days. That was in the early days of GitHub, when many people were seeing their contributions laid out visually for the first time:

GitHub contribution graph for 2013, showing intermittent contributions for much of the year, and consistent contributions for the last three months of the year
In 2013, I went 90 days making at least one open source contribution a day. That was a formative experience in my programming career.

That streak was interesting in that I didn’t set out to make it happen. I noticed one day that I had made at least one commit every day for the last 17 days. I decided to keep making daily contributions, without a specific end goal. I kept the streak alive as long as it was beneficial: if maintaining the streak helped me keep working when I was discouraged, or when the work wasn’t easy, I kept it going. I decided to end the streak when it started to make me not enjoy programming.

There were lots of takeaways from that period. Some people were trying year-long streaks at the time. Ninety days was enough to push myself professionally, but also to maintain a healthy work-life balance. It made me much more comfortable with Git workflows, such as the logistics of working on a variety of branches, and different ways of submitting PRs. This was also when I first started writing tests for my projects.2

A year of writing weekly posts

I started this newsletter one year ago. One of my reasons for starting it was to commit to writing on a more consistent basis. I’ve managed to write at least one post a week for a full year, averaging about six posts each month. While it’s been a lot of work, I’ve also grown a lot from the experience:

I can write more efficiently. I’ve been a writer for a long time now, so my overall writing process is pretty established. But one weakness I had for a long time was the need to write first drafts on paper. I just couldn’t put my thoughts together coherently when staring at a screen. I think that comes from doing most of my early writing on paper, and in journals. My first newsletter posts were drafted on paper, but I quickly transitioned to an almost entirely digital workflow. Now I tend to only draft on paper when I can’t seem to get into a flow with a screen in front of me.

I’ve dug into a wider variety of topics than I otherwise would have. Many people have the impression that technical authors already know everything they’re writing about. That’s rarely true. Often in my programming work, I learn enough about any given topic to solve the problem I’m currently facing. But when I’m writing, I want to make sure I’ve explained each topic correctly and accurately. Writing pushes me into areas I wouldn’t otherwise explore. It also pushes me to not just make things work, but make sure I understand how they work.

I’ve met a number of people I wouldn’t otherwise have met. My posts don’t tend to get a lot of comments, but people do write privately to share their reactions. Some of those exchanges have led to video calls and ongoing collaboration. I’m always deeply appreciative of the people that programming has brought me into contact with, all over the world. I recently joined a technical writers’ group, and those conversations, both formal and informal, have been fantastic.

I really enjoy writing about programming, and the projects I’m working on. I don’t do it for the streak, but the long-term impacts of this kind of writing reminds me of what comes out of a streak.


I find streaks much more beneficial than resolutions. A resolution tends to be something that we’re supposed to change permanently, which can be really hard to do. A streak represents a commitment, but it has an end which you can keep in sight. When we finish, we get to reflect on how we’ve grown, and choose how to build on the experience.

After finishing a meaningful streak, what was difficult at the start becomes easy; what seemed impossible is now within reach. I’ve found this true with physical challenges like rowing 100k, and mental challenges such as keeping up an open source contribution streak.

If you’re considering taking on a streak, keep a couple things in mind. Make sure to define one that’s attainable, but will push you toward outcomes you can’t fully know ahead of time. Choose something you want to get better at: programming, exercise, music, reading, etc. Choose a frequency that fits into your life: every day, once a week, once a month. Finally, choose an end goal that feels like a stretch, but also feels attainable.

When you reach your end goal, be wary of continuing the streak. It can be hard to let go, but streaks can easily lead to burnout if you focus too much on the streak itself. Instead, consider what aspects of the streak were enjoyable and worth keeping in your life, and let go of the aspects that turned into obligations you started to dread.

I wish you a good start to 2024, and if you’ve got a resolution or a streak in mind, I hope it goes well. :)

  1. If you’re curious to learn more about Concept 2’s history, see their 40th anniversary page. Their first machines used bicycle wheels with plastic cards attached to the spokes for resistance. This was called the Model A:

    The Concept 2 Model A, released in 1981. It was basically a bicycle wheel with plastic cards attached to the spokes.

    The first machine that looks a lot like the current one was the Model B, released in 1986. There have been just a few major redesigns; the Model C was introduced in 1993, and the Model D was introduced in 2003. There are a couple more variations, but most of the evolution took place across these four models. You can still buy parts for all models, including the Model A. You can also buy retrofit kits to integrate the most important updates, such as the performance monitor, onto older machines. They truly don’t push people to replace machines that are still working.

    Concept 2’s latest machines are called RowErgs, to differentiate from the bike and ski machines they also produce now. Their machines are also quite reasonably priced. They’re more expensive than the cheapest machines you can find, but they’re also much more affordable than the latest tablet-based machines. And there’s no subscriptions whatsoever.

  2. If you’re curious to read more, I wrote three posts about that streak on a Wordpress blog I kept at the time: