“Why Your App Got Deleted…” Behavioral Antipatterns for Product Design

Notice how many the apps on your phone don’t get used.

80% of the apps on your phone get used less than once per week

Ain't Nobody Got Time for That

This is why I absolutely love it when I can delete phone apps. Minimizing the amount of apps I have on the iOS home screen is like minimizing decisions in the morning. The less I see (even a minuscule extra icon or notification) the faster my attention can go back to using my phone.

When I go on an app deleting spree, it comes in one of two forms:

1) Every time I have an ios update and don’t have enough space on my phone

2) I have some pressing need for a product and am deciding which one is best. This happens about once every few months. I’ll realize I have wanted to fulfill some need and install many similar apps to find the very best one. Recently, I downloaded 10 different calendar and todo list apps. I enabled notifications for all of them. Each app was on the secondary screen of my phone. In one week, I went back and deleted all the apps that don’t work for my use case. I test apps similarly to how I learning courses: I’ll take many potential solutions and test each until I find the one that works for me.

My Current Home Screen

The app that survived the great calendar purge was timeful, which I highly recommend. More on the current home screen [1].

Patterns for Application Churn

Many people in the corporate world have used a product called Microsoft Sharepoint. For those who haven’t used it, it’s Microsoft’s web-based tool to share and receive documents, securely. In each workplace where we used it, Sharepoint was more of a hindrance to receive files than a welcome solution.

Faxes with Sharepoint

Sharepoint presented Windows Explorer in the browser. This screenshot has a fax import for Sharepoint. Image credit Visendo

Why was sharing files painful?

  • The product was one-off. The product does not exist in within an ecosystem of other use. I use Sharepoint for one reason, to receive files. Yet, I already receive files through email just fine. IT required the sharing of massively distributed files through Sharepoint
  • The product aligned with a business need that didn’t fit with “actual” work. Sharepoint had nothing to do with the thing I was working on, instead it was simply a way to receive a file from the file creator
  • The product didn’t offer offer easy access points. Emails occassionally had a link to the team’s Sharepoint (IT departments frown upon attaching files due to access control). Accessing Sharepoint usually required another login to the company’s sharepoint site. Furthermore, if I was working remotely and off VPN, this required yet another login through the VPN software. Simply opening to a document may require up to two extra logins and the cognitive tax of doing so

Companies today have options to share and reeive files: Box, Dropbox, Amazon Zocalo, Google Drive, Apple’s iCloud Sync. I’m checking out Sharepoint 2013 as part of Office 365 (ref), it appears to be better integrated with the file system itself, much like the competitive offerings.

Faxes with Sharepoint

Dropbox is a popular consumer solution to sync files between computers. The interface fits what I already see throughout my computer. It looks just like a folder. Only it syncs between each of my computers. I can put the Dropbox folder anywhere on my computer, and I can put whatever I want in it. This application presents a simple interface to the complex problem of sharing my own files between all of my computers. They helped people do what they were already doing as part of their workflow

The Damn Easy Principle

Recently I started to listen to podcasts regularly. And it was because listening and using podcasts became really easy after I moved away from Apple’s default Podcast app.

Opening Apple’s Podcasts wasn’t the issue, it was consistently using it.

I had no trouble opening the Podcast app. I had no trouble subscribing a few podcasts. However, this Podcast app showed far too much complexity every time I tried to use it. Listening and using the product was the bottle neck. Podcasts did not automatically download and every time I wanted to listen to podcasts, I had to select the individual to listen to. Until recently, I never listened to more than podcast episode per month. Here’s what I saw every time I wanted to listen to podcasts:

  • Open Podcast. See new episodes need to be downloaded
  • Open iTunes (or plug in my device to my computer)
  • Wait for my computer to download episodes
  • Press sync on my iTunes after the episodes have finished downloading
  • (Bonus pain: Make sure I am syncing podcasts with the correct computer. Only one of my computers can sync Podcasts with my phone)
  • Play new episode

A friend recommended Downcast. Within my first day of using Downcast, I knew I would be using it for a long time. It aggregates podcasts I want to listen to in to a playlist of unplayed episodes, synchronizes between devices, and downloads new episodes automatically.

Here are the exact same steps to play new episodes of podcasts in Downcast:

  1. Open Downcast. The application automatically starts downloading new episodes
  2. Play new episode. Listening became Damn Easy


