Jacob Evans

Paste a URL That's Open in Safari Without Switching to Safari

During the course of my workday, I paste dozens of web links into emails, Slack messages, iMessages, and my personal notes. I hate having to ⌘+Tab to Safari, hunt for the tab I need, click on the address bar, highlight & copy the tab’s URL, and then ⌘+Tab back to the app I was using and paste the link. This sort of context switching often interrupts my writing flow and train of thought.

To make this workflow a little bit easier, I devised a simple, but effective, TextExpander AppleScript snippet to grab and type the URL of the active tab in the front-most Safari window. Here it is:

tell application "Safari" to get URL of front document

This is useful most of the time, however there are instances when I’d like to get a list of all my open Safari tabs and pick the one I’d like to paste. With a little bit of AppleScript and Keyboard Maestro magic, this is pretty easy to accomplish.

Here’s the AppleScript I authored to display a pick list of open Safari tabs, devided by Window. Once a tab is chosen, it outputs the tab's URL:

-- Get a list of tabs in Safari
tell application "Safari"
  set _tabNames to {}
  set _tabURLs to {}
  set _frontTabName to name of front document
  
  -- Create a list of URLs separated by window
  set _windows to every window whose visible is true
  repeat with _window in _windows
    set end of _tabNames to "----------"
    set end of _tabURLs to ""
    
    repeat with _tab in _window's tabs
      set end of _tabNames to name of _tab
      set end of _tabURLs to URL of _tab
    end repeat
  end repeat
  set end of _tabNames to "----------"
  set end of _tabURLs to ""
end tell

-- Pick from the list of open tabs and output the choset tab's URL
set _currApp to (path to frontmost application as Unicode text)
tell application _currApp
  activate
  choose from list _tabNames with title "Safari Tabs" default items _frontTabName
  if result is not false then
    set _tabChoice to item 1 of result
  else
    return
  end if
  
  repeat with _i from 1 to the count of _tabNames
    if item _i of _tabNames is _tabChoice then return item _i of _tabURLs
  end repeat
end tell

Keyboard Maestro makes it easy to (1) run this script when a bit of text is typed (in my case .turl) and (2) paste the URL of the selected tab. For reference, here’s a screenshot of the macro I built in Keyboard Maestro:

Keyboard Maestro "Get URL for Safari Tab" Macro

Note: The "Execute AppleScript" action needs to be set to “Type Results” upon successful execution.


Hopefully these two shortcuts, designed to quickly grab a link from Safari, will help you as they have helped me stay in the flow and save a little bit of time in the process.

The Ubiquiti UniFi Dream Machine is the AirPort Extreme’s Rightful Successor

Over the last year or so, I've been working to replace the network equipment in my home with Ubiquity products, and last night I decommissioned my 6th generation Apple AirPort Extreme and replaced it with the UniFi Dream Machine (the non-pro model).

Setting up the Dream Machine is very similar to setting up a new HomePod. All you've got to do is plug it in and download and open the UniFi Network app. Ubiquiti has done a good job of obstracting a lot of the complexitities for non-network nerds. However, should you want to delve deeper into monitoring and managing your UniFi network, the web-based management interface is exceptionally executed and comprehensive.

While the verdict is still out, initial indicators are very good. My wifi speeds have almost doubled, allowing me to take better advantage of the fastest pipes in the west. For those looking for a whole-home, integrated, wifi and router solution, the UniFi Dream Machine is hard to beat.

Update: Apparently, Apple has started selling the Eero mesh wifi system. Ostensibly, and this probably goes without sasying, they're backing the wrong horse.

Update 2: 9to5Mac has a great write-up extolling the Dream Machine's many great features.

How to Add a Little Inspiration to Your Email Signature

Speaking of email, I’ve been wanting to jazz up my email signature for some time because, ya know, email signatures are boring and very predictable. Until today, my default signature, outputted using a TextExpander snippet, contained a valedictory and just one other word: my first name. I thought it might be fun to add an inspirational quote at random to the bottom of my signature line, which now looks like this:

Example email with signature containing a random quote.

Here’s how I did it.

I recently created a spreadsheet of quotes for another project, and I thought it would be neat if I could create a script to consult the spreadsheet and output a formatted quote at random. Turns out, it wasn’t very hard to do just that with a little bit of AppleScript and TextExpander magic. Here’s the AppleScript:

property _quotes : missing value

