On Monday, June 29, 2026, I went on a run in New York City. I was visiting friends in the Big Apple, but simultaneously working remotely, and after a long Monday cooped up inside an office building, I desperately needed some fresh air.
I ran north along the West Side Highway—where essentially everyone runs in NYC—for 4.02 miles before stopping just after the USS Intrepid. Then and there, I set a challenge for myself: I would run 1+ mi every day for the next 365 days and accomplish 2 goals:
- Run the Austin Marathon on Feb 14, 2027, in less than 4 hours.
- Run 1000 logged miles by Jun 29, 2027, at midnight Central time.
Motivation
Why did I suddenly decide on a random Monday to set these ambitious goals? The main driver was watching Casey Neistat’s yeah, 730 days no exceptions video. Casey is one of my favorite influencers / content creators, and watching him describe his 730-day running streak made me think…“yeah, if he can do it, I can do it.” I set the 1000mi-in-1-year goal because one of my favorite 80s songs is I’m Gonna Be by the Proclaimers.
I was also disappointed in my lack of exercise consistency in May and June, and wanted to establish a daily habit to get myself back on the exercising train. The final reason: I wanted to run a solid time for the marathon in February 2027. If your time starts with a 2 or a 3, then that’s a cool achievement.
Progress
I am excited to report that I’ve maintained my streak for over 50 days! As I write this, I’ve run 137.89 miles in 51 days for an average of 2.70 miles per day. My progress is updated daily on running.html. Most of my runs are naturally in Austin, but I do have a couple of runs logged in NYC and a few in Seattle, including one in Mount Rainier National Park.
I honestly thought this challenge would be more difficult, even though I don’t consider myself to have insanely good self-discipline. Casey explains this concept best in his video (1:02-2:01). I recommend watching the whole video yourself, but here’s the important bit paraphrased:
The biggest learning for me…is that doing the thing…every day is easier than not doing the thing every day. By default, the thing is difficult, and if every day begins with “Should I do it today”—YES or NO—it means every day begins with rationalizing. All this rationalization is a permission structure to say NO. And this is why just doing it every day is easier. You skip all the considerations of “should I” or “shouldn’t I” and the answer is easy. It’s always YES.
Just do something every day! It’s counterintuitively way easier than doing something 3/4x a week. I’ve run in the sweltering heat—that’s one “feature” of living in Texas. I’ve run several hundred vertical feet in the hills. I admittedly haven’t run in the cold or in a blizzard or something crazy like that, but hey: that can’t be harder than the Texas heat.
Technology
I record all of my runs with Strava. Once I’ve completed a run, I have a streamlined process to log it in my database and push the update to my website. I just run lr which is bound to a script that asks me to input the details of my run. It has “smart defaults”, so if I press enter, it just uses whatever’s in the square brackets. For example, this is how I logged my run on Day 51:
Day [51]:
Date [2026-08-18]:
Miles: 4.28
Time (mm:ss or h:mm:ss): 39:38
Location [Austin]:
Time of day (morning/afternoon/evening/night) [morning]: evening
The pace is readily calculated from the distance and time, and then the run is added as a row to a simple SQLite database. Then, a nice Python helper script creates a lightweight, standalone running.html file written to the git repo that generates njbrown.com. Then lr proceeds to show me git diff, and once I double-check I entered my run details correctly, I type ok + enter and the commit is pushed to my site. Nice and easy!
There is also an annoyance I encountered early into the challenge. I obviously didn’t want to forget to run on any given day, so I had set a daily phone alarm for 8pm to serve as a reminder. But most of the time, I run in the morning or right after work, so my phone alarm would go off at 8pm and be useless and annoying.
For some reason, this really bugged me. So I did the overengineered thing, and set up a cheap server on Hetzner[1] that runs a cron job four times a day: at 8/9/10/11pm Central Time. The cron job checks the last-run-date attribute on running.html. If, and only if, it detects I haven’t been on a run that day, it sends an email from my burner email address to my personal email address, up to four times (each time the cron job runs). Otherwise it does nothing. This works very well, because I have the bad habit of always checking my notifications before I go to bed.
This means every day, all I have to do is run 1+ mile and spend ~30 seconds using lr to speedily add & commit the day’s data to my website. My theory is that elimination of friction is the best way to establish a strong habit. Friction is the enemy.
Conclusion
I’m excited to run a marathon in Feb 2027 and run 1000mi over the course of the year, especially as the weather becomes reasonable again. It will be hard, but I think I can do it. If this article has somehow inspired you to start a daily habit, you should do it! It doesn’t have to be running- or exercise-related. It also doesn’t matter when you start—as long as you eliminate friction and commit to doing it daily.
I tried GitHub Actions, but it’s been extremely unreliable. I cannot tolerate my actions running late or being dropped, because I want 4 timely reminders before midnight. So cloud server it is. ↩︎