Many apps get deleted. How can you make sure yours doesn’t get deleted?

  • Make the product integrated into the workflow of the task the user wants to perform
  • Make the access points straight forward and similar to what the your user already goes through
  • Make the product use / consumption process an absolute ease. Creators of content may be fine going through tedious tasks, but consumers of the same task may not be fine going through the same tedium



  • Apps on the Homescreen
    1. Clock
    2. Timeful for managing my daily reminders and calendar items
    3. Mindfulness Bell I use this to time meditation or pace work sessions
    4. Downcast (described above)
    5. Google Maps
    6. Swarm for checking in on Foursquare
    7. Camera
    8. Settings
    9. Caltrain Official Caltrain app, the largest value add? Rider advisories
  • Apps on the Dock
    1. Phone
    2. Messages
    3. Spotify for listening to music
    4. Simplenote Simplenote is part of my information processing workflow. It’s an incredible tool by Automattic that lets you have have synchronous editing between devices

Found this useful? I send exclusive emails with secrets on habits, learning and design to my mailing list

The Ultimate Beginners Guide To Web Development — Lessons from the Web Lead of an Amazon Web Service

My friends love learning. This guide is an amalgamation of emails I have sent friends and things I have picked up in my journey to learn web development [1]. By the end of this guide you’ll be able to answer the following questions:

  • “How might I build a personal website in an afternoon?”
  • “How might I start web development as a career?”
  • “How might I become a future expert in web development?”

Here’s a summary of what you’ll learn by section:

  1. How to understand the basics of a webpage and the internet
  2. How to structure learning on web development fundamentals
  3. How to engage and grow your expertise

These lessons are pulled from how I have learned. At the end of this guide, you’ll have the resources necessary to grow in your desired web development expertise (even if it is just for an afternoon).

Everything in life either grows or dies

Anthony Robbins

Web development is centered around communities of developers sharing and collaborating together to build software. You’ll see links to Github, the world’s leading open community to share code with “friends, colleagues, classmates, and complete strangers.”

Graph of github.com repositories. Image credit RedMonk

In the remainder of this guide, you’ll learn how you can grow from a beginniner to an expert in web development. This is by no means a comprehensive list of resources. Constraints are powerful in forcing maximum results with minimal investment. This guide lists resources useful for results. This guides teaches an approach on learning and exploring that you, web developer, will be able to use for what you’re trying to do.

I want to emphasize action:

  • If you have an interest in web development, you should block two hours for The Basics section and return to reading this guide at that time. For beginners, it’s important to have the right expectations. At the end of these hours, you should have a basic understanding of web development and a web presence.
  • Else, if you’re looking to learn web development as a hobby or as a career, you may want to print this document (pdf) and bookmark it for easy reference. The most important part of learning a craft is building a consistent habit, for more on structuring habits, see [2]. At the end of this reading, you will have a baseline for qualified resources on how to start. This prevents the choice analysis paralysis (when too many choices makes the choice difficult).

The following sections are ordered by increasing difficulty.

The Basics


I have sent various emails to friends who want to learn web development. HOWEVER, my results over the past 10 years show about 75% who want to learn web development actually want to do something quite different. They want to build a web presence and register a domain name. To complete this section, you’ll need a web browser and at least two hours to set up a web presence and do some reading.

If this is your goal, you should use a site generator that lets you share your site without touching any code. Use one of the following site generators to get started:

Note: You might ask yourself why more than one generator is listed. Each has a different strength and are very straight forward to test. These are listed by my ease of use, e.g. I found about.me to be extremely easy to use, but you may find Weebly fits your needs better

But wait, how does the internet work? Introduction on how the browser and internet (by Google researchers).


The internet is a global network of computers. It is millions of computers around the world, all connected. People often think of the internet as a cloud in space. In reality, every computer in the “inter-network”, or internet, is connected by actual wires – ethernet cables, phone lines, and fiber optic wiring on the ocean floor!

Detailed links

  • What makes Chrome or Firefox or Internet Explorer work? What is HTML and CSS?
    • Follow tutorials on HTML Dog
    • Search Quora. Quora is a resource to find guides to start. E.g. On CSS; On Learning HTML / CSS / AJAX
    • Search StackOverflow. StackOverflow is the go to resource for many developers. As you start to search for detailed questions, you’ll find a StackOverflow page with the answer. These are often more technical in nature than Quora
  • Want a more in-depth look on the internet? A white paper from Stanford

Diving Deeper


The resources in this section are meant for those who want to start learning the fundamentals of web development and dive deeper than the basics. This is perhaps the most important part of this article. These resources are part of a long term learning process that starts with learning how to structure your learning. At the completion of this section, you should have a basic knowledge of how to deconstruct and play with most web sites you use. Furthermore, you will have a set of resources to continually learn web development.

Set up your development environment

Learning a new environment is hard. This is a walk through of my basic environment set up. Whenever I have a new machine. I download SublimeText, Google Chrome, iTerm2

Note: I don’t dive deep on all the tools mentioned as they are beyond the scope of this guide (and others do a much better job of it).

Learn your web console

