John Voorhees

3211 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.


My Favorite Gear From CES 2026 – and Some Weird and Wonderful Gadgets, Too

It’s CES time again, which means another edition of our annual roundup of the most eye-catching gadgets seasoned with a helping of weird and wonderful tech. I’m sure it will come as no surprise that robots, AI, and TVs are some of the most prominent themes at CES in 2026, but there’s a lot more, so buckle in for a tour of what to expect from the gadget world in the coming months.

AR Glasses

Viture encourages customers to both unleash and embrace The Beast. Source: Viture.

Viture encourages customers to both unleash and embrace The Beast. Source: Viture.

I first tried Xreal AR glasses shortly before the Vision Pro was released. The experience at the time wasn’t great, but you could see the potential for what has turned out to be one of the Vision Pro’s greatest strengths: working on a huge virtual display. There’s also a lot of potential for gaming.

It looks like the tech behind AR glasses is finally getting to a point where I may dip in again this year. Xreal updated and reduced the price of its entry-level 1S glasses, which will make the category accessible to more people.

The company also introduced the Neo dock, a 10,000 mAh battery that also serves as a hub for connecting a game console or other device to its AR glasses. Notably, the Neo is compatible with the Nintendo Switch 2, which caught my eye immediately.

Read more


Coming Soon: What’s Next on Apple TV and Apple Arcade in January 2026

To ring in the new year, Apple has a great lineup of returning Apple TV shows and brand-new Apple Arcade games on the way, with everything kicking off later this week. Here are the highlights.

Apple Arcade Games (January 8)

On January 8th, Apple will release four new games:

  • True Skate+: a skateboarding simulator with realistic physics that’s set in more than 20 real-world locations. The game has been available on the App Store for years, but now Arcade subscribers can play on their iPhone and iPad, or even stream a game via AirPlay to an Apple TV without the In-App Purchases.
  • Sago Mini Jinja’s Garden: a family game that lets preschool-aged kids explore gardens, cook, and harvest ingredients in three distinct 3D areas.

  • Cozy Caravan: another family-friendly game where kids can create and play as an animal character, make meals, and enjoy activities like fishing and games, all while preparing for the Whizz Bang Fair.

  • Potion Punch 2+: a restaurant management simulator where you manage a variety of shops like the Potion Café or Enchantment Shop. The app features a fantasy theme filled with magic and monsters with an amusing storyline.

Then starting this Friday, a host of new Apple TV shows will begin to appear:

Tehran, Season 3 (January 9)

The International Emmy Award-winning Israeli spy thriller returns for its third season with Hugh Laurie, who joins the cast as a South African nuclear inspector. Created by Moshe Zonder, Dana Eden, and Maor Kohn, the series follows Mossad agent Tamar Rabinyan (Niv Sultan) as she takes on dangerous missions deep inside Iran. After going rogue at the end of season two, Tamar fights to win back the Mossad’s support and survive, with the eight-episode season directed by Daniel Syrkin.

Add to your Calendar:

Hijack, Season 2 (January 14)

I loved season one of this series starring Idris Elba, who returns as corporate negotiator Sam Nelson in this real-time thriller. After saving a hijacked flight last season, Sam finds himself at the center of a new crisis on a Berlin underground train. The eight-episode season includes new cast members Toby Jones, Lisa Vicari, and Clare-Hope Ashitey, with returning stars Christine Adams, Max Beesley, and Archie Panjabi.

Add to your Calendar:

Read more


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


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.


Our Final 2025 MacStories Setups Update

Our desk setups. Federico (left) and John (right).

Our desk setups. Federico (left) and John (right).

John: As 2025 comes to an end, Federico and I thought we’d cap off the year with a final update on our setups. We just went through this in November, but both Federico and I decided to take advantage of Black Friday sales to improve our setups in very different ways. Let’s take a look.

My changes were primarily to my office setup. I’ve wanted a gaming PC for a long time, but I never had a good place to set one up. The solution was to go with a high-end mini PC, the GMKtec EVO-X2, which features a Strix Halo processor, 64GB of RAM, and a 2TB SSD. It came with Windows installed, but after a few days, I installed Bazzite, an open-source version of SteamOS, which makes it dead simple to access my Steam videogame library.

Two things kept me from getting a PC earlier. The first was space, which the EVO-X2 takes care of nicely because it’s roughly the size of the Mac mini before its recent redesign.

The second and bigger issue, though, was my Studio Display. It’s an excellent screen, but it’s showing its age with its 60Hz refresh rate and 600 nits of brightness. Plus, with one Thunderbolt port for connecting to your Mac and three USB-C ports, the Studio Display is limiting. Without HDMI or DisplayPort, connecting it to other video sources like a PC or game console is nearly impossible.

