Marco.org

I’m : a programmer, writer, podcaster, geek, and coffee enthusiast.

The best laptop ever made

Apple has made many great laptops, but the 15-inch Retina MacBook Pro (2012–2015) is the epitome of usefulness, elegance, practicality, and power for an overall package that still hasn’t been (and may never be) surpassed.

Introduced in 2012, less than a year after Steve Jobs died, I see it as the peak of Jobs’ vision for the Mac.

It was the debut of high-DPI Macs, starting down the long road (which we still haven’t finished) to an all-Retina lineup. And with all-SSD storage, quad-core i7 processors, and a healthy amount of RAM all standard, every configuration was fast, capable, and pleasant to use.

At its introduction, it was criticized only for ditching the optical drive and Ethernet port, but these were defensible, well-timed removals: neither could’ve even come close to physically fitting in the new design, very few MacBook Pro users were still using either on a regular basis, and almost none of us needed to buy external optical drives or Ethernet adapters to fit the new laptop into our lives. In exchange for those removals, we got substantial reductions in thickness and weight, and a huge new battery.

There were no other downsides. Everything else about this machine was an upgrade: thinner, lighter, faster, better battery life, quieter fans, better speakers, better microphones, a second Thunderbolt port, and a convenient new HDMI port.

The MagSafe 2 power adapter breaks away safely if it’s tripped over, and the LED on the connector quickly, clearly, and silently indicates whether it’s charging and when the battery is fully charged.

The pair of Thunderbolt (later Thunderbolt 2) ports gave us high-end, high-speed connectivity when we needed it, and the pair of standard USB 3 ports — one on each side — let us connect or charge our world of standard USB devices.

The headphone jack was thoughtfully located on the left side, because nearly all headphones run their cables down from the left earcup. (External-mouse users also appreciate this frequently-used cable not intruding in their right-side mousing area.)

The keyboard was completely unremarkable, in the best possible way. The crowd-pleasing design was neither fanatically loved nor widely despised. It quietly and reliably did its job, as all great tools should, and nobody ever really had to think about it.

The trackpad struck a great balance between size and usability. It provided ample room for multitouch gestures, but without being too large or close to the keyboard, so people’s fingers wouldn’t inadvertently brush against it while typing.

Not every owner needed the SD-card slot or HDMI port, but both were provided for times when we might. This greatly increased the versatility and convenience of this MacBook Pro, as many pro customers use A/V gear that records to SD cards or occasionally need to plug into a TV or projector. The SD-card slot could also serve as inexpensive storage expansion.

The power adapter’s built-in cable management keeps bags tidy. And if you need a longer cable, the extension comes in the box at no additional charge.

Versatile USB-A ports allow travelers to standardize on just one type of charging cable that can charge their iPhones and iPads from the laptop itself, multi-port wall or car chargers, portable batteries, airplanes, many outlets, and nearly all other chargers likely to be found in the world around them.

The 2015 revision brought the modern Force Touch trackpad and used the space savings to increase the battery to 99.5 Wh, just under the 100 Wh carry-on limit for most commercial airlines. When paired with the integrated-only GPU base configuration, this offered an unparalleled option for great battery life without giving up the large Retina screen.

And I like the backlit Apple logo on the lid. Maybe I’m old-fashioned, or maybe I just miss Steve, but it — along with the MagSafe LED and the startup chime — reminds me of a time when Mac designs celebrated personality, humanity, and whimsy.

*    *    *

I recently returned to the 2015 15-inch MacBook Pro after a year away.

Apple still sells this model, brand new, just limited to the integrated-only GPU option (which I prefer as a non-gamer for its battery, heat, and longevity advantages), but I got mine lightly used for over $1000 less.

I thought it would feel like a downgrade, or like going back in time. I feared that it would feel thick, heavy, and cumbersome. I expected it to just look impossibly old.

It didn’t.

It feels as delightful as when I first got one in 2012. It’s fast, capable, and reliable. It gracefully does what I need it to do. It’s barely heavier or thicker, and I got to remove so many accessories from my travel bag that I think I’m actually coming out ahead.

It feels like a professional tool, made by people who love and need computers, at the top of their game.