The console allows you to interact with HTML and Javascript interactively. This will let you change what you see and see what is happening behind the scenes as you go through a web page.

Read these guides for a basic understanding of the console. You’ll return to the console often as you continue to develop. If you master the basics of inspecting HTML and debugging Javascript, you’ll reap progressively larger benefits as you continue to learn. Especially as you develop more complex applications, you will have huge dividends in time savings if you master the console.

Knowing how to use the debugger is like having Quicksilver’s superpower from X-Men. You can stop Javascript execution, change variables, manipulate HTML, and much more. Image credit EW

Structure your learning

A critical juncture in learning is a habit to jump start your learning process. For example, I like to learn in the mornings. I describe my morning routine here. When I am learning a new craft, I will block at least 30 minutes every morning to learn and practice this craft prior to leaving for work. For more on building a habit see: [2]


For structured courses or books: limit what doesn’t work. Use this list as a list to sample from, and sample the course or book to learn what learning style works for you. For a book, you only need to read 30-40 pages to decide if a programming book’s author’s style works for you. Even if someone else recommended a book, it may not be ideal for you, everyone’s learning style and background is different. The same thing applies for courses. Programming books and courses vary in quality of learning depending on your learning style and skillset. For example, Mastering AngularJS is great if you have experience in Javascript and AngularJS. This book jumps from high level concepts for beginners to specific solutions to detailed pain points geared for experts. This type of jump may be disorienting if you’re new to AngularJS.

Don’t do this Do this

When It comes to your learning, use this technique of sampling then eliminating what doesn’t work. Image Credit Julie Zhou, originally used in a fantastic article on Junior versus Senior Designers

Future Experts


This section is related to a base set of resources are critical to specializing in Javascript and AngularJS.

Step 1: On Javascript and Web Technologies

Read these resources as you’re developing your project (or are going through the courses listed in the Structured Learning Section).

Step 2: On Angular JS

There are many flavors of Javascript frameworks [3]. The one I am most familiar with is AngularJS. As of this writing, AngularJS has one of most active communities on Github and many developers swear by it. For a showcase of applications built on AngularJS: https://builtwith.angularjs.org/. This framework introduces language constructs that engineers familiar with iOS and Android development use that are traditionally missing in Javascript. AngularJS is the right framework for many teams that want to rapidly iterate and maintain a single page application.

Must reads

Diving deeper

Step 3: On becoming a Browser Whisperer


Specific to AngularJS

What is the hardest part of developing for the web? What are pitfalls that every web developer should know?

The hardest part of developing on the web is constant change. To succeed in delivering a great customer experience, you sometimes feel like you’re hitting a flying target with a bow and arrow while on horseback. Browsers / browser versions / frameworks change all the time. For example, something that worked last week may not work this week due to a dependency change in your framework that seemingly has nothing to do with a tool you’re using within your project, and this problem only pops up in IE 10.

The easiest pitfall of development is not testing. At the highest levels, testing can be a critical piece to ensure customer success. Entire books are dedicated to the topic of testing and beyond the scope of this beginners guide. Testing may be often overlooked in young development teams. Browser tests are particularly hard because browsers are interpretations of how the web protocols should work. There is no guarantee of consistency between browsers and browser versions.

How can I practice development everyday or reinforce my learning?

Learn widely. Web development is a moving target with many different areas to specialize in. Here are some ways to stay engaged with different communities

Find a mentor. Chances are you know someone who does this professionally or unprofessionally. Ask them for code reviews or problems you’re having. Talking aloud is an incredibly powerful way to solve problems. Thinking as an engineer means moving between different levels of abstraction. Someone who has 20 years of experience sees an entirely different set of problems when I ask this person a question than I do when someone asks me the same question.

Build something and stretch your skills. You can choose the tools in what you build every day in your practice. Github has a variety of codebaes for you to play with that are a “checkout” away. Even if you never end up releasing or integrating someone else’s project into your development projects, you have the opportunity to play with something cool.

I’m smiling because I hope you’ll send me feedback! Send me an email at hi@frankc.net on what worked or didn’t work for you!

Special thanks to Abhishek Mantha for critical insights on how he learned development, Jeffrey Song for a beginner’s narrative on using this guide for learning web development, and Amaan Penang, Nate Ngerebara for feedback on early drafts of this guide.


[1] Why am I writing this? I have learned a lot in the past few years and wanted to share a set of resources with my friends who wanted to learn web development and internet friends.

I started web development at 12—at that time, people “surfed the world wide web.” For most of my academic and professional career, I was a researcher where I created software as part of my research. I built systems to study social influence on opinion at RAND, mobile environmental impact at UCLA, and behavioral theories on mobile phones at Stanford).

