John Voorhees

5198 posts on MacStories since November 2015

John is MacStories' Managing Editor, has been writing about Apple and apps since joining the team in 2015, and today, runs the site alongside Federico. John also co-hosts four MacStories podcasts: AppStories, which covers the world of apps, MacStories Unwind, which explores the fun differences between American and Italian culture and recommends media to listeners, Ruminate, a show about the weird web and unusual snacks, and NPC: Next Portable Console, a show about the games we take with us.

This Week's Sponsor:

SoundSource

New Year, New Audio Setup: SoundSource 6 from Rogue Amoeba


macOS Tahoe’s Messy Menus

Nikita Prokopov writing on tonsky.me about macOS Tahoe’s menu icons:

In my opinion, Apple took on an impossible task: to add an icon to every menu item. There are just not enough good metaphors to do something like that.

But even if there were, the premise itself is questionable: if everything has an icon, it doesn’t mean users will find what they are looking for faster.

And even if the premise was solid, I still wish I could say: they did the best they could, given the goal. But that’s not true either: they did a poor job consistently applying the metaphors and designing the icons themselves.

It’s a brutal assessment of the sprinkling of iconography throughout Tahoe’s menu system that had me nodding along in agreement as I read it.

There’s no denying the inconsistencies in icon choices, their lack of legibility, and the overall clutter added to menus. Yet at the same time, I can’t say I’ve been terribly bothered by them either. That’s probably because I use keyboard shortcuts and launchers so much, rarely relying on the Mac’s menu system. At the same time, though, part of me wonders whether those tiny icons are at least partially what drove me to buy a bigger monitor recently. I don’t think so, but maybe?

In any event, if you care about design, Prokopov’s detailed and well-illustrated analysis of Tahoe’s menu icons is well worth your time.

Permalink

How I Revived My Decade-Old App with Claude Code

Blink from 2017 (left) and 2026 (right).

Blink from 2017 (left) and 2026 (right).

Every holiday season, Federico and I spend our downtime on nerd projects. This year, both of us spent a lot of that time building tools for ourselves with Claude Code in what developed into a bit of a competition as we each tried to one-up the other’s creations. We’ll have more on what we’ve been up to on AppStories, MacStories, and for Club members soon, but today, I wanted to share an experiment I ran last night that I think captures a very personal and potentially far-reaching slice of what tools like Claude Code can enable.

Blink from 2017 running on a modern iPhone.

Blink from 2017 running on a modern iPhone.

Before I wrote at MacStories, I made a few apps, including Blink, which generated affiliate links for Apple’s media services. The app had a good run from 2015-2017, but I pulled it from the App Store when Apple ended its affiliate program for apps because that was the part of the app that was used the most. Since then, the project has sat in a private GitHub repo untouched.

Last night, I was sitting on the couch working on a Safari web extension when I opened GitHub and saw that old Blink code, which sparked a thought. I wondered whether Claude Code could update Blink to use Swift and SwiftUI with minimal effort on my part. I don’t have any intention of re-releasing Blink, but I couldn’t shake the “what if” rattling in my head, so I cloned the repo and put Claude to work.

Read more


App Marketing: My Extended Q&A for Paul Hudson’s Everything but the Code

Earlier this year, Paul Hudson asked me to answer a few questions about app marketing for a book he was writing called Everything But the Code.

The book is finished now, and it’s full of great advice from Paul and a long list of indie developers whose apps are some of MacStories’ favorites. Paul covers the entire process of making apps, from validating an idea to selling your app and beyond. The only thing he doesn’t cover, as the book’s title makes clear, is building apps, which is the subject of other books and courses he’s created.

Paul was kind enough to ask me to share some insights on marketing apps to the press. You’ll find my contributions in the Prelaunch and Publicity and Aftermath and Evolution chapters, and now that the book is final, I thought I’d share extended versions of my responses with readers. Although the focus is on apps, I expect there are a few lessons here for anyone pitching their creative work to the world. So, here you go.

Paul Hudson: What common mistakes do developers make when pitching their app to the press?

Me: Most developers do a great job thinking through what they’re pitching but don’t spend enough time thinking about who they’re pitching to. I’d love to be able to tell developers do these five things, and you’ll have a pitch you can send to anyone, but it doesn’t work that way. Developers need to think about things like who at a publication typically covers certain types of apps.

For example, if you know a publication has a musician on staff who has covered music apps before, that person should be at the top of your list if you’ve built a guitar tab app. However, that doesn’t mean you shouldn’t contact anyone else at the publication. People get busy, so don’t limit yourself. However, focus your efforts on the people who are most likely to be receptive to your app.

It also pays to make things easy for the person you’re pitching to. Keep your pitch short and to the point, link to a press kit, beta, and other materials, and follow up closer to launch.

