arrow-left arrow-right brightness-2 chevron-left chevron-right circle-half-full dots-horizontal facebook-box facebook loader magnify menu-down rss-box star twitter-box twitter white-balance-sunny window-close
Hacking Habit Development
7 min read

Hacking Habit Development

Hacking Habit Development

Accidental Habit Development: A year of walking

I'm terrible at setting new habits. I've tried every habit app, journal method, hiding things, etc and I'm still at around 10% success rate of choosing a new habit and sticking to it.

One thing I've learned: I'm equally terrible at the habit of using habit apps.

Nearly by accident, I set a new habit in 2020 that has been consistent for 320 straight days: taking a walk. February last year, I set a (tiny) goal of walking for at least 10 minutes. Every day. I used the Streaks App, but connected to Apple Heatlh. Any time I started a walk on the Apple Watch, the time was automatically tracked in Streaks. No manual tracking required. Any time I completed a walk of 10 minutes or more, I'd get a push notification from Streaks happily encouraging me for completing my task and updating my progress.

When I first started, I was consistent because of a nascent willpower. I'd set a goal in a moment of aspriation and wanted it done. Walking 10 minutes was also easy: if I was close to missing a day, I'd feel silly not to walk 5 minutes away from my house and back. The Streaks app also acted as a safety net. If I hadn't completed a walk, I'd get a notification prompt that I was about to "break the streak". FOMO kicked in and I'd dutifully get up and start a brisk walk. It was also automated, I didn't have to build the habit of using a habit app, everything just worked.

Here's why:

  • Ease: Instead of trying to make a big change, the task was very achievable, even when motivation was low. It's more important to build consistency. The snowball rolling down the top of the mountain.
  • Automated: The main value of a habit app is showing progress and keeping you honest (see prompts below). The problem is they require a separate behavior: tracking if your goal is done! Because the tracking is coupled with the behavior (taking a walk updates the Streaks app), all the value is received with no extra effort.
  • Prompts: The system defaults to "internal" prompts: I should walk because I want to. But, if it's an off day or motivation is low, the Streaks app detects when a miss is imminent and sends a notification. It's like a safety net for habit development.

Over time something changed... I wasn't doing the walk because it was easy. I was walking because it was just something I did."You're awake, time to walk." Walks became more than just a basic way to improve fitness. They became thinking time, time to call my Dad, or jot notes and thoughts. Now I walk 1-2 hours every morning (have had to wake up earlier for this) and can't imagine giving it up.

How does behavior science explain why this works?

BJ Fogg founded the Behavior Design Lab at Stanford and has popularized the "Fogg Behavior Model" (FBM). The FBM states that each behavior consists of: sufficient motivation, sufficient ability, and the presence of a prompt. Without all three, the behavior doesn't happen.

Credit: BJ Fogg (behaviormodel.org)
Behavior = Motivation + Ability + Prompt

This explains why the walking habit stuck while others have not. The behavior required very little motivation or ability. Most importantly, loading the next prompt required zero behavior. The act of walking loaded up the next prompt and Streaks could know whether to alert to a potential miss.

What if I could apply the same principles to other habits? A system to automatically prompt easy habits?

Automated Information Diet Habits

One key 2021 focus for me is my information diet. There's a glut of urgent, must-know-now, break-neck-paced news coming out the past year. And it's not slowing down. I want to stay informed, but doom-scrolling doesn't help.

The first part of improving my information diet involved setting limits on neutral-bad inputs: increase social media (Twitter/LinkedIn for me) use, mindless reddit browser, etc. h/t to Brendan Short's "What I Learned" Substack for ideas to limit Screen Time.

The second part involves increasing input of good inputs. I'm trying to increase the time I spend reading books and long form articles. And I've found a system (10 days in) that uses the same principle as the walk habit.

Here's how the system works high-level:

  1. Whenever I open an app for long-form articles or books (Pocket, Kindle) a timer is started in Streaks automatically
  2. When I close the app, the timer is stopped
  3. When the cumulative goal time (10 minutes for now) is reached, the daily Streak is marked complete

