Ramblings from a Researcher-In-Training

Peer Reviewed

Affirmations — An iOS App Designed to Make You Feel Good

Reams of paper and terabytes worth of server space have been spent writing about how our phones are bad for us in one way or another. The immensely harmful effect that social media has on our mood, our beliefs, and our self-image; the many examples of apps designed to addict you or trick you to empty your wallet; and the countless hours spent scrolling aimlessly through a shallow sea of equally-shallow content. As unfortunate as it is, we’ve largely accepted these negative influences on our lives as table-stakes of the social internet and the smart phones we love and get in line to buy every year — yet we do painfully little to make room for positivity in our digital lives. That’s where Affirmations from developer Justin Hamilton comes in — an app entirely dedicated to building users up and sparking joy in a digital world so determined to wear us down.

Four side-by-side screenshots of Affirmations, with different positive sayings in each.

A Self-Care Salve in Our Digital Desert

On the face of it, Affirmations is an incredibly simple app: it’s a large repository of encouraging, loving, and wholesome phrases displayed in a rotating home screen widget, as scheduled or random push notifications, or just sifted through manually in the app. But, naturally, the way that this simple concept is executed on makes all the difference in how well it jostles you out of a negative headspace. Affirmations’ aesthetic is rich with calming color tones in smooth gradients, and subtle haptic feedback throughout the app (especially when tapping through affirmations) helps to gently nudge you to pay attention to the message being shown. These small details were so clearly made with care, and are entirely vital for what the app aims to do for its users — every aspect of the app evokes the positivity and reassurance it wants to share, in both what the app says and how it looks and feels while saying it.

Two side-by-side screenshots of my home screen, including the small Affirmations widget.
Affirmations is helping to make my home screen a more pleasant place to be.

I find the best way to use Affirmations is via its home screen widgets. Carving out some space on my home screen for a small widget that cycles through compliments and encouragements throughout my day is such a simple antidote to the other stressors found there — like my calendar, emails, and reminders. I’ve recently been reassessing the “balance” of my home screen — especially how much of that precious real estate I set aside for “goodness” — and Affirmations is a crucial component to shifting that balance away from “stress, work, notifications, tasks” and towards “happiness, calm, pause, breath, joy” whenever I unlock my phone. The widget serves as my ever-present reminder to center wholesome thoughts instead of negative ones, and to reassess my attitude when something has gotten me down — it seems like such a small thing, but it's really made a noticeable difference in my mood because of how quickly it redirects my mind from the negative to the positive.

Three side-by-sode screenshots of the Affirmations settings — including custom affirmation settings and notification parameters.
Tailoring Affirmations to best fit your needs is dead-simple, as is setting up notifications to randomly brighten your day.

In addition to simply displaying words of encouragement, Affirmations also has an excellent offering of features to fine-tune when and how the app tries to lift your spirits. You can set custom notification times for an affirmation to be delivered via push notification, as well as enabling "Random Notifications" to add a bit more spontaneity to when you're affirmed. You can control how many random notifications you receive in a day, and can also set a "do not disturb" window — because not everyone wants random encouragement at 3AM. Affirmations also allows you to toggle off specific categories of its pre-loaded affirmations that may be less applicable (or affirming) to you in your specific situation. Justin is always adding new affirmations and new categories, even with time-specific affirmation categories like Pride Month affirmations and seasonal affirmations like "Pumpkin Spice Season is here!" (for those who observe it), all of which can be toggled off if you'd prefer. Users are also able to populate the app with their own affirmations (up to 200 characters), perhaps to add a personal goal or a specific call to action to the rotation of messages — allowing a more targeted tenderness that the developer could never have introduced on their own. The appearance of the widgets (and the app itself) is entirely customizable, with settings to modify the color scheme of the gradients, gradient opacity, font size, as well as the drop shadow — meaning Affirmations can fit into any home screen aesthetic. Oh, and of course, Justin has created a wonderful selection of custom app icons as well!

A side-by-side pair of screenshots, one showcasing the appearance customizations and the other displaying the custom app icons.
Making Affirmations your own is easy with the straightforward appearance customization and colorful app icon selection.

Also hidden within Affirmations' Settings is a built-in breathing exercise bubble akin to the Apple Watch's Breathe app, a truly delightful Fidget window full of haptic feedback on buttons, sliders, and dials familiar to any iOS user, and an extensive repository of mental health resources from organizations and governments from around the world.

Two side-by-side screenshots of Affirmations’ Fidget page and Breathe page.
The Fidget page of Affirmations is such an unnecessary but excellent addition to an app focused on mental health.