Development at a company or startup requires a different set of skills. I studied Computer Science and researched in Human-Computer Interaction, both of which required development. Yet, the craft of development is very different from academia. The focus of development is much more team oriented. From early 2013, I led the web team on Amazon Zocalo. Zocalo is a secure enterprise sharing and collaboration service that uses AngularJS as its Javascript frontend framework.

[2] On developing habits for learning I have found these to be good systems to model for learning new skills:

  • Tim Ferriss’s 4 Hour Chef – this is a book on learning, that also teaches cooking
  • BJ Fogg’s Tiny Habits – this is a habit program on learning how to develop simple habits
  • Lift – this is a social network for habits

[3] On picking the right Javascript framework I focus on AngularJS in this guide. To prevent frontend framework choice paralysis, AngularJS is the only Javascript framework presented. AngularJS has been hugely popular and useful for many developers who use it. If you’re interested in what else is out there, I would suggest TodoMVC TodoMVC implements the same To-do application using many popular Javascript frontend frameworks. This allows for a comparison and bootstraps the ability for people to prototype in different flavors of frontend frameworks.

More? Subscribe to my “Habits, Design, and Learning” mailing list by clicking here!

Writing Workflow: Building a System that Lasts

This article is about the steps I’ve taken to iterate upon my writing workflow. I’m writing this partially as documentation of how to structure a writing project in the same way as a software project.

This workflow is one under development. I have had problems with writing cadence and writing over the past few months. Writing this workflow is a means to increase the quality and the frequency with which I publish.

Jamie Todd Rubin is an inspiration with detailed articles on his craft of writing. Jamie is a science fiction author and developer at RAND, who has written consistently about processes for writing and evernote for years [1]. The art of creating process is essential for producing great work in the long term. Habits that reduce decisions into processes are critical to long term success.

In recent months, I have been writing consistently about 6–8 hours a week, most weeks. However, there have been weeks that I’ve written nothing.

Learning a new skill is hard and uncomfortable. This article is documentation on what’s worked recently and follow-up experiments I’m going to conduct on learning how to write better and more consistently.


Screenshot of my writing environment with Marked / Sublime Text

  • Git is typically used by developers to share and collaborate on code. It provides a nice interface between changes by individual developers and changes to be shared with a group. Why do I use git for writing? It gives me the ability to easily pare what articles are published and not yet published, I have nice versioning, and best of all, github displays Markdown beautifully.
  • Markdown is a language for writing in plain text that converts to beautiful html. This lets me jot ideas down quickly without the formatting necessary in other formats. Markdown looks like a .txt file with
  • Marked is a Markdown tool (by Brett Terpstra) that previews live with every save. This feedback loop has been the most seemless of all the editors I had experimented with. I have the analysis tool open—this gives me a word count and rough complexity metrics.
  • Sublime Text is my favorite editor for development and Markdown. It’s lightweight and infinitely extendible.


  1. Inception I’ll start a small note inside of /working folder. This start of an article is sometimes placed into the working folder then fleshed out at a later date. Typically, this is a sentence or a paragraph.
  2. Creation 2 –3 hour chunk to flesh out this original tiny idea. My goal is to have about 600 – 1000 words initially. Typically I’ll have Marked open and be looking at readability statistics occassionally.
  3. Editing I’ll spend another 2 hours to revise the idea for my reader. The initial draft is typically framed for what I find interesting. I frame this writing session for what is interesting for another person.
  4. Review I’ll send this out to a few friends for review. Also, I’ll make two fiverr requests for feedback. Fiverr is a service where small tasks (e.g. editing a blog post) can be done for five dollars. Within a few days (as the fiverr requests return), I will integrate the feedback from a fiverr editor.

Initial sketch of my git workflow for publishing

Git Flow: (defn) a strict way to use git for project release. I keep two branches of my git project (development / master) checked out simultaneously. The development branch is private whereas the master branch is public and accessible on github. The only common markdown file is the README.md which lists the index of my site. [2]


This is a two part process:

  1. On Github:
    1. Move the article from my /working folder (development branch) to a specific month (the master branch) for organization purposes.
    2. Check the urls / images. Resize large images and adjust the formatting.
    3. Push to mainline. This makes the article public!
  2. On WordPress:
    1. Export html from Marked and copy paste into WordPress. This allows WordPress to do the css styling and allow for an easy transition between Markdown and another blogging platform.
    2. Correct image urls to final remote locations
    3. Hit publish!

