Ever since the story broke, I’ve had one overriding thought about the Hey.com App Store rejection controversy. It’s a point I’ve already tried to make on a recent episode of ATP and on Twitter. Before WWDC arrives with its own wave of Apple-related news, I’d like to take one more run at it. Here goes.
Everyone wants apps that are feature-rich, easy-to-use, secure, and have good customer support. Apple, developers, and customers all agree on this. Incentives diverge slightly from here. Both Apple and developers want to make money. Customers want app prices to be low, but also want apps that are well-supported and maintained.
Apple, through its control of the App Store, dictates the terms that developers must agree to in order to distribute iOS apps to customers. Apple’s rules determine how the interests of all parties are balanced.
For many years now, Apple has been aiming for an ambitious goal state: an App Store filled with feature-rich, easy-to-use, secure apps, sold at prices customers find attractive, and monetized in a way that keeps developers happy and profitable while also giving Apple a significant percentage of all app-related revenue: 30% for most things, 15% after the first year of subscriptions, and some other, usually non-public number that’s less than 30% if you happen to be a fellow tech giant like Netflix or Amazon.
The App Store rules are the most powerful tool Apple can use to achieve its goal. To this end, the rules have been adjusted many times over the years. But throughout all these changes, Apple has never given up on its dream of an App Store filled with great apps that make everyone happy and make lots of money for both Apple and developers.
Today, Apple’s stance seems to be that if they just hold the line on a few key provisions of the App Store rules, companies will build their business models around Apple’s revenue cut in the same way companies built their business models around the costs of brick-and-mortar retail in the pre-Internet days. Apple seems to firmly believe that its ambitious goal state can be achieved with something close to the current set of App Store rules.
This belief is not supported by the evidence. Years of history has shown that Apple is getting further away from its goal, not closer. Witness Netflix abandoning in-app purchase, Apple having to strike a special deal with Amazon, and all the apps skirting the existing rules as best they can, to the detriment of the user experience and both Apple’s and developers’ revenue. And this is before even considering the customer support situation, which has always been dire, or the existence of businesses like ebook sales that will never have an extra 30% handy to give to Apple.
Apple’s App Store rules need to change not (just) because developers don’t like them. They need to change because time and experience have shown that there is no viable path to Apple’s goal state given the existing rules. The details of any particular App Store controversy can often distract from this larger reality. A hardline stance will not sway hearts and minds, and it has proven unable to change developers’ business models without sacrificing the user experience. Apple needs to decide if it wants to be “right,” or if it wants to be happy.
When DragThing was finally left behind—after 24 years of service—by macOS Catalina’s lack of support for 32-bit apps, I knew I’d miss many of its features. I missed its (optional) modification of the Mac’s window-layering policy so much that I made my first Mac app, Front and Center, to replace it. My second Mac app, SwitchGlass, also replaces a feature I miss from DragThing. (Thank you, James Thomson, for unwittingly kickstarting my Mac development efforts.)
SwitchGlass adds a dedicated application switcher to your Mac. You can customize its appearance, size, and position on each attached display, including hiding it on selected displays. It pairs perfectly with Front and Center, supporting both click and Shift-click actions on app icons in the floating app switcher. SwitchGlass is available for $4.99 on the Mac App Store. To learn more, please read the FAQ.
I wrote SwitchGlass and Front and Center to satisfy my own needs. I run both apps all day, every day on my Mac. I’ve been a professional programmer for almost 25 years, but until this year, I’d never written anything for my favorite platform. It’s immensely satisfying to be able to scratch my own itch. And it’s even more satisfying to learn that there are other people out there who also appreciate my strange little apps.
Thanks to everyone who has purchased one of my apps. And special thanks to Brad Ellis for creating the beautiful SwitchGlass icon.
P.S. - I may not be the only one who misses DragThing’s application switcher. The phenomenally powerful Mac automation app Keyboard Maestro recently added a similar feature. In fact, SwitchGlass’s default appearance is inspired by Keyboard Maestro’s app switcher. If you want a hugely capable Mac automation tool that just happens to have an (optional) app switcher palette built in, check out Keyboard Maestro. I highly recommend it.
For a few years now, I’ve tracked the TV shows I’m watching using the iOS app Couchy, which integrates with the Trakt.tv service. Sadly, Couchy ceased development last year. I’ve kept using it since then, but in the past few weeks it’s finally started to fail.
I looked at (and purchased) many, many alternative apps back when Couchy’s demise was announced, but I could never find one that I liked as much. In particular, I haven’t found a match for the information density of Couchy’s main screen combined with its “smart” sort order.
Couchy’s main screen shows a scrollable grid of portrait-orientation poster images for each TV show, three to a row on my iPhone, each with text below it showing the show name, how many episodes behind I am, the season, the episode number, and title of the next episode. (I’d include a screenshot here, but poster images are no longer loading for me in Couchy, so it wouldn’t be much to look at.)
The sort order determines how the shows are placed in the grid. Within the app, Couchy describes its smart sort as follows:
Shows will be sorted in the following order:
- Episodes airing today
- Missing episodes
- Awaiting episode
- Ended shows
As I’ve tweeted about my search for a Couchy-replacement app, I’ve found it difficult to explain what I’m looking for in terms of sorting. And even Couchy’s sorting is sometimes not quite what I want. So I’d like to explain here instead, free from Twitter’s character limits.
What I Want
I use an app like Couchy because I’m usually in the middle of watching many different TV shows. When I have some time to watch TV, I launch Couchy to remind myself what I’m currently watching, how far behind I am, and which shows have new episodes waiting for me. This is my most important use case: choosing a show to watch.
I have so many TV shows in my trakt.tv collection that sorting is essential to helping me select a show. I don’t want to scroll through dozens of shows to make a selection. I want to look at the top one or two screenfuls of shows on my phone and be sure that I’m seeing all the shows I’m most interested in watching now.
Most simple sort orders don’t work for my purposes. For example, consider sorting by the date of the latest episode. There are many shows in my collection that I’m not actively watching. Maybe I’ll get to them in the future, but for now, the unwatched episodes are just piling up. If those shows jump to the top of the sort order every time a new episode is released, it’s just noise to me. They’re obscuring the shows I actually want to watch.
Sorting by the number of unwatched episodes has similar problems. Sorting by the date I last watched an episode of a show might seem like it’d work, but I might really want to know about a newly released episode of a show that I’m caught up on but that hasn’t released an episode in a while.
If I had an actual, concrete algorithm in mind, I wouldn’t be writing all this. I could have explained it in a tweet. But I haven’t thought it through enough to nail it down at that level. What I can do instead is describe the desirable features of such an algorithm.
If I’m not actively watching a show, it should be pushed down in the list. Deciding what “actively watching” means will surely involve some thresholds (e.g., “has watched an episode in the last N days”), and it would be nice if those were configurable.
Shows that I’m actively watching should jump to the front of the list when a new episode is released.
Shows that I really like but that are on a break (e.g., between seasons) should jump to the front of the list when a new episode or season is released. Again, determining which shows I “really like” is tricky. An easy out here is to just have me choose by marking them as favorites. A ranked list of favorites would be even better and would help with sorting decisions near the top of the list.
When sorting shows that I’m actively watching (or really like) that just had a new episode or season released, favor shows with the smallest backlog—except in cases where a whole new season just dropped for a favorite show. For example, let’s say I’m one episode behind on Homeland, two episodes behind on Fargo, and caught up on The Expanse, which is a favorite show. If Homeland and Fargo both release new episodes and The Expanse releases a whole new season, all on the same day, the sort order should be: The Expanse first (even though it has the largest backlog), Homeland second (because it has a shorter backlog than Fargo), and Fargo next.
I could go on, but I think I’m getting into the weeds. The four points above capture most of it. I’m sure other people have their own preferred sorting orders, but this one is mine. I’ve seriously considered writing a trakt.tv client app for iOS just to scratch my own itch, but I don’t think I’m ready to tackle a task that large quite yet.
In the meantime, if you’re an author of one of the many trakt.tv client apps in the App Store, please consider implementing something like what I’ve described here. I’ve probably already purchased your app, but I’ll be extremely grateful on top of that.
By the time Mac OS X was first released in 2001, I had been using what would eventually be known as “classic” Mac OS for seventeen years. These were seventeen formative years for me, from the ages of 9 to 26. The user interface of classic Mac OS was as ingrained in me as Star Wars or any other cultural institution.
My love for classic Mac OS is why I started researching and reviewing Mac OS X. Big changes were coming to the Mac, and I was going to feel them more than most. I needed to know what I was in for.
To deal with some of the changes in Mac OS X, I ran apps and system extensions that restored some behaviors from classic Mac OS. Over the years, I weaned myself off most of these, but a few stuck. In particular, I found I did not want to live without the window layering policy from classic Mac OS.
In classic, when you click on a window that belongs to an application that’s not currently active, all the windows that belong to that application come to the front. In Mac OS X (and macOS), only the window that you click comes to the front.
My particular style of window management leans heavily on the classic behavior. I also appreciate the Mac OS X behavior in certain circumstances, so I was delighted to find apps that enable both behaviors, using Shift-click to override the default.
Sadly, macOS Catalina’s lack of support for 32-bit apps finally killed the last of the apps that implemented this feature. I was alone in a cold, barren world where I had to click on a Dock icon to switch to an app and bring all its windows to the front.
I tried to get used to it, but I could not. Next, I tried to persuade a few of my developer friends to create a tiny Mac app that implements just this one feature. My friend Lee, a longtime Mac developer and user, eventually took up the challenge and created a simple app to do it.
It was missing a few features I wanted (the Shift-click override, the ability to hide the Dock icon, a menu bar icon, etc.), but Lee shared the source code with me and I dove in and tried to help. I added the Shift-click feature and a mode-switch preference. I drew an app icon and a menu bar icon. The app was just about done. It even had a name: Front and Center.
The app was written in Objective-C. I’d always wanted to do a real project in Swift, so I started a new project in Xcode and rewrote the entire (tiny) app in Swift. I’ve also always wanted to get some experience with the App Store, so Lee and I agreed that I would release it under my developer account (though we are sharing the profits).
Front and Center is a trivial app—so trivial that I was afraid it would be rejected for its limited functionality. But when running, it is used literally hundreds of times a day. And I obviously found it so essential that I was willing to help bring it into existence myself. I also wanted to get some experience with the financial side of the App Store.
All of this contributed to the decision to make Front and Center a (cheap) paid app. It’s $4.99 on the Mac App Store. I don’t expect to make any significant money from sales, but I’ve already gained a huge amount of experience just going through the process of development and distribution.
I also view the price as a kind of deterrent. The increase in downloads it would receive as a free app would just be an unwanted support burden. The (few) people who actually want this app know who they are, and I’m betting they are not just willing but happy to pay for it.
Are you a classic Mac diehard who still misses some of the old ways? Or maybe you just want to try it to see what it’s like? Even if you don’t want the classic behavior to be the default, you can switch to “modern” mode and use Shift-click to trigger the “classic” behavior. It beats mousing down to a Dock icon, right?
I’m just glad this app exists. I had a ton of fun working on it. Thanks to Lee for being a kindred spirit when it comes to classic Mac OS, and to all my other Mac-nerd friends who offered advice and code during development—especially Gus Mueller, maker of many fine Mac apps, who provided a surprising performance enhancement for our tiny app. I’m excited to finally be able to use this badge on my website.
The upcoming sequel to the 1986 classic Top Gun has reminded me of a favorite memory from my youth. When I was a kid, I spent a lot of time looking over the TV listings. Each daily newspaper had the TV listings for that day, but there was also a weekly TV guide that came with the Sunday paper. This was the one I’d pore over while eating breakfast each morning.
The weekly guide had a section where it listed all the movies that were airing on TV that week. Each movie was accompanied by a short, plain-spoken description of the plot. In addition to the star ratings (where the maximum was four stars, I believe), the descriptions also sometimes included a few words about the quality of the movie or performances. Something like this:
One day in the late ’80s or early ’90s, I recall seeing the following entry for the movie Top Gun in the weekly TV guide:
There was no description at all, just this frank assessment. After spending years of my life reading these movie summaries, it was as if the author had finally broken through and had spoken with a clear voice for one brief, shining moment. Trivializes war by turning it into a music video.
It’s now several decades later and I still remember this movie review word-for-word. I have no idea who the author was, or how many similar gems were hidden in the pages of that weekly TV guide over the years. But I credit this tiny act of defiance with inspiring me in multiple ways.
It taught me the power of well-chosen words to shake people out of their daily routines and patterns of thought. It showed me that all jobs, no matter how seemingly dull, can be an outlet for self-expression and excellence. And it reminds me, to this day, that each work of art can be—deserves to be—considered from multiple points of view, not all of which will be comfortable.
Note: This post is not a polemic against Top Gun or war movies in general. I have always loved jet fighter planes, and I enjoyed Top Gun when I saw it. This review did not make me hate it. (That said, like most older media, I suspect a modern rewatching will reveal a whole host of problems.) My memory of this capsule review is one of surprise, subversiveness, and delight. The review is a slam on Top Gun, yes, but it’s also a celebration of the indomitable human spirit. Four stars.