Skip to main content
Produced by Fit&Healthy with Acme

7 Keystone Habits to Maximize Your Mornings

Would you like to adopt better habits? The most efficient way of doing so is to first focus on what author Charles Duhigg calls “keystone habits,” which set off “chain reactions that help other good habits take hold.” Here are some morning keystone habits that have worked wonders for me.

1. Get Going Early

Waking up several hours before work has given me time to adopt a morning regimen full of yet more keystone habits. Morning is the best time for such routines, because it sets the tone for the rest of your day.

Waking up early will do little good if you then linger in bed scrolling through Facebook for 40 minutes or spend a desultory two hours gradually and groggily getting ready. I’ve found it speeds things up to write out the most efficient sequence of steps for getting ready in the morning, and to follow that sequence every day.

2. Cold Shower

The first item in my morning sequence is a cold shower, or at least finishing my shower with a few minutes of cold water. Nothing flushes the drowsiness out of my head faster. Even when I wake up feeling in a funk, after a bracing cold shower, I’m invigorated and ready to tackle the day. Of course it was unpleasantly shocking when I first started doing it, but I acclimated to it after less than a week. This keystone habit kickstarts my day every morning, and makes it more likely that I’ll follow the rest of my morning routine.

3. HIIT

Another way to invigorate yourself in the morning is high-intensity interval training, or “HIIT.” It’s not only energizing, but a lot healthier than longer bouts of moderate exercise. As Adam Arbour  write s:

“The next time you go for your morning jog, imagine a cheetah is chasing you for 20 seconds and then walk for 10 seconds. Repeat this for 5 minutes and your “jog” is over. HIIT is the most bang for your buck workout method, because of the energy systems it recruits, it’s ability to kick fat in the face, you don’t need any equipment and a relatively small space. “HIIT will not only improve body composition, it may extend your life. The Harvard Alumni Health Study, a 4-year study of more than 17,000 men, found that only vigorous — not moderate — exercise reduced risk of death.” - Precision Nutrition

HIIT is also less tedious and time-consuming than long slogs, and therefore more likely to actually be done daily.

4. Meditation

Morning is also a great time to meditate. I used to be skeptical about the usefulness of meditation. But I’ve found that it helps me be more present throughout the day and more calm and deliberate with my thoughts. This in turn helps me to focus on my true priorities, including the other good habits I want to cultivate. The  Headspace  guided meditation app is an easy and wonderful way to begin. For more on the benefits of meditation, see my post “ Why Knowledge Workers Should Meditate .”

5. Reading

Every morning I read from an inspiring book that is applicable to my life. This engages my intellect and gets ideas and aspirations flowing through my mind. Here are the last five books I’ve read, each one of which has been mind-blowing and life-changing for me.

For more reading recommendations, see my post  24 Books I’ve Read in the Past 12 Months .

6. Journaling

After reading long enough, I’m primed to start writing. First I journal. To ease into writing, I don’t even write complete sentences at first. I just make short little bullet-point lists, using the same reflection prompts every morning. Putting my otherwise inchoate hopes, fears, feelings of gratitude, etc, into words has helped me live more consciously each day.

Even if I don’t spell out any “solutions” to the problems I list in my journal, the mere exercise of explicitly naming those problems often gets the ball rolling toward their resolution. It’s sort of like the intellectual part of my brain painting a target on a problem, to help the intuitive part of my brain blast it away with on-the-spot actions throughout the day. Many times, the solution involves establishing a new good habit, or breaking an old bad one. For more on the benefits of journaling, see my post  List-Journaling May Be the Ultimate Keystone Habit .

7. Blogging

The first version of this post was itself my first step toward establishing my latest keystone habit: blogging every morning. The other day, I completed a 30-day daily blogging challenge for the month of July 2017.

Previously, my inclination was to avoid blogging and stick to writing ambitious essays, about one every week. But I had heard amazing things about the experience and consequences of pushing yourself to ship a blog post every single day, and I wanted in on some of that action.