It’s designed for us, rather than asking us to adapt ourselves to it.

It helps us perform our work, rather than adding to our workload.

This is the peak. This is the best laptop that has ever existed.

I hope it’s not the best laptop that will ever exist.

The impossible dream of USB-C

I love the idea of USB-C: one port and one cable that can replace all other ports and cables. It sounds so simple, straightforward, and unified.

In practice, it’s not even close.

USB-C normally transfers data by the USB protocol, but it also supports Thunderbolt… sometimes. The 12-inch MacBook has a USB-C port, but it doesn’t support Thunderbolt at all. All other modern MacBook models support Thunderbolt over their USB-C ports… but if you have a 13-inch model, and it has a Touch Bar, then the right-side ports don’t have full Thunderbolt bandwidth.

If you bought a USB-C cable, it might support Thunderbolt, or it might not. There’s no way to tell by looking at it. There’s usually no way to tell whether a given USB-C device requires Thunderbolt, either — you just need to plug it in and see if it works.

Much of USB-C’s awesome capability comes from Thunderbolt and other Alternate Modes. But due to their potential bandwidth demands, computers can’t have very many USB-C ports, making it especially wasteful to lose one to a laptop’s own power cable. The severe port shortage, along with the need to connect to non-USB-C devices, inevitably leads many people to need annoying, inelegant, and expensive dongles and hubs.

While a wide variety of USB-C dongles are available, most use the same handful of unreliable, mediocre chips inside. Some USB-A dongles make Wi-Fi drop on MacBook Pros. Some USB-A devices don’t work properly when adapted to USB-C, or only work in certain ports. Some devices only work when plugged directly into a laptop’s precious few USB-C ports, rather than any hubs or dongles. And reliable HDMI output seems nearly impossible in practice.

Very few hubs exist to add more USB-C ports, so if you have more than a few peripherals, you can’t just replace all of their cables with USB-C versions. You’ll need a hub that provides multiple USB-A ports instead, and you’ll need to keep your USB-A cables for when you’re plugged into the hub — but also keep USB-C cables or dongles around for everything you might ever need to plug directly into the computer’s ports.

Hubs with additional USB-C ports might pass Thunderbolt through to them, but usually don’t. Sometimes, they add a USB-C port that can only be used for power passthrough. Many hubs with power passthrough have lower wattage limits than a 13-inch or 15-inch laptop needs.

Fortunately, USB-C is a great charging standard. Well, it’s more of a collection of standards. USB-C devices can charge via the slow old USB rates, but for higher-powered devices or faster charging, that’s not enough current.

Many Android phones support Qualcomm’s Quick Charge over USB-C, which is different — usually — from the official, better, newer USB-C Power Delivery (PD) standard. Apple products, some Android phones, and the Nintendo Switch use USB-C PD. Quick Charge devices don’t get any benefit — usually — from PD chargers, and vice versa.

Your charger, cable, and any standalone batteries you want to use all must support the same charging standard for it to work at full speed.

Some cables don’t support USB-C PD at all, and most don’t support laptop wattages. Apple’s cable supports USB-C PD charging at high wattages… unless you bought the earlier version that doesn’t. Most standalone batteries sold to date don’t support USB-C PD — there are only a handful on the market so far, and most of them can’t charge a laptop at full speed, unless it’s the 12-inch MacBook.

You can use USB-C PD to fast-charge an iPhone 8 or iPad Pro with a USB-C to Lightning cable. But it doesn’t work with every USB-PD battery or charger, or every USB-C to Lightning cable, or every iPad Pro.

And, of course, there’s usually no way to tell at a glance whether a given cable, charger, battery, or device supports USB-C PD or at what wattages.

It’s comforting to think that over time, this will all settle down and we’ll finally achieve the dream of a single cable and port for everything. But that’s not how technology really works.

Before today’s USB-C can become ubiquitous and homogeneous, the next protocol or port will come out. We’ll have new, faster USB 4.0 and Thunderbolt 4 standards over the same-looking USB-C ports. We’ll want to move to an even thinner USB-D port. The press will call it “the future” and Apple will celebrate its new laptops that only have a USB-D port — two, if we’re lucky.

