blog | spec

Hello, I'm Russ, and this is my website. I'm a software engineer who programs for the love of the craft in an age of tech disillusionment. The purpose of this site is to give me a place to publish my thoughts in general and on programming, personal projects, and professional developments.


Programming as a Hobby

Publish Date: 2026-06-20

Why program after hours? One clear reason: Programming is activity that gives me immense joy. Solving unique challenges, designing systems, and watching a project come together provide a huge sense of accomplishment.

After hours programming is a great way to build fun things I wouldn't get to build at work. During the last year, I:

It's also an opportunity to learn new libraries, languages, and infrastructure. Learnings at home often pay off at work. For example, a few years ago, I picked up Bootstrap on "for-fun" projects, then later I found myself using it at work and it was a huge boon. I've had similar experiences with languages and libraries like Java, C++, Rust, Python, and PHP. For this site, I'm getting to play with domains, DNS records, hosting providers, and Postgres.

I expect at least some of these learnings will pay off in the future.

Yes, programming after hours is fun and reward. Most days though, I have a hard time convincing myself to actually spend extra time on it. I'd been feeling this way for a while, so this week last year, I challenged myself to produce one commit of code per day for a full year. My goal was to fill the GitLab Activity Chart.

Here's the outcome:

My pretty GitLab Activity Chart

I know, it's silly. Like lines of code, pull requests, and tokens, commits are not inherently valuable. A commit can add nothing, or remove value. For example, imagine a half-baked feature filled with bugs, or a changeset that adds a space one day and removes it the next.

Streaks are motivating, though. Daily contribution ensures some amount of continual engagement which, IMO, is required in order to even remember the state of a project between work sessions. So, for me, the commit streak concept is less about the commits themselves and more about providing a system to force me to continually return to my projects.

Challenges

The challenges to spending extra time programming are about what one would expect.

Fatigue: For me, the biggest me is that it's just difficult to convince myself to spend extra time programming after my day job. More sitting, more thinking, more analysis. Bleh.

Busyness: There are places to go after work, groceries, family, exercise, etc.

Motivation: If I'm not in the middle of a project, it's hard to overcome the mental friction to start a new one. Speaking of which, AI is a threat to motivation for me. I'll write more on that in later post.

Strategies

Streaks

Streaks are highly motivating for me. They create a gamified system for coming back to a project regularly which ensures continued attention is given to it. That attention translates directly into progress, whether it be building an application, learning a language, or improving at some other skill. That's the main and powerful benefit of streaks.

Streaks do have problems and limitations.

For one, our lives are not be defined by the streaks we keep. Some days, one simply needs a break and permission to take some time off from Wordle.

Also, taking baby steps each day does not build a Saturn V rocket. Concentrated effort, long sessions, and deep planning are required for large projects.

Streaks are not always easily measured, making them difficult to track. Apps like Snapchat or Duolingo are noted for providing streak systems. Daily coding is a little more tricky to track. One issue I ran into with tracking "one commit per day" as my streak metric was that some days I would make many commits while other days it was a struggle to make even one. A solution I came to was to use git to push just one commit rather than all of them. That isn't great either because one of the reasons we push to begin with is to back up our code to an external system. Only pushing one commit a day means some changes are not backed up. It would also be a non-starter if the projects that I'd been working on were multi-person since my changes might be needed by others. Also, GitLab's Activity Chart measures contributions, not commits which further complicated my metric.

Failing to maintain a streak is instantly deflating. Five times over the year, I simply failed to push a commit. The worst instance was on 2026-04-13. After a nearly 9 month streak, I simply forgot to push a commit that day. I had +50 commits lined up, too. All I had to do was sit down and push one of them, but I forgot. "Oh no, I broke the streak", better just give up now and call quits on programming.

So, IMO, streaks are useful but come with a lot of drawbacks.

Goals

Another angle is to set achievable goals. This isn't in contrast with steaks and in fact works well alongside them. In the absence of a steak, some other motivation mechanisms should come with the goals:

  1. Fun?
  2. Scheduled times for making progress?
  3. Deadline?
  4. Desired outcomes?

IMO, "fun" is a fantastic motivating factor: fun naturally keeps us coming back without being bribed, guilted, or forced. Not every goal is fun, though.

Goals can fall flat if they lack well defined outcomes or scheduling. Another pitfall is procrastination or perpetual postponement of deadlines.

Rewards

Ice Cream Sandwich - Not a recommended reward for completing goals

Ideally, working toward a project or goal should be reward unto itself, but sometimes something extra is needed. One idea I learned from Habitica is the idea of rewarding oneself for completing a task. Spend an hour programming; earn a TV show, ice cream sandwich, etc. This clearly has drawbacks: rewards can lead to bad behaviors outside of the projects (read: "too many ice cream sandwiches"), also sometimes one really just needs an ice cream sandwich with no strings attached.

My Plan for 2026-2027

One thing is for sure: I'm going to stop the "one commit per day" strategy. It's just too cumbersome, easy to forget, and sometimes it just feels meaningless. Later today, I'll push my backlog of all unpushed commits.

I like aspects from streaks, goals, and rewards, but feel that none of these approaches is ideal. Maybe there just isn't one. Instead, I'm going to change my approach. I'll commit to writing one article per week on this blog. The topics discussed should keep me motivated and working towards goals. If I feel like I'm dragging one day, I might promise myself a treat. I'll report back later and let the reader know how it goes.


No AI Icon

visits since 2026-06-20