The GMKtec EVO-X2 mini PC, Switch 2, and 8BitDo Ultimate 2 controller

The GMKtec EVO-X2 mini PC, Switch 2, and 8BitDo Ultimate 2 controller

So I also bought a deeply discounted ASUS ROG Swift 32” 4K OLED Gaming Monitor, which is attached to my desk using a VIVO VESA desk mount. I’d wanted a bigger screen for work anyway, and with its 240Hz refresh rate and bright OLED panel, the ASUS has been excellent. However, the ASUS display really shines when connected to my GMKtec and Nintendo Switch 2. As I covered on NPC: Next Portable Console recently, the mini PC combined with a great monitor, which also allows me to stream games to my handhelds over my local network, was the missing link in my setup, delivering a flexibility I just didn’t have before.

Along with the gaming part of my desktop setup, I updated my desktop lighting with two Philips Hue Play Wall Washer lights and a Hue Play HDMI Sync Box 8K, which casts light against the wall behind my desk that’s synced with what’s onscreen. In fact, the Sync Box 8K works with all the Hue lights in my office, allowing me to create a more immersive environment when I’m gaming.

I’ve been using a handful of other accessories lately, too, including:

That’s it from me for 2025, folks. Enjoy the holidays! Things will be a little quieter at MacStories over the next couple of weeks as we unwind and spend the time with family and friends over the holidays, but we’ll be back with lots more before long.

Federico: For this final update to my setup before the end of the year, I focused on two key areas: audio and my living room TV setup.

The biggest – literally – upgrade for me this month has been switching from my previous LG 65” TV to a flagship LG G5 77” model. I’d been keeping an eye on this TV for a while: it’s LG’s first model to use Tandem OLED technology, and it boasts higher brightness in both SDR and HDR with reduced reflections thanks to the new panel. I took advantage of an incredible Black Friday deal in Italy to buy it at 50% off, and we love it. The TV rests almost flush against the wall thanks to its compact design, but since it’s not completely flush, it allowed us to re-install our Philips Hue Gradient Light Strip behind it. Since I was in a renovation mood and I also wanted to future-proof my setup for the Steam Machine in 2026, I also upgraded to a Hue Bridge Pro and replaced my previous Hue Sync Box with the latest 8K edition that is certified for HDMI 2.1 connections. Speaking of gaming: as I discussed this week on NPC, I got a Beelink SER9 Pro mini PC and installed Bazzite on it to get a taste for SteamOS in the living room; this one will eventually be replaced by a more powerful Steam Machine.

The other area of improvement was audio. I recently realized that I wanted to fully take advantage of Apple Music and Spotify’s support for lossless playback with wireless headphones, which is something that, alas, Apple’s AirPods Max do not support. So after much research, I decided to treat myself to a pair of Bowers & Wilkins Px8 S2, which are widely considered some of the best Bluetooth headphones that you can buy right now. But you may be wondering: how do you even connect these headphones to Apple devices that do not support Qualcomm’s aptX Lossless or Adaptive codecs? That’s where the BT-W6 Bluetooth dongle comes in. In researching this field, I came across this relatively new category of small Bluetooth adapters that plug into an iPhone’s USB-C port (they work on a Mac or iPad, too) and essentially override the device’s built-in Bluetooth chip. Once headphones are paired with the dongle rather than the phone, wireless streaming from Apple Music or Spotify will use aptX Lossless instead of Apple’s legacy SBC protocol. The difference in audio quality is outstanding, and it makes me appreciate the Px8 S2 for all they have to offer.

While I was at it, I also took advantage of another deal for a Sonos Move 2 portable speaker; we’ll have to decide whether this one will be permanently docked on my desk or next to a record player that Silvia is getting me for Christmas. (We don’t like surprises for each other, especially when it comes to furniture-adjacent shopping.)

So that’s my update before we go on break for a couple of weeks. I can already feel that, when I’m back, I’ll have some changes to cover on the software front. But we’ll talk about those in 2026.

Permalink

Two Months with the Narwal Freo X10 Pro

In the depths of the pandemic, I bought an iRobot Roomba j7 vacuum. At the time, it was one of the nicer models iRobot offered, but it was expensive. It did a passable job in areas with few obstacles, but it filled up fast, had a hard time positioning itself on its base and frequently got clogged with debris, requiring me to partially disassemble and clean it regularly. The experience was bad enough that I’d written off robot vacuums as nice-to-have appliances that weren’t a great value.

So, when Narwal contacted me to see if I wanted to test its new Freo X10 Pro, I was hesitant at first. However, I’d seen a couple of glowing early reviews online, so I thought I’d see if the passage of time had been good to robo-vacuums, and boy has it. The Narwal Freo X10 Pro is not only an excellent vacuum cleaner, but a mopping champ, too.

Read more