And we’ll have to start over again, buying all new cables, dongles, hubs, chargers, batteries, and displays to adapt it to what we really need.

Maybe next time, we’ll get it right. But probably not.

What we need from Apple to make standalone Apple Watch podcast apps

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.

Next/previous-track commands

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.


  1. 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. ↩︎

  2. This could also allow the use of the more capable in-process APIs such as AVAudioPlayer, which appeared to work well in watchOS 3. ↩︎

  3. While I have you, please also add this reporting for paused or waiting background NSURLSessionDownloadTask transfers. ↩︎

Overcast for iOS 11 coming soon

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.


  1. I’m fine. I just finally realized that the correct amount of exercise for a 35-year-old was probably not zero. ↩︎

Courage

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.

That’s courage.

Removing “Send to Watch”

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.


  1. 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. ↩︎

“MP3 is dead” missed the real, much better story

If you read the news, 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.

Very few people got it right. The others missed what happened last month:

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 newer formats. 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.


  1. For photos and other image types poorly suited to PNG, of course. ↩︎

  2. 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. ↩︎

The new Mac Pro: The audacity to say “Yes” in a design culture of “No”

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:

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:

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:

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.


  1. 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. ↩︎

  2. I’m trying to make it through this entire post without any Steve Jobs quotes. It’s not easy. ↩︎

  3. 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). ↩︎

  4. It hasn’t been four years yet, but by the time the next Mac Pro ships, it’ll likely be about 4.5. ↩︎

  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: Design walkthrough

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:

  1. 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.
  2. 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.

  3. 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:

Old New

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.

Old New

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

Old New

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:

Old New

The miniplayer is also now larger and easier to grab, has larger buttons, and hides when nothing is playing.

I’ve also replaced the episode-info popovers, which I’ve hated since the day I shipped them:

Old New

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.

Old New

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:

  1. Easy access from around the interface to quickly add episodes to the queue.
  2. 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.

Miscellany

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?

Old New

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.

Old New

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:

A widget!

Rich notifications!

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:

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.

Go get it already

It’s a huge update. Thank you very much to all of my customers who made this possible.

I hope I’ve succeeded in my design goals, and I hope you enjoy it.


  1. 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. ↩︎

  2. 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. ↩︎

  3. 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. ↩︎

  4. 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. ↩︎

Automatically test your database backups

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:

  1. Regularly downloading the latest backup from S3 (or wherever) and performing a full restore onto a clean server.
  2. 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.


  1. 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 future of computing

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?


(Courtesy of Six Colors)

And Mac sales might appear mostly unaffected, or possibly even increasing as iPad sales cooled off, right?


(Courtesy of Six Colors)

Is Apple prepared for that possibility?

Is the Mac?

State of Apple from two perspectives

Two of the best pieces I’ve read about Apple recently:

They may seem at odds, but I agree with a lot from both, and every Apple enthusiast and commentator would be well-served by reading and considering both.

Apple can — and, I believe, does — have both a well-performing CEO and significant problems in its products that have me both worried and saddened as an Apple customer and enthusiast.

Apple’s statement on the Consumer Reports battery test

Apple’s official response to Consumer Reports’ poor 2016 MacBook Pro battery test:

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.


  1. 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. ↩︎

Ten years of iPhone

I’ll never forget watching the iPhone keynote live.1

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.


  1. This was before Apple events were streamed, so “watching it live” really meant watching liveblog transcripts with occasional photos from people who were there. ↩︎

iPhone spam-call-blocking apps

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.

To me, that’s $2/month very well spent.

Apple fixes MacBook Pro battery life by removing time estimate

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

Problem solved!

A letter to today’s young people

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.

Hang in there.

A world without the Mac Pro

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.

Just as the Mac’s power lets iOS be simpler, a healthy Mac Pro frees up the rest of the Mac lineup to make more aggressive progress.

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.


  1. 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. ↩︎

  2. 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. ↩︎

  3. “Hackintoshes” aren’t good enough. ↩︎

Design for the present

It’s hard to get anyone to agree on what constitutes “pro” use, but I’d say it has three core requirements:

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.


  1. 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. ↩︎