Future Work

  • Automatic daily email / analysis My initial workflow does not have a good feedback loop outside of the time I spend writing. Since I save each revision on git, it should very easy be able to run analysis on things like word count, complexity (see the above image for Marked application’s reading analysis). Jamie Rubin receives an email once a day that summarizes his writing for the day, streak length (currently 400+) and progress towards a goal. I plan to create something similar for my private development git branch.
  • Faster feedback loop for external editors My initial experiment using fiverr as external editors has been too slow. The two editor requests came back in 4 and 8 days, which slows down my publication process. I hoped for a more immediate feedback loop as a forcing function to publish. I plan to try this same process on Amazon’s Mechanical Turk sometime soon.

More Reading

I have read each of these books recently and have enjoyed them immensely.


[1] Many of Jamie’s articles focus on the development of processes, such as automation or writing consistently. His transparency in the iteration of certain processes (such as his Google Docs scripts) are really insightful and can provide a nice model for anyone trying to learn and develop habits. Here are some awesome articles:

[2] Read the guides on gitflow by Atlassian & @Nvie

More? Subscribe to my “Habits, Design, and Learning” mailing list by clicking here!

How to Design for Habit: The Secret to Making Great Products

Let’s say you created a product. A product that solves a common specific problem for many people. Yet, after a sign-up or an application download for your solution, people continue to have the same problem and do not use your product.


Why might someone continue to have a problem or use an inferior solution? These people already have routines based around their current solution. They may not even recognize they have a default routine. Help them use your product by developing new habits around what they already do. [1]

Design is making the unintuitive intuitive.

John Maeda

Designing products that people use is a process. Ideally, this process starts as a small conscious change in their routine and incrementally grows until the product becomes the individual’s go-to. At this point, the individual will have developed a new default routine for their use case.

Any new product trying to solve a person’s existing problem is in a tough position. This person regularly encounters a problem, has noticed it, and does not go out of their way to solve it. This problem has been part of their routine. Part of your solution must make this new behavior intuitive. Your product must fit into what an individual does regularly.

Penrose stairs are impossible stairs, they descend or ascend to form a continuous loop. This photograph (not Penrose stairs) is beautiful yet disorienting. People probably take these!

Penrose stairs are impossible stairs, they descend or ascend to form a continuous loop. This photograph (not Penrose stairs) is beautiful yet disorienting. People probably take these!

This article is about how to best design software products into the routine of what users already do.

What do people already do?

Designers should be thinking about how their solution fits into the workflow that already exists. Let’s take Evernote, one of my favorite applications. Evernote is a suite of software and services for taking notes that act as “an external brain.”

Bob is a student who has a problem with synchronizing notes across devices. He currently uses Microsoft Word for class notes. Microsoft Word works pretty well on his Mac, but doesn’t work on his iPhone and doesn’t have a way to synchronize online between his two computers. He wants to address some pain points:

  • Bob wants to take notes.
  • Bob wants to synchonize his notes online.
  • Bob wants to be able to change devices and take notes.
  • Bob wants to be able to take notes with consistent formatting.

The principal of least surpise: the person using the application should not be surprised by a software’s behavior.

The note taking process in Evernote is straightforward (see the “Getting Started” guide here). Bob might install Evernote on each device (PC, Mac, iPhones). Notes synchronize automatically between each of these devices (without the person needing to worry about copying or emailing the document). When Bob opens any note, the formatting stays consistent (Evernote looks the same and does not add additional “paper” formatting Word might).

The best software software should delight in only making small suprises— surprises that are subtle and seem intuitive. Intuition = non-intrusiveness. Design should give the right amount of information to guide the user through their interface.

A few years ago, Evernote released a usage graph they called the smile graph:

Evernote Smile Graph

In this graph, during the first year of install, the number of users that use Evernote on a monthly basis drops off from over 40% to 20% . Then over the course of the next two years, the percentage of individuals that use this tool increases. Many software products have a graph that is strictly decreasing. Evernote’s monthly user graph is different— over the course of the tool’s lifetime, the number of people actually increases over time. Interpretation: people start to recognize how useful Evernote. Bob may start using the tool even though they did not use the tool at first.

Software designers should design their tools to be adopted by hooking into what the user already does.

Fit into workflows


We are what we repeatedly do


Starting to use a new application requires you to think about how to start a new habit. Experts say it generally takes 21 days to establish a new habit [2]. In the world today, the world of applications, tv, consistent and constant notifications, and a bleed between work and non-work situations, new software products live in a tenuous spot. These habits compete with the automatic and established habits we already have.

Similar to creating new habits [3], there are effective patterns for software designers to create consistency:

  • Change environment Software should change parts of the user’s environment to help them use this new tool.
    • Software automatically start at system boot-up, so it is consistently at the taskbar.
    • Software can add extensions to applications that are already used, such as browsers plug-ins or integrations.
  • Notifications Software can add notifications to mobile phones so users can have another interface to its functionality
  • Import Software should import existing data. With any habit, there is always a bit of inertia to keep using the same pattern as before. Importing data from previous tools should help users bridge the gap between new and old by having all of the older data inside.
  • Trigger Software can change the operating system hook. Upon install, a software can ask a user to change this default to open your product.