As hoped, the practice induced a life-enhancing flood of new ideas and inspiration that, among other things, helped me refine my habits still further. And putting my thoughts into publishable form every morning gave me yet another mentally invigorating boost to kick-start my day. For more on the benefits of daily blogging, see my post  30 Blog Posts in 30 Days .

Good Luck!

Instead of staggering out of bed only to go straight into the reaction mode amid the fray of the work day, start your day deliberately and on your own terms. Every morning, give yourself the time and mental space to fully awaken to the abundant possibilities of your life. You will then be self-possessed and self-empowered enough to make the most of your days.

Also published at  FEE.org .

Article credit:  Dan Sanchez   /  CC BY
Cover photo:  Charlotte Karlsen

eZ debug

Clear cache:

Quick settings:

Timing: Aug 03 2026 08:31:48
Script start
Debug: Aug 03 2026 08:31:48
object(SQLite3)#26 (0) {
}
Debug: Aug 03 2026 08:31:48
integer(false)
Timing: Aug 03 2026 08:31:48
Module start 'content'
Timing: Aug 03 2026 08:31:48
Module end 'content'
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/pagelayout/head/title.tpl:6[12] Aug 03 2026 08:31:48
Variable 'site_title' is already defined.
Error: eZTemplate Aug 03 2026 08:31:48
No such attribute for object(eZContentObject): innerContent
Choose one of following: 
Error: eZTemplate Aug 03 2026 08:31:48
Unknown template variable 'ibexa' in namespace ''
Error: eZTemplate Aug 03 2026 08:31:48
Unknown template variable 'ibexa' in namespace ''
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/explayouts/block/block.tpl:1[0] Aug 03 2026 08:31:48
Variable 'bl_view_type' is already defined.
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/explayouts/block/block.tpl:3[0] Aug 03 2026 08:31:48
Variable 'bl_params' is already defined.
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/explayouts/block/block.tpl:6[0] Aug 03 2026 08:31:48
Variable 'bl_whitespace' is already defined.
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/explayouts/block/block.tpl:17[0] Aug 03 2026 08:31:48
Variable 'bl_extra' is already defined.
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/explayouts/block/block.tpl:30[0] Aug 03 2026 08:31:48
Variable 'bl_container' is already defined.
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/explayouts/block/block.tpl:37[0] Aug 03 2026 08:31:48
Variable 'bl_skip' is already defined.
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/explayouts/block/block.tpl:1[0] Aug 03 2026 08:31:48
Variable 'bl_view_type' is already defined.
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/explayouts/block/block.tpl:3[0] Aug 03 2026 08:31:48
Variable 'bl_params' is already defined.
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/explayouts/block/block.tpl:6[0] Aug 03 2026 08:31:48
Variable 'bl_whitespace' is already defined.
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/explayouts/block/block.tpl:17[0] Aug 03 2026 08:31:48
Variable 'bl_extra' is already defined.
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/explayouts/block/block.tpl:30[0] Aug 03 2026 08:31:48
Variable 'bl_container' is already defined.
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/explayouts/block/block.tpl:37[0] Aug 03 2026 08:31:48
Variable 'bl_skip' is already defined.
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/explayouts/block/block.tpl:1[0] Aug 03 2026 08:31:48
Variable 'bl_view_type' is already defined.
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/explayouts/block/block.tpl:3[0] Aug 03 2026 08:31:48
Variable 'bl_params' is already defined.
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/explayouts/block/block.tpl:6[0] Aug 03 2026 08:31:48
Variable 'bl_whitespace' is already defined.
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/explayouts/block/block.tpl:17[0] Aug 03 2026 08:31:48
Variable 'bl_extra' is already defined.
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/explayouts/block/block.tpl:30[0] Aug 03 2026 08:31:48
Variable 'bl_container' is already defined.
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/explayouts/block/block.tpl:37[0] Aug 03 2026 08:31:48
Variable 'bl_skip' is already defined.
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/content/views/standard/ng_article.tpl:7[0] Aug 03 2026 08:31:48
Variable 'node' is already defined.
Error: eZTemplate Aug 03 2026 08:31:48
Unknown template variable 'toolbar_macros' in namespace ''
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/content/views/standard/ng_article.tpl:7[0] Aug 03 2026 08:31:48
Variable 'node' is already defined.
Error: eZTemplate Aug 03 2026 08:31:48
Unknown template variable 'toolbar_macros' in namespace ''
Warning: eZTemplate:def @ extension/sevenx_themes_media/design/media/templates/content/views/standard/ng_article.tpl:7[0] Aug 03 2026 08:31:48
Variable 'node' is already defined.
Error: eZTemplate Aug 03 2026 08:31:48
Unknown template variable 'toolbar_macros' in namespace ''
Timing: Aug 03 2026 08:31:48
Script end