(*
  Get the list of quotes from a selected Apple Numbers file and cache
  the list of quotes in a property that will be used for subsiquent
  executions of this script.
  
  The list of quotes should be in a table on the first sheet of a 
  Numbers document with the quote in column "A" and the quote's author
  in column "B". The first sheet should only contain this one table.
*)
if _quotes is equal to missing value then
  -- Get a reference to the current app that will be activated
  -- after the Numbers document is selected and it's content read.
  set _currApp to (path to frontmost application as Unicode text)
  
  tell application "Numbers"
    activate
    
    set _quotesDocPath to POSIX path of (choose file with prompt ¬
      "Quotes Spreadsheet Location:" default location ¬
      	(path to home folder))
    set _doc to open _quotesDocPath
    tell front document to tell active sheet
      tell (first table whose selection range's class is range) to ¬
        set _quotes to rows's cells's value
    end tell
    
    close _doc
  end tell
  
  tell application _currApp to activate
end if

-- Pick a quote from the list at random
set _quote to item (random number from 2 to count of _quotes) of _quotes

-- Format the quote and output the author's name in uppercase.
return "\"" & item 1 of _quote & "\" —" & (do shell script "echo " & (item 2 of _quote) & " | tr [:lower:] [:upper:]")

All I needed to do next was create a TextExpander snippet to run the script. Then add the newly created script snippet to the bottom of snippet responsible for outputting my signature. Here's screenshot depicting one of my signature snippets that includes the random quote snippet:

Example of my email signature snippet as it appears in TextExpander

Note: the first time the script runs, it prompts for the location of the Numbers spreadsheet containing the quotes to use. TextExpander may also need to be granted permission to read files located in the home folder.

I’m pleased to report this works quite well. The only catch is the TextExpander snippet needs to be changed slightly whenever the quotes spreadsheet is updated (for example, by adding a new line to the end of the script entry). This will cause it to reload and cache the updated quotes.

My Apple Numbers quotes spreadsheet can be downloaded from here.

Enjoy doling out little morsels of inspiration one email at a time!

Putting Email In Its Place

Email is a communication method that must be tamed. Left unchecked, many knowledge workers, and particularly managers, can spend the majority of their time reading and sending email—like a human communication router.

When I served as a technology executive at a fast growing, mid-sized, software company there were entire days where an inordinate amount of my discretionary time was dedicated to managing email. Without question, this was a poor use of my working hours. And as a result, I have worked to develop a handful of methods to tame the beast we call email.

I’ll start by detailing two particularly effective methods I use to deal with what I call "bulk messages" followed by how I approach checking email and tuning notifications.

Newsletters

If you’re like me, you probably get a bunch of email from companies and organizations you like. You probably also get emails from people that somehow find you but you have no interest in doing business with them. More often than not, these are not urgent or important messages requiring your immediate attention and therefore should not hit your inbox.

Instead, these bulk communications can be filed away into another folder bypassing the inbox altogether. Fortunately, this can be achieved using a mail rule, allowing you to batch review these messages when you're low on energy and have some free time.

The mail rule I setup to file these types of messages away is pretty simple. It moves messages to a folder named "Bulk" that contain one or more words or phrases that are most likely to be found only in bulk emails. The words and phrases are as follows:

  • opt-out
  • unsubscribe
  • viewing the newsletter
  • edit your preferences
  • email notifications
  • update profile
  • manage your account
  • email preferences

If you use Gmail or G Suite as your email provider, here’s the “has the words” search string I used to create my bulk message filter:

"opt-out" OR unsubscribe OR "viewing the newsletter" OR "edit your preferences" OR "email notifications" OR "update profile" OR "manage your account" OR "email preferences"

I have found this rule to rarely file away a non-bulk message, but your milage may vary.

One nice ancillary benefit of corralling bulk messages into a single folder is that it gives you a punch list of all the newsletters you’re subscribed to. This makes it relatively easy to work through the list and unsubscribe to the ones that are no longer of interest.

Since setting up this simple rule, hundreds of messages a week that would have normally hit my inbox get filed away for later review.

Distribution Lists

If your company is anything like the ones I have worked with, chances are you get a lot of email via lists you’re a member of. Many of these distribution lists are used to send non-urgent, and often unimportant, company announcements that don’t need to be read right away or responded to immediately (or at all). For this reason, especially if you work in a company that sends a lot of non-urgent, for-your-information type of emails, you may benefit from having these messages skip your inbox by setting up a mail rule to file them away for later review.

Email Checking & Notifications

Once implemented, the two bulk email suggestions should reduce the number of email notifications you get by an order of magnitude. However, you may want to do what I’ve done and reduce the number of notifications and unread message counts further (and by "further" I mean "to alomost zero").

I determined some time ago to only process email a few times a day: once in the morning, once at mid-day and once when finishing up work. This has worked relatively well for me, however due to the nature of my work, I often need to send email messages outside of my processing windows. For this reason, I have all but turned off email notifications and unread badge counts. This allows me to leave my email app open without having to be reminded of how many unread messages I have waiting or getting pestered by notifications.

I do make use of the VIP contact feature on my Mac and iOS devices. For the few people that are on my VIP lists, mostly key leaders I work with on an irregular basis, I like to get notified immediately when they send me a message.


Since implementing these three simple strategies for taming my inbox, I can confidently say most email that does get through is more deserving of my time and attention. It effectively cuts out a lot of the “white noise” that would otherwise accumulate in my inbox, enabling me to deal with email on my own terms, to which my time and attention (and my delete key) are eternally grateful.

Apple Watch’s Killer Feature No One Told Me About

Since purchasing the original Apple Watch back in 2015 I’ve used it mostly for checking the time (shocker, right?) and getting notifications delivered to my wrist. The former is extremely useful, the later I’ve had to tune over time to only display the most timely alerts, such as iMessages and emails from individuals on my VIP list. Outside of these two use cases, I’ve struggled to find the killer feature1 to make me really love the watch, until now.


I’m working to be more present when in social situations. I want to give my friends and family my undivided attention. And when I’m not around people, I need to relearn what it means to be alone with my thoughts. Unfortunately, pulling out my smartphone to check the news, email, and Slack messages has become my goto habit when there’s a lull in the conversation or when I’m alone and bored.

Finding excuses to do something, or to have something, is one of my many talents. For instance, I think I should have my smartphone with me at all times because there may be a situation (or lord forbid an emergency) requiring my immediate attention. There may be an instance where I need to crank out a bit of work or help a colleague. There may even be a time when I need to lookup some bit of esoteric information to win an argument. I can count on one hand how many times each of these scenarios has happened to me since the dawn of the smartphone (the last one being the exception, of course).

Don’t get me wrong, smartphones are incredibly useful. My iPhone is indispensable when traveling. I would hate to go back to using paper maps and printed directions. But there are times, perhaps many times, when I don’t need to have a smartphone in my pocket, particularly on a date night or when visiting with friends and family. But I could benefit from being reachable if an emergency or situation comes up requiring my immediate attention. And that’s the killer feature of the Apple Watch.

The cellular-equipped Apple Watch can be almost entirely decoupled from its iPhone companion. I can receive phone calls and timely alerts on my wrist without having my iPhone nearby, which means it can serve as a smartphone replacement for critical uses2 without bringing all the tempting distractions the iPhone has to offer.

I attended a family function recently and experimented with leaving my iPhone in the car and only wearing my Apple Watch, and guess what? I was more present. I found it easier to engage in conversation and really listen—not to just to listen to reply. I even took a short nap when there was a long lull in the conversation. It was a refreshing experience, one that I hope to repeat often.

I’m certain my new found presence wasn’t noticed by others, but I noticed. And when I was tempted to reach for my iPhone, it was through a door, down some steps, over the grass, across the streat, and safely tucked in the glove compartment in my locked car. My smartphone was the perfect distance away.


  1. The Apple Watch is excellent at health and fitness tracking. For many this is the killer feature. I'm not a health nut, nor do I peform regular workout routines. For this reason, the watch hasn't been useful to me for recording health-related activities. ↩︎

  2. I appreciate many people take pictures when out and about primarily with their smartphone. I don’t, and when we do need to take a photo, my wife has her's at the ready. ↩︎

Developing Healthy Routines

Small things done consistently can add up to big things in the long run. As I’ve transitioned to working 100% from home, I’ve been considering the small things I can add to my day to put my life and work on a more healthy trajectory. Like most folks, I have no trouble developing bad habits. However, I have found with a little bit of motivation and early positive results, developing better habits isn’t as hard as I thought it would be.

For the last few weeks, I have been working to implement a morning, workday startup & shutdown, and evening ritual. The days I’ve complete these routines have been far better and more productive than the days I haven’t done them all.

The following routines, detailed in the order they are performed, are the ones I have been working to follow each workday. The daily shutdown ritual has served me particularly well as it often sets me up for success the following day.  For this reason, I recommend developing that habit first.

Morning Ritual

  1. Wake up at 6am
  2. Drink a glass of water
  3. Make a cup of coffee (5 min.)
  4. Meditate (30 min.)

I like quiet mornings, for this reason I try to take some time before I take on the day to sit and be still.

Note: there are some “dad duties” I have not detailed here, but know I often include my young daughter in my morning and evening rituals.

Workday Startup Ritual

  1. Learn something new (60 min.)
  2. Eat a frog: complete one of the three must-do tasks for the day (60 min.)
  3. Process email and task inboxes to zero (30 min.)

The better you get, the better you gotta get. I desire to be a lifelong learner, but as I’ve gotten older, I haven’t taken the time to proactively learn new things. I’m working to set aside time each day to learn something new that can help me improve my craft and professional pursuits.

Also, for many years, my day would start by diving right into my email, which often derailed my plans as I got distracted by unimportant but urgent asks and tasks. The results? I struggled to move my important goals forward during the time of the day when my energy level is highest. For this reason, I’m now checking my email after I complete one of my must-do tasks.

Workday Shutdown Ritual

  1. Go for a walk (70 min.)
  2. Finish work by 4pm
  3. Process inboxes (e.g. email, Slack, unprocessed tasks, paper mail, receipts etc.) to zero (30 min.)
  4. Process notes and create tasks as appropriate (15 min.)
  5. Ensure each of my projects has a next action (5 min.)
  6. Review calendar and task list and ratify three, must-do tasks to complete the following day (10 min.)

I have been trying to walk every day for at least an hour. I typically go for a walk after my workday startup ritual and before my workday shutdown ritual. Which means, I typically go for a walk around 11am or 1pm.

I end my day by cleaning up and processing all of my “in trays” and planning the following day. I have found this practice to help keep my systems current and to reduce the amount of “residue” carried into the evening hours from a demanding workday.

Evening Ritual

  1. Clean the dishes & straighten up the house (30 min.)
  2. Watch no more than 1 hour of TV
  3. Leave a glass of water out on my desk for the following day
  4. Read a book for leisure or work on a hobby (at least 60 min.)
  5. Go to bed by 10pm

The biggest change I have made to how I spend time in the evening is reducing the amount of TV consumption. I have replaced this time with reading and working on other, non-computer related, hobbies.

I am a night owl but I have determined to start going to bed by 10am. This simple change has improved my energy levels during the day and has been a boon to my focus, particularly in the morning.


Hopefully these rituals are of some help and inspiration to you. They have helped me live a healthier existence and achieve a fair number of personal and professional goals.

Digital Declutter

Technology-fueled diversions are plentiful and almost ubiquitously accessible. It’s not hard to find quick hits of entertainment during times of momentary boredom, and if we’re not careful, they can consume a great deal of our time and attention. I often fall victim to these shallow and time waisting distractions and I am worse for it.

I quit checking Facebook a few years ago and I can confidently say I'm a better person because of it. Unfortunately, other sources of instant gratification have taken its place, namely: Twitter, Reddit, binge watching TV and news media.

I’ve been making my way through Cal Newport’s book on Digital Minimalism and have determined to reevaluate all optional technologies that have led to a disproportionate pull on my attention. I’m going cold-turkey and eliminating these sources of diversion during a 30-day detox period. After which time I’ll evaluate anew each tool and determine if it adds deep value to my life and work.

Per Newport, a digital detox includes the following three elements:

  1. Setting aside a 30-day period during which you will take a break from optional technologies in your life
  2. During this 30-day break, explore and rediscover activities and behaviors that you find satisfying and meaningful.
  3. At the end of the break, reintroduce option technologies into your life, starting from a blank slate. For each technology you reintroduce, determine what value it serves in your life and how specifically you will use it so as to maximize this value.

The optional technologies I’m eliminating for the next 30-days are social media (all forms of it), podcasts, written news media (I will still listen to a short NPR news segment twice a day), and streaming television services. I’ll also put my feed reading and compulsive website checking on hiatus during this period.

The time I have reclaimed is going to be allocated towards reading books, being 100% present when visiting with family and friends, working on personal projects, and times of solitude to think about future endeavors.

I sincerely hope my technology declutter results in a more focused mind and meaningful existence—only time will tell of course. Regardless of the outcome, I look forward to sharing what I’ve lost, gained and learned by eliminating optional technologies from my life.

Inspired Workspaces

This is a great Twitter thread highlighting the desks of some of my favorite artists and history's influencers.

I'll admit, clean spaces appeal to me, but my workspace is hardly ever clutter-free. Perhaps I'd do well to get a little more comfortable with my "messy" artist side?

Summer Reading

The summer of 2020 is going be a little different for me than the summers of yore because I'm going to be more intentional about reading. In fact, when asked about my ideal vacation, I'll often remark that all I need is a nice beach, some shade and a stack of books.

I really enjoy reading, especially during the summer months, but as of late I've enjoyed watching TV shows more.

Ironically, after watching Inside Bill's Brain—an excellent documentary about the interests, accomplishments and habits of Bill Gates—I was inspired to be more intentional about setting asside large chunks of time to read non-fiction, and I figured the first step might be to draft a list of books I'd like to read.

Here's the list I came up with, in no particular order:

  • Righting Software by Juval Löwy. This book came highly recommended from a friend. Software architecture is hard. The point Juval makes about architecting for volatility really resonates with me. I'm about a third of the way through his book and look forward to finishing it.
  • The Mythical Man-Month by Frederick P. Brooks Jr. This is an oldie but a goodie and I have all but forgotten the, now proverbial, lessions Frederick so eliquently articulates about the art of managing projects and developing software. A reread of this book is definitely in order.
  • Digital Minimalism by Cal Newport. My brain has become increasingly addicted to "hits" of digital diversions, like the news, Reddit, Twitter and even email. As per Newport's guidance, I have determined to perform a digital detox during the month of May. I'm sinserely hoping to reclaim some time and attention, and more importantly, increase focus during my time away from unnecessary distraction.
  • Remote by Jason Fried and David Heinemeier Hanson. Over the last few months my work has transitioned to 100% remote work-at-home. I'm hoping to hone my practices and habits to better support my goal of working remotely for the rest of my life.
  • Loveability by Brian de Haaff. Who doesn't want their software products to delight users and be loved by customers? This book has been on my list for a long time and now that I've started working on my own commercial software endeavors, it's the right time to give it a read.
  • On Writing Well by William Zinsser. Writing is hard, writing well is even harder. I have worked at improving my writing, but I recognize I've still got a long way to go before I can confidently say I write pretty good. I started this book some years back but look forward to reading it again from cover-to-cover.
  • A New Kind of Science by Stephen Wolfram. I have developed a growing interest in cellular automata and its universal implications. It's an understatement to say Wolfram has a lot to say about the subject.
  • Paul: A Biography by N.T. Wright. I could benefit by reading more about the past and history's influencial figures, and perhaps Saul of Tarsus is a good person to start with. I cannot think of a more qualified contemporary New Testament scholar to write a voluminous biography detailing Paul's life than Tom Wright, so I'm looking forward to digging into this read.

Most of these books (totaling 3,745 printed pages) will be devoured on my most favorite reading device: the first generation Kindle Oasis. Don't get me wrong, I like paper, but the advantages of Kindle's Paperwhite display enhance the reading experience without making too many compromises. The killer features for me are easy page turning, text size control and a soft backlit display for bedtime reading.

I'm excited to rekindle a vociferous reading habit and I look forward to sharing my thoughts here about each title in my eclectic summer reading list.

The First Day of The Rest of My Life

Hello, World! I'm hoping this will be the first of many posts on this site, which I intend to use to document my journey as an entrepreneur, technologist, hobby astronomer and world traveler.

I've attempted blogging a couple of times in the past, but I failed to find a good rhythm and enough content to keep the site fresh. This time around is different; I've now got enough completed projects under my belt and a bunch of ongoing interests. I'm certain these topics will be of some help to others.

Accordingly, in the coming months I'll be writing about an eclectic collection of topics, including:

  • Astronomy planning and weather prediction
  • Home automation using devices that are compatible with Apple's HomeKit
  • Scripts that make me more productive on my Mac
  • My OmniFocus setup and quarterly PDF planner
  • My approach to building powerful presentations
  • My home and mobile office setups
  • How I take notes during meeetings and follow-up on action items
  • How I maintain a personal wiki and organize project support material
  • How I'm working to kill procrastination
  • Best practices for conducting Mastermind groups
  • Using Mathematica to analyze business data and build data and context-rich reports

These are just a few of the things I'm excited to write about. In the mean time, pardom the virtual dust as I work to get this site ready to document the rest of my life.