Ambient Mindfulness, No Credit Card Required

So many other apps in this category — I’m thinking “mindfulness” apps or other apps designed to motivate and encourage — have too much of a “work” component to them. Demands to set aside X minutes a day for a meditation, or apps designed to be pushy in their efforts to improve your life. Worse yet: so many of these apps are locked behind prohibitive pay-walls or scummy weekly subscription fees. Affirmations is entirely free, and is very much an ambient attitude adjustment app — an IV drip of delight, slowly but steadily shifting me toward more positive thoughts whenever I unlock my phone. This is in stark contrast to how our phones usually make us feel — unpleasant feelings like anger, sadness, fear, loneliness, or dread. Affirmations is the only app that I can unequivocally say has only ever made me feel good, charitable, and wholesome feelings. And with the volume of doom and gloom we've all be main-lining for, well, years at this point, we could certainly use more apps like Affirmations in our lives. You can download Affirmations on the App Store today for free, and try out the so-called “self-care sidekick” for yourself.

The New MagSafe Wallet Should Know Where I Live

Since I got my iPhone 13 Pro on Friday, I’ve been trying out the MagSafe lifestyle — including the new MagSafe Leather Wallet with support for Find My. Although I was a bit disappointed that Apple didn’t just stitch an AirTag right into the leather, the feature they did ship is still pretty handy: the wallet has a unique NFC tag inside that does a handshake with your iPhone when attached and detached. This allows the Find My app to note the last location where the Wallet was removed, and optionally send you a push notification after about one minute of separation. This feature in theory would prevent me from ever losing my wallet — if it ever unknowingly escaped from my phone, I would be notified within a minute that it was missing. In practice, however, I just get a needless notification every time I get home and disconnect my wallet at the door.

Two side-by-side screenshots of the Find My app, showing the different settings between the MagSafe Wallet and the AirTags.
Location-based exclusion settings are sorely missing in the MagSafe Wallet Find My settings.

Apple’s AirTags have a similar “item left behind” feature in Find My — when you leave an AirTag behind, you get a push notification to let you know. The big difference? Apple lets you set specific locations to not notify you if an item is left there — like your own home, for instance. The UI for these two features looks almost identical except for this missing location filter for the MagSafe Wallet, which I hope means it would be an easy feature for Apple to add in a software update. I’m hopeful that they do so soon — I know that I’ve disconnected my wallet at home, I just need my wallet to know that too! And while they’re at it, I feel like it wouldn’t be to much to ask for some customization options to the disconnect duration, or even some added location-awareness to these notifications. If I disconnect my wallet in a drive-through for the requisite one minute while getting out my credit card, does my phone really need to buzz? Maybe the notification could be customized to only fire once your iPhone leaves the area. The way the wallet is designed essentially requires you to detach it to access any cards, after all.

iPhoneMatt VanOrmeriOS, iPhone, MagSafe
Via Six Colors: The iPhone 13: An upgrader’s guide

Jason Snell, writing at Six Colors:

The problem is that most people don’t buy a new iPhone every year. The primary upgraders to the iPhone 13 will be coming from the iPhone 7, or 8, or X, or XS, or XR.

Here’s an attempt to provide a little more of a big-picture overview for owners of older iPhones who are wondering what’s new in the iPhone 13.

This is probably the most useful overview of the iPhone 13 and 13 Pro I’ve seen, primarily because I myself am upgrading from the three year old iPhone XS. I think Jason hits the nail on the head: most iPhone reviewers are doing year-over-year comparisons and may accurately describe this crop of iPhones as “just an S-year” or a “small spec bump”. But most iPhone purchasers (like me) are inheriting the cumulative advancements of the last two, three, or even four years of Apple’s “incremental” updates. That context is important, and Jason lays it out quite nicely for everyone making the multi-year iPhone jump.

A Cutting Board Restock, and a Raffle for St. Jude Children's Research Hospital

Readers of Peer Reviewed may know that my other hobby is woodworking and that I periodically list items for sale on this site's hidden store page, AKA MVO Woodworks. And as of this post, cutting boards have been restocked — as usual, I made a fairly small batch (ten in total) with a variety of local and domestic hardwoods. I'm pretty happy with how this batch turned out, and if you find one of them appealing I would recommend buying it quickly before they are gone. I also still have some wooden keycap pullers (some of which are eligible for custom laser engraving), as well as a single set of coasters.

