I have a bunch of playlists that I’ve crafted over the years and when I moved to Apple Music I was disappointed to see my local library copies of those files replaced with Apple Music’s versions. It seemed to be totally arbitrary and, importantly, the play count, rating, etc. was different on my local library copies then it was on the Apple Music versions of those songs.
In the above, I know that I have a copy of Can’t get There from Here in my local library, so not sure why the Apple Music one was substituted in my playlist. Anyway, I want my local version in there so I can track stats, etc.
I poked around the venerable Doug’s Scripts for a while but couldn’t quite find what I needed so I wrote this script which:
Select/start playing a song in the playlist you want to work with
Creates a new playlist called “$playlistname Local Files.”
Checks each song in the active playlist to see if it’s local or Apple Music
If it’s not Apple Music, it just adds it to the Local Files version of the playlist
If it is Apple Music, it checks to see if there is a song in your library with the same Artist and Song name
It then copies the tracks that result from that search to the Local Files version of the playlist
If it can’t find a local copy, it adds the Apple Music version to the “Local Files” copy of the playlist
The search is really loose so it will find multiple local copies if you have them which is a bit of a pain in the butt. SO you need to go to the new playlist and remove the local versions (live! Remix!, etc.) from the playlist.
I’ve run this on a few big playlists with ~1000 songs and it runs just fine. It might be helpful for a few folks so I’m putting it up here but that said, I wouldn’t download and run this unless you know what the code is doing.
“I may not be as strong as I think,” the old man said. “But I know many tricks and I have resolution.”
– The Old Man and the Sea, E. Hemingway.
At baseline, my memory is only so-so.
For example, I can remember chord progressions to songs and lyrics only with a lot of rehearsal. I need cheat sheets for a lot of stuff in my day to day life. My autobiographical memory —my memory of past events — is especially not so good.
Vonnegut said we’re all just “huge, rubbery test tubes with chemical reactions seething inside.” Well, my chemical reactions are such that my brain doesn’t encode very well the things that have happened to me. Or, if it does encode them, I can’t recall them very easily. Either way, it’s the way I’m built.
Fortunately, I’ve got some good compensatory skills. I’ve found a bunch of tools to help support my memory in ways that are good and beneficial.
I am a master todo list maker and checklist reviewer and routine-doer. Siri has been one of the greatest things to ever happen for people like me. A half-dozen times a day or more I ask my watch to remind me about something I need to do. I am being supported at any point in time by a constellation of technologies that not only helps me compensate for my dodgy autobiographical memory but may in fact allow me to flourish in a way that I wouldn’t if I didn’t have to compensate.
There are a host of possible explanations for why memory —and specifically autobiographical memory—is weaker in some people. Hormone/thyroid disregulation can cause encoding issues. Mood disorders. The way we are socialized (the nurture part of nature v. nurture).
After years of trying to figure out what is going on, I’ve settled instead on trying to figure out what I can do to improve my autobiographical memory.
One of the best things I’ve done is to keep a journal. I use an app called Day One. I write down all sorts of stuff in there like when our mattress got delivered or when I get a cold or when I taught my son how to play a G-run on guitar.
How Journaling Helps with Memory
There are, I’ve determined, two primary ways that I can improve upon my baseline autobiographical memory and journaling supports both of them: Noting and Rehearsing.
Noting
1.) By recollecting with as much precision as possible certain event: what I saw, what I remember and writing that down in my journal. I have many days in my journal where the entry is simply a list of three specific things that I remembered seeing from the previous day.
But the point here is, especially for positive events or accomplishments, to pause and take a beat and note how the positive event felt and the physical details surrounding that event.
Our brains are wired to hold on to negative stuff and let the positive stuff fall away. By noting with detail the positive stuff it sort of coaxes the brain to hold on to the memory a bit better.
So whenever possible, when something positive happens, when I wrap up some minor or major accomplishment, I try to note the details down in my journal.
Rehearsing
2.) By regularly rehearsing and revisiting past events. This is the social component of autobiographical memory. We all know friends and family members who like to tell stories about the past. Those people have good autobiographical memories but, importantly, because they have a bias towards retelling those stories, they are constantly improving their autobiographical memory.
It can be a vicous or virtuous cycle. If you have good autobiographical memory and like to tell stories about things that have happened to you, that muscle will keep getting stronger. If you don’t have a great autobiographical memory to begin with, you won’t tell a whole lot of stories, won’t revisit your memories and the muscle will continue to atrophy.
So, I have a strongly ingrained habit of not only writing in my journal but also reviewing my journal. Day One’s “on this day” feature is especially great as it will show entries from this date from prior years in my journal and it’s valuable and helpful to revisit those entries as, I hope, through revisiting them I’m making stronger connections in my brain.
Slippery Quarantine Time
Over quarantine, I’ve noticed a different kind of slipperiness to my memory: I am having a difficult time gauging the passing of time. I know I’m not alone in this. Days feel like weeks but whole seasons feel like they go by in a week, too.
Time feels like it is passing both slowly and quickly. It is disorienting, like looking out the window of a speeding train when another speeding train appears alongside and it all of a sudden feels like you are going both fast and slow.
Day One’s handy “On this day..” feature is useful here but knowing what I was up to last year on this day (or 5 years ago, etc.) is not helping to orient me in time. But I have found another practice using Day One that has helped orient me a bit more precisely in time.
Over the past few weeks is now to revisit in my journal not only the entries from “on this day” over the past few years but to also look at:
on this day last week
on this date last month
on this date six months ago
It’s by reviewing this breadcrumb of events at different time scales that I am slowly starting to regain a sense of the passing of time. Sometimes the events referenced in my entry from last week feel like they happened yesterday, othertimes those events feel like distant memories. Either way, reviewing the entries with this cadence feels helpful.
It’s not making time feel less slippery but it is does help me get out of the whiplash feeling that time has left a lot of people feeling during quarantine.
With the help of another Day One forum member, I’ve got a pretty useful iOS shortcut put together that you can run to view events with this cadence [download here]. I hope you find it helpful! If you do, I’d love it if you drop me a line and let me know how you’re using it. Note that while we wait for the developers at Day One to update the Mac app to work with shortcuts, this shortcut only works on iOS devices at the moment.
One of the most popular Shortcuts I’ve written is my “Logging to Day One” shortcut that allows you to keep a timestamped list of items to a single day’s journal entry throughout the day. I wrote a post about it two years ago, you can read more about it here.
I updated the post today and it got me thinking about how, two years ago when I first wrote that shortcut, how amazing it would be if that same shortcut would run on my Mac so that I didn’t need to maintain a Keyboard Maestro version as well.
Well, Monterey is here and Shortcuts are on the Mac but the shortcut doesn’t work. I get an error indicating that the folks at Day One need to make some changes to the app yet to support Shortcuts on the Mac version of Day One. Hopefully that will be coming soon.
There are a few key variables in the shortcut, most are defined through menus as you run the shortcut. The only two you need to explicitly add to the top of the shortcut are username and APIKEY. You can get a last.fm API key here.
Username: the name of the user to use for a data source. I run this with my own username but also run it every once in a while with my musical neighbors’ usernames to create discovery-type playlists
Period: overall | 7day | 1month | 3month | 6month | 12month – The time period over which to retrieve top tracks for. You’ll select this from a menu when you run the shortcut.
Threshold (e.g. only include songs that have been listened to more than x times): the rationale for this variable is sometimes when creating a playlist you only want to include tracks that you (or whatever username you’re querying) has listened to multiple times. You’ll select this threshold from a menu when you run the shortcut.
Limit: the number of tracks to pull (note that if you select 50 tracks here but set the # of times listened threshold to a high number the playlist will only include the tracks that meet that threshold so may include less than 50 tracks).
This has been working pretty reliably for me for the past week or so, so I’m sending v 1.0 out into the world, hope you enjoy and find it useful. You can download it here.
I’m sure there are a bunch of really excellent use cases for the new focus mode in iOS but this one that I created yesterday is a total game-changer for me. On so many occasions I’ve been playing guitar or recording something in garage band and had a phone call or text interrupt the recording session and it is really a challenge to remember to put on do not disturb each time I launch a recording session in GB.
Enter focus mode! I created a focus mode that turns off all alerts/interuptions called “Recording” and set it so that the mode is engaged every time I launch Garage Band. Focus mode is pretty intelligent and automatically puts all of my iOS devices in “Recording” mode as soon as I launch Garage Band. This is awesome and I highly recommend it!
Over the past year I’ve been using a service called Readwise.io to surface highlights from books I read on my Kindle and from articles I read on my iPad using Instapaper.
The service has its flaws but all in all has been useful to me in helping me to remember what I’ve read and found important.
That said, I’m finding myself less inclined to wanting to read long form journalism on my iPad, especially at night in bed when I’m trying to stay away from screens or at the beach where my Kindle feels easier to read than my iPad.
I have spent the past couple of weeks cobbling together a collection of tools that makes reading long articles on my Kindle easier as well as saves any article highlights I’ve made to Readwise.
I wish that I could use Instapaper for this workflow but, while you can read Instapaper articles on the Kindle pretty easily, tracking highlights doesn’t work so well. So I’ve landed on the following:
Push to Kindle from fivefilters allows me to easily push web articles to my kindle from my Mac (via Safari extension), iPhone or iPad (nice, easy to configure dedicated iOS app)
I then read/highlight on my Kindle paperwhite
When I plug my Kindle into my Mac’s USB connection, the highlights are automatically sent to my Readwise account
This last bit requires a good bit of AppleScript sorcery but it’s pretty easy to achieve using EventScripts.
Basically, EventScripts notices when my Kindle is plugged in. Once it sees the Kindle is plugged in, it executes this AppleScript which emails the My Clippings.txt file automatically to readwise who then imports it.
Really pretty elegant stuff here that, I hope, shows the value proposition of many small/lightweight tools loosely coupled as opposed to some monolithic solution.
[update: So, Keyboard Maestro doesn’t have a trigger for “password unlocks screensaver” And that is really when this thing needs to run. Enter the amazing EventScripts. Had no idea this tool existed but it kicks off AppleScripts for various system events (unlock screensaver, song change in iTunes, etc.). So worth the $6. Hope it continues to work once I upgrade to Big Sur!)
Here’s one truth about how I lose weight: nothing is as effective as simply writing down what I eat.
If I track everything I eat in a calorie tracking app (I use one called Track, but there are a bunch of similar apps), I eat less. Maybe seeing what I’m eating makes me more conservative in my snacking or maybe I don’t want to take the time to log that handful of M&Ms so I skip them. Either way, I’ve lost about 15 pounds during this quarantine, all by simply tracking my calories.
The thing is that I usually stop logging what I eat after a few weeks. Logging what I eat is a nuisance. I regularly forget to open my calorie tracking application right after I eat and by the time I finally get around to it as I’m sitting down to watch a show before bed, I’ve largely forgotten what I’ve eaten throughout the day.
So what makes this time different?
Well, for starters, I’ve been using the Due application on my iPhone to remind me to enter my calories after breakfast, lunch and dinner each day. Due is a persistent reminder application. Meaning, it just keeps annoying you with reminders until you actually do the damn thing it’s reminding you to do.
Still, after a couple of weeks of using Due, I started just clicking “done” on the reminder because clicking through the reminder and opening my calorie tracker application just seemed like a pain in the ass and was too much friction. So, I solved that friction point by adding a link in the reminder that opens my calorie tracker in one click.
In other words, tracking what I’m eating has been working for me because I chained together three different, loosely-coupled technologies here:
a decent calorie tracking app that makes a tedious task as easy as possible – Track
a persistent, annoying reminder application to remind me to log my calories – Due
a link in the reminder to make it super-easy, low-friction to open my calorie tracking application right from the reminder. – iOS shortcut
Some apps support a URL Scheme to open the application (for example, music:// opens the Music application). The Track application doesn’t, AFAIK, have URL Scheme support so instead I just created an iOS shortcut to open the application and I call that shortcut in the reminder like this
So, when the alert pops up on my phone, I just click the red link and Track opens up. Nifty.
But, this Reminder + Link to Application has also been helpful for the Day One #photoaday challenge for the month of September. Every day at mid-morning I get an alert to post a photo from today to Day One with a link to the application that opens Day One and creates a new post:
Here you’ll see that Day One support the URL Scheme directly so there’s no need for me to create an iOS shortcut, I can just call the new post URL and it works (though, why it doesn’t show up in red in Due is beyond me). You can do a whole bunch of cool things with the Day One URL Scheme, like go right to the activity feed: dayone://activity or create an entry with a clipboard image dayone://post?entry=Hello Self&imageClipboard=1. See this list if you want more ideas.
My new favorite Keyboard Maestro shortcut allows me to toggle between audio outputs (Built In Output device and my USB output). The Built in volume controls my iMac speakers, the USB output controls my Amp. So, combined with the superb Rogue Amoeba’s SoundSource, I can easily bounce back and forth between controlling my music volume (Roon, Spotify, archive.org) and my Zoom volume using my keyboards volume controls. This sounds like it would be easy and it is, sort of, by using switchaudiosource-osx (available as brew install switchaudio-osx from command line).
Anyway, this is a huge problem solver for me. Stoked. Click pic below for larger version if you want to see the actions.
Someone posted a question about how to do this on the Day One Community site so I thought I’d build up a little iOS shortcut that:
– checks to see if you have an entry for today, if not it creates a blank one and then prompts you to choose a photo, resizes that photo and then appends the photo to today’s journal entry.
Here’s the shortcut, you’ll need to choose which journal to use and how large you want the inserted photo to be.
Spending some time on the Day One community page on Facebook it seems like for those who journal multiple times per day–adding notes, thoughts, activities throughout the day–there are two schools of thought for capturing throughout the day:
Create a new entry in Day One for each of the day’s multiple entries
Append to a single daily entry throughout the day.
I fall firmly into the second camp, using markdown bullets and a time stamp to log entries to a single entry throughout the day. When I’m really firing on all cylinders, I remember to log “to-done” items throughout the day to keep track of minor/major accomplishments and it can be good to see that list pile up by the end of the day.
Unfortunately, for all of Day One’s strengths and features it does not make it especially easy to automate the process of appending thoughts/notes to a single day’s entry throughout the day.
In the past, I might have relied on a bit of AppleScript or Keyboard Maestro to solve this problem. But now, my time is split evenly between sitting behind my Mac and using my iPad.
Apple is making it harder and harder to write one-size-fits-all automations that can be used on the Mac and on the iPad and iPhone. Automation is now platform specific: shortcuts on iOS and some combination of automator, AppleScript, keyboard maestro, Alfred, etc. on the Mac.
[update: Shortcuts now run on the Mac as of macOS Monterey, this great but I can not for the life of me get them to work with Day One so, as of Jan 27, 2022 this shortcut still only works on iOS devices]
But whether I’m in front of my Mac or my iPad, I always have my iPhone with me. And while it’s not the best device for capture, I decided to focus my “capture and append” automation efforts on the iPhone rather than string together a bunch of hacks on my Mac.
if one doesn’t exist it prompts you to create either:
a blank entry
an entry using a few prompt questions
prompts for log entry
asks if you want to put time with the log entry
appends the time/log entry to the end of today’s journal entry
If you are going to use this shortcut you must expand the six “Day One” actions in the shortcut and change the “Journal” field to match the name of the journal you’re using in Day One.
You may also want to edit the questions in the “A new entry from prompts” section. Just make sure to split them up with a line break.
Once you make those changes, it should just work for you.
The big caveat here is that if you use Day One on both iPad and iPhone, this shortcut seems to only work on one device. It works great on my iPhone. But if I try to use it on my iPad and I haven’t yet opened Day One on my iPad the shortcut doesn’t realize that I’ve already created an entry for today on my iPhone.
This seems to be related to background syncing of the journal contents. The solution is just use it on one iOS device OR make sure you open up Day One and that it syncs before running it on that other device. That being said, even when I do run it on the iPad, the appended line doesn’t show up on the entry, which is weird because if I view the entry on my iPhone, it’s there.
Again, syncing seems to be the issue here. Day One support has been helpful (as always) in helping me troubleshoot this but it seems like iPadOS background syncing is just flakey right now.
[update: this is getting a bit better with each release of Day One for iOS, the syncing seems to be more up-to-date, still though, for sanity’s sake you’re better off not alternating between iOS devices when running this shortcut multiple times in the same few minutes].
Note/Update: the shortcut now copies the entry to your clipboard. Occasionally it seems like the shortcut doesn’t actually append the log entry as expected. I don’t know why. Restarting my iPhone seemed to solve the problem so probably syncing related but in any case, by copying the entry to your clipboard if for some reason the log note doesn’t appear when the entry is opened, you can always just paste it in from the clipboard. Lame, I know. I wish shortcuts were more reliable.
When I write my morning entry in my Day One journal I sometimes brainstorm a little todo list, and this allows me to copy it and load the todo list into Things. Moreover, it looks for the string “today” in the brain dump and puts those items in the Today list in things.
set TodayStr to "today"
set Total to 0
set listContents to get the clipboard
set delimitedList to paragraphs of listContents
tell application "Things3"
repeat with currentTodo in delimitedList
if currentTodo as string is not equal to "" then
set Total to Total + 1
if currentTodo contains TodayStr then
set newToDo to make new to do ¬
with properties {name:currentTodo, due date:current date} ¬
at beginning of list "Today"
else
set newToDo to make new to do ¬
with properties {name:currentTodo} ¬
end if
end if
end repeat
end tell
set theDialogText to "Added " & Total & " Todo Items to Things"
display dialog theDialogText
I mapped this in Alfred to ⌘T so that when I’m in Day One and finish brainstorming what I need to tackle, I can just highlight the list and hit ⌘T and the list is moved to Things. Not brain surgery but really useful for me.
Still though it does feel weird to have to automate using AppleScript on the Mac and Shortcuts on iOS.
Back in the spring I wrote an automator action that incorporated some Python code to take a downloaded Amazon Order History file and massage it into a nice Markdown table and creates a Day One entry.
A few months back though the Day One command line tool stopped working and that broke this action. But surprise!!! The command line tool works again (although not as well as it used to). So I modified the automator action to get it working again.
So, pop this workflow in your ~/Library/Services folder and you can just right click on the downloaded Amazon order history file to create a Day One entry from the purchases.
This is what the Markdown table looks like as a Day One entry (atypically expensive month, FWIW 🙂
So, if you use that code and replace “Today” with “Someday” it works like a champ but if you pass it the list “Today” the todo item is created in the Inbox and not the Today area of Things. Weird and it was making me crazy.
Anyway, the easy solution is:
set newToDo to make new to do ¬
with properties {name:CurrentTodo, due date:current date}