A few other pitch pointers:

  • Don’t wait to send your pitches until the last minute. Personally, I prefer getting pitches at least a couple of weeks in advance of a launch, so I can make the time for testing and writing about them.
  • Don’t send pitches during WWDC, on Apple event days, or major holidays. Your pitch is much more likely to get lost in the shuffle on those days.
  • You don’t need to ask if it’s okay to send a TestFlight link. If the person you’re pitching to isn’t interested, they won’t use it.
  • It’s okay to copy multiple people at a publication if you’re unsure who to contact.
  • Try to understand where a writer likes to be contacted. Email is probably the safest bet, but social media DMs might be better for some people.
  • It’s okay to send follow-up reminders about your app launch. I personally appreciate them.
  • Don’t expect app feedback from most press contacts. I let developers know when I find the kind of bug I’d mention in a review, but unfortunately, I usually don’t have time for much more than that.
  • Don’t take it personally if you don’t get a response to a pitch. Remember, the people you contact are getting a lot of pitches.
  • Don’t close down your TestFlight beta immediately after you launch your app. If a publication can’t get a story out to coincide with your launch, closing down your beta immediately so it can no longer be downloaded makes it less likely they’ll cover it post-launch.
  • Don’t forget to include the name of your app in your pitch – yes, that happens.

Read more


Why I Came Around on Notion

It’s fair to say that in 2025 I changed my mind about Notion, or at least, I’ve come to realize that its strengths make putting up with its quirks worth the effort. In fact, I think Notion is positioned to become the universal workspace it has always aspired to be. The company seems to feel...


What’s Next for Apps in 2026

This week, Federico and John look ahead to 2026 and what it will mean for apps, smarter Siri, and more.

On AppStories+, Federico and John update listeners on their latest app experiments and holiday hardware projects.


We deliver AppStories+ to subscribers with bonus content, ad-free, and at a high bitrate early every week.

To learn more about an AppStories+ subscription, visit our Plans page, or read the AppStories+ FAQ.


AppStories+ Deeper into the world of apps

AppStories Episode 466 - What’s Next for Apps in 2026

0:00
28:22

AppStories+ Deeper into the world of apps

Read more


Our Holiday Schedule

As many of you probably know, we always take a little time off during the winter holidays to recharge and spend time with our families and friends. This year is no different. The website will be quieter than usual for a couple of weeks, and this is the last issue of MacStories Weekly for the...


Rethinking the Studio Display

As I detailed yesterday, I recently abandoned my Apple Studio Display for a 4K OLED gaming display from ASUS. I like my new monitor a lot, but it left me disappointed in Apple because its Studio Display could be so much more than it is. The Studio Display has a lot going for it. First...


Interesting Links

If you’re looking for a good long-form read about something a little different over the holidays, this GQ article by Elizabeth Nelson does a great job capturing The Replacements’ at their peak in 1984, an interesting time in music that also saw Prince’s rise from local Minneapolis act to superstar status. (Link) On a...


OpenAI Opens Up ChatGPT App Submissions to Developers

Announced earlier this year at OpenAI’s DevDay, developers may now submit ChatGPT apps for review and publication. OpenAI’s blog post explains that:

Apps extend ChatGPT conversations by bringing in new context and letting users take actions like order groceries, turn an outline into a slide deck, or search for an apartment.

Under the hood, OpenAI is using MCP, Model Context Protocol, which was pioneered by Anthropic late last year and donated to the Agentic AI Foundation last week.

Apps are currently available in the web version of ChatGPT from the sidebar or tools menu and, once connected, can be accessed by @mentioning them. Early participants include Adobe, which preannounced its apps last week, Apple Music, Spotify, Zillow, OpenTable, Figma, Canva, Expedia, Target, AllTrails, Instacart, and others.

I was hoping the Apple Music app would allow me to query my music library directly, but that’s not possible. Instead, it allows ChatGPT to do things like search Apple Music’s full catalog and generate playlists, which is useful but limited.

ChatGPT's Apple Music app lets you create playlists.

ChatGPT’s Apple Music app lets you create playlists.

Currently, there’s no way for developers to complete transactions inside ChatGPT. Instead, sales can be kicked to another app or the web, although OpenAI says it is exploring ways to offer transactions inside ChatGPT. Developers who want to submit an app must follow OpenAI’s app submission guidelines (sound familiar?) and can learn more from a variety of resources that OpenAI has made available.

A playlist generated by ChatGPT from a 40-year-old setlist.

A playlist generated by ChatGPT from a 40-year-old setlist.

I haven’t spent a lot of time with the apps that are available, but despite the lack of access to your library, the Apple Music integration can be useful when combined with ChatGPT’s world knowledge. I asked it to create a playlist of the songs that The Replacements played at a show I saw in 1985, and while I don’t recall the exact setlist, ChatGPT matched what’s on Setlist.fm, a user-maintained wiki of live shows. I could have made this playlist myself, but it was convenient to have ChatGPT do it instead, even if the Apple Music integration is limited to 25-song playlists, which meant that The Replacements’ setlist was split into two playlists.

We’re still in the early days of MCP, and participation by companies will depend on whether they can make incremental sales to users via ChatGPT. Still, there’s clearly potential for apps embedded in chatbots to take off.