In addition, Relay FM is still raising money for St. Jude Children's Research Hospital for the rest of September! Their Podcastathon stream was a wild success, and they crushed their goal by raising over $500,000 for the life-saving mission of St. Jude. To help support their fundraiser, I'm raffling off a cutting board to a random person who donates at least $10 to St. Jude after this post goes live. The cutting board in question is a lovely black walnut board with maple accent, and is 16" x 9" x 1" in size with finger holds on either end. As always, my cutting boards are finished with food-grade mineral oil and bee's wax (Howard's Butcher Block Conditioner, to be specific), and are designed to last many years. Here are some photos of the cutting board up for grabs to one lucky donor:

A photo of a walnut cutting board with two maple accent strips, taken from a 45° angle off the side.
There’s nothing quite like figured black walnut.
A photo of a walnut cutting board with two strips of maple, photographed from the side.
Another glamour shot.

To enter the raffle for this cutting board, follow these simple steps:

  1. Make a $10 donation (or more!) to Relay's St. Jude fundraiser
  2. Email your receipt (with a donation dated on or after September 20th at 6PM CDT) to matt@peerreviewed.io
  3. Check your email on October 1st to see if you won the cutting board!

Once a winner has been selected, I'll reach out to get your shipping information and have the board off to you as soon as possible, entirely free of charge! It's the least I can do for a cause as worthy as St. Jude. Go donate now!

MetaMatt VanOrmer
The Winning Widget of St. Jude/Relay FM Fundraiser Monitoring

A few weeks ago I shared my custom Pyto widget that automatically pulls from Relay FM's Tiltify page for their annual St. Jude Children's Research Hospital fundraiser, and shortly after that I shared Zach Knox's iterative improvement on the same concept. Well, now we've both been completely eclipsed by a lovely group of developers from the Relay FM members Discord, who quickly created a bespoke iOS app with native, customizable widgets all entirely dedicated to monitoring the fundraiser's progress. You can join the app's TestFlight beta to add its delightful widgets to your home screen. The app supports widgets of all sizes, displaying the total fundraiser goal as well as milestone progress, and even has notification support when reaching a milestone, "significant amounts" (like $250,000), or a custom dollar amount of your choosing.

Screenshots of the Relay For St. Jude widget, and accompanying settings.
Being able to set a custom dollar amount notification is a delightful touch!

The team behind this app has far outstripped what Zach and I cobbled together with mediocre scripts and middling widget design, and you should all go give the app a try if you want to keep an eye on the Relay FM community's donation progress. Oh, and you should go donate right now to St. Jude Children's Research Hospital — they do phenomenal, lifesaving work in kiddos with cancer all at no cost to their families. What better cause is there to give your money to? If you are reading this blog post, there's a good chance you are about to buy an expensive Apple product next week — figure out the sales tax on that purchase and go donate it to St. Jude.

iOSMatt VanOrmerWidget, iOS, St. Jude
Quickly Display Your COVID Vaccination Card With This Siri Shortcut

Frustratingly, the world is still battling COVID-19 (particularly the delta variant), and governments and private entities are increasingly leaning on various forms of vaccine requirements to help protect people from the still-circulating virus. In fact, later today President Biden plans to sign an executive order requiring vaccination for all federal employees and contractors. If you're reading this and still somehow have not gotten your COVID vaccine: do so ASAP! They are safe, effective, free, and are our best chance at getting out of this mess and back to our usual lives.

Ok, now that I'm off my soapbox, back to the point I was making: vaccine requirements are becoming more commonplace for everyday activities like going to a restaurant or gym, which means presenting proof of your vaccination will become increasingly important. Unfortunately, the COVID vaccination cards in the US are not "wallet-sized", and there has been functional zero adoption of digital COVID vaccination card wallets in any of our states; which means that most people are likely just pulling up a photo of their vaccine card from their phone's camera roll. To that end, I made a Siri Shortcut to quickly display my COVID vaccination card with just a tap of a button (or perhaps triggered by the double- or triple- Back Tap Accessibility feature!). You can download the shortcut here.

It's a fairly straightforward shortcut:

  1. Check if the file "COVID_VACCINE_Card.jpeg" exists
  2. If it does, show the image in Quick Look
  3. If it doesn't, let the user pick a photo, save it to that location, and then show it in Quick Look (Step #3 is always skipped after the first time you run the shortcut).
Three screenshots of the shortcut’s workflow, and the output Quick Look showing my COVID vaccine card.
Quickly displaying your COVID vaccine card via Quick Look may come in handy.