Exceptions to the rule:

  • Disruptive technologies Software may create an entire new market and value network based around some value prior work did not have. Wiki link. Because no prior behavior or habits existed, this type of software establishes an entire new set of habits.
  • Inertia Software may have a high inertia that makes movement very difficult. Services and platforms build ecosystems around use, and switching is hard. For example, I’ve heard many twenty-somethings whine about Facebook and their dislike of the privacy controls, yet many of these individuals still use the service. “It’s what my friends use.”

Building Products as Habits

The most innovative and useful products of the future will be those that create lasting behaviors. Designers that understand how products fit into workflows can then better help their users find success in solving problems.

Now I want to ask you all a question:

  • What tools do you use do you use everyday? What makes them indispensible? (Extra credit: Is it for the same reason you used it in the first place?)

Email me! frxchen [at] gmail.com


[1] BJ Fogg, my mentor and Stanford professor who started the Persuasive Technologies lab, describes a simple model for changing behaviors here behaviormodel.org. Relying on epiphanies is hard, instead, use these methods to help your users do what they want to do.

[2] Dean, Jeremy, Making Habits, Breaking Habits: Why we do things, why we don’t, and How to Make Any Change Stick. Amazon link

[3] Design your Personal Operating System: habits. I discuss the basics of habit design with lots of references to things I like to read.


More? Subscribe to my “Habits, Design, and Learning” mailing list by clicking here!

Playlist Your Morning Routine: Beat Complexity like a Boss

Some mornings start off awesome, and the day stays awesome. Other mornings start slow and create slowness throughout the day. These slow days suck.

What’s the difference between the two?

At dawn, when you have trouble getting out of bed, tell yourself, “I have to go to work—as a human being. What do I have to complain of, if I’m going to do what I was born for the things I was brought into the world to do? Or is this what I was created for? To huddle under the blankets and stay warm?”

Marcus Aurelius

Your morning routine shapes the arc of the remainder of the morning and potentially the day. By defining a crisp morning routine, you can maximize your day in whatever it is you’re trying to accomplish.

Dawn Geometry

We are all works in progress. This article is about how you can shape your morning routine.

Why You Should Minimize Decisions in the Morning

To be productive:

  • Every day, Barack Obama hits the gym at the same time and alternates between cardio and weights. He dresses in only blue or grey suits. [1]
  • Before the Olympics, Michael Phelps would eat the same 12,000-calorie meals throughout a day. While training 6 hours a day, 6 days a week, he would even play the same music playlists prior to each session. [2]

These routines critically minimize decisions. Research has shown that willpower and self-discipline are like muscles. We can strength them with training, but over the course of a day, willpower is a limited resource [3]. William James, the first American teacher of psychology, sought to form habits around routines to help us “free our minds to advance to really interesting fields of action.”

I call a set of routines a playlist. In music, playlists allow you to move items around, and a playlist has a certain progression. As I start making a new playlist, it’s important to move items around to find the best fit. I have a specific running playlist that helps me start my run; it starts slow then speeds up. The first song in my running playlist is typically at 120 beats per minute then gradually increases to 140–150 beats per minute and finally settles on a more consistent 180 beats per minute [4].

A morning routine can be thought of as a playlist of behaviors. There is an optimal progression, and iterating upon the order is best done through testing. The progression of the playlist leads me towards a productive day. The playlist allows me to minimize decisions in the morning and maximize my ability to do things later in the day.

The Playlist

My morning ritual

Writing out my morning ritual

Tim Ferriss recommended Daily Rituals as part of his book club [4]. I loved this book because of the sheer breadth of how people started their day.

From the author [5]

The book’s title is Daily Rituals, but my focus in writing it was really people’s routines. The word connotes ordinariness and even a lack of thought; to follow a routine is to be on autopilot. But one’s daily routine is also a choice, or a whole series of choices. […] a solid routine fosters a well-worn groove of one’s mental energies and helps stave off the tyranny of moods.

Halfway into the book, I decided to write down my morning routine. I realized I might iterate, so I wrote it on Post-it notes. This has been shuffled quite a bit, and I find myself adding elements every now and then.