Main resources:

Total runtime0.0918 sec
Peak memory usage4,096.0000 KB

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0430 822.9063102.0703
Module start 'content' 0.04300.0024 924.976693.6250
Module end 'content' 0.04540.0464 1,018.6016549.7109
Script end 0.0918  1,568.3125 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00171.8527330.0001
SQLite3 Total
Looping result0.00121.25434500.0000
Template Total0.047251.420.0236
Template load0.00050.516320.0002
Template processing0.046750.864020.0233
Template load and register function0.00010.065210.0001
Override
Cache load0.00020.2568190.0000
Sytem overhead
Fetch class attribute can translate value0.00101.0785100.0001
XML
Image XML parsing0.00212.3139100.0002
General
dbfile0.00070.7908380.0000
String conversion0.00000.010120.0000
Note: percentages do not add up to 100% because some accumulators overlap

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1pagelayout.tpl<No override>extension/sevenx_themes_media/design/media/templates/pagelayout.tplEdit templateOverride template
3explayouts/block/twig_block.tpl<No override>extension/sevenx_themes_media/design/media/templates/explayouts/block/twig_block.tplEdit templateOverride template
1pagelayout/header.tpl<No override>extension/sevenx_themes_media/design/media/templates/pagelayout/header.tplEdit templateOverride template
2explayouts/block/column.tpl<No override>extension/sevenx_themes_media/design/media/templates/explayouts/block/column.tplEdit templateOverride template
1pagelayout/breadcrumbs.tpl<No override>extension/sevenx_themes_media/design/media/templates/pagelayout/breadcrumbs.tplEdit templateOverride template
1explayouts/block/full_view.tpl<No override>extension/explayouts/design/standard/templates/explayouts/block/full_view.tplEdit templateOverride template
1explayouts/block/title.tpl<No override>extension/sevenx_themes_media/design/media/templates/explayouts/block/title.tplEdit templateOverride template
1explayouts/block/title/section_centered.tpl<No override>extension/sevenx_themes_media/design/media/templates/explayouts/block/title/section_centered.tplEdit templateOverride template
1explayouts/block/list.tpl<No override>extension/sevenx_themes_media/design/media/templates/explayouts/block/list.tplEdit templateOverride template
1explayouts/block/list/grid.tpl<No override>extension/sevenx_themes_media/design/media/templates/explayouts/block/list/grid.tplEdit templateOverride template
1explayouts/block/list/grid/3_columns.tpl<No override>extension/sevenx_themes_media/design/media/templates/explayouts/block/list/grid/3_columns.tplEdit templateOverride template
1content/views/standard/ng_article.tpl<No override>extension/sevenx_themes_media/design/media/templates/content/views/standard/ng_article.tplEdit templateOverride template
1pagelayout/footer.tpl<No override>extension/sevenx_themes_media/design/media/templates/pagelayout/footer.tplEdit templateOverride template
1setup/debug_toolbar.tpl<No override>design/standard/templates/setup/debug_toolbar.tplEdit templateOverride template
 Number of times templates used: 17
 Number of unique templates used: 14

Time used to render debug report: 0.0002 secs