The shortcut handles Live Photos (which usually are saved as .HEICs) as well as normal .JPEGs, and greatly speeds up the process of showing your COVID vaccine card versus scrolling to it in your Camera Roll. You can create a Home Screen icon that quickly pulls up your vaccine card, or even create an Automation for it to show when you arrive at your local gym, for example. I anticipate more establishments will want to see COVID vaccine cards just like many establishments ask for photo IDs before admittance, so hopefully this shortcut makes a few people's lives a bit easier.

Anyway, stay safe and go get your vaccine today!

Zach Knox's Much-Improved Fundraiser Home Screen Widget

Friend of the blog Zach Knox took my rudimentary Python code from my Pyto home screen widget and vastly improved upon it using JavaScript and Scriptable. A prettier progress bar, more data points, and overall better code (shocker: Zach is a developer by trade, and I am not!). You should absolutely go read his post, or skip right to the good stuff and download his JavaScript code and install his widget on your iPhone!

A screenshot from Zach’s blog post showing his home screen widget.
Zach’s widget is delightful.
LinkedMatt VanOrmerLinked, iOS
A Home Screen Widget for Relay FM's Annual St. Jude Fundraiser

Every year, Relay FM and its surrounding community of tech nerds and podcast listeners rally together to raise money for St. Jude Children’s Research Hospital — one of the premier pediatric cancer research institutions in the world. The fundraiser is back and better than ever with sticker rewards for certain donors, donation thresholds for Flight Simulator streams, a horrifying amount of stickers, and the annual Podcastathon live stream on September 17th. Relay hopes to raise $333,333.33 (though I have a feeling that goal will be raised, since they racked up $456,000 last year to bring their cumulative total to well-over $1,000,000. I’m always delighted to donate to this cause because St. Jude does such amazing work, and this year I also worked out a way to track their progress live right on my iPhone home screen.

Relay runs their St. Jude fundraiser using Tiltify — a service that focuses entirely on campaigns like this, and importantly has a public-facing API. Because of that, it’s fairly easy to pull updates from Relay’s donation page using a POST request and parsing the (rather large) JSON dictionary that returns. An intrepid member of the Relay FM members Discord discovered this fact and created a Siri Shortcut to quickly display the total amount raised…but that gave me a better idea: what about a home screen widget?

When you need to call an API and create a dynamic home screen widget, two apps come to mind: Scriptable and Pyto — given that my only serviceable programming know-how is in Python, I chose the latter and got to work cobbling together a script.

Displaying Campaign Data, Dr. Drang-Style

The first thing I needed to do was connect to the Tiltify campaign with a POST request — big thanks to Ben in the Relay Discord for doing most of the heavy lifting with his Siri Shortcut! Tiltify expects a nightmarishly-long JSON payload in a POST request, but the JSON data it returns is much more straight-forward. Using Pyto, I called the API and parsed the JSON key:value pairs in the returned data to snag the totalAmountRaised and goal values from Relay’s 2021 St. Jude campaign. A little conversion turns those raw floats into properly-formatted dollar values with thousands-commas and dollar signs.

#Pull data from the returned JSON payload.
info = (r.json())
rawraised = info["data"]["campaign"]["totalAmountRaised"]["value"]
rawgoal = info["data"]["campaign"]["goal"]["value"]
# Convert pulled values into properly-formatted dollar values:
raised = "$" + '{0:,.2f}'.format(float(rawraised))
goal = "$" + '{0:,.2f}'.format(float(rawgoal))

Once I was able to pull the fundraiser's goal and the current amount raised, the next challenge was displaying that information within an iOS home screen widget. First and foremost, I really wanted a dynamic progress bar but wanted to generate one as simply as possible. My brother (a much more experienced programmer) helped me write this clever snippet of code to simply display a string of emojis 12 characters long, with two emojis (⬜ and 🟩) proportionally placed to form the progress bar. Here's what the code looks like:

# Generate a progress bar using emojis
def progressbar(raised, goal):
    # Modify these emoji to change the "empty" and "full" sections of the progress bar.
    progress_full = "🟩" 
    progress_empty = "⬜"
    bar_length = 12 # Modify this number to adjust the max width of the progress bar.
    progress_percent = float(raised)/float(goal)
    progress = ""
    progress = progress_full * int(bar_length * progress_percent)
    return '{:⬜<{x}}'.format(progress, x=bar_length) 
    #If you modify progress_empty above, you need to put it in this return statement as well.

The length of the progress bar needs to be fiddled with based on the width of the device; I'm sure there are much more clever ways to generate the proper number of emojis based on the device the code is being run on, but that was above my pay grade! Twelve emojis wide was just about perfect for a medium widget on my iPhone XS — your mileage may vary based on your device.

All that's left is to actually generate the widget to display all of this data on my home screen. I was expecting this to be much more challenging, since I had never used Pyto or its widget library, but luckily when you open a new script Pyto offers to automatically populate an example widget! A bit of hacking around with the example code and some digging in their widget documentation let me insert the variables I was interested in, change the background color, and remove the option of a small widget (it's just too small). In short order, I could present the amount raised, the fundraiser goal, the percent progress, and a delightful emoji progress bar right on my home screen! Here's the code:

if wd.link is None:
    widget = wd.Widget()
    wd.wait_for_internet_connection()
    background = wd.Color.rgb(219.7/255, 182.8/255, 72.2/255) 
    #You can modify the background color by altering the RGB values to your liking

    # Populate four rows of data, and accompanying font sizes:
    text1 = wd.Text("Raised: " + raised) 
    text1.font = wd.Font.bold_system_font_of_size(20)
    text2 = wd.Text("Goal: " + goal)
    text2.font = wd.Font.bold_system_font_of_size(20)
    text3 = wd.Text("Progress: " + progress)
    text3.font = wd.Font.bold_system_font_of_size(20)
    text4 = wd.Text(bar) #Progress bar
    text4.font = wd.Font.bold_system_font_of_size(18)

    # Supported layouts (the small widget is too small)
    layouts = [widget.medium_layout, widget.large_layout]
    for layout in layouts:
        layout.add_row([text1])
        layout.add_row([text2])
        layout.add_row([text3])
        layout.add_row([wd.Spacer()])
        layout.add_row([text4])
        layout.set_background_color(background)
        layout.set_link("https://stjude.org/relay")
    wd.schedule_next_reload(900) # Suggested refresh time in seconds
    wd.show_widget(widget)
else:
    open(wd.link) #This opens the link above when the widget is tapped.

And here's what the resulting widget looks like:

A screenshot of my home screen widget displaying the fundraiser’s progress.
The widget looks quite nice to me, and can be further modified in the Pyto code to your liking!

I think it looks pretty nice, given that I spent almost zero time optimizing the padding, font size, and background color in the Pyto code. Their widget documentation has many more UI customization options that intrepid readers can explore to make more advanced or aesthetically appealing widgets for themselves, but I'm pretty happy with where this simple version landed. As a nice bonus, Pyto also has a way to alter what tapping on the widget does — you'll notice that the entire widget generation code is wrapped in an IF-ELSE statement; tapping the widget sets wd.link to TRUE and instead runs the open(wd.link) function...which naturally directs to Relay's St. Jude Fundraiser page (if you've read this far and haven't donated yet, now's the time!). I think that having to bounce back into Pyto to make this happen is a bit clunky, but beggars can't be choosers. The widget also seems to refresh relatively often — Apple says that widgets dynamically refresh somewhere between 15-70 minutes depending on user behavior, which is more than enough to keep the raised amount relatively up-to-date.

I Don't Want to Read Your Code, I Just Want the Widget!

Fair enough, let's actually walk through the steps for you, dear reader, to get this widget on your iPhone:

  1. Download Pyto from the app store. Pyto has a 3-day free trial, but you'll need to pay the $2.99 in-app purchase to run this script beyond then.
  2. Download this python script from my GitHub page. It handles all of the steps I discussed above: Pulling the fundraiser data, generating a progress bar, and creating the widget using Pyto. Save it in the Files app so you can run it using Pyto (please don't judge my horrendous code too harshly, I'm still new to programming!) If you're feeling adventurous, you can also modify the font size and color, background color, and even what text is displayed — just dive into the code!
  3. Run the script once using Pyto
  4. Edit your home screen, and add the Run Script widget from Pyto (Medium or Large, your choice). Configure that widget to run the StJudeRelay2021.py script you just saved in Pyto

And just like that, you'll be able to monitor Relay's annual St. Jude fundraiser from your home screen. If you still haven't donated, you absolutely should click here now and do so — there's no better cause than St. Jude, and the Relay folks' partnership with them is exceptionally wholesome. And after you donate, you'll want to mark your calendar for the culmination of the campaign: the Podcastathon on September 17th over on Relay's Twitch channel. It's always a wild and wacky event full of fun shenanigans, all for a spectacular cause.

A Shortcut for Generating Local Timestamps in Discord