This playlist starts the moment I wake up in the morning:

  1. Alarm I’ll sit up and take a breath while my alarm is sounding then swipe it off. I make sure I put the phone away so I am not distracted by emails and texts.
  2. Make bed
  3. Hygiene I’ll put on face wash then start brushing my teeth.
  4. Water I will place yerba matte into my French press and start my water pot to boil.
  5. Shower While still brushing, I’ll jump into the shower.
  6. Suit up After showering, I’ll weigh myself and dress for the day.
  7. Breakfast I’ll eat three raw eggs and drink one liter of cold water with my daily vitamins. The water will be done boiling by now, and I’ll set the tea.
  8. Meditate I’ll meditate for ten minutes.
  9. Create Without turning on my computer, I’ll draw, write, or do some combination of these two on paper.

Test and Iteration

The critical piece of any real system is the test and iteration on individual pieces. Every day, there can be different needs, and to start a solid routine, testing and adapting it is critical. Failures are important learning opportunities, and here are some of mine.

Furthermore, writing down my routine on Post-it notes was only part of the story. Many of these steps already existed as things I did; writing them down was simply a way to think through the problem. They helped me better sequence the order and transitions between different activities. Finally, I no longer need to look at this set of Post-it notes, as it’s become nearly automatic.

Here are some iterations that were less optimal:

  • Check email/social media These two types of applications are incredible time sinks when I need to get moving in the morning. In each of the steps above, I minimize my time on my phone.
  • Meditation sequencing When I first started meditation, I tried to do this as soon as I got out of bed but found myself too groggy to really focus on my breath for ten minutes. Similarly, I tried meditating before breakfast and found that my stomach growled way too much. When I did not boil water early, my water pot would typically start screaming midway into my meditation.
  • Falling off the wagon for meditation In the past, I would consistently meditate for months then fall off the wagon for a few months and return. Thus far, this playlist has kept me on the wagon.
  • Fractured toes In the past two weeks, I’ve fractured two toes. Before I sit down for writing, I have to clean and re-bandage my foot.
  • Pager duty Every couple of months, I go on pager duty for work as a Software engineer. This results in a rough two-week period where I really have to focus on individual playlist steps because my sleep may be punctuated by a midnight page. Read more about pagers: [7]

Routines as Playlists

Playlists represent individual actions to be performed. My morning routine has been a work in progress for years, and I expect this to continue to evolve.

What should you take away? Playlists are a way to think about behavior routines and a tool to increase productivity. After I wrote my initial list, I found that different combinations worked better than others. Listing out my “morning playlist” helped me optimize my output for the rest of the day.


[1] Vanity Fair: Obama’s Way

[2] Motley Health: Michael Phelps Workout and Diet

[3] HBR: Boring is productive. This is a great summary piece on some of Roy Baumeister’s work. The same mental energy you use to choose items of clothing or food is used for your higher importance tasks.

[4] Research shows that elite marathoners (regardless of height/stride/running form) settle on 180 steps per minute. Because people subconsciously attune to their environment (especially music), playlists set to this cadence likely attune running cadence to this speed, thus improving performance.

[5] Tim Ferriss blog: 1) Daily Rituals 2) The Odd (And Effective) Routines of Famous Minds like Beethoven, Maya Angelou, and Francis Bacon

[6] Daily Rituals: How Artists Work (link). I highly recommend this book. The ones I enjoyed the most were Benjamin Franklin, Frederick Chopin, Ernest Hemingway, and Haruki Murakami.

[7] For those not in software development, customers facing issues and system monitoring tools will page engineers. Our team has two engineers who rotate on primary and secondary pager on-call when one of these pages occurs. If the primary engineer does not respond within a set amount of time, the secondary engineer gets paged. If the secondary does not respond, his/her manager will get paged.

Image credit Jes: Dawn Geometry

BONUS Routines from blogs I love to read

More? Subscribe to my “Habits, design, and learning” mailing list by clicking here!

Design your personal operating system: habits

Habits are behaviors you do without thought. Your default. Your routine. Habits become the operating system you live your life through.

Marketers, advertisers, psychologists, designers have discovered tiny secrets that help them create behaviors and program an individual’s operating system.

Benjamin Franklin—statesmen, musician, author, inventor—asked himself every morning:

What good shall I do today?

He tracked 13 morals on a daily basis to see how he had been doing. He created a system to develop better habits and improve himself on a daily basis.

I want to share a slice things I have been a part of. I currently work as a software, software is the language I communicate in. I used to work in human-computer interaction for behavior design and research. While there is overlap in technique, this intersection of design, behavior, and engineering is unique.

Many of us have trouble recognizing the fact: You can change your habits, your routines. By using simple tools and frameworks, you can change even the hardest habits. According to a recent study, only about 12% of those who set resolutions achieve them [1]. This means, about 88% of people fail at their resolutions! As the new year starts they may say:

  • I will never smoke again.
  • I will not eat carbs again.
  • I will lose 10 lbs this year.

88% of those who create new years habits do not follow through

88% of those who create new year’s habits do not follow through

Many of these resolutions fail in the absense of a habit.

