The Apple Watch desperately needs standalone podcast playback, especially with the LTE-equipped Series 3, which was designed specifically for exercising without an iPhone.
Believe me, I’ve tried. But limitations in watchOS 4 make it impossible to deliver standalone podcast playback with the basic functionality and quality that people expect.
Deal-breaker: Progress sync
Unlike on iOS, Watch apps aren’t allowed to play audio in the background and continue running.1
The only way to continue playback in the background on watchOS 4 is to use the WKAudioFilePlayer API. This is unsuitable for podcast players in its current state for one big reason:
It takes audio playback out-of-process, suspending the host app indefinitely during playback, and does not wake up the host app to notify it of playback progress or other relevant events like pausing, seeking, or reaching the end of an episode.
Since most podcast listeners also listen on their iPhone, the Watch needs to sync each episode’s listening progress with its iPhone app or a web service. But if you reach the end of a workout and pause playback without launching the podcast app, such as with a headphone “pause” button, turning off your headphones, removing your AirPods, or using the Now Playing app on the Watch, there’s no guarantee that the podcast app will be notified of your progress anytime soon. So when the user later goes to the iPhone app to continue playback, progress will be lost, or episodes’ state (played, deleted, recommended, etc.) will be wrong.
Minimum fix: During WKAudioFilePlayer playback, wake the host app to let it record progress periodically (ideally at least every minute) and on state-change events, such as pausing, seeking, and reaching the end of a file.
Better fix: Let apps continue running in the background indefinitely while they’re playing audio with WKAudioFilePlayer, just as workout apps can, so they can track their own state.2
To achieve the minimum experience-quality level that Apple and Overcast customers expect, watchOS and WKAudioFilePlayer also need a few more changes:
Volume control API or widget
Overcast’s top request for the Watch app by far is volume control via the Digital Crown, both for iPhone and Watch playback (when I offered it). It’s especially necessary for standalone Watch playback, as there’s very little access anywhere in watchOS to the concept of the system volume level.
Fix: An API to set the volume level, or a system UI widget for volume control like iOS’ MPVolumeView.
The lack of volume control is especially damaging with watchOS 4’s great new “Auto-launch Audio Apps” setting. If you’re playing audio from an iPhone app and have its corresponding Watch app installed, that Watch app shows by default when your Watch screen activates. If you don’t have its Watch app installed, the built-in Now Playing app shows instead.
In the last few days since watchOS 4’s launch, I’ve had dozens of users tell me that they’ve uninstalled Overcast’s Watch app just to force the Now Playing screen to auto-launch instead, just so they could have quick access to volume control.
Output-device presence, switching
WKAudioFilePlayer will not play to the Watch’s built-in speaker — it only plays to headphones connected to the Watch via Bluetooth. If playback is attempted without headphones connected, WKAudioFilePlayer just silently fails to play, without returning any errors.
Making matters worse, there appears to be no way to reliably detect the presence or absence of a suitable Bluetooth output device to avoid this.
Another common user request for Watch audio apps is an AirPlay output control. The rise of AirPods has increased this need and exacerbated the output-device-presence issue, as their multi-device sharing behavior leads to less certainty by the user about which device they’re currently connected to, and a more frequent need to manually select them on the current device.
Minimum fix: Fix the error-reporting behavior of WKAudioFilePlayer when suitable play conditions aren’t met, and provide a way to detect the presence or absence of a suitable audio-playback device so our apps can relay this information to the user.
Better fix: Also provide a standard AirPlay UI control, possibly integrated with the volume control, again like MPVolumeView on iOS.
Podcast listeners expect previous- and next-track buttons on headphones, cars, and the Now Playing app to perform 30-second seek operations instead of changing episodes completely. On iOS, MPRemoteCommandCenter lets apps respond to these commands however they want.
WKAudioFileQueuePlayer provides no such customization, ignores previous-track commands, and forces next-track commands to skip to the next audio file, losing any progress in the current one — and if there isn’t a next file in the queue, it stops playback completely. And all of this happens without waking the host app.
Minimum fix: Wake the host app whenever the current queue item changes in WKAudioFileQueuePlayer.
Better fix: Bring MPRemoteCommandCenter or an equivalent to watchOS, and if the host app adds its own command handlers, disable the built-in WKAudioFileQueuePlayer behavior for previous-/next-track commands.
Data-transfer progress, speed
While some apps may be able to perform direct downloads of podcast episodes from the internet to the Watch, many will rely on transferring audio files from the iPhone to the Watch to ensure compatible formats, consistent timestamps, small files, or audio-processing features.
Transferring a podcast file to the Watch is a long-running task, often taking at least a few minutes per episode (and sometimes much longer), but the WCSessionFileTransfer class provides no progress information. So there’s no way for apps to inform users how long the transfers may take, or if they’re currently moving at all.
Minimum fix: Add a progress API on WCSessionFileTransfer.
Better fix: Add a progress API on WCSessionFileTransfer and provide actionable information if the transfer is currently paused or waiting for something, such as having other transfers ahead of it in a queue, or needing a different power or connectivity state.3
Additionally: Wi-Fi and LTE transfers to the Watch are currently much faster than Bluetooth, often by an order of magnitude, but the Watch seems to send all WCSessionFileTransfer data over Bluetooth even when connected to a power source. File transfers should use Wi-Fi when power allows.
Nice-to-have: Streaming audio playback
One of the most compelling features of the Series 3 Watch with LTE is streaming Apple Music playback, but there’s no streaming audio-playback API available to developers on watchOS today. Every method requires locally downloaded files.
I recognize this is a big task. That’s why it’s a “nice-to-have”.
Enhancement: Bring a relevant subset of AVPlayer to watchOS, or expose streaming-audio playback via some other method.
There’s one elaborate exception that we discussed in Under The Radar #98: workout apps, which are allowed to run in the background and play audio. So this all becomes possible if you combine a standalone podcast player with a workout app, and only allow podcast playback while a workout is active that was started from that app. But this forces the combination of two completely different app types, and users would find the workout-during-playback requirement confusing, inexplicable, and limiting.
Requiring podcast apps to also be workout apps is a user- and developer-hostile hack that Apple probably doesn’t intend. ↩︎
This could also allow the use of the more capable in-process APIs such as AVAudioPlayer, which appeared to work well in watchOS 3. ↩︎
While I have you, please also add this reporting for paused or waiting background NSURLSessionDownloadTask transfers. ↩︎
I’m sorry that I missed the iOS 11 launch for my fancy drag-and-drop update. It’s coming soon, but it’s not ready yet.
In Hello Internet episode 4, CGP Grey introduced a metaphor for work-life balance as four light bulbs — work, friends, family, and health — between which one can allocate 100 watts, total. So it’s possible to shine brightly in one area at significant cost to the others, or to try to have a mediocre spread between all of them.
Usually, I prioritize family and work, in that order, and my friends are pretty tolerant of my general neglect, but health gets left as a pretty low priority.
This summer, I decided I finally needed to devote significant time to health, and since my family always comes first, that mostly came at the expense of reduced work time.1 And iOS 11 has ended up requiring more changes and fixes than I expected.
So I have a great Overcast update for iOS 11 and iPhone X in progress, but it’s not done yet. I appreciate your patience, and I hope you’ll find it worth the wait.
I’m fine. I just finally realized that the correct amount of exercise for a 35-year-old was probably not zero. ↩︎
Many Apple fans were amused when Phil Schiller explained the removal of the headphone jack on last year’s iPhone as “courage”. But that was nothing compared to what happened last week.
For ten years, the iPhone looked like this:
A rounded rectangle, bars on top and bottom, and a circle centered in the bottom bar. If you want to get fancy, put a line in the top bar, too.
It’s so simple that even when children draw it, it’s instantly recognizable as an iPhone to most of the world’s population. Not just any phone — an iPhone, specifically.
As an app developer and fan, I was hoping that the long-rumored edge-to-edge iPhone screen would still be a rectangle, possibly even with room for a Home button on a narrower bezel, so I wouldn’t have to change my habits (or my app’s layout):
But that’s the unmistakable image of an Android phone. (Or a generic smartphone — same thing.)
Apple would’ve lost what the iPhone has had since its introduction: a unique, recognizable shape that distinguishes itself from all of the other boring rectangles out there.
Many are now speculating that Apple will find a way to get rid of the iPhone X’s top “notch” (officially called the “sensor housing”) as soon as they can, and that this is a temporary design meant only for a few years. But I don’t think so.
Many app developers are planning to hide the notch in the UI with black bars. But Apple explicitly says not to.
This is the new shape of the iPhone. As long as the notch is clearly present and of approximately these proportions, it’s unique, simple, and recognizable.
It’s probably not going to significantly change for a long time, and Apple needs to make sure that the entire world recognizes it as well as we could recognize previous iPhones.
That’s why Apple has made no effort to hide the notch in software, and why app developers are being told to embrace it in our designs.
That’s why the HomePod software leak depicted the iPhone X like this: it’s the new basic, recognizable form of the iPhone.
Apple just completely changed the fundamental shape of the most important, most successful, and most recognizable tech product that the world has ever seen.
I’ve spent many months of development on Overcast’s Apple Watch app, especially implementing standalone “Send to Watch” playback. Unfortunately, I now need to remove the “Send to Watch” feature.
I’m sorry to the people who used it. While there weren’t many of you (about 0.1% of active users), I’ve heard from some who it meant quite a bit to.
In retrospect, “Send to Watch” wasn’t good enough to ship. I’ve paid for that in a constant stream of negative App Store reviews that have reduced the entire app’s average, but that alone wouldn’t sink the feature. Here’s what happened.
Many people had been asking for standalone playback since the first Apple Watch was released. I spent months of development on it last winter, but I simply wasn’t able to get a minimum acceptable quality level out of the limited watchOS audio APIs.
I shelved the feature until other Apple Watch podcast apps revealed a workaround that made background audio much more usable on watchOS, so I decided to use the same technique and ship the feature anyway, despite its other shortcomings. That was a mistake.
That workaround doesn’t work anymore in watchOS 4. Rewriting “Send to Watch” playback to use the only supported alternative would likely take at least another month of development and testing that I currently can’t spare, and due to its limitations, the resulting usability and experience wouldn’t be good enough for me to confidently ship.1
Therefore, I’ve decided to remove “Send to Watch” in the latest update today, a bit ahead of watchOS 4’s expected release, before anyone else gets accustomed to it.
I intend to continue supporting and updating the Watch app as a convenient, lightweight, fast remote control for iPhone playback. But it’s not possible to ship a good standalone podcast player on watchOS today, and it’ll probably take a few more years of hardware and software evolution before that changes.
There isn’t much time left before iOS 11’s release, and I need to spend the rest of the summer working on highly requested features and updates in the main app.
I’m sorry again for the loss of this feature to the people who used it. If it becomes possible in the future to do it right, I’ll do my best to bring it back.
watchOS normally doesn’t let apps run continuously in the background, even if they’re playing audio, unlike iOS. The WKAudioFilePlayer API lets your app hand off a file or playlist to the system for playback, and then try to figure out what happened with it next time your app launches (to know whether the user listened to a certain time, reached the end, skipped to the next episode, etc.). Unfortunately, it has major shortcomings, bugs, and non-ideal behaviors for making a usable podcast app.
The loophole was to declare the app as a workout-monitoring app, which let it run continuously in the background on watchOS 3 if a workout was active — or, for some reason, if it was playing audio. This let me use the much better AVAudioPlayer to build a usable podcast player on the Watch.
In watchOS 4, that loophole no longer enables background audio playback, so any audio APIs other than WKAudioFilePlayer pause as soon as the foreground app changes or the Watch display sleeps. ↩︎
If you readthenews, you may think the MP3 file format was recently officially “killed” somehow, and any remaining MP3 holdouts should all move to AAC now. These are all simple rewrites of
Fraunhofer IIS’ announcement that they’re terminating the MP3 patent-licensing program.
If the longest-running patent mentioned in the aforementioned references is taken as a measure, then the MP3 technology became patent-free in the United States on 16 April 2017 when U.S. Patent 6,009,399, held by and administered by Technicolor, expired.
MP3 is no less alive now than it was last month or will be next year — the last known MP3 patents have simply expired.
So while there’s a debate to be had — in a moment — about whether MP3 should still be used today, Fraunhofer’s announcement has nothing to do with that, and is simply the ending of its patent-licensing program (because the patents have all expired) and a suggestion that we move to a newer, still-patented format.
Why still use MP3 when newer, better formats exist?
MP3 is very old, but it’s the same age as JPEG, which has also long since been surpassed in quality by newerformats. JPEG is still ubiquitous not because Engadget forgot to declare its death, but because it’s good enough and supported everywhere, making it the most pragmatic choice most of the time.1
AAC and other newer audio codecs can produce better quality than MP3, but the difference is only significant at low bitrates. At about 128 kbps or greater, the differences between MP3 and other codecs are very unlikely to be noticed, so it isn’t meaningfully better for personal music collections. For new music, get AAC if you want, but it’s not worth spending any time replacing MP3s you already have.
AAC makes a lot of sense for low- and medium-quality applications where bandwidth is extremely limited or expensive, like phone calls and music-streaming services, or as sound for video, for which it’s the most widely supported format.
It may seem to make sense for podcasts, but it doesn’t. Podcasters need to distribute a single file type that’s playable on the most players and devices possible, and though AAC is widely supported today, it’s still not as widely supported as MP3. So podcasters overwhelmingly choose MP3: among the 50 million podcast episodes in Overcast’s database, 92% are MP3, and within the most popular 500 podcasts, 99% are MP3.
And AAC is also still patent-encumbered, which prevents innovation, hinders support, restricts potential uses, and imposes burdensome taxes on anything that goes near it.
So while AAC does offer some benefits, it also brings additional downsides and costs, and the benefits aren’t necessary or noticeable in some major common uses. Even the file-size argument for lower bitrates is less important than ever in a world of ever-increasing bandwidth and ever-higher relative uses of it.2
Ogg Vorbis and Opus offer similar quality advantages as AAC with (probably) no patent issues, which was necessary to provide audio options to free, open-source software and other contexts that aren’t compatible with patent licensing. But they’re not widely supported, limiting their useful applications.
Until a few weeks ago, there had never been an audio format that was small enough to be practical, widely supported by hardware and software, and unrestricted by patents, forcing difficult choices and needless friction upon the computing world. Now, at least for audio, that friction has officially ended. There’s finally a great choice without asterisks.
MP3 is supported by everything, everywhere, and is now patent-free. There has never been another audio format as widely supported as MP3, it’s good enough for almost anything, and now, over twenty years since it took the world by storm, it’s finally free.
For photos and other image types poorly suited to PNG, of course. ↩︎
Suppose a podcast debates switching from 64 kbps MP3 to 48 kbps AAC. That would only save about 7 MB per hour of content, which isn’t a meaningful amount of data for most people anymore (especially for podcasts, which are typically background-downloaded on Wi-Fi). Read the Engadget and Gizmodo articles, at 3.6 and 5.2 MB, respectively, and you’ve already spent more than that difference. Watch a 5-minute YouTube video at default quality, and you’ll blow through about three times as much. ↩︎
Much of modern Apple’s design philosophy is to relentlessly strip down most products to the bare minimum in certain areas as technological progress allows, following (and largely defining) the modern design fashion of nearly-unquestioned devotion to minimalism.
Saying “no” is the easiest path to what’s considered good design today: if something cannot be easily accommodated, or most people won’t complain too badly in its absence, just omit it.1
While minimalism is one aspect of one view of good design, it’s often overused, underconsidered, and misunderstood, resulting in products with surface-level appeal that don’t actually work very well because they were optimized for visual design and minimalism rather than overall real-world usefulness.2
As with every design decision, removals and omissions have major trade-offs that need to be very carefully considered. Today’s design culture of “no” often goes unquestioned or is assumed to be the best outcome, but minimalism should not be axiomatic in all areas. Often, less is more. But sometimes, it’s just less.
* * *
A lot went wrong with the 2013 Mac Pro. Some of the leading factors that led to its failure:
It was more expensive than its predecessor, while also removing major features that many of its customers still needed. (The 2016 MacBook Pro has the same problem.)
It was designed to accommodate exactly two GPUs with relatively low heat output each, but CPU-heavy users didn’t need the second GPU, and GPU-heavy users needed hotter-running GPUs (and often just one really hot one).3 So the only configuration it was offered in was either overspecced (and overpriced) or underpowered for most Mac Pro customers.
Less than a year after its release, it missed the desktop Retina revolution started by the 5K iMac, and it was beaten handily in single-threaded performance by a CPU generation that Apple never updated it to use.
The last factor was poor timing that could’ve been fixed with regular updates, but the first two are simply major design flaws by making the wrong choices for this product.
I understand why Apple went down that path, and it’s all in the context that led to my favorite line ever spoken in an Apple keynote, right after the unveiling of this Mac Pro during the 2013 WWDC keynote:
“Can’t innovate anymore, my ass!” —Phil Schiller
Back then, Jobs hadn’t been gone for long, Cook had a lot to prove, and the overwhelming press and analyst narrative had been that Apple couldn’t innovate anymore and Samsung was the king of innovation, whatever that meant. (It turned out to just mean big phones.)
This clearly bothered Apple, and it almost certainly influenced their overly aggressive decisions with the design of the 2013 Mac Pro.
But the Mac Pro is the worst place in the entire Apple product lineup to drastically remove capabilities and versatility (and then to not update it for over four years).4
Overly aggressive minimalism fails most spectacularly when there’s no clear consensus among customers on what can be removed. And if you ask Mac Pro customers what they need and want, there’s very little overlap:
Video creators need as many CPU cores as possible, one or two very fast GPUs with support for cutting-edge video output resolutions (like 8K today), PCIe capture, massive amounts of storage, and the most external peripheral bandwidth possible.
Audio creators need fast single-core CPU performance, low-latency PCIe/Thunderbolt interfaces, rock-solid USB buses, ECC RAM for stability, and reliable silence regardless of load. (Many also use the optical audio inputs and outputs, and would appreciate the return of the line-in jack.)
Photographers need tons of CPU cores, tons of storage, a lot of RAM, and the biggest and best single displays.
Software developers, which Federighi called out in the briefing this month as possibly the largest part of Apple’s “pro” audience, need tons of CPU cores, the fastest storage possible, tons of RAM, tons of USB ports, and multiple big displays, but hardly any GPU power — unless they’re developing games or VR, in which case, they need the most GPU power possible.
Mac gamers need a high-speed/low-core-count CPU, the best single gaming GPU possible, and VR hardware support.
Budget-conscious PC builders need as many PC-standard components and interfaces as possible to maximize potential for upgrades, repairs, and expansion down the road.
The requirements are all over the map, but most pro users seem to agree on the core principles of an ideal Mac Pro, none of which include size or minimalism:
More internal capacity is better.
Each component should have a reasonably priced base option, but offer the ability to configure up to the best technology on the market.
It needs to accommodate a wide variety of needs, some of which Apple won’t offer, and some of which may require future upgrades.
Or, to distill the requirements down to a single word:
Just as macOS’ versatility allows iOS to remain lightweight, the ability of the rest of the Mac lineup to be more aggressive, minimalist, and forward-looking depends on the Mac Pro to cover everyone whose needs don’t fit into them.5 The Mac Pro must be the catch-all at the high end: anytime someone says the iMac or MacBook Pro isn’t something enough for them, the solution should be the Mac Pro.
Try to narrow the Mac Pro’s focus any further than a big, versatile, modular box, and it stops serving the needs of big slices of its market, forcing valuable and influential pro users to either sacrifice major areas of their needs or leave the Mac platform entirely. That’s why so many previous-generation Mac Pro towers are still in use today (and highly demanded on eBay), which all have components that are at least seven years old: Apple hasn’t made a Mac Pro since then that has addressed their owners’ needs.
The more needs you try to accommodate, the more you arrive at capabilities similar to the previous Mac Pro tower, just modernized to new components and redesigned to remove outdated options like optical-drive bays, that’s easy for Apple to update every 1–2 years as new components become available.
The 2013 Mac Pro went in completely the wrong direction: satisfying only a narrow subset of pro users, with such tight tolerances that it couldn’t be updated.
There is no single design, no single set of trade-offs, that addresses a large set of pro users: they all want different things, and the only way to serve that with one product line is to have it be extremely versatile and offer a wide variety of configuration options. You can’t do that with a minimalist industrial-design indulgence like the 2013 Mac Pro.
I hope the Apple of 2017 (and beyond) has learned this, and is confident enough in its own abilities and innovation to stare down a minimalist design culture of “no” and ship a maximum viable product at the top of its lineup that says “yes” to everything we can throw at it.
Like open-plan offices, minimalism is also usually cheaper, making it an easy sell to the finance people. And like open-plan offices, its profitability contributes to its ubiquity, making it seem like a better or more universally applicable idea than it really is. ↩︎
I’m trying to make it through this entire post without any Steve Jobs quotes. It’s not easy. ↩︎
I’m not well-versed in the specifics of this, but I believe they also lost the huge bet they placed on AMD GPUs and OpenCL. High-end GPU computing has largely gone to NVIDIA and CUDA, and Apple seems reluctant to offer NVIDIA GPUs in their products for unknown reasons (likely cost and old beefs, which I suggest they find a way to get past). ↩︎
It hasn’t been four years yet, but by the time the next Mac Pro ships, it’ll likely be about 4.5. ↩︎
I suspect that reactions to the 2016 MacBook Pro would’ve been significantly more favorable if more pros were accustomed to the Mac Pro addressing their needs. Instead, the message from Apple last fall was clearly, “Wedge all of your high-end needs into these laptops because the desktop is dead,” putting a significantly higher burden on them that they couldn’t meet. ↩︎
Overcast 3 is now available, and it’s a huge update, mostly in the design and flow of the interface. I’ve been working on it since last summer, informed by over two years of testing, usage, and customer feedback.
I designed Overcast 1.0 in 2014 for iOS 7, and it was a product of its time: it used ultra-thin text and lines against stark, sharp-edged, full-screen white sheets and translucent blur panes, with much of the basic functionality behind hidden gestures. That fundamental design carried through every update until today.
My design goals for 3.0 were:
Update the style from iOS 7 to today: More affordances, more curves, thicker fonts, less translucency, more tactility. App-design fashion doesn’t stand still, and many iOS 7-era designs now look dated.
Bring all functionality into the open: Add visible controls and affordances to anything that was previously hard to find or behind a hidden gesture, such as table-cell swipe actions and actions that first require tapping corner “Edit” buttons.
You wouldn’t believe how many customers have asked me to add features that were already there, or couldn’t find basic functions like deleting episodes, because they weren’t apparent enough in the design.
Adapt to larger phones: Enlarge touch targets and make one-handed use faster and easier, even when only part of the screen is within easy reach. I also wanted to reduce the potential for (and effects of) mis-tapping, especially around the lower left and right screen edges, which I believe will become increasingly important as future iPhones presumably get thinner side bezels.
Overcast 1.0 was designed for the iPhone 5S. Some fundamentals needed to be revisited now that the vast majority of my customers are on 4.7- and 5.5-inch screens.
Now Playing screen, card metaphor
I began by revamping the fundamental structure between the rest of the app and the Now Playing screen with a new card metaphor, which slides up from the bottom instead of pushing in from the right:
Most popular music and podcast apps have adopted slide-up methods for their Now Playing screens (including the iOS 10 Music app), so this matches what people are already accustomed to elsewhere.
It can be smoothly pulled up from the miniplayer (or just tap it), and can be smoothly dismissed by swiping down anywhere on the Now Playing screen (or tapping the “down” chevron).1
This card metaphor is carried throughout all other modal screens in the app, and they all work the same way, speeding up common tasks and greatly enhancing one-handed use.
I also redesigned the Now Playing screen itself. The old one revealed episode notes in a hidden scroll zone — you’d need to swipe up on the artwork to reveal them, which relatively few people ever discovered.
The new Now Playing screen can be swiped horizontally to reveal effects on the left or episode notes on the right, and — critically — this is indicated by a standard “page dots” indicator below the artwork.2
The Effects and Playback popovers have been consolidated into a single effects pane:3
Along with a tightening of the seek-back/forward tap zones, this moved critical controls away from the lower-left and lower-right screen edges, which are often mis-tapped when handling large phones.
Playlists, episode info, and podcast screens
Playlists have been manually reorderable since 1.0, but many iOS users never tap “Edit” buttons in navigation bars, so many people never even knew they could do it. Even for those who knew they could reorder episodes, the two-step process was cumbersome.
The new playlist screen has full-time reordering handles for faster access and better discoverability:
The old popover lacked contrast from its surroundings, had limited space, and required carefully tapping outside its bounds to dismiss, which was often clumsy when one-handed.
The new episode-info card behaves like all other Overcast 3 cards: slides up quickly, then easily dismissed by swiping down anywhere (or inward from the left edge). It can also be previewed with 3D Touch and swiped up for quick actions.
Playing, deleting, queueing
Previously, tapping an episode in the list would immediately begin playback. This is nice when you want it, but accidental input was always an issue: I found it too easy to accidentally begin playing something that I was trying to rearrange, delete, or see info about.
A lot of people also never swipe table cells (or tap Edit buttons), therefore never finding the Delete button. I’ve gotten literally hundreds of emails since Overcast 1.0’s launch asking how to delete episodes without playing them.
To address these, I’ve switched to a two-stage method: tap an episode to select it, which shows various action buttons, and tap the newly revealed Play button to play it.
I expect this to be the most controversial change in Overcast 3, as it does slow down playback, but I’ve found that it works far better and more consistently, most people accustomed to the old way get used to it in a couple of days, and it makes the app far more reliable and discoverable for everyone.
It also gave me a place to put a new button: Queue.
Some kind of “Up Next”-style fast queue management has been one of Overcast’s most-requested features since day one. It took me a long time to come around to the idea because I thought my playlists served the same role. And they mostly did, but they needed two big changes:
Easy access from around the interface to quickly add episodes to the queue.
Overcast 3’s new option for manual playlists, instead of just “smart” playlists, matching iTunes’ definitions: manual playlists only ever contain things you add explicitly to them, while “smart” playlists (previously the only kind in Overcast) are a set of rules that automatically include or exclude episodes. Many people want their queue/up-next to be a manual playlist.
The new queue features are simply Overcast playlists with special placement in the interface. If you already have a playlist named “Queue” or the default “All Episodes”, that’s used, and if not, it’s created as necessary. These show up everywhere and have full functionality just like every other playlist.
The podcast screen always had a huge design flaw. Quick: in the old screen, how do you reverse the sort order of the episodes so it plays oldest to newest?
There’s no standard for this on iOS, so I copied the desktop/web standard of a triangle indicator on the header that can be tapped to reverse the direction. Nobody ever found this, so I’ve added a clearly labeled option under each podcast’s Settings as well.
The old podcast-directory screen was filled with annoyances: podcasts you’d already subscribed to would be dimmed out and show an annoying alert if tapped, you could only add one podcast at a time, etc.
Now, everything’s visible from everywhere, the same actions show up wherever an episode is listed, and you can add multiple podcasts without having to go back into the directory for each one. (Finally.) And, of course, it’s a card, so it’s easy to dismiss by just dragging down.
Some other new stuff:
An all-new, much faster Watch app, finally natively running on watchOS 3! (The old one was watchOS 1. Really.)
And even some Swift! (This is why the app has grown from 7 MB to about 30 MB: since Swift is still young, all Swift apps still come with their own custom copy of the Swift libraries.)
Much nicer ads
When my patronage-only model effectively failed and I added Google ads last September, I had to swallow two bitter pills:
Bad ads: I had little control over the advertisers or the ad content, which could be offensive or reflect badly on my app without my knowledge. I thought I could set adequate limits, but in practice, it wasn’t good enough.
Google provides an extensive control panel that lets you block certain ad categories. Most are clearly placed in Sensitive Categories and were easily disabled before launch, like gambling, drugs, etc., but I kept hearing from customers who’d seen other ads that offended both of us. For instance, at least one listener was shown an ad for a gun, which I never even considered would be allowed with all of the “sensitive” categories turned off. But Guns & Firearms isn’t in Sensitive Categories next to drugs and gambling — it’s in Business & Industrial > Security Equipment & Services.
So I kept blocking more categories, but it was never enough to result in ads that were consistently acceptable to me.
Other ad networks exist, but they tend to be even worse, or they don’t make enough money, or both.
Mystery code in my app: I had to embed the closed-source Google ad library into my app, and accept all of its uncomfortable requirements (Advertising Identifier, permission dialogs to use things like Bluetooth or Contacts if an advertiser wanted it, etc.).
This made me a little uneasy in September, but then November happened, and by late January, I wasn’t comfortable embedding unnecessary closed-source code from a U.S advertising company in my app anymore.
I decided to do whatever it took to drop the Google ads and Fabric crash reports and analytics, which was recently acquired by Google.
No closed-source code will be embedded in Overcast anymore,4 and I won’t use any more third-party analytics services. I’m fairly confident that Apple has my back if a government pressures them to violate their customers’ rights and privacy, but it’s wise to minimize the number of companies that I’m making that assumption about.
Fortunately, the Google ads made relatively little — about 90% of Overcast’s revenue still comes from paid subscriptions, which are doing better now. The presence of ads for non-subscribers is currently more important than the ads themselves, so I can replace them with pretty much anything. So I rolled my own tasteful in-house ads with class-leading privacy, which show in the Now Playing and Add Podcast screens:
Now Playing can show ads for websites, podcasts, apps, or Overcast Premium, while the Add Podcast screen will only ever show ads for podcasts. (Want to buy an ad? Get in touch.)
That’s right, ads for podcasts. What better place to advertise a podcast successfully than in a podcast player? Tap one, and you get the standard Overcast subscription screen with a complete episode list and one-touch subscribing.
I hope I’ve succeeded in my design goals, and I hope you enjoy it.
Don’t worry, edge-swipers: you can also dismiss it by dragging in from the left screen edge, just like the old way, to fit your established muscle memory. ↩︎
Well, almost standard. I made my own so I could improve some of the built-in one’s behaviors and make my own custom little dot icons for Effects and Info. ↩︎
The continuous-play option previously in Playback, labeled “When Episode Ends: Play Next/Stop”, was frequently missed, misunderstood, or invoked accidentally. Many people have asked where the continuous-play option was, and many more asked why their app was suddenly broken and wouldn’t automatically advance between episodes. It’s now just a “Continuous Play” switch in Settings. ↩︎
Unfortunately, this precludes Chromecast support. I’d gladly reconsider if Google documents a way for apps to send audio to Chromecast devices without embedding their closed-source library. ↩︎
One of the issues of yesterday’s GitLab.com “database incident” is that most of their database backups weren’t being tested, and when they needed a restore, they discovered that most of the backup methods hadn’t been working.
Untested backup methods that turn out to be missing or broken are extremely common. I can’t fault them much because it’s a very easy mistake to make: most backups, by nature, never need to be restored from, so you never realize if something changes and they stop working… until it’s too late.
The solution is to frequently and automatically test backups by:
Regularly downloading the latest backup from S3 (or wherever) and performing a full restore onto a clean server.
Testing its validity in a way that a human is sure to notice if it stops working properly.
The first part sounds hard, but isn’t. For Overcast, I run an inexpensive Linode server devoted to automatically fetching, installing, and testing the latest backup every day and emailing me a report.1
The emailed report contains query results from multiple database tables that change regularly and are easy for me to mentally verify as I read it every day, such as the number of users and Premium subscribers, how long ago the latest user signed up, and the most recent episode titles of my own podcasts and other popular shows I listen to.
Automated backup testing isn’t difficult — it’s one simple shell script, called by cron every night, piping its results to mail. If you can run a server, you can do this.
The second part is the trick, though: it’d be too easy to start paying less attention to those daily emails over time, and if they stopped arriving, I may not notice for a while.
My solution is to tie backup tests to a task I do every week: stats collection.
I keep a running spreadsheet with pretty graphs to monitor the health and growth of my business, I update it once a week, and — critically — I pull almost all of the stats I need from the backup emails.
So if the backup ever stops working in a way that the script doesn’t detect or I fail to notice from the daily reports, I’ll still find out pretty quickly, because it’ll impact this other thing I always do that’s a high priority for me and involves important business and money things.
If the script detects any failures itself, it emails me with a very alarming subject line that a Mail.app rule highlights in red and shows an alert for. ↩︎
The quarterly results are in and Apple’s doing fine overall, but the iPad really isn’t, with another year-over-year decrease in sales.
Apple and commentators can keep saying the iPad is “the future of computing,” and it might still be. But we’re starting its seventh year in a few months, and sales peaked three years ago.
What if the iPad isn’t the future of computing?
What if, like so much in technology, it’s mostly just additive, rather than largely replacing PCs and Macs, and furthermore had a cooling-fad effect as initial enthusiasm wore off and customers came to this conclusion?
The moving-average unit sales graph would look something like this, right?
We appreciate the opportunity to work with Consumer Reports over the holidays to understand their battery test results. We learned that when testing battery life on Mac notebooks, Consumer Reports uses a hidden Safari setting for developing web sites which turns off the browser cache. This is not a setting used by customers and does not reflect real-world usage. Their use of this developer setting also triggered an obscure and intermittent bug reloading icons which created inconsistent results in their lab. After we asked Consumer Reports to run the same test using normal user settings, they told us their MacBook Pro systems consistently delivered the expected battery life. We have also fixed the bug uncovered in this test. This is the best pro notebook we’ve ever made, we respect Consumer Reports and we’re glad they decided to revisit their findings on the MacBook Pro.
Apple’s tone and framing here, and in most recent PR statements where they’re on the defensive, rubs me the wrong way.
Consumer Reports has a spotty history with calling Apple out on product flaws. They’re usually written overly sensationally, and they often overstate the importance of minor issues.
But almost every time, the problem they’re reporting is real — especially in retrospect, after everyone’s defensiveness has passed and we’ve lived with the products for a while. It’s just debatable how big of a deal it is in practice.
The iPhone 4 antenna design really was flawed. The iPad 3 really did get uncomfortably warm. And the 2016 MacBook Pro really did have poor, inconsistent battery life in their test.
Apple’s framing here is almost Trumpian, evading responsibility for the real problem — Apple’s bug — by attempting to insult the test (“does not reflect real-world usage”), discredit and imply malice by Consumer Reports (“a hidden setting”), and disregard the bug as irrelevant (“obscure and intermittent bug”).
It reframes the story to be about Consumer Reports’ own failings and Apple helping them see the right way forward.
But disabling the browser cache during a battery test to make results more consistent is reasonable, Apple’s browser offers that feature, and it’s neither very well hidden nor unused by any customers.1
Nothing about a battery-life test truly reflects “real-world usage.” Battery tests are approximations, designed to mimic the most common tasks but in an artificial, automated, repetitive way for hours on end to get reproducible results.
Real-world usage is so varied, with such wildly different software and usage patterns, that nobody’s battery test is relevant to much of anything except relative comparisons of its own results. A test that lasts 5 hours on a 13-inch and 6 hours on a 15-inch tells you that the 15-inch probably has better battery life than the 13-inch, but that’s about it — it certainly doesn’t mean that your 15-inch will get 6 hours the way you use it.
Reloading web pages without a browser cache is no more or less valid than whatever Apple uses to tell me that my laptop will get 10 hours of battery life when my actual workload usually gets about half of that.
The real story here is that Consumer Reports did get very poor and inconsistent results from their battery test, which was a reasonable and valid test, due to a real bug in Apple’s web browser.
With the bug now fixed (in beta, at least), the MacBook Pros deserve a retest, and Consumer Reports is conducting one.
But their previous results were real, and Apple’s bug was to blame.
There are a lot of web developers out there, and I bet a lot of them use MacBook Pros. Power users, geeks, and developers are Apple’s customers, too. ↩︎
It was a cold Tuesday afternoon in New York. My hair was still brown. We were supposed to be working, but even David had to suspend his usual workaholism for a few minutes in awe of what we were seeing.
Everything about the iPhone seemed impossible to the technology world of early 2007.
“You can’t make a good phone without buttons.” “You can’t fit a desktop-class OS on a phone.” “There’s no way that’s a full-blown web browser.” “That has to cost a thousand dollars.”
Yet over the course of an hour, Steve destroyed every rule we thought we knew.
Not only was it truly mind-blowing at the time, but in retrospect, so much of modern computing was invented for the first iPhone and revealed to the world in that hour. Just watch the software demos: most modern UI mechanics and behaviors, large and small, began that day.
When it shipped six months later, it was possibly the best 1.0 in tech history, followed by a decade of relentless hardware and software improvements with the highest success rate and fastest advancement of any product line I’ve ever seen.
I’ve seen a lot of major product launches and technology changes in my life and career so far, but nothing else I’ve seen has ever come close to the surprise, magic, and magnitude of the first iPhone, and I don’t expect it to be surpassed in my lifetime.
This was before Apple events were streamed, so “watching it live” really meant watching liveblog transcripts with occasional photos from people who were there. ↩︎
Hiya creepily requires access to all of my contacts, which I think they transmit to their servers for vaguely specified reasons.
Truecaller creepily requires my name, phone number, and email address to add to their directory, which I think might allow people to find my phone number under vaguely specified conditions.
Nomorobo isn’t creepy about anything, but costs $2/month with an in-app-purchase subscription.
I had Hiya installed for weeks and it never identified a single spam call, during which time I got about ten. I followed all of their voodoo troubleshooting steps, but it just never worked, so I deleted it. (Too bad I can’t un-send them my contacts. Thanks a lot.)
I had Truecaller installed for a few days, and it correctly identified two spam calls with no drama or voodoo required. It just works.
When I learned about Nomorobo from readers and saw how creepy it wasn’t, I deleted Truecaller immediately and subscribed to Nomorobo, and it works great.
A few days ago, after a 100% success rate for a couple of weeks — every spam call (and zero non-spam calls) identified before I answer — I enabled the option to send spam calls directly to voicemail.
Now, from my point of view, I just don’t get spam calls anymore.
We’ve lost something big. We’re all complicit, myself very much included.
We’ve all been pouring a lot more of our writing and attention into Twitter and Facebook than the rest of the web, and the diversity and decentralization of the web has suffered greatly. Far too much power now rests in far too few hands, and we’re starting to suffer tremendous consequences. (Bigly. A disaster.)1
Apathy and inaction lead to further entrenchment and concentration of power. It’s only going to get worse unless we take action.
My 15-inch 2016 MacBook Pro with Touch Bar is pretty good in most ways, but it’s a noticeable regression in battery life from the previous generation. Apple claims it lasts 10 hours, but I’ve never gotten that — in a fairly light web-productivity workload, I average around 5–7 hours, and if I’m using Xcode, I’m lucky to get 4–5 hours. This seems common — many other customers and reviewers have noted similarly disappointing battery life in the 5-hour range.
Apple issued a software update today to address this.
You see, the problem wasn’t that Apple’s brand new, flagship, “pro” laptop’s battery only lasts 5 hours for a lot of its customers’ actual usage. The real problem, according to Apple in a statement to Jim Dalrymple, is the estimated “time remaining” display:
You can still see the image on the top of the screen, and you can see the percentage, but you will no longer be able to see how much time is remaining before your battery dies.
The reason for removing it is very simple: it wasn’t accurate.
Apple said the percentage is accurate, but because of the dynamic ways we use the computer, the time remaining indicator couldn’t accurately keep up with what users were doing. Everything we do on the MacBook affects battery life in different ways and not having an accurate indicator is confusing.
Well, I’ve always found the time-remaining indicator pretty accurate. Just last night, I brought my 100%-charged laptop to the couch to order some nuts and browse the web for a while, and it reported about 5 hours remaining. After just over an hour, the battery was down to 77%, and it estimated that I had about 4 hours remaining.
I found it equally helpful when using Xcode normally at the start of a 5-hour flight, as it told me that I had about 4 hours of battery left. I ran it down to 8% before stopping — with about 30 minutes left in the flight — and it remained accurate the whole time.
Having used Apple laptops for over a decade, I’ve always found the time-remaining estimate to also be a good indicator of how much power I’m burning with my current activities so I can “budget” my battery usage when I’m going to need it.
At the start of a long flight, for instance, I can check the time estimate, and if it only says I have 2 hours left at 90%, I know something’s burning a ton of power and I can go do something about that. A percentage only tells you the current state, not the rate of change — it would take much longer to notice an unexpected power drain from the percentage alone. (Fortunately, I can still check the estimated time remaining with iStat Menus.)
Apparently, that’s all wrong, and my laptop really would’ve lasted for that full flight had I just let it discharge past 8%.
The strongest despair I’ve heard about this election has come from high school and college students. I don’t know if this will really help anyone, and I hope it’s not patronizing. But just in case it helps:
George W. Bush was elected during my freshman year of college. For the next 8 years — all of college, my first job, and the first two years of Tumblr — we suffered through that horrific administration. It was half of my adult life so far.
It felt hopeless. It felt like we’d never have a functional government again. It felt like the damage would be irreparable. It felt like the good side lost and would never win again.
But then, in 2008, the good side won, propelled into victory by Americans’ motivation after those regressive and destructive years, and we had our turn for 8 years. It wasn’t perfect, and Obama didn’t (and couldn’t) fix everything Bush broke. But we did fix most of it, and made a lot of progress in major new areas as well. Overall, we came out way ahead.
And we’ll do it again, because when you average it out over time, progress tends to only go in one direction: people being healthier, better educated, and better to each other. We have ups and downs, and we don’t end every year better than the last, but in the long run, we come out ahead.
Most people in the world are good, and want to be good to each other. Whether they vote that way or not, far more Americans believe in progressive, liberal, inclusive views than regressive, aggressive, conservative ones.
Young people know this better than anyone, because young people are overwhelmingly liberal, even more than older people. That’s not because you’re inexperienced — it’s because you’re right. Your generation is, by definition, further ahead on the march of progress than everyone else. It is literally you who cause the progress as older people die and you rise into power.
This is going to be difficult for everyone — some much more than others. It may seem like it’ll last forever, especially if you weren’t an adult during the Bush years.
But it won’t.
In the meantime, do everything you can to help, support, and stand up for the millions of people whose country just let them down, many of whom live in homes and communities that have just become unwelcoming or unsafe.
We’ll get our chance to repair the damage and move forward again, and you’ll bring us there.
It’s looking increasingly likely that there will never be another Mac Pro. Here’s why that would be a shame.
Pro buyers depend on Apple to make the hardware that satisfies our needs. And we’re flexible. We’ve adapted over the years to new CPU architectures, port changes, capability changes, price increases, and a slower update pace.
The 5K iMac is a truly great computer. It’s the best general-purpose desktop Apple has ever made. It almost replaces the need for the Mac Pro. Many of us can get by with the 5K iMac.
But there are some things that only a Mac Pro can deliver.
More than 4 cores. Per-core performance has been eking out diminishing returns for years, so today’s newest processors aren’t much faster than those from a few years ago. If you need more performance for parallel workloads — very common for video, photography, 3D, science, medicine, and software development — the only way to jump meaningfully ahead of mainstream CPUs is to add more cores.
Today’s Mac Pro-class Xeon CPUs easily pack 8 cores at pro-accessible prices, 10 or 16 for a bit more, and scale all the way up to 22 cores.1 It may take a decade for an iMac to match the speed of today’s 16-core Xeons.2
High-end GPU power. Only the Mac Pro has the space, budget, heat capacity, and PCIe bandwidth to offer high-performance desktop- and professional-grade GPUs. If gamers, game makers, visual effects workers, and OpenCL aren’t enough, the rapidly-emerging VR and AR markets should be — they’re the next wave of high-end pro buyers who need the fastest hardware money can buy, and Apple has nothing to offer them.
The most RAM. The brand-new MacBook Pro maxes out at 16 GB and the iMac maxes out at 32 GB from Apple or 64 GB with aftermarket RAM. The three-year-old Mac Pro can go to 64 GB from Apple, 128 GB aftermarket. Some pro workloads simply need more RAM than the consumer and mobile chips support.
The freedom of thickness and AC power. High-core-count CPUs and powerful GPUs need far more wattage and thermal management than the other Macs will ever have the thickness or battery capacity to accommodate. The Mac Pro doesn’t need to be small, thin, lightweight, or power-constrained — the rest of the lineup fills those roles well, freeing the Mac Pro to be as big as it needs to be.
Silence. Unlike every other Mac except the low-performance 12-inch MacBook, the Mac Pro remains inaudible in most rooms even under sustained heavy workloads — you don’t hear the fan spin up — because its size and clever thermal design allows for a massive heatsink, cooled by a huge, slow fan.
This isn’t only important for pro environments such as recording studios and video sets, but it’s nice for all of its users (and their officemates). The Mac Pro is the only Mac that handles heavy workloads gracefully.
Reliability and longevity. The Mac Pro’s workstation chipsets, Xeon CPUs, and ECC RAM are all designed with more strict tolerances, resilience, and error correction than the mainstream components in every other Mac. And the heavy-duty thermal design keeps components cooler, which prolongs their life and improves stability. Most Macs have long lives before they break or become outdated, but Mac Pros outclass every other model by starting with a huge performance lead, then working hard for years without breaking a sweat.
And by separating the computer from the display, either can be upgraded more freely, promoting customer investment in high-end displays and high-end computers as needs and technologies change.
Taking the burden off of the other Macs. Pros wouldn’t be as angry about the limitations of the new MacBook Pro line if there was an alternative that solved their needs. The Mac Pro sweeps up countless edge cases with one product at the top of the line — the only downside is cost, but many pros would rather spend money than compromise on their needs.
Current sales aren’t an indicator of future sales. Apple shouldn’t use the (presumably) low sales of the current Mac Pro to justify discontinuing the line entirely. The 2013 Mac Pro was introduced with a substantial price increase, far less internal expansion, fewer and more expensive processor options, and a forced dual-workstation-GPU configuration even for buyers who would’ve been fine with a single GPU. Then it was abandoned for three years, during which 5K displays finally came to market, but without a good option for Mac Pro buyers.
The 2013 Mac Pro was a victim of limited configuration options in a market that values versatility and edge-case handling, poor timing behind the 5K transition, and years-long neglect. A 2017 Mac Pro need not suffer from the same issues, and could sell far better.
Any Mac Pro is better than no Mac Pro. The 2013 Mac Pro is a great design, but its size and power constraints are self-imposed. Mac Pro buyers care little about form. If future Mac Xeon workstations must change their form to be practical or palatable to Apple — for instance, by becoming more of an “iMac Pro” with a built-in 5K screen but a large, thick thermal enclosure on the back — that would be less ideal, but we’d take that over the lack of any high-end workstation Macs. (The existing iMac is great, but it isn’t enough.)
Nobody else can make macOS hardware. If Apple doesn’t address someone’s hardware needs, there’s no alternative.3 We can’t just buy hideous Xeon workstations from Dell and install macOS on them. If we can’t do what we need on Mac hardware, our only choice is to leave the entire Mac platform.
But the competition isn’t even close.
Linux can solve some pro needs, but not most. It’s a fantastic server OS but a miserable desktop one, and that will probably never change.
Microsoft is boldly experimenting with PC hardware, but Windows and everything around Windows is woefully inferior to macOS and the Mac software ecosystem. Even if Microsoft did everything right, it would take Windows at least a decade to catch up — and they won’t do everything right.
Google’s trying something, I’m sure, but Google is both terrible at consumer software and deeply, profoundly creepy. General-purpose computing must not require us to compromise our privacy and data for advertising.
And just as nobody’s starting new general web search engines or mass-market online auction sites today, nobody else is going to make a viable general-purpose PC OS anymore. The minimum bar is too high. We’re stuck with the few we have for the long haul.
But if the one you’re stuck with is macOS, that’s a great thing.
We don’t want to leave the Mac. We came here, built here, and stayed here all of this time because Macs are truly awesome computers, and macOS is the best operating system in the world.
It’s the only pro-grade, workstation-class operating system that has ever been easy to use and nice enough that we wanted to spend more time at our workstations.
And hidden behind our pro apps and terminal windows are the shared photo streams we made last night, showing pictures of our children to their grandparents, who are running the exact same operating system.
Technology changes, markets change, and people change, but some moments in history are uniquely high points that are never quite matched.
The world has never seen anything like macOS, and nothing will truly replace it. If we’re forced to move to something else, it’ll be painfully, inescapably, perpetually worse.
Keep the Mac Pro alive, Apple, so none of us have to make that choice.
The rest of the lineup is great for almost everyone. Almost. But please don’t abandon those of us who truly want or need the best computers in the world, because if they’re not Macs, they’re not good enough.
That’s just with a single socket. If the Mac Pro offered dual-socket options like it did before the 2013 redesign, even higher-performance options open up, limited only by power consumption, heat, and money. ↩︎
And this is today, before Skylake’s improvements have come to the Xeon line. Next year’s Skylake-E Xeons and Purley platform are a major upgrade that will put them even further ahead of the consumer line. ↩︎
It’s hard to get anyone to agree on what constitutes “pro” use, but I’d say it has three core requirements:
Reliability: Pro gear absolutely must be dependable, even when used heavily or in demanding conditions.
Power: Pro apps usually need more of every hardware resource than consumer apps — at least CPU power and memory, and often GPU power or I/O bandwidth — and pros will often pay high costs for high-spec machines that won’t hold them back or leave them waiting.
Versatility: Pro gear is used in diverse environments, often with unpredictable needs. Many pros never know when they may suddenly need an obscure port or feature, or when they will unexpectedly need to keep working on battery for a few more hours, and the consequences of not handling these conditions could be expensive or very inconvenient.
The new MacBook Pro is probably great, and most of the initial skepticism probably won’t age well. But I want to pick on one aspect today.
Having four USB-C ports is awesome.
Having only four USB-C ports is going to hurt the versatility requirement of pro gear, because there’s a very real chance that you won’t have the right dongle when you need it.
This is going to happen a lot, because even though USB-C is the future, it’s definitely not the present. We’ve had the standard USB plug (USB-A) in widespread use for 18 years, and it’s going to take a few more years for USB-C to become so ubiquitous that we can get away without USB-A ports most of the time.
A pro laptop released today should definitely have USB-C ports — mostly USB-C ports, even — but it should also have at least one USB-A port.1
Including a port that’s still in extremely widespread use isn’t an admission of failure or holding onto the past — it’s making a pragmatic tradeoff for customers’ real-world needs. I worry when Apple falls on the wrong side of decisions like that, because it’s putting form (and profitability) over function.
Design for the future, but accommodate the reality of the present.
I’d also argue that removing the SD-card reader was premature. SD cards are ubiquitous on cameras (even recent high-end models), and card readers are by far the fastest and most versatile way to import a lot of photos from of a camera. A lot of other pro A/V gear uses SD cards as well, such as most audio and video recorders. Standalone card readers work well, but they’re yet one more dongle that you won’t always have with you. ↩︎
Y Combinator has apparently decided not to. President Sam Altman defended this position in a blog post, framed as a Clinton endorsement, that begins with a partial overview of how reprehensible and dangerous Trump is, but ends with a defense of continuing Thiel’s involvement in Y Combinator that’s effectively framed as a free-speech or tolerance issue:
Some have said that YC should terminate its relationship with Peter over this. But as repugnant as Trump is to many of us, we are not going to fire someone over his or her support of a political candidate. […]
The way we got into a situation with Trump as a major party nominee in the first place was by not talking to people who are very different than we are. […]
That kind of diversity is painful and unpopular, but it is critical to health of a democratic and pluralistic society. We shouldn’t start purging people for supporting the wrong political candidate. That’s not how things are done in this country.
Altman’s framing of Thiel’s Trump support as a diversity issue isn’t just incorrect — it’s a harmful distortion that reveals a deep misunderstanding of the tech industry’s actual diversity issues. (I don’t and can’t fully understand our diversity problem, but I at least won’t pretend to.)
To help illustrate why, here are some of Altman’s own words from the first half of that same post:
This election is exceptional. Donald Trump represents an unprecedented threat to America…
He represents a real threat to the safety of women, minorities, and immigrants…
Trump shows little respect for the Constitution, the Republic, or for human decency…
I do not understand how one continues to support someone who brags about sexual assault, calls for a total and complete shutdown of Muslims entering the US, or any number or other disqualifying statements.
Wrapping reprehensible statements or actions as “political beliefs” doesn’t protect them or exempt their supporters from consequences. Racism is racism. Sexual assault is sexual assault. Labeling reprehensible positions as “political beliefs” is a cowardly, meaningless shield.
But even if such protection existed (it still doesn’t), this isn’t calling for someone to lose their job because they merely voted Republican — the scale of Thiel’s support and the conditions of this particular candidate matter.
Thiel, a non-employee (a “part-time partner”), is directly supporting Donald Trump at a massive scale — over a million dollars! — after we’ve learned even more of Trump’s horrendous statements, positions, and past actions than we could’ve ever imagined.
This isn’t voting for an economic or social policy — this is literally paying a huge amount of money to directly support a racist, sexist bigot with rapidly mounting allegations of multiple sexual assaults.
One more quote from Altman:
If Peter said some of the things Trump says himself, he would no longer be part of Y Combinator.
Funding Trump, especially at this scale, represents general support of what Trump has said and done. If saying what Trump said would be enough to override Altman’s “diversity” argument and sever ties with Thiel, giving over a million dollars to Trump’s campaign should qualify as well.
Y Combinator should be especially sensitive to diversity and inclusion issues due to its public presence and large influence in the technology business. We have so many diversity and hostility problems (that the industry is finally working to fix) that Y Combinator should be leading the way toward inclusive, progressive solutions.
Instead, they’re defending the large-scale support of racism, bigotry, and sexual assault by an influential partner and advisor to their startups as its own form of “diversity”.
Last week, Apple terminated the developer account of one of my favorite Mac apps, the Dash documentation viewer for programmers, for alleged App Store review manipulation.
Dash is a great app that many Mac and iOS programmers use (and that needs no help getting positive reviews), and developer Bogdan Popescu insisted he’d never engaged in such fraud. Since Apple has a history of controversial App Store decisions that often get reversed after public scrutiny, many developers (including me) came to his defense last week, assuming that someone at Apple had made a mistake, and yelled on Twitter for Apple to reconsider or provide more concrete justification. Michael Tsai has a good overview with more links.
Almost 1,000 fraudulent reviews were detected across two accounts and 25 apps for this developer so we removed their apps and accounts from the App Store. Warning was given in advance of the termination and attempts were made to resolve the issue with the developer but they were unsuccessful. We will terminate developer accounts for ratings and review fraud, including actions designed to hurt other developers. This is a responsibility that we take very seriously, on behalf of all of our customers and developers.
This isn’t enough proof for some, but it’s enough for me. (Some quicksearches support Apple’s position, if you’re still unconvinced.)
Like any controversial decision involving people’s livelihoods, Apple probably needs to be careful to avoid potential legal issues, and it would be in poor taste for a huge company to sling more mud than necessary in public against a tiny opponent.
I’m glad our community assumed the best of another developer and pressured Apple to justify this severe action. We should now accept that they have.
The public often doesn’t get the full story behind decisions and changes they see, but it’s usually not for sinister reasons — it’s often just someone taking the high road and letting another party save face.
Bogdan Popescu responded with his side of the story and a recording of a phone call from Apple (without their consent, which is illegal in California, but apparently not in Romania). In summary, he bought another developer account for a relative with his credit card and using his old test devices, which made Apple’s fraud team consider them the same entity (seems reasonable), and that account engaged in the fraud.
His post makes Apple sound pretty bad. But if you listen to the call (which I was torn about whether to do), it’s clear that Apple was being incredibly reasonable and going above and beyond to help him get reinstated and clarify what happened in a public statement, but Popescu didn’t seem to agree with Apple regarding the wording of key facts.
We don’t know what happened between that call and Apple’s statements tonight. I’m guessing Popescu and Apple couldn’t reach an agreement over the wording of the public story, but I think what Apple asked for in that phone call was extremely reasonable.
It’s also notable that Apple investigated this and tried to resolve it as well as they did. If it were any other company — say, Google for a suspended AdSense or YouTube account — I suspect the amount of effort devoted to it would be much lower.