I spend a lot of time in Discord — at this point, it is probably my most-used social media app. Part of this is certainly due to the fact that I help moderate the Relay FM Members Discord; a delightful and international gathering of like-minded nerds. Because of this diverse and widespread community (and the occasional live-streamed event therein), handling timezone conversion is a frequent occurrence; like sharing a keyboard group buy date or marking the next live podcast stream on your calendar. Luckily, Discord recently added Unix timestamp message formatting, which allows you to send a string that automatically displays the appropriate client-side time. So, instead of saying "Hey, the game is on August 20th at 12PM CDT" and everyone translating on their end, I can instead say "Hey, the game is on <t:1629478800>" and Discord natively parses that Unix timecode (wrapped appropriately) into the end-user's local time. It looks something like this:

A screenshot of a Discord conversation demonstrating the timestamp feature.
Using the Unix timecode for a date/time automatically displays the end-user’s local time — so Zach sees 1PM EDT!

But of course, who can convert human-readable time to Unix time (seconds since midnight UTC on January 1st, 1970) on the fly? I know I can't — but Siri Shortcuts sure can!


Is this article helpful? Consider saying thanks by buying me a coffee!
Buy me a coffeeBuy me a coffee

Generating Unix Time in Shortcuts

This sort of thing is exactly what Shortcuts is great at — taking otherwise-tedious but ostensibly-handy tasks and mostly removing the tedium. In this case, I made a Shortcut that can quickly generate the Unix timecode Discord needs to do its client-local-time magic. I started simple: I wanted a Shortcut to take the Current Date/Time, convert that to the Unix timecode, placing it in its home within the <t:[timecode]> format, and copying it to my clipboard. That only took three Shortcuts actions:

Screenshot of a simple Siri Shortcut to generate the Discord timecodes.
Starting simple is usually where I begin when making a new Shortcut — the fewest actions possible to get the result I’m looking for.

But of course, once the most basic form of a Shortcut was there, I got to thinking about improvements and edge cases. For starters, I also wanted to be able to pick something other than the current date and time — pretty straightforward change, I just swapped in a Choose Date action, which covers both Current Date and arbitrary dates quite nicely. Then I added in the ability to scan your clipboard for text containing a date — in the case where I might want to copy a message out of Discord and quickly convert the date in said message. Apple handily provides a Get Dates From Input action, which is usually smart enough to pick out dates and times from fairly lengthy strings of text (I think it’s the same system that detects dates in iMessages). A little bit of error handling, and some extra actions to automatically reopen Discord and give some helpful notification feedback, and the final shortcut for this simple Discord trick is ready!

Four screenshots of Shortcuts actions for the Discord Timestamp Generator shortcut.
A simple three-step shortcut can quickly turn into 37 actions, error handling, and decision trees!

Now, when I’m sharing an event in Discord (or reading about one), I can quickly convert the date & time of that event into a more useful format for everyone in the server with just a quick tap of a button.

Shortcuts And Systems: Start Simple, Then Sprawl

I wanted to write about this Siri Shortcut for an obscure Discord feature not so much because I think tons of people will find it useful, but more because it illustrates well how I typically end up using Shortcuts: I have a small “mosquito task” type of problem that I can solve in a few Shortcuts actions…but then I really solve it by taking the time to fully flesh-out the Shortcut. I start small, and then build out the tool to be more all-encompassing and hopefully anticipate the needs and problems of Future-Me. I find that I follow similar patterns in a lot of areas where I’m problem solving: find the “last step” of the solution, so to speak, and then build out a system around that “last step” to anticipate unforeseen circumstances. I think this sort of thinking can be helpful for people trying to create systems for themselves but don’t end up using them — sometimes, you need to take the time to make your system as appealing as possible for Future-You to actually get them to use the system you’ve built them.

My Hope-Filled Wish List for WWDC 2021

We are just about one month away from the WWDC 2021 virtual keynote address, and excitement for the annual Apple announcement of major changes to its various software platforms is starting to simmer. I wrote last year about how WWDC 2020 brought with it a new, somewhat-unusual sort of excitement in stark contrast to the challenges of the pandemic lock-down — this year is vastly different in some ways and painfully similar in others. Many are fully vaccinated (myself and my family included, thank goodness) and many places are cautiously reopening; however, in other places the pandemic rages on, its dark shadow still clouding over any positive feelings or experiences. It's in this way that what I wrote about last year still rings true:

Excitement for the week of WWDC is not new to me — it’s the unusually-joyless six months preceding the conference that have made my excitement feel almost shameful, somewhat stolen. It feels very wrong to become engrossed in subtle home screen changes on my $1,000 iPhone, as so much bad news continues to surround me. But in many ways, not relishing in the joys of life can stifle our ability to endure (and eliminate) the hardships. That’s the way I’m choosing to interpret WWDC week this year: as another bulwark against madness in these especially maddening times.