Habits are a series of choices that are individual behaviors. A behavior is a combination of time, environment, physical and emotional energy, and self-discipline. BJ Fogg, Stanford professor and godfather of Captology (the study of Computers as Persuasive Technologies), mentions fundamentally three ways to change behavior [2]:

  1. Have an epiphany
  2. Change your environment (what surrounds you)
  3. Take baby steps

A few months ago, an incredibly smart friend and I were talking about habits. He lost over a hundred pounds over the past year, which was mindblowingly cool to me. And he wanted to do more, though had plateaued. When I started to describe my process, I recognized some subtle framing changes to thinking about habits that combine two interests: developing software and designing behavior.

He asked me this question:

“Is there a secret to maintaining a new, hard habit?”

I want to share a bit of that conversation with you today.

Developing software

Day to day. I write code that defines what a user sees and how a user can behave in software. Software is designed and built with a specific purpose in mind. When it does not work, I use the equivalent of Spell Checker to have the ability to 1) stop time in software, 2) observe all of the complexities happening in code, and 3) change values in the system to see if it will allow the system to keep running. I can see how and when problems happen.

The tools we use in software development do not exist in the same way to develop behaviors. This software system runs on a computer. I can stop time, and observe, change, tinker with the system in action. We can take part of this framework in thinking the software of our everyday lives, the behavior.

Good habits free our minds to advance to really interesting fields of action.

William James

Developing behavior

Habits are social systems we operate in. People have said 90% of communication is non-verbal. The amount of signals we receive from different social situations is astounding and our brains are wired to process all of this without conscious thought. The way a software developer parses complexity to find issues is impossible for behavior. There is no analogue to pausing time and figuring out all the variables in a social situation.

Creating an individual habit is hard. Many books have been written about this [3]. Habits never arise in absense of a social situation. Marcus Aurelius once said “the intelligence of the universe is social”. Changing an entire social ecosystem is hard, and so is change in the absense of an ecosystem.

The key to creating new habits is automation: Create systems where the only choice is success.

There are specific tactics to this:

  1. Start small, simple.
  2. Make it social, maximize fun.
  3. Create small feedback cycles, learn, cut ruthlessly.
  4. There is no forever. Only define behaviors with a time-span.

Create automatic systems to maximize habits. Trying to run? Find a group and join them

Create automatic systems to maximize habits. Trying to run? Find a group and join them


[1] Wiseman, Richard. 88% of 3000 people failed in their resolutions. http://j.mp/RFd65w Sitenote: Many cite this study, but seem to miss out on a specific reference. Culprits: WSJ, Wikipedia, the Guardian, Buffer. They either contain no citation or cite other news articles.

[2] Fogg, BJ. Tiny Habits. At the time of this writing, over 24,000 have participated. It takes about 3 minutes per day and is a single week. http://tinyhabits.com

[3] Books on habits:
- Charles Duhigg’s Power of Habit
- BJ Fogg’s Persuasive Technology: Using Computers to Change What We Think and Do
- Nir Eyal & Ryan Hoover’s Hooked
- Chip & Dan Heath’s Switch
- Daniel Pink’s To Sell Is Human
- Richard Thaler and Cass Sunstein’s Nudge


More? Subscribe to the “Habits, design, and learning” list by clicking here!

About @frankc

Taken on a run around Los Angeles. 2013

Taken on a run around Los Angeles. 2013

Hello world

This piece of internet real estate is reserved thoughts that generate ideas, conversations, and projects. I’ll be writing to find and explore my interests with a community of people.

I build stuff as part of my everyday life. I jot some of what I build in workflows, scripts, research notebooks, evernote, simplenote, sketch notebooks, note cards. Some of these things become permanent parts of what I do, some of it gets shared among friends, and most of it never gets shown to the world.

Because it’s much easier to start a project than to finish a project, I am writing consistently and forcing myself to hit the publish button. The best growth happens in spurts. So here we go. The inaugural post to my blog.

Who am I?

Part of my life was spent as a researcher. I worked in human-computer interaction and built technologies to help motivated individuals create habits by shaping their environment and their habits.

Currently, I spend most of my time developing software. I work with a highly talented team to change how people use enterprise software at AWS.


Sharing narratives is a part of the human experience. When you hear a narrative, you use your perspective to create a new and different understanding of the story than the one I tell. Your mind turns complex topics into simple narratives.


I have a photo of me running at the top of this post. Running has brought me to see, hear and feel the world differently. I love swimming in every body of water I can find, eating as much spicy ethnic cuisine as my stomach can handle, and traveling by overnight train whenever I have the chance.

You can follow Frank Chen on Twitter at @frankc. Subscribe to the “Habits, design, and learning” list by clicking here!