The USA is about to finally catch up to the rest of the world which has been enjoying instant peer-to-peer transactions directly from the bank. Here’s Ashley Belanger, writing for Ars Technica:

Yesterday, the US Federal Reserve officially launched FedNow, a new system rolled out to 35 early-adopting banks and credit unions for processing instant payments between financial institutions. The Fed’s goal is to eventually connect more than 9,000 banks and credit unions nationwide, tossing out the old payments system and supporting faster payment processing between all US institutions.

FedNow isn’t all about peer-to-peer transactions, it’ll be great for instant rent payments and access to paid invoice funds too. But I’m expecting that, when this reaches mainstream, it will mean the current crop of peer payment services — Venmo, Cash App, Apple Cash, and the like — will need to compete harder by adding new convenience features or rewards to remain useful and relevant going forward.

Since I already use those services as very simple, very temporary intermediaries to my bank account, I’m glad to see something first-party arrive. But I have some trouble imagining that my banking app is going to come up with as good a user experience as I get with $Cashtags or Apple Cash over iMessage. We’ll see.

(Via Colin Wright // One Sentence News)

Linked


A weekly list of interesting things I found on the internet, posted on Sundays. Sometimes themed, often not.


1️⃣ 🔥🪰 🙂 [🔗 xkcd.com]

2️⃣ When my friend Catherine wants my attention, her go-to move is to step on my keyboard and then rub her face on my face as if she’s sorry. She’s not sorry. [🔗 xkcd.com]

3️⃣ Very Necessary Emojis and Very Necessary Reactions prove that that iMessage apps are still a thing this world needs. Insta-buys. [🔗 Aviv Stein // linktr.ee] (Via @BasicAppleGuy)

4️⃣ Yep, they had me pegged for all three common geographical misconceptions in this (delightfully visual) article. [🔗 John Nelson // storymaps.arcgis.com]

5️⃣ I love Dogs With Jobs™ and this one has a great job: retrieving bats at baseball games. [🔗 @goodable // threads.net]

6️⃣ This About page for Kev Quirk’s site is one of the best I’ve seen. It’s so clever to expose some features of the site through an imagined chat with the reader. And I was tickled to see it’s built on Blot, like this very site. [🔗 kevquirk.com]

7️⃣ Did you know that there are a group of 100 lava lamps that help keep about 10% of all web traffic secure? Me neither. Check out this 1-minute video about the project at Cloudflare. [🔗 Atlas Obscura // youtube.com]


Take a Chance


Thanks for reading 7 Things. If you enjoyed these links or have something neat to share, please let me know.

7 Things


Jarrod’s and Jason’s avatars separated by the letter emoji and their website domains below their images.
(Image inspiration: José Muñoz)

For the Letters project this month, I’m corresponding with Jason Becker, the instigator of this whole series of projects around the web.

Here’s a glimpse at our second exchange, as summarized by ChatGPT:

In Jason’s second letter, he shares heartfelt details about his pets, particularly focusing on Gracie, a 13-year-old Pomeranian-Beagle mix, whose health is declining, and Brandy, a terrier mix. He provides a brief history of his dogs, including Martina, his childhood dog. Jason then explains his role in an education-finance technology” company, emphasizing the challenges of adapting financial software for schools’ unique needs. He reflects on the unique experience of being part of a startup from its early stages, expressing gratitude for the diverse phases he has witnessed and the skills acquired. Jason discusses the evolving nature of his work and explores the idea of bringing passions together for success. In his response, Jarrod shares stories about his own pets, a Golden Retriever named Phin, a Maine Coon cat named Ollie, and a turtle named Remus. Jarrod delves into the intersection of his interests in the outdoors and technology, expressing gratitude for Jason’s insights and seeking advice on blending his passions on his blog. He also provides a glimpse into his work as a mountain guide and how he balances guiding clients with personal outdoor adventures, inviting Jason to share his fears and coping mechanisms in return.


If you’d like to be a penpal for this project, please reach out! I’d love to get you on the schedule.

PenPals


The Design Matters with Debbie Millman podcast:

As Vice President of Human Interface Design at Apple, Alan Dye has spent much of his career working for a company that has done perhaps more than any other to make design sexy, essential, and highly coveted. He joins to discuss his lustrous creative path working with Ogilvy’s Brand Integration Group, Kate Spade, Apple and the brand new, highly anticipated Apple Vision Pro.

I know Alan Dye catches a lot of flack for some…interesting design choices for the macOS interface. But I still thoroughly enjoyed this podcast episode with him. He made for a delightful guest with the conversation expertly guided along by host Debbie Millman, who had very clearly done her homework. It certainly helped that the two of them have a personal history, but Alan was so eloquent and thoughtful about his answers. It really was engaging conversation.

If you, like me, like it when Apple employees are able to emerge from the ring and show a little personality — anything to remind us that Apple really is just a collective of (very smart and talented) people — I feel confident that you will enjoy this interview. It covers Alan’s history before Apple, what he’s done there for the past 16 years, a bit about their design studio’s process, and a lot of excitement for Vision Pro. Go give it a listen. (Overcast)

Linked Podcasts


The finalists in the Tiny Awards are all incredibly clever little internet projects that push on your preconceptions of a website”.

One of them writes a poem for you to read while following directions from your current location, along with actions to do along your journey to a new place.

Another is a digital publication that contains a project that uses a language model to rewrite thoughts out of the author’s private journal with an evocative illustration of spiraling thoughts.

Yet another is simply rotating sandwiches.

But my vote went to a project that is crowd-sourcing definitions for every word using an acronym of that word. For example, I submitted an acronymic definition for iconoclasts”: individuals challenging orthodox notions or customs liberating arts sciences traditions sonorously

Go check these out, and do it fast! Voting ends on Thursday, July 20.

Linked


Today I realized that you can enable a Share Extension for CleanShot X to pin any image to the screen — not just screenshots that you’ve taken. Then you can right-click or hit ⌘-E to open its excellent image editor to crop, add annotations, backgrounds, and more.

To enable it, go to System Settings → Privacy & Security → Extensions (at the bottom) → Sharing. There, you can enable both the Pin to the Screen’ and Annotate’ extensions from CleanShot, depending on your needs.

For months, I’ve been dragging images into Yoink just to use the Open with…’ menu to get them in CleanShot. Turns out that functionality could have been just a single right-click away. 🤯

Share menu containing CleanShot’s ‘Pin to the Screen’ item, and the pinned image floating on the desktop.
Working with basically any image in CleanShot is now so easy!

CleanShot X continues to impress and has further cemented its place as one of the very first apps I’ll put on a Mac.

Tips


Threads has taken the world by storm and established new playbooks, and although it isn’t my favorite social network, I’m enjoying kicking the tires and having a broader audience to share all my silly thoughts with again. That being said, since I’m still posting to Micro.blog first, I wanted an easy way to copy posts into Threads because it doesn’t support cross-posting from Micro.blog like other social destinations.

Enter Shortcuts: my jackknife of an automation tool. I ended up creating two shortcuts (Convert Text and Post to Threads’ and Open Threads App’) that work together to make it as easy as currently possible to get posts into Threads. Seeing as Threads doesn’t have any native Shortcuts actions yet, I had to get a little clever about how to move the data from point A to point B. Spoiler: They use the If’ and Match Text’ actions copiously. Let’s dig in.

Matching and formatting the alt text first

Shortcuts editor showing text getting matched with a regular expression.
Regular expressions are weird, but so powerful.

They say accessibility should be built-in right from the start and that’s true for my conversion shortcut, even if it wasn’t true for the Threads app at launch. For, gosh, probably three years now — yeah, ever since I started this blog — I’ve been diligent about adding descriptions for images that I post online. Image descriptions, or alt text, make the internet a better place for everyone. Folks who use screen readers to read the web deserve to know what is being shared in images, even if they can’t see them. Many social networks have a workflow for adding those descriptions — usually by tapping on a photo after it’s been uploaded — but Threads doesn’t support them yet. But since I write almost all of my social posts in Drafts using Markdown, the alt text can be isolated programmatically.

Markdown images are referenced using the syntax ![Alt text.](image-url.jpeg). So we use a Match Text’ action that deploys a regular expression to match any text that lives within a set of square brackets ([]) that is immediately preceded by an exclamation point (!). I’m no regular expression guru, but ChatGPT is. After some back-and-forth explaining what I needed and then testing, I got this expression: (?<=!\[)(.*?)(?=\]) which gets the text in the brackets, but not the brackets themselves. The Match Text’ action results in a list of matched items, so we’ll use that variable later to format the image descriptions just how we want them.

By having already matched the alt text first, we can manipulate the starting text without worrying about losing track of those descriptions later.

Accommodating for plurals

Counting matches and adding an “s” if there is more than one.
Four actions to add an s”.

Here’s a bit that I’m proud of having figured out. Being a stickler for grammar, I wanted to make sure that if multiple images were shared I’d be able to correctly label them as the plural image descriptions” as opposed to an image description”. By counting up the number of matches — after checking if there are any matches to begin with, which is handy to distinguish so later we can control what happens if there were no images at all — we simply add a Text’ action containing the single letter s” I need to make description” into its plural and set it as a variable.1

A text action showing the plural variable added onto the word “Description”
It looks funny, but it works!

Next, we need to format the matched alt text how we want it to appear in the Threads post. Still within the If’ block that controls what happens if more than one description is matched, we use a Repeat with Each’ action to number each description using its repeat index and put it on its own line so that a listener can differentiate between the descriptions when they’re read aloud. Key here is to use an Add to Variable’ action before it repeats so that it makes a list of the descriptions all within one variable. We’ll call the variable matched-descriptions”.

In the Otherwise’ part of the If’ action, we know that just one description was matched. We get that matching text — no reformating necessary — and it gets added to a variable named the same matched-descriptions” so that variable can be used either way.

Calling up the original matched alt text with no modifications.
Matched variable names for those matched descriptions.

Finally, we put it all together in one more Text’ action. Image Description” gets the plural’ variable tacked on so it’ll get that extra s” if necessary. The matched-descriptions’ variable containing the numbered descriptions on their own lines gets put below the label.

Setting the alt-text variable with extra line breaks.
But what’s all that whitespace for?

Creating an auto-threaded reply

The really cool bit in this step is how the alt text gets put automatically into its own threaded reply when it’s pasted into Threads. It turns out that you can hit the return’ key three times when composing a thread to create a threaded reply before ever posting the first one. We put those same three line breaks ahead of the Image Descriptions” label and — voilá! — we’ve easily separated the descriptions from the main post so that (1) they’re less annoying to people who don’t need to see them, and (2) we’re more likely to stick within the 500 character limit for each post.

Pasting the text into Threads, resulting in a post and a reply.
Threadin’ be easy!

Here’s that whole flow after matching the alt text from the initial text input until we set it all as a new alt-text’ variable:

Count, If, Repeat, oh my!

Even though Markdown is made to be human-readable (and I think clarifies what links should refer to when read as plain text), I want to be a good platform citizen of Threads. This means getting rid of the extra square brackets around linked text, and, of course, the text for Markdown-referenced images since they’ll be natively attached in the Threads app. But after all that we’ve done above, this should be a piece of cake!

Matching text with a regular expression, and then replacing the Markdown bits that we don’t want.
Massaging out the Markdown is comparatively simple.

A match and replace-filled piece of cake that is. We go back to our old friend Match Text’ with a new regular expression to match anything that looks like a Markdown reference to an image. This expression \n!\s*(.*) finds a blank line followed by a new line starting with !. Since I don’t start sentences with an exclamation point, I can be pretty sure that it’s an image reference. We replace that matched text with nothing, so it’s just deleted from the starting-text’ variable.

Next, we want to get rid of the opening square bracket around linked text, so individual instances of those are likewise replaced with nothing. For the closing square bracket, we actually do replace it with some new text. In this case, we find instances of ]( and replace them with a blank space plus the opening parentheses. That separates the parentheses-enclosed URL from its linked text, which looks a little more natural in Threads.

Note that we’re replacing text in a continuous line of Updated Text’ variables by just passing the result from one to the next.

To set up the actual final bit of text that will be posted to Threads, we use one last Text’ action and call up just two variables: converted-text’ and alt-text’ without a space between them. That alt-text’ variable won’t contain anything if there weren’t images in the input, but it will contain the necessary line breaks if there were, so we just place them right next to each other.

Opening the Threads app

We’ve done all this work, and we still haven’t even gotten to the Threads app yet. Thankfully, getting our newly-formatted text into Threads to post is quite simple.

Actions for previewing the result, copying it, and opening Threads.
Trust but verify.

But before we open the app, let’s make sure everything looks right. By adding a Show Result’ action before copying it to the clipboard, we can ensure that nothing funny happened during the conversion process. For example, if there was body text separating the referenced images, that body text might get lost in the migration.

If it doesn’t look right, you can hit the Cancel’ button when it’s showing the result to stop the shortcut from continuing and overwriting the clipboard.

The ‘Show Result’ preview with the option to cancel.
I like having the option to stop the shortcut if it screws something up.

If it’s all good, we hit Done’ and the shortcut copies the final-text’ variable to the clipboard and ends with a Run Shortcut’ action to run the Open Threads App’ shortcut. Don’t worry about passing any variables to that Run Shortcut’ action because we’re just going to use the clipboard anyway.

You might be wondering why we don’t just use an Open App’ action on its own here to open the Threads app. This next screenshot should clue you in as to why:

Actions to check the OS and open Threads.
Running shortcuts as functions are the best.

You see, Threads is an iOS-only app for now. You can, however, install the iOS app on your iPad where it’s pretty good in Stage Manager, and great for browsing alongside a Mac using Universal Control. By using an If’ action to check if the Device Details → OS type is iOS (Shortcuts, thankfully, treats iOS and iPadOS as the same operating system2) and only use the Open App’ action in that case, while doing nothing on macOS.

It’s because I like to use Threads on iPad as a companion to my Mac that I use that If’ block. I can run the shortcut on text from my Mac, and it won’t give me an error when the app isn’t installed. Instead, I just pop my cursor over onto the iPad, open Threads, and — thanks to the magic of the Universal Clipboard — paste the converted text into a new post. Or when run from an iPad or iPhone, the Threads app opens automatically, ready to go.

I don’t want to recreate that If’ block every other time I want to programmatically open the Threads app, so splitting it off into its own shortcut makes it useful elsewhere.3

And that’s it!

That wasn’t so hard, right? 😝 While employing relatively simple actions, these shortcuts use more advanced techniques to accommodate multiple scenarios, and are good to bear in mind as you build your own more versatile automations.

Get the shortcuts:

Let’s take a look at the whole flow in action:

You can reveal screenshots of both shortcuts from top to bottom below.

Show/hide the shortcuts

Convert Text and Post to Threads

It’s a honker.

Open Threads App

And a little guy.

  1. Bonus tip: You’ll notice that I set variables for a lot of things here even though they could be called up as Magic Variables without explicitly setting them. When they’re explicitly set and named, variables are way easier to use later because they show up in the menu of variables. You have to go back and hunt down Magic Variables where they are created in the flow of actions.↩︎

  2. To actually differentiate when a shortcut is run on an iPhone versus an iPad, use the Device Type’ parameter instead.↩︎

  3. Running other shortcuts as functions makes your automations more versatile, and can save you a bunch of time and hassle. By designing shortcuts as building blocks to be fitted together in this way, you don’t have to remember all of the actions needed to accomplish a task and string them together in every shortcut you need to do it. Less time to build a shortcut, and less opportunity for errors. It’s the whole point of making shortcuts to begin with! I might break out the section of this shortcut for counting items and making a word plural into its own function next.↩︎

Shortcuts Tips


A weekly list of interesting things I found on the internet, posted on Sundays. Sometimes themed, often not.


1️⃣ Robb Knight made a neat tool to calculate the total time duration of a podcast across all its episodes, just from the RSS feed. [🔗 Robb Knight // podcast-duration.netlify.app]

2️⃣ Apple’s next update to macOS Ventura will fix a bug affecting the (nearly 14-year-old and discontinued) iPod shuffle. Now that’s what I call long-term software support! [🔗 Joe Rossignol // macrumors.com]

3️⃣ This video where 100 people were asked to scream at the top of their lungs is one of the best things I saw all week. Some people loved doing it, some didn’t. Some could produce a blood-curdling scream, and some were truly terrible at it. It’s an impressive array of humanity in the span of a few minutes. [▶️ Cut // youtube.com] (via kottke.org)

4️⃣ Strong contenders for the title of World’s Best-Designed Emoji’, currently held by Apple, could be coming soon from Microsoft. But I’ve been fooled into thinking they were close before. [🔗 Umar Shakir // theverge.com]

5️⃣ A shockingly poignant reflection of our collective migration from one social media platform to another. [▶️ briefs.video]

6️⃣ Emojipedia.org has undergone a major redesign that knocks it out of the park in being easier to use, better laid out, and more comprehensive. They were already the authority on all things emoji, but that hasn’t had them resting on those laurels. The new design, in honor of their 10th anniversary and World Emoji Day tomorrow, pairs great with my Emoji Meaning’ lookup shortcut. [🔗 Keith Broni // blog.emojipedia.org]

7️⃣ This story about thesis topics and thesis advisors got a laugh out of me. [📄 www3.nd.edu] (Via @pratik)


Take a Chance


Thanks for reading 7 Things. If you enjoyed these links or have something neat to share, please let me know.

7 Things


A sample of my t-shirt designs with a large banner stating “$5 off plus free shipping”.
Deals! Deals! Deals!

Just a quick note to let you know that, thanks to the folks at Cotton Bureau, I’m now able to offer you $5 off any item in my store — provided it’s your first order. And you can get free shipping if you order by July 27!

So if you’ve had your eye on any designs — like the popular Triangles, Coach Lasso, Believe (Six Colors), I Used To Be Someone On Twitter, or the classic HeyDingus Logo — now’s a great time to buy! Everything comes as a t-shirt, sweatshirt, and even a onesie for the littlest fans. Some even come as phone cases.

How do you get the discount? Just browse the store using any of the links on this page or on my Stuff I Love’ page for the discount to be automatically applied at checkout. If you run into problems, you can also just try my discount code: K8QWSGPK47

I really appreciate any purchase that you make as I get $5 back from each one, which will help me get closer to breaking even on costs for the site. And you get a great quality product1! Everyone wins. 👕😄


  1. Truly, the Cotton Bureau products are superb. I’ve got a bunch of shirts and sweatshirts that I’ve bought of my own designs and from other stores, and they’re my favorite shirts to wear. They’re, by far, the softest and best-fitting clothing in my closet.↩︎

Merch


TL;DR: Yes. The Instagram app is already too full by the admission of its product leader, and I think Reels is the best choice for booting out to its own app where it could thrive.


I’ve been thinking more about the record-breaking success that Meta has enjoyed with Threads. So much of its initial popularity can be ascribed to Instagram’s huge user base having a leg up on getting started there. Getting connected with your entire existing social graph with just a tap is an accelerant we haven’t seen put to use at this scale since Instagram itself used Twitter’s API, of all things, to bootstrap its network. Things really do come full circle, don’t they?

Building off Instagram’s account system and network is a playbook that has obviously worked for Meta and I’d bet will shake up plans and assumptions made there. But will it retroactively affect services built into, but not out of, Instagram? That is my question.

Instagram has ballooned from the darling indie photo-sharing app it was in 2010 to the visual content factory, shopping center, and ad powerhouse that it is today. Stories, Reels, Shopping, Messenger, even just videos — these are all things that we didn’t want to be added to Instagram in the first place but were shoved in anyway as they rode the tailwinds of each passing internet fad. But what if these ideas were given room to breathe in their own apps, able to evolve without cramming the Instagram interface and pissing off its users? I think Instagram’s head honcho, Adam Mosseri, is reconsidering that very proposition.

Here’s Mosseri discussing Threads being split out as its own app rather as a feature of the Instagram app:

Then there’s a separate app versus separate tab. Separate tab is tough. There’s only so much stuff you can shove in the app. It’s already feeling too complicated. We’re trying to actually simplify right now, and so it’s certainly working against that. And generally, when you build a separate tab, you find you want to push all that distribution through a feed invariably in order to bootstrap it. You kind of end up right back in that first problem.

It sure sounds to me like they regret putting so many features into Instagram and are actively working to rectify those decisions. If they’re considering moving something out, I would think a prime candidate should be Reels. Especially if a widespread TikTok ban goes into effect, US users are going to want something to fill that void, and fast. Something that already has the creators, brands, and friends that they want to follow. Now, whose M.O. does that sound like?

Reels could stay as part of Instagram — it’s been there long enough now for it to gain mindshare — but I don’t think it should. I already go to Instagram for three very distinct purposes: (1) keeping up with photo life updates from friends in the main timeline, (2) watching topical short-form videos from across my interests but mostly from people I don’t follow (Reels), and (3) direct messaging in Instagram Messenger with group chats and individuals — some of whom I don’t even follow! I have to jump around the interface so much that I often lose the thread (heh) of where I am in the app and what I’m doing. As standalone products, I would feel more confident in both consuming and creating for each one. Each would have its focus.

By leveraging my Instagram network as a starting point, I could pick and choose which accounts I want to follow in each app’s context. I can tell you that I’d follow way more people in Reels if it were disconnected from who I see in my Instagram-proper timeline. I’m already doing that with Threads. I might follow more of my group chat buddies. Right now, I just feel like I’d be bloating my Instagram experience further.

One final question: Will a similar deconstruction treatment ever come to Facebook? Or is its siloed, all-encompassing nature too baked in by now? Some people use Facebook as their primary (only?) window and megaphone into the web. I have a feeling that ripping features out of the big blue app would confuse more than help many of its users.