I'm choosing to go into WWDC 2021 with much the same mindset. So, with that prelude out of the way, this year I wanted to actually collect some software changes I am really hoping are announced at WWDC — portions of my WWDC wish list have been circulating in the usual rumor mills, and some items are so insignificant that I've put them into a "Paper Cuts" section all their own. I've almost certainly overlooked something either obvious or entirely novel and clever — drop me a tweet with the feature you are most hoping for this year so I can share in your anticipation!

WWDC Wish List

  • An iPadOS Release Worthy of the iPad. The iPad Pro hardware has far outpaced its software since at least 2018, and April's latest update to the much-loved pro tablet only exacerbates that untenable situation. However, the evolution of the iPad hardware in late-2018 foretold big improvements on the software side at WWDC in 2019: iPadOS 13 and its multiple window support, desktop-class Safari browsing, external storage support...the list goes on). Perhaps the inclusion of the M1 chip in the 2021 iPads Pro and the significant advances in screen technology (at least on the 12.9" model) are premonitions of major improvements to iPadOS — I would certainly hope so, because anything less than significant advances won't be enough to keep up with the ever-widening hardware-software divide. For starters, can we get real support for home screen Widgets on iPadOS? It’s almost laughable that these did not ship with the launch of iOS 14 last September, especially considering how quickly aesthetic iPhone home screens took over the cultural zeitgeist (and likely drove faster-than-usual uptake of iOS 14). In addition, real support for external peripherals like monitors, microphones, and headsets would be a huge boon to a machine ostensibly created to be a modular creativity machine. A completely-rethought method for displaying iPad content on a high-resolution external display would remove a lot of the limitations of the iPad's multitasking system — imagine having an entire other screen that you can park reference documents on without taking up half (or a third) of your iPad screen's real estate! Advanced audio input and output controls would also be a great addition to iPadOS, allowing users to route input audio to the correct application and simultaneously record the local audio to disk, for instance. A larger offering of "pro" apps from Apple would also be a welcome sign that iPadOS is worthy to run on the unimpeachable iPad hardware. None of these complaints are new, nor are the requested improvements to iPadOS — iPad Pro power users have long put up with the hard limitations of iPadOS, and desperately pushed the envelope further and further on our preferred device. At a certain point, Apple needs to finally fulfill the promise of the iPad Pro and open the release valve on all of this pent-up demand for software capability that matches the hardware; as Jason Snell put it on a recent episode of Upgrade, at a certain point "...you can't push past the envelope; you're stuck in the envelope."

    Jason Snell lays out the long-standing frustration of iPad Pro power users with the hard edges of iPadOS on a recent episode of Upgrade.
  • A Fully-Liberated Apple Watch. Last year’s release of the Apple Watch SE was a meaningful stride towards an inevitable end: an Apple Watch entirely independent of the iPhone. Beyond the obvious benefit to Apple of access to the broader market of smart watch consumers without iPhones, freeing the Apple Watch lowers the financial barrier of entry to what is increasingly becoming an invaluable health monitoring device — which necessarily increases access, equity, and hopefully outcomes. The Apple Watch is also quickly becoming one of the most popular medical research devices on the planet, with countless studies using its various sensors to gather important study data to inform better healthcare decision-making — it is vital that this research is conducted in an equitable and accessible manner, and an independent Apple Watch is a big step in that direction.

  • Some Sign That Apple Hasn’t Abandoned the Smart Home. I’d take a redesign of the Home app as a start — so much potential, all locked behind a mess of tiles, rooms, zones, scenes, and painfully limited automation options. John Voorhees over at MacStories called for a complete redesign of the Home app three years ago, and based on the included screenshots and the familiar frustrations, very little has changed in the interim. Apple also needs to double-down on smart home hardware — the HomePod Mini (and its secret humidity and temperature sensors) was a glimmer of hope for a cogent home strategy, but that check hasn’t posted yet. I, for one, vote for some sort of Apple TV/soundbar chimera (preferably with actual audio-in ports).
  • An “I Know What I’m Doing” Toggle in Shortcuts. iOS 13 gave us a built-in Shortcuts app and the Automations tab, and iOS 14 added a good assortment of Automations triggers (some of which that could even run, well, automatically); it’s time for iOS 15 to finally let Shortcuts power users self-identify as such and unlock the ability to automate any shortcut with any Automation trigger. I understand why Apple has limited the list of triggers that can silently fire off a shortcut in the background with the user none the wiser, but frankly many of us are perfectly aware of the risks (and more importantly: the benefits) of setting up an Automation triggered by a location, an email, or a specific WiFi network. It’s the final frontier of Shortcuts, and we can’t wait to show you what we do with it.
  • Advanced Notification Controls on iOS. The available notification settings on iOS have been lacking for a long time — CGP Grey has been begging for more granular controls for years at this point. Based on some recent Bloomberg reporting, he may finally get his wish in the form of some additional "statuses" in Settings that change the way notifications are delivered. This sounds extremely interesting, long-overdue, and potentially inadequate all at the same time. Some additional components of this new notifications system I would love to see include the ability to set a contact as an "always notify me" contact — whether that be a phone call, an iMessage, or a FaceTime. Heck, integrate that feature with an API third-party developers can plug in to so that contacts in messaging apps like Discord or WhatsApp can also break through Do Not Disturb. I know Apple is always averse to adding too many toggles and knobs to its Settings, but I think even average users would appreciate more fine-tuned ways of managing when and how their phone interrupts their day.