That's it. That's the system. It hits all the necessary ingredients:

  • Ease: The goals are simple 10 minutes reading a book and 10 minutes reading for learning. And since the goal is cumulative time, dropping into a book for 2 minutes still has positive reinforcement.
  • Automatic: No need to separately track the goal. The act of doing the task is coupled with tracking the goal.
  • Prompts: The Streaks app notifies externally if I'm about to miss a streak. But I'm also testing a new passive prompt: app recommendations. I've replaced half my home screen with a widget that displays "Siri recommended apps". Based on how you use your phone, apps are suggested to open. I'm noticing Kindle and Pocket showing up in this list more and more over the past ten days.

So far, I'm 100% covering every day (even though not every day has been high motivation). Excited to share more as the habits build momentum.


How exactly the system works. And how you can use it too.

The secret to automatically tracking my reading involves the Streaks habit app, and Apple's built-in Shortcuts app.

Shortcuts allow for setting up workflows on your iPhone/iPad similar to IFTTT or Zapier but for apps. They also include "Personal Automations" that automatically run shortcuts when certain conditions are true: connecting to WiFi, arriving home, or (importantly) when certain apps are opened or closed.

I created two shortcuts that accept the name (or keyword) of a Timed Task in Streaks, and start or stop respectively the timer for that task.

For each app I want to trigger a Timed Task, I create a "Start" and "Stop" Personal Automation that includes the name (or keyword) of the desired Task and starts when a given app is opened or closed.

Running this yourself.

How the automatic tracking looks at the end.

Prerequisites

  • Install the Streaks App and setup at least one timed task. I recommend starting small with "Read a Book" and a goal of 5-10 minutes a day. Something that would feel silly not to do if you missed it.
  • Open the Shortcuts app on your phone (built-in) and run at least one of the Shortcuts in the gallery. Apple will not let you follow the below process until you've run at least one Shortcut.
  • Open Settings > Shortcuts and select "Allow Untrusted Shortcuts". This allows you to preview and use the below pre-made shortcuts.

Enabling the Start Timer Automation

Start-Timer-Icon-1

This is the automation that will (as the name implies) start tracking task completion when you open a specific app.

  1. Install this "Start Streak Timer" Shortcut. You'll be able to review the entire logic before adding it to your library
  2. Tap "Automation" >> "+" to create a new shortcut >>Choose "Create Personal Automation"
  3. Scroll down and select "App" >> Choose the app to trigger the start time (e.g. Kindle) and make sure "is Opened" is selected >> Tap "Next"
  4. Tap "Add Action"  >> search for "Text", Tap "Text" under the "Actions" results >> Type a unique word from your Streak Task. In my case the Streak Task is "Read A Book" so I used the word "Book". This text is what's used to tell the "Start Streak Timer" shortcut which Task to start.
  5. Tap the blue "+" to add another action. Search for "Shortcuts" and tap the "Shortcuts" App results >> Choose "Run Shortcut" >>Tap "Shortcut" in the new card that appears and search for "Start Streak Timer"
  6. Tap "Next" in the top right >> Deselect "Ask before running" >> tap "Done"

Enabling the Stop Timer Shortcut

Stop-Timer-Icon

The process from stopping the timer is the exact same with changes noted in bold

  1. Install this "Stop Streak Timer" Shortcut. You'll be able to review the entire logic before adding it to your library
  2. Tap "Automation" >> "+" to create a new shortcut >>Choose "Create Personal Automation"
  3. Scroll down and select "App" >> Choose the app to trigger the start time (e.g. Kindle) and make sure "is Opened" is deselected and "is Closed" is selected >> Tap "Next"
  4. Tap "Add Action"  >> search for "Text", Tap "Text" under the "Actions" results >> Type a unique word from your Streak Task. In my case the Streak Task is "Read A Book" so I used the word "Book". This text is what's used to tell the "Start Streak Timer" shortcut which Task to start.
  5. Tap the blue "+" to add another action. Search for "Shortcuts" and tap the "Shortcuts" App results >> Choose "Run Shortcut" >>Tap "Shortcut" in the new card that appears and search for "Stop Streak Timer"
  6. Tap "Next" in the top right >> Deselect "Ask before running" >> tap "Done"

Enjoying these posts? Subscribe for more

Subscribe now
Already have an account? Sign in
You've successfully subscribed to Kyle Williams Blog.
Success! Your account is fully activated, you now have access to all content.
Success! Your billing info is updated.