foote.pub

Jonathan Foote, Security Dad

Follow Me On

GitHub Open source code

Twitter Mostly retweets and non-sequitors

 

Posts

Stowing distracting MacOS apps (personal edition)

Stowing distracting Android apps

Other

Stowing distracting MacOS apps (personal-use edition)


In this post I’ll explain an effective approach to isolate attention-consuming apps and websites on my personal-use MacOS laptop. This technique is analogous to my approach on Android.

I don’t check compulsively check apps and sites as much on my laptop as I do my mobile device. I don’t carry it around in my pocket (or otherwise) and it is configured to lock when I’m not using it. Overall my interactions with my personal laptop tend to be more intentional.

But I still have unintentional interactions with it. A common trap I fall into is unlocking my laptop and seeing my leftover messaging app or site windows, then getting sidetracked by them. That could be in the form of thinking about the content or actually acting on it. I often forget why I logged on in the first place. Another trap is habitually logging in when I am tired and should be taking a break (AFK), then looking for a dopamine fix.

This change deliberately addressed these bad interaction patterns, and similar to my Android setup I immediately felt more control over my laptop usage.

Stowing apps, MacOS edition

The idea is to keep distracting apps and sites accessible, but make them harder to use. Stow away any app or site that is used compulsively (without thinking) or that is distracting. The immediate offenders for me are email (several accounts) and Slack.

I can still get to these apps and sites, but they are isolated. I have to complete a purposely-difficult challenge (ridiculous password) to access them. So I am forced to stop-and-think if my interaction with them is intentional.

Design

End state after applying this configuration

There are several focus-oriented apps and browser extensions available for MacOS and browsers, but none of them work well for me. They supply variety of tools, such as time-based app/site blocking, time-of-day limitations, app timeouts, reminders, nudges and analytics. I don’t find of these controls fit my needs. In practice, I find they address I problem I’ve already solved (e.g. via Pomodoro technique), they are too constraining/clunky so I turn them off, or they completely ineffective for me. Ultimately I need a method that lets me use any distracting app or site at any time, for any length of time – but only when I explicitly intend to.

I’m using MacOS Big Sur on an early 2016 MacBook 12" (1.2 ghz Core m5). This should work for most modern MacOS versions. Here is how I isolated my distracting apps and sites:

Step 1: Configure a separate app for email access

Like my Android configuration, I isolate all apps that I compulsively check. Again, this includes email for me. Since I use browser-based clients for email, this is kind of a special case in this scheme: I need email to run in it’s own app on MacOS.

I took a look at web-app-to-native-app conversion tools like Fluid and a CEF-based tool whose name I can’t recall, but I had a feeling a single “app” would work best (versus one for each email app). So I decided to switch to Firefox with container tabs for email access.

I already had container tabs configured from previous use, so I just dusted them off. Firefox is too slow for general use on my dated MacBook, but container tabs are a good fit for running the email clients. I configured Firefox to re-opens the desired container tabs when I start the browser so I don’t need to fiddle with them each time.

Account picker

Firefox with container tabs for various webmail accounts

With Firefox isolated, I was set to use Chrome for general web browsing. I use Choosy to direct clicks to the right browser.

Choosy

Step 2: Block email in my general-use browser

I wanted Google apps (calendar, drive, etc.) to be available under various Chrome users. But I knew accessing gmail from Chrome would be too tempting – I would inevitably type gmail.com in the address bar without thinking at some point.

I looked around at a lot of options and ended up installing the BlockSite extension to completely block gmail. I’m leery of installing extensions in my browsers, and this is overkill for my needs, but it seems to be very popular and have some paying customers. I’m hoping there is safety in numbers in there. Regardless, I made some tweaks to each Chrome user profile I installed it into:

  • When setting up BlockSite, don’t agree to the terms presented. They want permission to sniff your data to block adult sites or something; I don’t need that feature.
  • I configured the Chrome extension to have minimal permissions via the Chrome configuration menu
  • I disabled motivational images in BlockSite (I find them distracting)
  • Finally, I configured BlockSite to disallow all access to my email sites

Blocksite 0

Blocksite 1

User beware. Disable unneeded BlockSite capabilities.

I could use this same pattern for other web apps or sites. If I found my calendar or some news sites distracting, I could add them to my Firefox container tabs (or a CEF-based app if I wanted to isolate it from email) and then block it in Chrome. But I haven’t had a need to do that yet.

Step 3: Password protect Firefox (email) and Slack

I surveyed various “App Locker” MacOS apps and none of them were great. I settled on Lock Pro (8.99 USD) and configured it to use a very, very long password. Then I configured it to block access to the apps that I use compulsively.

Locked app

What I see when I impulsively launch Slack

Overall this actually works pretty well – it creates a break in my flow that causes me to decide on my intentions before I use the app. It has saved me numerous times since I configured it. As I got used to the new configuration I’ve simply stopped trying to access the problematic apps unless I mean to.

Step 4: Close Firefox and Slack on sleep

The final, but critical step was to ensure email and Slack weren’t waiting for me the next time I interacted with my computer. I’ve used various mechanisms to hook sleep / idle events in the past, but it dawned on me that I might there might be a simple way to do it. I use BetterTouchTool for a boatload of productivity shortcuts, and discovered that it has a hook for running shell commands when my MacBook goes to sleep. So I configured it to (gracefully) close Slack and Firefox when my MacBook goes to sleep.

BTT

BetterTouchTool config

I was concerned this might be super annoying. Like if I was doing something, got distracted, then came back to find my MacBook went to sleep and I lost my place. But in practice I haven’t had any problems at all with this yet: opening my MacBook and having bounded, intentional interactions with those apps is working just as I’d hoped.

Early results

I’ve been running with this configuration for a few weeks as of this writing. I haven’t analyzed my usage data yet, but anecdotally I feel my interactions with my personal laptop are more intentional. The immediate feeling is less drastic than when I made changes to my Android configuration, but I have to say these changes seem to be compounding: with no easy-access to these personal feeds, I find myself not thinking about them as much.

Next up: work laptop

I’m already pretty careful with my attention at work. It’s a survival skill as a remote employee in a Slack-addicted world. It will be interesting to see what improvements I can make when I adapt this approach to my professional M.O.

Thanks for reading! If you have any feedback, questions or want to chat about this sort of thing feel free to drop me a line.