Paper Cuts

  • Make iMessage Image Previews Automatically Resize. I send a lot of photos, screenshots, and yes, memes via iMessage — predominantly to my brother. We often will share screenshots of funny tweets, but the punchline or the funny reply is just outside of the iMessage image preview — this is so often the case that appending “Expand” right after such an image is basically second nature for us. This is silly and unnecessary — just make the iMessage image preview resizable based on the image. Sure, there will have to be some limitations for obscenely large images, but if Twitter can improve their image scaling, so can Apple.
Three screenshots of an iMessage search query for “Expand” with many results.
I’m honestly surprised I found so few instances.
  • Add an "Archive" Option to the Wallet App. This paper cut was brought to my attention during a discussion in the RelayFM Members Discord, when some folks were sharing screenshots of old live events passes in their Wallet apps...which immediately made me recoil in horror at the mountain of old passes cluttering up their screens. I'm the type of person that immediately deletes plane tickets, events passes, and the like from my Wallet app once I no longer need them — why make a mess out of a screen I see every time I buy groceries with Apple Pay? That said, many people pointed out that they keep their old digital tickets for much the same reason used to collect old movie ticket stubs: nostalgia. And they have a point! So, Apple: give us an option to "Archive" old Wallet passes instead of forcing us to choose between deleting old passes or drowning in them.
  • Give Us a "Silence Siri" Option in Settings. Currently, Siri Responses can be set to "Always", "When Silent Mode is Off", or "Only With 'Hey Siri'" — when what I really want is an "Only When Asked a Question" option. Siri's talkativeness is particularly irksome to me on my HomePods Mini when controlling smart outlets in my apartment. Depending on which light I want to turn off, and which HomePod Mini catches my request, I'll either hear nothing back from Siri (ideal), or get a needlessly-wordy "Okay...turning off Bedroom Light" as I am trying to go to sleep at 11PM. I can see that the lamp is no longer on, Siri, but thank you for the update. There's a way Apple can strike a balance between providing useful voice feedback when necessary — like when I am directly asking Siri a question, or if there is an error of some kind — while keeping Siri as unobtrusive as possible in all other cases.
  • Correct the Emoji Search/QWERTY Keyboard Conundrum. It wasn't until recently that this paper cut was brought to my attention on Twitter (via Federico Viticci and Gavin Nelson), and that's when I realized I had subconsciously hated this situation since iOS 14 made Emoji search available last September. As it stands, initiating an Emoji search requires you to tap two buttons to escape back to the typical QWERTY keyboard: one to close the Emoji search by opening the Emoji keyboard, and once to swap from that keyboard to QWERTY. This confusing dance is extremely unintuitive (why would I click the button covered in Emojis when I want the opposite?), and could be solved with something as simple as a small "X"-to-close button tucked into the Emoji search UI.

Hopeful Anticipation

A portion of WWDC's allure is certainly about what changes are coming to our iPhones (or for developers: "what new features do I have to implement?") — but for me, an enamored observer of Apple's tech? WWDC is about being excited for something; it's about identifying how my software life could be better and hoping that Apple helps make that a reality; it's the community-feel of a Discord group-watch with like-minded folks similarly excited for ultimately trivial differences in our everyday lives. WWDC, for me, brings out feelings of hope — for shallow things like software updates, and for deeper, more meaningful things like connection and belonging. Part of what makes hope real, for me, is writing those hopes down in a silly listicle like this one — so, if you've made it this far, I encourage you to do the same; give your hopes (about WWDC and about life) words to the tune they're singing in your heart.

Hope is the thing with feathers that perches in the soul and sings the tune without the words and never stops at all.