Marco.org’m Marco Arment, creator of Overcast, technology podcaster and writer, and coffee enthusiast.In-App Purchase Rules, 11 Sep 2020 16:08:06 EDT<p>A summary of <a href="">today’s changes</a> to <a href="">3.1.3 Other Purchase Methods</a>:</p> <p>Your app must use Apple’s in-app-purchase (IAP) system for all purchases made in the app.</p> <p>Unless they’re purchases for goods or services that are consumed outside the app, in which case you are prohibited from using IAP.</p> <p>Unless those goods or services consumed outside the app are magazines, newspapers, books, audio, music, or video, in which case, you are required to use IAP.</p> <p>But if your app only “reads” <em>previously</em> purchased magazines, newspapers, books, audio, music, or video, and doesn’t mention the possibility of purchases anywhere in the app, you don’t need to use IAP.</p> <p>Unless you offer account creation, in which case, you are required to use IAP.</p> <p>Unless you only offer <em>free</em> account creation, in which case, you don’t need to use IAP.</p> <p>But if you offer paid upgrades from free accounts within the app, you are required to use IAP.</p> <p>Except for accounts that were created outside the app, which can offer paid account upgrades and don’t need to use IAP.</p> <p>If you’re selling “experiences” between people, you don’t need to use IAP.</p> <p>Unless those “experiences” include three or more people, or aren’t consumed live, in which case, you are required to use only IAP.</p> <p>If your purchase is for services, features, or game items, you are required to use only IAP.</p> <p>Unless you operate on multiple platforms, in which case, you can also offer purchasing outside the app. But you can’t tell anyone about it.</p> <p>Unless you get their contact info somewhere else, in which case, you can tell them about it, but not in the app.</p> <p>You are required to use IAP even if you sell your app or service directly to other people.</p> <p>Unless you only sell it to businesses or groups for their employees or students to use, in which case, you still must use IAP, but you can include your own payment method as well.</p> <p>Unless those groups are families, or unless those employees or students are somehow “consumers”, in which case, you must only use IAP.</p> <p>Do I have that right?</p> <p style="text-align: center; color: #ccc;">*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</p> <p>How about an alternative that’s clear, fair, reasonable, and consistently enforceable?</p> <blockquote> <p>Apps may offer other payment mechanisms in their app, as long as terms are clear and customers aren’t misled, and may or may not choose to implement in-app purchase based on its merits.</p> </blockquote> <p>In one stroke, antitrust and regulatory pressure disappear, developer relations are significantly repaired, and Apple can go back to spending its time, resources, PR, and political capital on making their products better and customers happier.</p> Introducing Voice Boost 2: Remaster your podcasts, 31 Jan 2020 13:46:32 EST<p>The latest update to <a href="">Overcast</a> includes a feature that I&#8217;m especially proud of that took over a year to build.</p> <p><strong>Voice Boost 2</strong> is an all-new audio engine that includes professional-grade, mastering-quality loudness normalization.</p> <p>When I <a href="">first introduced Overcast in 2014</a>, Voice Boost was one of its headlining features:</p> <blockquote> <p><strong>Voice Boost</strong> is a combination of dynamic compression and equalization that can make many shows more listenable and normalize volume across all shows. This makes amateur-produced podcasts (including many of my favorites) more listenable in loud environments, like cars, where you’d otherwise need to crank the volume so loudly to hear the quiet parts that you’d blow your ears out when the loudest person spoke.</p> </blockquote> <p>Voice Boost 2 achieves the same goal as the original Voice Boost, but with dramatically more sophisticated methods, leading to more consistent results and <em>much</em> better sound quality.</p> <h3><strong>Goals</strong></h3> <p>When I wrote the original Voice Boost with only a rudimentary understanding of audio processing, it was a single configuration of Apple&#8217;s AudioUnits that applied a fixed set of parameters to all podcasts, regardless of their audio characteristics. It was an effective but blunt tool, relying on aggressive <a href="">level compression</a> and a strong <a href="">EQ</a> to make the compression less noticeable.</p> <p>Since then, I&#8217;ve edited over 500 podcasts, learned a <em>lot</em> more about how to master them properly, and developed a much better understanding of <a href="">audio signal processing</a>.</p> <p>I set out to develop a better, smarter, and more refined Voice Boost that took advantage of everything I&#8217;d learned, with these audio goals:</p> <ul> <li>The effect should be much more subtle: mostly just consistent volume, plus <em>slightly</em> smoother tone.</li> <li>It should analyze the input audio and apply <em>just</em> enough processing to achieve a consistent volume level, modifying already-good audio as little as possible.</li> <li>It should sound good, and consistent, regardless of the volume dynamics of its input.</li> <li>Quality should be so good that I can even play high-quality <em>music</em> through it<sup id="fnref:pXIBPcnShtrey"><a href="#fn:pXIBPcnShtrey" rel="footnote">1</a></sup> and not notice any artifacts.</li> </ul> <p>And these technical goals:</p> <ul> <li>Like Smart Speed and the original Voice Boost, it had to work as a streaming process, easily toggled on and off at will, without needing to scan the entire file first or look very far ahead.</li> <li>The code had to be pure C, with highly optimized and vectorized code, so it wouldn&#8217;t be a major power drain on older phones and could potentially run on much lower-power devices as well.</li> <li>I had to write every component from scratch, without using AudioUnits, because I wanted to understand and control everything, ensure the highest performance and sound quality, and avoid Apple&#8217;s platform-specific API limits.<sup id="fnref:pXIBPcnShpubapi"><a href="#fn:pXIBPcnShpubapi" rel="footnote">2</a></sup></li> <li>It had to be modular and easily customizable, like a channel strip in an audio editor, so I could adjust the processing during development and testing, offer user customization down the road, and use the same engine to build myself a modular podcast-preproduction tool to save time in my weekly workflow (which I&#8217;ve been using for over a year).<sup id="fnref:pXIBPcnShvb2tool"><a href="#fn:pXIBPcnShvb2tool" rel="footnote">3</a></sup></li> </ul> <h3><strong>Live LUFS normalization</strong></h3> <p>Since Voice Boost is mostly about high-quality volume analysis and loudness normalization, I went straight to the top, implementing <a href="">the ITU BS.1770–4 standard</a> that gives us the <strong>LUFS</strong> measurement seen in high-end audio editors.</p> <p>Overcast now measures and adjusts podcast levels using this broadcast-standard perceptual loudness algorithm, at full quality, with no preprocessing.</p> <p>Voice Boost 2 normalizes all podcasts to –14&nbsp;LUFS &#8212; a level I chose because it closely matches the volume of Siri and most iOS turn-by-turn navigation voices, so when you&#8217;re listening to a podcast while driving, navigation interruptions are less jarring.</p> <p>Most professionally produced podcasts are already mastered to similar volume levels, so Voice Boost 2 won&#8217;t overcompress them with aggressive processing &#8212; it&#8217;ll only apply as much correction as necessary to make them all the same volume.</p> <h3><strong>A brief tutorial on clipping and distortion</strong></h3> <p>This is about to get nerdier, but bear with me. (Yes, nerdier than ITU broadcast-loudness standards.)</p> <p>Given a loudness measurement for the incoming audio, quieter podcasts need to be amplified to reach the target. But perceived loudness isn&#8217;t the peak of the incoming audio stream &#8212; it&#8217;s more of an average. Quiet-sounding audio can still have brief moments of loud peaks.</p> <p>When increasing the volume of digital audio, the biggest challenge is not &#8220;clipping&#8221; during the peaks &#8212; not having any part of the signal pass above the volume ceiling of 0 dB. (It&#8217;s a negative scale. This is also why the LUFS value above, which is closely related to the decibel scale used here, is negative.)</p> <p>Here&#8217;s the highest the signal should go, showing the individual audio samples (green dots) that can be processed by a podcast app before the DAC transforms them into audio (smooth green line):</p> <p style="text-align: center;"><a href=""><img src=""/></a></p> <p>It&#8217;ll sound right as long as the audio doesn&#8217;t cross above that top line (0 dB). Increase the volume even slightly too far, and some of the samples just slam into it and stay there, losing the tops of their smooth curves:</p> <p style="text-align: center;"><a href=""><img src=""/></a></p> <p>And that sounds <strong>terrible.</strong></p> <p>But I can&#8217;t just cap all the samples right below the limit and call it a day &#8212; that&#8217;s called a brickwall limiter &#8212; because then the shape of the audio line will actually represent different frequencies, telling the DAC to add noise that wasn&#8217;t really there.</p> <p>Here, the bottom of each image shows the frequency breakdown:</p> <p style="text-align: center;"><a href=""><img src=""/></a></p> <p>The unclipped signal (left) shows only its original frequency of about 2100 Hz, but a basic brickwall limiter (right) results in the unwanted introduction of a bunch of extra frequencies.</p> <p>That&#8217;s distortion. (If this is interesting to you, <a href="">learn more about audio sampling theory here</a>.)</p> <h3><strong>Lookahead limiter</strong></h3> <p>Avoiding audible distortion requires a lookahead limiter, which looks&#8230; ahead (😎) at the audio coming down the pipeline, and smoothly ramps the volume amplification down as a loud peak is approaching, then back up again afterward, <em>just</em> enough to avoid clipping and audible distortion, but so quickly that you don&#8217;t notice.<sup id="fnref:pXIBPcnShms"><a href="#fn:pXIBPcnShms" rel="footnote">4</a></sup></p> <p>After Voice Boost 2&#8217;s complete 32-bit audio processing pipeline, the last stage is a lookahead limiter, configured such that it <em>can&#8217;t</em> clip, no matter what audio comes through.</p> <p>This gives vast flexibility in volume processing without sacrificing quality.</p> <p>Voice Boost 2 also incorporates a dynamics compressor, but over time, I&#8217;ve kept reducing its strength as I&#8217;ve found it less necessary. Proper LUFS processing with a great lookahead limiter provides excellent volume normalization with almost no compression needed afterward.</p> <h3><strong>True-peak detection</strong></h3> <p>There&#8217;s one more way to introduce clipping that needs to be guarded against.</p> <p>Digital audio is represented by samples that represent a point in time (green dots, again) on a sound wave (green line). But the sampled points don&#8217;t always land at the exact peaks of those waves:</p> <p style="text-align: center;"><a href=""><img src=""/></a></p> <p>The most common way to measure the peak of a waveform is to find the greatest absolute sample value. By this method, the top waveform peaks here would measure about –6 dB and –1.5 dB, respectively.</p> <p>But the actual peak amplitudes of these waves is –1 dB! A simple limiter could still output clipped audio because it&#8217;s not seeing the true peaks.</p> <p>Voice Boost 2&#8217;s limiter performs true-peak detection, rather than simply measuring sample peaks, to avoid this type of clipping and further reduce distortion.</p> <h3><strong>Mastering-quality processing for everyone</strong></h3> <p>Voice Boost 2 is a mastering-quality audio-processing pipeline that applies broadcast-standard loudness normalization, light compression and EQ, and a true-peak lookahead limiter to your podcasts, in real time, without sacrificing quality or battery life.</p> <p>And it runs at less than 1% CPU usage on an iPhone&nbsp;SE.<sup id="fnref:pXIBPcnShbench"><a href="#fn:pXIBPcnShbench" rel="footnote">5</a></sup></p> <p>I intend to expose some of its customizability to customers in future updates, but I wanted to develop and ship the best default settings first to keep the app simple and usable to everyone. Now that it&#8217;s available to everyone, I may still subtly tweak the defaults in response to feedback. But as I&#8217;ve refined the settings during the beta period to be more universal, less customization has been necessary.<sup id="fnref:pXIBPcnShdeess"><a href="#fn:pXIBPcnShdeess" rel="footnote">6</a></sup></p> <p>Having achieved its goals of being more consistent and less aggressive, Voice Boost 2 is intentionally transparent. It&#8217;s not promoted more in the app or even labeled &#8220;Voice Boost 2&#8221;. It&#8217;s still Voice Boost — just better now.</p> <p>If I did my job well, you&#8217;ll hardly notice it at all. You&#8217;ll have no idea that your podcasts are being remastered in your pocket.</p> <p>But I&#8217;ll know. And the handful of you who <em>really</em> care will know. And that&#8217;s enough for me.</p> <p>Voice Boost 2 is in today&#8217;s update (2020.1), along with these new features:</p> <ul> <li><strong>AirPlay 2:</strong> Overcast can now play to HomePods and other AirPlay 2 devices much more responsively, with full-blown Smart Speed and Voice Boost, on iOS 13.1 and above.<sup id="fnref:pXIBPcnShap2"><a href="#fn:pXIBPcnShap2" rel="footnote">7</a></sup></li> <li><strong>Skip intros/outros:</strong> There&#8217;s a new per-podcast setting to skip a given number of seconds from the start and/or end of its episodes.</li> <li><strong>Clip-sharing from private feeds.</strong> In retrospect, this restriction was unnecessary, so I lifted it.</li> <li><strong>Restored iOS 12 compatibility.</strong> Going 13-only so soon was a mistake. Hear why on <a href="">Under The Radar 181</a> and <a href="">183</a>.</li> </ul> <p>As usual, all of this is free for everyone in <a href="">Overcast</a>.</p> <div class="footnotes"> <hr /> <ol> <li id="fn:pXIBPcnShtrey"> <p>Those awesome <a href="">Trey Anastasio acoustic shows</a> are pretty quiet.&#160;<a href="#fnref:pXIBPcnShtrey" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pXIBPcnShpubapi"> <p>Apple doesn&#8217;t make all of their audio APIs available on all platforms: some are Mac-only and never came to iOS, and watchOS has an even smaller subset than iOS. The more I can accomplish in my own code, the less I depend on Apple&#8217;s choices for which APIs they make available to developers.&#160;<a href="#fnref:pXIBPcnShpubapi" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pXIBPcnShvb2tool"> <p>It&#8217;s just a command-line tool for now. You don&#8217;t want it. (But if you do&#8230; someday, maybe.)&#160;<a href="#fnref:pXIBPcnShvb2tool" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pXIBPcnShms"> <p>This all happens in milliseconds.&#160;<a href="#fnref:pXIBPcnShms" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pXIBPcnShbench"> <p>At 1X, with Smart Speed enabled.</p> <p>Smart Speed was actually entirely rewritten as part of Voice Boost 2, but it&#8217;s less interesting. It performs the same job as before, but much more efficiently, and taking advantage of the measured loudness when Voice Boost is also enabled.&#160;<a href="#fnref:pXIBPcnShbench" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pXIBPcnShdeess"> <p>For instance, I also built a de-esser into Voice Boost 2, but it slowly became unnecessary as I improved the other processing, so it&#8217;s not currently enabled.&#160;<a href="#fnref:pXIBPcnShdeess" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pXIBPcnShap2"> <p>Smart Speed is a big deal here, I think &#8212; I&#8217;m not aware of any other podcast apps with silence-skipping over AirPlay 2.</p> <p>(Or LUFS normalization, or true-peak lookahead limiters.)&#160;<a href="#fnref:pXIBPcnShap2" rev="footnote">&#8617;&#xFE0E;</a></p> </li> </ol> </div> Low Power Mode for Mac laptops: making the case again, 13 Jan 2020 20:21:06 EST<p>In light of today&#8217;s rumor that <a href="">a Pro Mode may be coming</a> that seems to offer benefits in the opposite direction,<sup id="fnref:pC1P8vIzHpromode"><a href="#fn:pC1P8vIzHpromode" rel="footnote">1</a></sup> I wanted to re-make the case for a Low Power Mode on macOS — and explain why <strong>now</strong> is the time.</p> <p>Modern hardware constantly pushes thermal and power limits, trying to strike a balance that minimizes noise and heat while maximizing performance and battery life.</p> <p>Software also plays a role, trying to keep everything background-updated, content-indexed, and photo-analyzed so it&#8217;s ready for us when we want it, but not so aggressively that we notice any cost to performance or battery life.</p> <p>Apple&#8217;s customers don&#8217;t usually have control over these balances, and they&#8217;re usually fixed at design time with little opportunity to adapt to changing circumstances or customer priorities.</p> <p>The sole exception, Low Power Mode on iOS, seems to be a huge hit: by offering a single toggle that chooses a different balance, people are able to greatly extend their battery life when they know they&#8217;ll need it.<sup id="fnref:pC1P8vIzHldm"><a href="#fn:pC1P8vIzHldm" rel="footnote">2</a></sup></p> <p><strong>Mac laptops need Low Power Mode, too.</strong> I believe so strongly in its potential because I&#8217;ve been using it on my laptops (in a way) for years, and it&#8217;s <strong>fantastic.</strong></p> <p>I&#8217;ve been <a href="">disabling Intel Turbo Boost on my laptops</a> with <a href="">Turbo Boost Switcher Pro</a> most of the time since 2015.</p> <p>In 2018, <a href="">I first argued for Low Power Mode on macOS</a> with a list of possible tweaks, concluding that disabling Turbo Boost was still the best bang-for-the-buck tweak to improve battery life without a noticeable performance cost in most tasks.<sup id="fnref:pC1P8vIzHmlpm"><a href="#fn:pC1P8vIzHmlpm" rel="footnote">3</a></sup></p> <p>Recently, as Intel has crammed more cores and higher clocks into smaller form factors and pushed thermal limits to new extremes, the gains have become even more significant. Here&#8217;s some thermal testing from my 8-core <a href="">16-inch MacBook Pro</a>:</p> <p><style><!-- .turboboosttable { margin: 2em auto; border-collapse: collapse; } .turboboosttable th, .turboboosttable td { text-align: center; border: 1px solid #f4f4f4; padding: 0.5em; } .turboboosttable th { width: 15%; } .turboboosttable th.lcol { text-align: right; } .turboboosttable th.notbold { font-weight: normal; } .turboboosttable th { background-color: #f4f4f4; } .turboboosttable .lightslash { opacity: 0.33; } .turboboosttable td.noturbo { background-color: #f8f8f8; } .turboboosttable .perfminus { color: #a00; } .turboboosttable .perfplus { color: #0a0; } --></style></p> <h3>16-inch MacBook Pro (Late 2019, 2.4 GHz 8-core i9)</h3> <table class="turboboosttable"> <tr> <th class="lcol">&nbsp;</th> <th>Power</th> <th>Temp.</th> <th>Geekbench&nbsp;5 single/multi</th> <th>xcodebuild</th> </tr> <tr> <th class="lcol notbold">Normal</th> <td>82W</td> <td>90&deg;C</td> <td>1260<span class="lightslash">/</span>7386</td> <td>39 sec.</td> </tr> <tr> <th class="lcol notbold">No Turbo</th> <td class="noturbo">31W<div class="perfplus">−62%</div></td> <td class="noturbo">65&deg;C</td> <td class="noturbo">669<span class="lightslash">/</span>5206<div class="perfminus">−46<span class="lightslash">/</span>29%</div></td> <td class="noturbo">62 sec.<div class="perfminus">+59%</div></td> </tr> </table> <p>With Turbo Boost disabled, peak CPU power consumption drops by 62%, with a correspondingly huge reduction in temperature. This has two massive benefits:</p> <ul> <li><strong>The fans never audibly spin up.</strong> When Turbo Boost is enabled, the fans annoyingly spin up every time the system is under a heavy sustained load. Disable it, and it&#8217;s almost impossible to get them to be audible.</li> <li><strong>It runs significantly cooler.</strong> Turbo Boost lets laptops get too hot to comfortably hold in your lap, and so much heat radiates out that it can make hands sweaty. Disable it, and the laptop only gets moderately warm, not <strong>hot</strong>, and hands stay comfortably dry.</li> </ul> <p>I haven&#8217;t done formal battery testing on the 16-inch, since it&#8217;s so difficult and time-consuming to do in a controlled way that&#8217;s actually useful to people, but anecdotally, I&#8217;m seeing similar battery gains by disabling Turbo Boost that I&#8217;ve seen with previous laptops: <strong>significantly longer battery life</strong> that I&#8217;d estimate to be between 30–50%.</p> <p>This comes at a cost to performance, but:</p> <ul> <li>It&#8217;s not noticeable on most workloads.</li> <li>Parallel workloads are affected far less than single-threaded tasks, and most modern heavy workloads are parallelized.</li> <li><p>This is an 8-core laptop that&#8217;s competitive with my iMac Pro! It&#8217;s much faster than most people need (myself included) most of the time, so I can spare some performance to get other benefits.</p> <p>A fast laptop isn&#8217;t very useful if your hands are too sweaty to type, the battery dies in the middle of a flight, or the loud fans ruin your audio recording.</p></li> <li>When I really want to maximize performance, <a href="">Turbo Boost Switcher Pro</a> lets me quickly toggle it in the menu bar, so switching between modes is easy.</li> </ul> <p>The vast majority of the time I&#8217;m using it, the 16-inch MacBook Pro is <strong>a much better laptop</strong> with Turbo Boost disabled.</p> <p>It&#8217;s still fast enough to do everything I need (including significant development with Xcode), while remaining silent and cool, with incredible battery life.</p> <p>But soon, I bet I won&#8217;t be able to do this anymore.</p> <p>Turbo Boost Switcher Pro relies on a kernel extension that&#8217;s grandfathered into Apple&#8217;s latest security requirements, but it can never be updated — and when macOS Catalina loads it for the first time, it <a href="">warns that it&#8217;ll be &#8220;incompatible with a future version of macOS.&#8221;</a> I suspect that this is the last year I&#8217;ll get to run the latest OS <strong>and</strong> be able to turn off Turbo Boost at will, making all of my future laptop usage significantly worse.</p> <p>Please, Apple, make this feature official: give us a Low Power Mode for macOS that disables Turbo Boost to keep our laptops cool, quiet, and long-lasting at times when those are more important to us than speed.</p> <div class="footnotes"> <hr /> <ol> <li id="fn:pC1P8vIzHpromode"> <p>My guess is that &#8220;Pro Mode&#8221; doesn&#8217;t raise the peak performance, but instead raises the fan speeds to allow longer sustained operation at high Turbo Boost speeds.&#160;<a href="#fnref:pC1P8vIzHpromode" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pC1P8vIzHldm"> <p>Low Power Mode has been so successful on iOS that Apple also thought it worthwhile to add a Low Data Mode to iOS 13, offering similar control over data usage. (Mac owners can get similar functionality with the excellent <a href="">TripMode</a>.)&#160;<a href="#fnref:pC1P8vIzHldm" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pC1P8vIzHmlpm"> <p>As I wrote <a href="">back then</a>, disabling discrete GPUs and Photos analysis are other obvious contributors to a good Mac Low Power Mode.&#160;<a href="#fnref:pC1P8vIzHmlpm" rev="footnote">&#8617;&#xFE0E;</a></p> </li> </ol> </div> The 16-inch MacBook Pro, 13 Nov 2019 08:30:08 EST<p style="text-align: center; margin-top: 2em; margin-bottom: 2em;"><img class="extrawide" src=""/></p> <p>After my first day with the new 16-inch MacBook Pro, I&#8217;m <em>very</em> optimistic about it.</p> <p style="text-align: center; color: #800; font-weight: bold; padding: 0.5em; background-color: #fee; border-radius: 0.5em; border: 1px solid #fdd; width: 80%; margin: 2em auto;">🎧&nbsp;&nbsp;<a href="">Hear more on today&#8217;s Accidental Tech Podcast!</a></p> <p>Two years ago, I wrote <a href="">a wishlist to fix the MacBook Pro</a>, and the 16-inch <em>doesn&#8217;t</em> actually deliver most of it. But time and technological progress are slowly getting Apple off the hook:</p> <ul> <li><strong>The ports are unchanged.</strong> We&#8217;ll still need dongles. But USB-C is gradually becoming more common, and dongles are slowly — <em>very</em> slowly — getting less shitty.</li> <li><strong>The Touch Bar isn&#8217;t optional.</strong> But a new hardware Esc key removes one of its biggest drawbacks, and accidental input should be reduced by the increased spacing between the Touch Bar and the top row of keys.</li> <li><strong>The power brick still lacks its previous conveniences.</strong> There&#8217;s still no cable management, safety breakaway, or charging LED. But third parties are slowly filling <a href="">some of these gaps</a>.</li> <li><strong>The headphone jack is still on the right (wrong) side,</strong> despite most single-sided headphone cables entering the left earcup. But the need for wired headphones is decreasing over time.</li> </ul> <p>Addressing those would be nice, but as I wrote then, they paled in comparison to one huge issue: the butterfly keyboard.</p> <blockquote> <p><strong>The MacBook Pro must return to scissor keyswitches.</strong> If Apple only changes one thing about the next MacBook Pro, it should be this. It&#8217;s far more important than anything else on this list. […]</p> <p>The <a href="">Magic Keyboard&#8217;s</a> scissor switches feel similar, but with a bit more travel, and all of the reliability and resilience of previous keyboard generations. […]</p> <p>The Magic Keyboard only needs one change to be perfect for the MacBook Pro: returning to the &#8220;inverted-T&#8221; arrow-key arrangement by making the left- and right-arrow keys half-height again. This arrangement is much more natural and less error-prone because we can align our fingers by feeling the &#8220;T&#8221; shape, a crucial affordance for such frequently used keys that are so far from the home row.</p> </blockquote> <p>That&#8217;s exactly what they&#8217;ve done, and I couldn&#8217;t be happier.</p> <p>The new 16-inch MacBook Pro is a great computer in most other ways, but so were the MacBook Pros from the last few years. They were fast, powerful, capable workstations&#8230; but the butterfly keyboard took away from it all.</p> <p>Not anymore.</p> <p style="text-align: center; margin-top: 2em; margin-bottom: 2em;"><img src=""/></p> <p style="text-align: center; margin-top: 2em; margin-bottom: 2em;"><img src=""/></p> <p>I&#8217;m on cloud nine. Look at this glorious keyboard! An Esc key! Inverted-T arrow keys! A millimeter of key travel! Enough spacing between the keys for our fingers to accurately orient themselves! And keystrokes will probably work, 100% of the time, for years!</p> <p>Five years ago, nobody would&#8217;ve considered any of these noteworthy, and readers would&#8217;ve suspected you weren&#8217;t of sound mind if you included them in a review.</p> <p>Five years ago, laptop keyboards were <em>fine</em>. Everyone was pretty much satisfied with the ones they had, they worked, and we never had to talk or think about them.</p> <p>Today, finally, we begin heading back to that world.</p> <p style="text-align: center; margin-top: 2em; margin-bottom: 2em;"><img src=""/></p> <p>The butterfly keyboard was an anomaly — it was a huge departure from everything else we&#8217;d ever used, mostly not in good ways.</p> <p>The new keyboard is very similar to the recent desktop Magic Keyboard, and I expect it to have a wide appeal, just as the Magic Keyboard does. It has slightly less travel and spacing, but the overall feeling is very similar — and it&#8217;s nothing at all like the butterfly keyboard.</p> <p>I absolutely <em>love</em> it — not because it&#8217;s the most amazing keyboard in the world, but because it&#8217;s completely forgettable in the best possible way. It just feels <em>normal</em> again.</p> <p>There&#8217;s a lot more to love about the 16-inch MacBook Pro. The screen and battery are bigger, but the size and weight barely increased. It&#8217;s almost as fast as my iMac Pro, and the new thermals can sustain higher performance. The speakers and microphone got huge, unexpected improvements.</p> <p>And I didn&#8217;t get everything I wanted. But many of my wishlist items fall outside of what Apple is likely to <em>ever</em> do, and all of them are <em>much</em> less important than making the computer&#8217;s primary input device functional, acceptable, and reliable. Now we have the luxury of being able to complain about less-urgent wishes.</p> <p>The biggest change is that I finally don&#8217;t feel like it&#8217;s constantly fighting me. Its design doesn&#8217;t feel spiteful. It&#8217;s a computer that doesn&#8217;t seem to hate being a computer. I&#8217;m not afraid to use it in the world, and I&#8217;m not avoiding using it because it&#8217;s unpleasant. The butterfly keyboard was the opposite, it never got better, I never got used to it, and good riddance to it.</p> <p>Following in the footsteps of the fantastic iMac Pro, updated Mac Mini, and upcoming Mac Pro, the release of the 16-inch MacBook Pro ends a painful chapter of neglect and hubristic design of the Mac. Apple has finally turned the ship around.</p> <p>We haven&#8217;t had long enough to fully test it yet. There may be flaws or shortcomings discovered over time — there usually are (and always have been). But frankly, it could catch fire twice a week and it would still be my favorite laptop Apple has made since 2015. Fortunately, upon initial usage, nothing bad really jumps out.</p> <p>The new MacBook Pro has no massive asterisks or qualifications. It&#8217;s a great computer, period, and it feels <em>so good</em> to be able to say that again.</p> <p>For the first time in years, without any major exceptions, we can see that Apple loves computers as much as we do.</p> <p style="text-align: center; color: #800; font-weight: bold; padding: 0.5em; background-color: #fee; border-radius: 0.5em; border: 1px solid #fdd; width: 80%; margin: 2em auto;">🎧&nbsp;&nbsp;<a href="">Much more detail and discussion in the podcast!</a></p> Overcast summer update, 21 Jul 2019 16:14:44 EDT<p>Today&#8217;s <a href="">Overcast update</a> (2019.6) brings some great new features.</p> <p>But first, I need to set low expectations for iOS 13, watchOS 6, and macOS Catalina updates this fall. Halfway through the summer, I&#8217;ve made much less progress than expected, having been overwhelmed by the required OS changes, my own technical and design debts, and unusually rough betas.</p> <p>Rather than shipping a big iOS update, a standalone Watch app, and a Mac app on day one, these will probably come incrementally over the next year.</p> <p>Fortunately, I haven&#8217;t stopped improving the app in the meantime.</p> <h3>Per-podcast customization, longer clips</h3> <p><strong>You can now set download-vs.-stream and auto-delete behavior per podcast,</strong> one of the most frequently requested features over the last few years. (Sorry it took so long &#8212; it required a lot of server-side work for uninteresting reasons.)</p> <p><strong>I&#8217;ve also raised the <a href="">clip-sharing</a> length limit to 90 seconds.</strong> When I debuted this feature, I had to guess how it would be used and received, and 60 seconds seemed like a good limit. In practice, that&#8217;s sometimes a <em>bit</em> too short to capture a complete thought. 90 seconds should be better &#8212; most clips won&#8217;t need to be that long, but it&#8217;ll be nice to have the headroom when you need it.</p> <h3>&#8220;Suggestions for You&#8221; replacing Twitter</h3> <p>Overcast has had a Twitter-powered social-recommendations feature since version 1.0 in 2014, which made sense at the time: I didn&#8217;t have any popularity data to generate recommendations from, and social networks were nicer places to be than they are today.</p> <p>But after five years, only 10% of active users have connected a Twitter account in Overcast, and only 0.2% of new podcast subscriptions have actually been added via Twitter recommendations.</p> <p>Not only was the feature not providing much value to the 10% of people who enabled it, but the other 90% of Overcast&#8217;s customers haven&#8217;t been getting personalized recommendations at all.</p> <p>In the meantime, I&#8217;ve accumulated five years of popularity data, so I tried writing my own recommendation engine. It worked — and it&#8217;s <em>better</em>.</p> <p><strong>Overcast now offers its own data-driven recommendation engine,</strong> and I&#8217;ve removed Twitter integration entirely.</p> <p>Podcasts in the new &#8220;Suggestions for You&#8221; section of the Add Podcast screen are based on the shows you subscribe to, and what else their subscribers subscribe to, which gives much better recommendations without involving any social networks.</p> <p>Most importantly, it works for <em>all</em> of Overcast&#8217;s customers.</p> <p style="text-align: center; color: #ccc;">*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</p> <p>As always, <a href="">Overcast is free in the App Store</a>. Give it a try.</p> Apple is Listening, 09 Jun 2019 21:07:58 EDT<p>Something big changed at Apple around the beginning of 2017.</p> <p>They had encountered significant turbulence in the product line over the preceding years, especially Macs. It was a rough time to be a pro Mac user.</p> <p>The “trash can” 2013 Mac Pro addressed only a fraction of the needs solved by the previous “cheese grater” towers, aged quickly without critical upgrade paths, and suffered from high GPU-failure rates from its cooling solution — all because its design prioritized size and appearance over performance and versatility in the one Mac model that should never make that tradeoff.</p> <p>Over the next few years, it became clear that the Mac Pro was an embarrassing, outdated flop that Apple seemed to have little intention of ever updating, leaving its customers feeling unheard and abandoned. I think Apple learned a small lesson from it, but they learned a much bigger one a few years later.</p> <p>The current MacBook Pro generation launched in late 2016, and I think Apple was truly caught completely by surprise when the new Touch Bar, sparse USB-C-only port offerings, high prices, and highly polarizing butterfly keyboard were met with harsh criticism, mixed reviews, and high failure rates. This one <em>really</em> hurt: while the Mac Pro is a niche machine for the highest-end and most-specialized needs, the popular MacBook Pro is the lifeblood of the Mac.</p> <p>By the end of 2016, in addition to the generally buggy, neglected state macOS seemed to be perpetually stuck in, Apple had replaced its entire “pro” Mac lineup with controversial, limiting products that seemed optimized to flex Apple’s industrial-design muscles rather than actually addressing their customers’ needs.</p> <p>The only company that can make computers for our OS seemed incapable of making good computers anymore. Each update threatened to remove or break things we needed or loved. Their newest designs felt punitive, rather than feeling like a celebration of computing.</p> <p>Then, in April 2017, out of nowhere, Apple held <a href="">a Mac Pro roundtable discussion</a> with the press to announce that they were in the early stages of completely redesigning the Mac Pro.<sup id="fnref:p8ZSWN7zM1"><a href="#fn:p8ZSWN7zM1" rel="footnote">1</a></sup></p> <p><a href="">The follow-up briefing a year later</a> promised that the new Mac Pro would be released in 2019, and publicized the existence of a “Pro Workflow Team” of real pro users working inside Apple to inform the direction of their pro hardware and software.</p> <p>It sounded like they&#8217;d gone from not listening to their customers at all to an institutionalized <em>process</em> of listening. And the newly designed Macs released since then have been <em>great</em>.<sup id="fnref:p8ZSWN7zM3"><a href="#fn:p8ZSWN7zM3" rel="footnote">2</a></sup></p> <p>The late-2017 iMac Pro, which I’m using to write this, is the best Mac I’ve ever owned by far. It’s versatile, incredibly powerful, beautiful, and silent. It’s so good that I’ll probably never really need a Mac Pro again,<sup id="fnref:p8ZSWN7zM2"><a href="#fn:p8ZSWN7zM2" rel="footnote">3</a></sup> and if this was the only new “Mac Pro”, I’d be mostly fine with that.</p> <p>The late-2018 Mac Mini replaced a pitiful, punitive, neglected relic with a practical, powerful mini-Mac-Pro. Apple could’ve let it die, or replaced it with a tiny, no-port marvel of uselessness, but instead, they made a computer so good that <a href="">I started and ended a YouTube mini-career</a> just to review it.</p> <p>And the <a href="">2019 Mac Pro</a>, finally unveiled last week, looks to be absolutely <em>killer</em> — it’s the first true successor to the tower Mac Pro, which saw its last real update almost a <em>decade</em> ago in 2010.<sup id="fnref:p8ZSWN7zM4"><a href="#fn:p8ZSWN7zM4" rel="footnote">4</a></sup> It’s big, bulky, ludicrously fast, and almost obscenely upgradeable — <em>exactly</em> what a Mac Pro needs to be, and far better than any of us expected.</p> <p>The new Mac Pro is, truly, a celebration of computing.</p> <p>Even more importantly than any hardware releases, macOS itself has also seen massive engineering effort recently. For the first time in a decade, the Mac was a major focus of WWDC, with great new APIs poised to usher in a huge wave of fresh software.</p> <p>To be fair, this story hasn’t ended yet. The Mac Pro isn’t actually out yet (and will be <em>very</em> expensive), they still need to resolve the problematic MacBook Pro with its next generation (rumors are promising), and the lack of standalone Apple displays under <em>six thousand dollars</em> really hurts the Mac Pro story.<sup id="fnref:p8ZSWN7zM5"><a href="#fn:p8ZSWN7zM5" rel="footnote">5</a></sup></p> <p>But I’m optimistic for the first time in years.</p> <p>It’s hard to tell when Apple is listening. They speak concisely, infrequently, and only when they’re ready, saying absolutely <em>nothing</em> in the meantime, even when we&#8217;re all screaming about a product line as if it&#8217;s on fire. They make great progress, but often with <a href="">courageous</a> losses that never get reversed, so an extended silence because we&#8217;re stuck with a change forever is indistinguishable from an extended silence because the fix isn’t ready yet.</p> <p>But there has clearly been a major shift in direction for the better since early 2017, and they couldn’t be more clear now:</p> <p>Apple is listening again, they’ve still <em>got</em> it, and the Mac is back.</p> <div class="footnotes"> <hr /> <ol> <li id="fn:p8ZSWN7zM1"> <p>Based on what we’ve learned since, they had likely started the project a <em>very</em> short time before holding the roundtable.&#160;<a href="#fnref:p8ZSWN7zM1" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:p8ZSWN7zM3"> <p>I’m excluding the 2018 MacBook Air because it feels like a stopgap that wasn’t originally planned to exist — the no-Touch-Bar 13” MacBook “Escape” seemed intended to replace it — that was rushed into the 2016-era generation mid-cycle, rather than being the first of a new design. Even so, with the large exception of the butterfly keyboard, it’s quite good.&#160;<a href="#fnref:p8ZSWN7zM3" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:p8ZSWN7zM2"> <p>This doesn’t necessarily mean I won’t buy one.&#160;<a href="#fnref:p8ZSWN7zM2" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:p8ZSWN7zM4"> <p>The 2010/“2012” Mac Pro was so good, and so upgradeable, that it’s <em>still</em> in surprisingly widespread use today for needs that weren’t possible or compelling on the “trashcan” successor.&#160;<a href="#fnref:p8ZSWN7zM4" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:p8ZSWN7zM5"> <p>And the MacBook Pro. A very common setup for developers — Apple’s largest identified segment of pro users — is a 15” MacBook Pro connected to an external monitor, for which a good solution no longer exists. Developers would be much better served by a $1,500-ish standalone version of the iMac’s 5K display than a $6,000 XDR reference monitor for professional video colorists.&#160;<a href="#fnref:p8ZSWN7zM5" rev="footnote">&#8617;&#xFE0E;</a></p> </li> </ol> </div> Clip sharing with Overcast, 27 Apr 2019 12:41:33 EDT<p>Sharing podcasts has never been easy, but I&#8217;ve always tried to lead the way with <a href="">Overcast</a>, with publicly shareable episode links and optional recommendations from your Twitter friends since version 1.0 in 2014.</p> <p>Podcast sharing has been limited to audio and links, but today&#8217;s social networks are more reliant on images and video, especially Instagram. Podcasts need video clips to be shared more easily today.</p> <p>I&#8217;ve seen some video clips from tools specific to certain podcast networks or hosts, but they were never available to everyone, or for every show. So people mostly just haven&#8217;t shared podcast clips, understandably, because it has been too hard.</p> <p>Not anymore.</p> <p style="text-align: center; margin-bottom: 2em;"> <video id="shareclipvideo" preload="none" poster="" style="max-width: 50%; border: 2px solid #eee; border-radius: 12px;" onclick="if (this.paused); else this.pause();" onplay="document.getElementById('shareclippp').innerHTML = '⏸️';" onpause="document.getElementById('shareclippp').innerHTML = '▶️';"> <source src="" type='video/mp4; codecs="hev1.1.6.L93.B0"'/> <source src="" type='video/mp4; codecs="avc1.42E01E"'/> <source src="" type='video/webm; codecs="vp8.0"'/> <img src="" style="max-width: 50%; border: 1px solid #eee; border-radius: 12px;"/> </video><br/> <a href="#" id="shareclippp" style="text-transform: uppercase; color: #aaa; text-decoration: none;" onclick="var v = document.getElementById('shareclipvideo'); if (v.paused); else v.pause(); return false;">▶️</a> <a href="#" style="text-transform: uppercase; color: #aaa; text-decoration: none;" onclick="document.getElementById('shareclipvideo').currentTime = 0; return false;">↩️</a> </p> <p><a href="">This remark on Unco</a> by <a href="">Stephen Hackett</a> inspired me to finally solve this problem in a way that worked easily, for all podcasts, for both podcasters and listeners to use.</p> <p>With today&#8217;s 2019.4 update<sup id="fnref:pccjB7nMq1"><a href="#fn:pccjB7nMq1" rel="footnote">1</a></sup>, you can now share audio or <strong>video</strong> clips, up to a minute each, from any public podcast. Simply tap the share button in the upper-right corner.</p> <p style="text-align: center;"> <img style="border-radius: 6px; max-width: 30%; border: 2px solid #eee; margin-right: 2%;" src=""/><img style="border-radius: 6px; max-width: 30%; border: 2px solid #eee; margin-right: 2%;" src=""/><img style="border-radius: 6px; max-width: 30%; border: 2px solid #eee;" src=""/> </p> <p>You can generate an audio clip, or <strong>portrait, landscape, or square video,</strong> using your current Overcast theme setting.</p> <p>In order to help spread podcasts further, I didn&#8217;t want to be heavy-handed in the Overcast branding &#8212; not everyone wants to advertise for one specific podcast app when promoting their shows. So the &#8220;Shared with Overcast&#8221; badge is optional, and if you&#8217;d like, you can also add an Apple Podcasts badge.</p> <p>Finally, I wanted to extend the same app-agnosticism to Overcast&#8217;s share links. While this design still needs a lot of modernization, I&#8217;ve done a small refresh:</p> <p style="text-align: center;"> <a href=""><img style="border-radius: 6px; max-width: 50%; border: 2px solid #eee; margin-right: 2%;" src=""/></a> </p> <p>Now, for non-logged-in visitors, Overcast&#8217;s public sharing pages display badges for other podcast apps and the RSS feed for any podcast listed in Apple Podcasts.</p> <p>It&#8217;s important for me to promote other apps like this, and to make it easy even for other people&#8217;s customers to benefit from Overcast&#8217;s sharing features, because <a href="">there are much bigger threats</a> than letting other open-ecosystem podcast apps get a few more users.</p> <p>For podcasting to remain open and free, we must not leave major shortcomings for proprietary, locked-down services to exploit.<sup id="fnref:pccjB7nMq2"><a href="#fn:pccjB7nMq2" rel="footnote">2</a></sup> Conversely, the more we strengthen the open podcast ecosystem with content, functionality, and ease of use, the larger the barrier becomes that any walled garden must overcome to be compelling.</p> <p>One of the most common shortcomings we hear is that podcasts are hard to share. Hopefully, Overcast&#8217;s new clip-sharing feature changes that, and other apps build similar features soon.</p> <p>So <a href="">go get Overcast</a> and start sharing your favorite moments. It&#8217;ll help me, of course, but more importantly, it&#8217;ll help your favorite shows gain listeners, and it&#8217;ll strengthen the amazing, open, standards-based world of podcasting.</p> <div class="footnotes"> <hr /> <ol> <li id="fn:pccjB7nMq1"> <p>Like <a href="">Slopes</a> and <a href="">Castro</a>, I&#8217;ve changed to a date-based version-numbering scheme &#8212; 2019.4 is the fourth update released in 2019, the next version will be 2019.5, and so on &#8212; partly because version numbers don&#8217;t really matter anymore, but mostly because I no longer wanted to delay completed features until a major-version change or worry that I didn&#8217;t do enough to justify a certain number.&#160;<a href="#fnref:pccjB7nMq1" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pccjB7nMq2"> <p>YouTube was able to dominate video because it made everything easy in a medium that (at the time) was very hard to do elsewhere. If a proprietary service takes a very hard aspect of podcasting and makes it very easy, it may rapidly rise to prominence.</p> <p>Other major shortcomings I&#8217;m concerned about: the difficulty of getting sponsorships for small shows (&#8220;AdSense for podcasts&#8221;), and the complexity of creation and publishing (&#8220;Tumblr for podcasts&#8221;). This is probably why Spotify bought Anchor.&#160;<a href="#fnref:pccjB7nMq2" rev="footnote">&#8617;&#xFE0E;</a></p> </li> </ol> </div> Overcast 5.1 with Instant Search, 28 Jan 2019 13:14:38 EST<p style="text-align: center; margin-bottom: 2em;"> <video id="instantsearchvideo" loop autoplay muted playsinline poster="" style="max-width: 70%; border: 1px solid #eee; border-radius: 12px;" onclick="if (this.paused); else this.pause();" onplay="document.getElementById('instantsearchpp').innerHTML = '⏸️';" onpause="document.getElementById('instantsearchpp').innerHTML = '▶️';"> <source src="" type='video/mp4; codecs="hev1.1.6.L93.B0"'/> <source src="" type='video/mp4; codecs="avc1.42E01E"'/> <source src="" type='video/webm; codecs="vp8.0"'/> <track src="" kind="descriptions" srclang="en"/> <img src="" style="max-width: 70%; border: 1px solid #eee; border-radius: 12px;"/> </video><br/> <a href="#" id="instantsearchpp" style="text-transform: uppercase; color: #aaa; text-decoration: none;" onclick="var v = document.getElementById('instantsearchvideo'); if (v.paused); else v.pause(); return false;">▶️</a> </p> <p>The <em>first</em> thing someone does in a podcast app is add some podcasts, and most active <a href="">Overcast</a> users add at least two new podcasts each month.</p> <p>Over 80% of podcasts are added to Overcast by searching, with the vast majority as searches for a specific podcast by name (rather than searching for generic keywords, such as &#8220;business&#8221;).</p> <p>Good search is a critical, differentiating feature of any podcast app.</p> <p>I&#8217;m not satisfied if the podcast you&#8217;re looking for is somewhere in the middle of a long list &#8212; I want it to be the first one, displayed quickly, after typing the fewest characters possible. I&#8217;ve been building toward this by analyzing years of popularity statistics and anonymous search data.</p> <p>Instant Search is the next step in Overcast&#8217;s search evolution. It combines a small local cache with a highly optimized search service to give the most relevant results <em>immediately</em> as you type, even after only a single letter.<sup id="fnref:p2xPEWvo61"><a href="#fn:p2xPEWvo61" rel="footnote">1</a></sup></p> <p>It&#8217;s a dramatic, delightful improvement to a critical, frequently used feature. This was a lot of fun to build, and I&#8217;m proud of it.</p> <p>See for yourself! <a href="">Overcast is free on the App Store</a>.</p> <div class="footnotes"> <hr /> <ol> <li id="fn:p2xPEWvo61"> <p>If Instant Search isn&#8217;t instant right after you update, the cache hasn&#8217;t fully downloaded yet. It&#8217;s downloaded weekly, only on Wi-Fi, and is less than 5 MB.&#160;<a href="#fnref:p2xPEWvo61" rev="footnote">&#8617;&#xFE0E;</a></p> </li> </ol> </div> The 2018 iPad Pro, 09 Nov 2018 15:18:04 EST<p><style type="text/css"><!-- /* thanks */ .fixed-aspect-wrapper { width: 100%; /* desired width */ padding: 0; } .fixed-aspect-padder { height: 0; padding: 0 0 56.25%; /* desired aspect ratio: (height / width) */ position: relative; margin: 0; width: auto; } .whatever-needs-the-fixed-aspect { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } --></style></p> <div class="fixed-aspect-wrapper"> <div class="fixed-aspect-padder"> <iframe class="whatever-needs-the-fixed-aspect" src="" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> </div> </div> <p><a href="">Watch my video review</a> of the new iPad Pro in both sizes.</p> <p>Rather than try to be comprehensive, I focused on what matters most to me: size choice between the 11&#8221; and 12.9&#8221;, the Smart Keyboard Folio from my perspective as a frequent 10.5&#8221; Smart Keyboard user, the new Pencil, and why “getting work done” isn’t important to me.</p> The 2018 Mac Mini, 06 Nov 2018 06:01:39 EST<p><style type="text/css"><!-- .reviewgraph { margin-top: 2em; margin-bottom: 2em; } h2 { margin-top: 2em; } /* thanks */ .fixed-aspect-wrapper { width: 100%; /* desired width */ padding: 0; } .fixed-aspect-padder { height: 0; padding: 0 0 56.25%; /* desired aspect ratio: (height / width) */ position: relative; margin: 0; width: auto; } .whatever-needs-the-fixed-aspect { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } --></style></p> <div class="fixed-aspect-wrapper"> <div class="fixed-aspect-padder"> <iframe class="whatever-needs-the-fixed-aspect" src="" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> </div> </div> <p style="text-align: center; margin-bottom: 1.5em;"> <b><a href="">Watch the video review</a></b> </p> <p>I hardly ever think about my Mac Mini, but it serves a vital role for my family as our <a href="">home-theater mixer</a>, <a href="">Plex</a> server, <a href="">ScanSnap</a> server, Apple Photos backup, and <a href="">Backblaze</a> host for our <a href="">NAS</a>.<sup id="fnref:pQF3OuDFd1"><a href="#fn:pQF3OuDFd1" rel="footnote">1</a></sup> Almost every port on the back is in use, and it runs 24/7, reliably, in total silence.</p> <p>Until last week, I thought it would be the last Mac Mini that Apple ever made.</p> <p>And when rumors started swirling about an imminent Mac Mini update, I assumed the worst: if it came at all, it would be a tiny box with a slow, ultra-low-power processor and almost zero ports, optimizing for small size instead of versatility.</p> <p>I don’t think this was an unreasonable fear after the 2014 Mac Mini update, which made many key aspects much worse without making anything much better. It seemed clear then, and for the following <strong>four years</strong> that it went without an update, that Apple held the Mac Mini and its customers in very low regard.</p> <p>Not anymore.</p> <p>The 2018 Mac Mini is real, and it’s spectacular.</p> <p>It makes almost nothing worse and almost everything better, finally bringing the Mac Mini into the modern age.</p> <p style="text-align: center; margin-top: 1.5em; margin-bottom: 1.5em;"> <img src="" style="border: 1px solid #ccc;"/> <br/> <small>Ports! Glorious ports!</small> </p> <p>Number one — and this is a big one these days, especially for this product — is that it’s not any <em>less</em> useful or versatile than the outgoing Mac Mini, including the generous assortment of ports. If the previous one served a role for you, the new one can probably do it just as well, and probably better and faster, with minimal donglage.<sup id="fnref:pQF3OuDFd2"><a href="#fn:pQF3OuDFd2" rel="footnote">2</a></sup></p> <p>It’s the same size as the old one, which is the right tradeoff. I know zero Mac Mini owners who really need it to get smaller, and many who don’t want it to get fewer ports or worse performance.</p> <p>The point of the Mac Mini is to be as versatile as possible, addressing lots of diverse and edge-case needs that the other Macs can’t with their vastly different form factors and more opinionated designs. The Mac Mini needs to be a utility product, not a design statement. (Although, even as someone tired of space-gray everything, I have to admit that the Mini looks fantastic in its new color.)</p> <p>The base price has increased to $800, and that’s not great. It’s partly justifiable because it’s much higher-end than before — the processors are <strong>much</strong> better, the architecture is higher-end and includes big advances like the T2, and all-SSD is standard — but it’s still an expensive product in absolute terms.</p> <p>Apple lent me a high-end configuration for review — 6-core i7, 32 GB RAM, 1 TB SSD — which would cost $2499 (much of which is the SSD). This would’ve sounded crazy to spend on a Mac Mini a few years ago, but when it’s specced up like this, it’s targeting a much higher-end market than the previous model could. Compared to similarly specced iMacs and MacBook Pros, the pricing is generally reasonable.</p> <p>And this can truly be a pro desktop, with just one exception.</p> <h2>Benchmarks</h2> <p>The big story to me is how incredibly <strong>fast</strong> this thing is. Granted, I’m testing the fastest CPU offered, but <strong>damn</strong>.</p> <p class="reviewgraph" style="text-align: center;"> <a href=""><img src=""/></a> </p> <p><a href="">Geekbench</a> results are very strong. The i7 Mac Mini scored better on single-core performance than <a href="">every other Mac today (!)</a> at 5912, and its multi-core score of nearly 24,740 beats every Mac to date except the iMac Pro and the old 12-core 2013 Mac Pro.</p> <p>“Performance-competitive with pro Macs” was not high on my prediction list for a Mac Mini update, but here we are.</p> <p class="reviewgraph" style="text-align: center;"> <a href=""><img src=""/></a> </p> <p>As the rate of CPU advancement has slowed dramatically over the last few years, Apple has found other ways to improve performance. The T2 is great for lots of <a href="">security</a> reasons — I wouldn’t buy a new Mac these days without it — but what you’re seeing here is its strength as a ridiculously fast SSD controller.</p> <p>This Mac Mini builds my app, <a href="">Overcast</a>, <strong>much</strong> faster than my maxed-out 13-inch MacBook Pro, and about as quickly as my 10-core iMac Pro! Obviously, to achieve this result with only 6 cores, it’s not maxing out the CPU 100% of the time — it hits it in bursts while juggling a lot between the SSD and memory — but the result is that it’s incredibly fast as a development machine.</p> <p class="reviewgraph" style="text-align: center;"> <a href=""><img src=""/></a> </p> <p>The <a href="">Blackmagick Disk Speed Test</a> shows that the raw SSD performance is effectively identical to the other T2 Macs shipped to date, and a huge improvement over the four-year-old Mac Mini.</p> <p class="reviewgraph" style="text-align: center;"> <a href=""><img src=""/></a> </p> <p>A lot of people use Mac Minis as media or Plex servers, so I ran an H.265 transcoding test with <code>ffmpeg</code>. This maxes out all CPU cores, so the results predictably scale with the core count: the 6-core Mac Mini was much faster than the 4-core MacBook Pro, but the 10-core iMac Pro beat them both.</p> <p>But if an app supports the T2&#8217;s hardware HEVC encoder,<sup id="fnref:pQF3OuDFdhevc"><a href="#fn:pQF3OuDFdhevc" rel="footnote">3</a></sup> it can go <strong>much</strong> faster. And since every T2 so far performs identically, all T2 machines &#8212; from the 2018 MacBook Air to the iMac Pro &#8212; encode HEVC this way at the same speed, and all in complete silence because they&#8217;re barely touching the CPU.</p> <p>I wasn&#8217;t able to notice any quality differences between the videos encoded with <code>x265</code> and the T2&#8217;s hardware acceleration.</p> <p class="reviewgraph" style="text-align: center;"> <a href=""><img src=""/></a> </p> <p>The only spec that lets it down is the Intel GPU. It’s fast enough for common tasks, but if your workload benefits from a strong GPU, you’re better off going for an iMac or a 15-inch MacBook Pro, or considering an eGPU setup.</p> <p>Many Mac lines rely on Intel’s integrated GPUs to fit their physical and thermal needs, and Intel has been incredibly inconsistent over the last few years in delivering updated CPU-GPU combinations that would be suitable for many Macs.</p> <p>We often blame Intel’s CPU roadmap (or Apple’s seeming indifference) for the lack of updates to certain Mac lines, but Intel’s GPU offerings are often the bigger issue. This is Intel’s fault, but it’s Apple’s problem — and Apple passes that problem right along to its customers.</p> <p>But that’s it — aside from price, that’s the only downside. The GPU sucks. Everything else is awesome.</p> <p>If you don’t need a strong GPU — and honestly, most Mac Mini use-cases don’t — this is a solid pick for a general-purpose Mac, even at the base-level configuration. Spec it up, and it’s more like a mini-Mac Pro.</p> <p>A few assorted notes, with apologies for stealing <a href="">Gruber&#8217;s</a> format:</p> <ul> <li><p>It’s silent at idle. The i7’s fan noise does become clearly audible when it’s under heavy load: it’s in the ballpark of a modern MacBook Pro, but quieter.</p> <p>Interestingly, I <a href="">disabled Turbo Boost</a> to simulate the base i3 model’s thermals, and couldn’t get the fan to spin up audibly, no matter what I did. Those who prioritize silence under heavy loads should probably stick with the i3.</p></li> <li>This is the first non-iMac desktop Mac that lets you plug in a 5K display, at full quality, without dual cables or other unreliable hacks. We finally have 5K Retina Mac options beyond the iMac! Unfortunately, we still don’t have any great standalone 5K displays. (The LG UltraFine isn’t.)</li> <li><p>You can upgrade the RAM again! I <strong>never</strong> would’ve guessed this was coming, and I believe it’s the first time in a <strong>long</strong> time that an Apple product’s direct successor became <strong>more</strong> upgradeable and serviceable.</p> <p>I still recommend getting it with the right amount of RAM from Apple if possible, since third-party RAM has historically been a mess of unreliability and finger-pointing, but if you need that, it’s back. (The security screws inside — TR6? — still need some <a href="">iFixit</a> tools to get past.)</p></li> </ul> <h2>I Can&#8217;t Believe The Mac Mini Is This Awesome, I Can&#8217;t Even Say &#8220;Again&#8221; Because It Never Was</h2> <p>A new Mac Mini could&#8217;ve been so much worse. At many times in its past, it has seemed unloved, neglected, and downright punitive &#8212; a similar pattern to Apple&#8217;s other headless desktop, the Mac Pro. It seemed for a while that Apple lacked any interest in making Macs anymore, especially desktops.</p> <p>Last year, with the introduction of the absolutely stellar iMac Pro, Apple showed us a glimpse of a potential new direction. It was downright perfect &#8212; a love letter to the Mac and its pro desktop users, and a clear turnaround in the way the company views the Mac for the better.</p> <p>We didn&#8217;t know until now whether the iMac Pro&#8217;s greatness was a fluke. But now we have another data point: the last two desktops out of Apple have been incredible. After this, I have faith that they&#8217;re going to do the new Mac Pro justice when it finally ships next year.</p> <p>The new Mac Mini is a great update, out of nowhere, to a product we thought would never be updated again.</p> <p>Of course, with Apple’s track record on the Mac Mini, it may never be updated after this. This is either the first in a series of regular updates with which Apple proves that they care about the Mac Mini again, or it’s the last Mac Mini that will ever exist and we’ll all be hoarding them in a few years. We can’t know yet.</p> <p>But today, this is a great update, a wonderful all-arounder for lots of potential needs, and just a fantastic little computer.</p> <div class="footnotes"> <hr /> <ol> <li id="fn:pQF3OuDFd1"> <p>I do this via iSCSI, but I wouldn’t recommend it. It breaks and requires a new $200+ iSCSI initiator with almost every macOS update — which is why my Mac Mini still runs Sierra. In the near future, I’ll just directly attach some giant external hard drives to the Mac Mini and stop using the NAS.&#160;<a href="#fnref:pQF3OuDFd1" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pQF3OuDFd2"> <p>Unless you used optical audio, audio input, or the SD-card reader. (Shit, I use optical in and out.)&#160;<a href="#fnref:pQF3OuDFd2" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pQF3OuDFdhevc"> <p><code>ffmpeg</code> can do it by specifying <code>-c:v hevc_videotoolbox</code> instead of <code>-c:v x265</code>. I also needed <code>-vtag hvc1</code> for the output MP4s with either codec to be playable on macOS.</p> <p><a href="">Compressor</a> uses the T2&#8217;s HEVC acceleration when encoding 8-bit HEVC, but not 10-bit.&#160;<a href="#fnref:pQF3OuDFdhevc" rev="footnote">&#8617;&#xFE0E;</a></p> </li> </ol> </div> Why it’s hard to read the time on Infograph, 09 Oct 2018 14:34:42 EDT<p><style type="text/css"><!-- .watchimg, .roundwatch { border-width: 0; max-width: 30%; margin-left: 0.5%; margin-right: 0.5%; } .roundwatch { max-width: 26%; border: 8px solid #000; border-radius: 20%; border-color: #000; background-color: #000; } p.roundwatches { margin-top: 1.5em; margin-bottom: 1.5em; } p.roundwatches small { opacity: 0.5; } --></style></p> <p>Quick, what time is it?</p> <p class="roundwatches" style="text-align: center;"> <img class="roundwatch" src=""/> </p> <p>If that took you a bit longer than usual to tell the time on the Apple Watch&#8217;s new default Infograph face, you&#8217;re not alone:</p> <ul> <li><a href="">John Gruber finds it &#8220;far too busy&#8221;</a></li> <li><a href="">Jason Snell finds it &#8220;pretty and packed with features&#8221;, but misses hour numerals</a></li> <li><a href="">Zac Hall removes almost everything to improve legibility</a></li> <li><a href="">David Smith wrote his own complications (!) to improve contrast</a></li> </ul> <p>I&#8217;ve configured mine acceptably, but Utility is still <em>far</em> more legible for telling the time at a quick glance:</p> <p class="roundwatches" style="text-align: center;"> <img class="roundwatch" title="My Infograph configuration" src=""/> <img class="roundwatch" title="My Utility configuration" src=""/> <br/><small>Infograph, Utility</small> </p> <p>Infograph suffers from two major issues:</p> <ul> <li>The center complications reduce the contrast between the dial and hands, often making the hands hard to locate. This is avoidable with customization, although the defaults should be much more conservative.</li> <li>It takes too much cognitive effort (and therefore time) to distinguish the current hour. This is simply a flawed design.</li> </ul> <p>It&#8217;s faster and easier to read analog time with the 1–12 numerals displayed on a watch, but many people prefer the cleaner look of a watch that uses lines, dots, or other shapes as hour markers instead. (Watch people call these &#8220;indices&#8221;.)</p> <p>And it&#8217;s absolutely possible to design a highly legible dial with hour indices in many different styles. Here are some classics and modern takes:<sup id="fnref:pMiV5VkCX1"><a href="#fn:pMiV5VkCX1" rel="footnote">1</a></sup></p> <p class="roundwatches" style="text-align: center;"> <img class="watchimg" title="Rolex Submariner" src=""/> <img class="watchimg" title="Patek Philippe Nautilus" src=""/> <img class="watchimg" title="A. Lange &amp; Sohne Saxonia" src=""/> <img class="watchimg" title="Seiko Presage SARY085" src=""/> <img class="watchimg" title="Damasko DA44" src=""/> <img class="watchimg" title="Nomos Metro" src=""/> </p> <p>Across a wide variety of brands, styles, and price points, a few key design principles are clear:</p> <ul> <li>The hour markers for 12 (and often 3/6/9) are more prominent.</li> <li>The hour indices are much larger than the minute markings.</li> <li>The hour hands nearly touch the hour indices.</li> </ul> <p>These all improve legibility by making it as fast and easy as possible to know which hour is being indicated (and minimize the chance of an off-by-one error), first by orienting your eyes to the current rotation with the 12 marker, then by minimizing the distance between the hour hand and the indices it&#8217;s between.</p> <p>Apple Watch&#8217;s analog faces <em>all</em> fail to achieve these principles:<sup id="fnref:pMiV5VkCX2"><a href="#fn:pMiV5VkCX2" rel="footnote">2</a></sup></p> <p class="roundwatches" style="text-align: center;"> <img class="roundwatch" title="Color" src=""/> <img class="roundwatch" title="Simple" src=""/> <img class="roundwatch" title="Explorer (no numbers)" src=""/> <br/><small>Color, Simple, Explorer</small> </p> <p>Color, Simple, and Explorer have easily distinguished hour markers, but Explorer&#8217;s are a bit too far from its hour hand.</p> <p>None of them have distinguished 12 markers to aid in orientation.</p> <p>While Explorer omits minute markings altogether, Simple bafflingly uses 30-second markings in place of its minute track, making time-telling even harder. I&#8217;ve never seen another watch with sub-minute markings identical to its minute markings.</p> <p class="roundwatches" style="text-align: center;"> <img class="roundwatch" title="Activity Analog" src=""/> <img class="roundwatch" title="Utility (no numbers)" src=""/> <img class="roundwatch" title="Infograph" src=""/> <br/><small>Activity Analog, Utility, and Infograph without most complications</small> </p> <p>Activity Analog&#8217;s hour markers are faint and far from its hour hand, and the central activity rings quickly eliminate the hands&#8217; contrast against the dial as they progress.</p> <p>Utility (when configured without numbers) improves legibility slightly with its bold hour indices, but they&#8217;re still too small and too far from its hour hand, and there&#8217;s no differentiation for the 12 index.</p> <p>Infograph is similar, but even worse: its hour indices are more faint, it uses 30-second markings instead of minute markings, and its default Calendar display wipes out the top three indices. (At least you can tell which way is up.)</p> <p>Even with almost no complications, the basic essence of the Infograph dial has poor time legibility.</p> <p>When it&#8217;s being used as Apple seems to intend, time-telling at a glance is so difficult that many people have actually suggested setting the <em>digital</em> time as the center complication, at which point the hands are just a nuisance and we should stop pretending it&#8217;s an analog face.</p> <p class="roundwatches" style="text-align: center;"> <img class="roundwatch" alt="Infograph with digital time" src=""/> </p> <p>It&#8217;s great for Apple to offer a wide variety of Apple Watch faces, but most of them are short-lived novelties at best. We&#8217;re three years and four generations into the Apple Watch, and almost every Watch owner I know still uses the same handful of &#8220;good&#8221; faces.</p> <p>If you want digital time with a good deal of complications, Modular is your only good choice (or Infograph Modular on the Series 4).<sup id="fnref:pMiV5VkCX3"><a href="#fn:pMiV5VkCX3" rel="footnote">3</a></sup> If you want analog time with numerals, Utility is the only good option. If you want indices instead of numerals &#8212; probably the most popular analog watch style in the world &#8212; I don&#8217;t think there <em>is</em> a good option.</p> <p>By now, we&#8217;ve seen Apple&#8217;s design range that they&#8217;re willing to ship as Watch faces, and while it seems broad at first glance, it&#8217;s actually pretty narrow.</p> <p>And we&#8217;re restricted to the handful of good watch faces that Apple makes, because other developers aren&#8217;t allowed to make custom Watch faces.</p> <p>The Apple Watch is an amazing feat of technology. It&#8217;s a <em>computer</em>. It can display <em>anything</em>. With no mechanical or physical limitations to hold us back, <em>any</em> watch-face design from <em>anyone</em> could plausibly be built, enabling a range of creativity, style, and usefulness that no single company could ever design on its own.</p> <p>But they won&#8217;t let us. In a time when personal expression and innovation in watch fashion should be booming, they&#8217;re instead being eroded, as everyone in the room is increasingly wearing the same watch with the same two faces.</p> <p>Open this door, Apple.</p> <div class="footnotes"> <hr /> <ol> <li id="fn:pMiV5VkCX1"> <p>You can even see which model the Apple Watch&#8217;s hand shape comes from, which <a href="">is not a coincidence</a>.&#160;<a href="#fnref:pMiV5VkCX1" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pMiV5VkCX2"> <p>For Apple Watch faces offering multiple hour/minute styles, I selected the best one that didn&#8217;t have hour numerals, and most complications were disabled.&#160;<a href="#fnref:pMiV5VkCX2" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pMiV5VkCX3"> <p>Special shout-out to my favorite digital face, <a href="">Solar</a>.&#160;<a href="#fnref:pMiV5VkCX3" rev="footnote">&#8617;&#xFE0E;</a></p> </li> </ol> </div> Overcast 5: Watch, Siri, search, and redesign!, 17 Sep 2018 15:27:02 EDT<p><style type="text/css"><!-- .screenshot1 { border: 1px solid #ccc; max-width: 95%; } .screenshot3 { border: 1px solid #ccc; max-width: 30%; margin-left: 1%; margin-right: 1%; } small { opacity: 0.5; } p.screenshots { margin-top: 1.5em; margin-bottom: 1.5em; } --></style></p> <p class="screenshots" style="text-align: center;"><img class="extrawide" src=""/><br/> <small>I apologize for the low battery level. Busy day.</small> </p> <p>It all started with the watchOS volume widget.</p> <p>You see, <a href="">Overcast&#8217;s</a> previous Apple Watch app really sucked. I did my best with the capabilities of watchOS 1–4, but I couldn&#8217;t give people what they really wanted:</p> <ol> <li><strong>Standalone podcast playback on the Apple Watch</strong> without an iPhone. I briefly offered it through some bad hacks, but <a href="">had to remove it</a>.</li> <li><strong>Volume control on the Watch,</strong> which is increasingly important with the popularity of AirPods.</li> </ol> <p>That&#8217;s why I nearly jumped for joy during the watchOS 5 announcement in June, when Apple unveiled most of my list of <a href="">watchOS changes needed to make good podcast apps</a>.</p> <p>After a very busy summer, standalone Apple Watch playback is back in Overcast, and it&#8217;s actually good this time!</p> <p class="screenshots" style="text-align: center;"><img class="extrawide" src=""/></p> <p>It&#8217;s not perfect:</p> <ul> <li><strong>No cellular.</strong> Apple hasn&#8217;t released a good way to do cellular audio streaming in watchOS, and the bad ways wouldn&#8217;t be very useful.</li> <li><strong>Sending podcasts to the Watch is slow.</strong> Overcast shrinks them to reduce the transfer time, but when (and how quickly) podcasts transfer is tightly controlled by watchOS to preserve battery life. Transfers still sometimes wait forever or silently fail.</li> </ul> <p>Programmers like me can&#8217;t accept that something is just <em>slow</em>, so I&#8217;ve decided to make transfer speed irrelevant. Nobody cares how slowly podcasts transfer if it happens while they&#8217;re asleep!</p> <p><strong>Auto-Sync to Watch</strong> automatically tries to send your most recent podcasts to your Apple Watch whenever it gets a chance.<sup id="fnref:plLbts5im1"><a href="#fn:plLbts5im1" rel="footnote">1</a></sup> You can still send episodes manually from the queue button on an episode (<span style="color: #fc7e0f;">≡<sup>+</sup></span>), but in my testing, I never needed to. Just pick up your Watch and go, and it&#8217;ll already have plenty of podcasts for your outing, all without having to manually sync anything or wait for slow transfers.</p> <p>The Overcast 5.0.1 update, due out in a few days, makes Watch transfers even more reliable. (Sorry. Found a better way after 5.0 was approved.)</p> <p>And <strong>Watch-crown volume control!</strong> Finally, the best way to use Overcast from your Apple Watch isn&#8217;t to delete it, letting the Now Playing app show up instead.</p> <p>That&#8217;s where the other half of my summer workload began.</p> <p>The watchOS volume widget offers minimal customization: just the color of the circle. I couldn&#8217;t make the line width a little narrower to match the rest of Overcast&#8217;s thin-line aesthetic. But that iOS 7-era thin-line aesthetic looked dated, and I&#8217;d wanted a design refresh for a while.</p> <p>I decided to start modernizing the app&#8217;s design, screen by screen. I couldn&#8217;t do it all in one summer, so I started with the screen that needed the most help: Now Playing.</p> <p class="screenshots" style="text-align: center;"> <a href=""><img class="screenshot3" src=""/></a><br/> <small>The previous Now Playing screen in Overcast 4.</small> </p> <p>The biggest problem of the previous design was the center artwork area, a scrollable set of &#8220;pages&#8221; that had speed and effects controls offscreen to the left, and the episode notes offscreen to the right.</p> <p><strong>Nobody ever found them.</strong> I&#8217;ve been getting emails almost <em>every</em> day from people asking where the speed controls were because they set them once and couldn&#8217;t find them again, or saying how they&#8217;d really like my app more if it offered speed controls. The only indication in the interface was three &#8220;page dots&#8221; below the scrollable area, but that wasn&#8217;t enough.</p> <p>The new design maintains the same scrollable pages, but now as obvious, tactile <strong>cards.</strong> In my testing, everyone figured these out immediately.</p> <p class="screenshots" style="text-align: center;"><a href="" ><img class="screenshot3" src="" /></a><a href=""><img class="screenshot3" src=""/></a><a href="" ><img class="screenshot3" src="" /></a></p> <p>Put differently, it&#8217;s like you&#8217;re navigating this through a phone-shaped window in the middle:</p> <p class="screenshots" style="text-align: center;"> <a href=""><img class="screenshot1" src=""/></a><br/> </p> <p>This design is not only more discoverable, but it allows me to fit more controls on screen, and in more reachable areas. Unlike the previous design, I can also fit the same controls on all devices, from the iPhone SE to the iPad Pro.</p> <p>Designing a good Now Playing screen for a music or podcast app that&#8217;s nice, clean, <em>and</em> highly discoverable is incredibly difficult. I think I&#8217;ve finally found a good balance.</p> <p>I&#8217;ve given chapters (when present) their own card with durations and inline progress bars. I&#8217;ve also finally revamped the sleep timer to ditch the ugly alert sheet, give it a proper UI for fast input, and show the remaining time in more useful ways:</p> <p class="screenshots" style="text-align: center;"> <a href="" ><img class="screenshot3" src="" /></a> <a href="" ><img class="screenshot3" src="" /></a> </p> <p>There are lots of other improvements throughout the app as well. Some of the highlights:</p> <p class="screenshots" style="text-align: center;"> <a href="" ><img class="screenshot3" src="" /></a> <a href=""><img class="screenshot3" src=""/></a> <a href="" ><img class="screenshot3" src="" /></a> </p> <ul> <li><strong>Search</strong> your podcasts and current episodes from the main screen, or go into a podcast&#8217;s screen to search its entire archive.</li> <li><strong>Refreshed the podcast screen</strong> a little. (More to come.)</li> <li><strong>Siri Shortcuts</strong> support, of course.</li> </ul> <p>Plus smaller fixes and improvements:</p> <ul> <li>CarPlay performance is much better, especially for people with large collections.</li> <li>Podcasts now display their estimated release frequency (daily, weekly, etc.) if it can be inferred.</li> <li><a href="">Tap-to-load on images</a> now loads all images from the same domain at once.</li> <li>Tons of bug fixes and performance improvements.</li> </ul> <p>Overcast 5 requires iOS 12 and watchOS 5, and as always, it&#8217;s free.</p> <p>Update your devices, then go get <a href="">Overcast</a>!</p> <div class="footnotes"> <hr /> <ol> <li id="fn:plLbts5im1"> <p>Up to 20 episodes are auto-synced today. This number will change as I refine the balance of resource usage. <strong>Auto-Sync to Watch</strong> is on by default and can be turned off in Nitpicky Details.&#160;<a href="#fnref:plLbts5im1" rev="footnote">&#8617;&#xFE0E;</a></p> </li> </ol> </div> Low Power Mode on the Mac, 31 Jul 2018 15:12:17 EDT<p>Laptop battery life is decreasingly relevant to me as more airplanes offer power outlets. But sometimes you lose that lottery, as I did on my latest 8-hour daytime flight.</p> <p>Apple&#8217;s &#8220;Up to 10 hours&#8221; claim doesn&#8217;t apply to my work,<sup id="fnref:pfKDuWxMd1"><a href="#fn:pfKDuWxMd1" rel="footnote">1</a></sup> which is usually a mix of Xcode, web browsing, and social time-wasting, so I knew I&#8217;d have to seriously conserve power.</p> <p>Sometimes, you just need Low Power Mode: the switch added to iOS a few years ago to conserve battery life when you need it, at the expense of full performance and background tasks.</p> <p>There&#8217;s no such feature on Mac laptops, but there should be. It could:</p> <ul> <li>Disable the discrete GPU on 15-inch models unless required for hardware reasons<sup id="fnref:pfKDuWxMd2"><a href="#fn:pfKDuWxMd2" rel="footnote">2</a></sup></li> <li>Pause Photos syncing and analysis</li> <li>Pause Spotlight indexing</li> <li>Reduce the frequency of Time Machine backups</li> <li>Don&#8217;t download or install software updates</li> <li>Don&#8217;t download new content in iTunes</li> <li>Auto-dim the screen after a shorter time</li> <li>Let third-party apps detect Low Power Mode and reduce their background operations to only essential work</li> </ul> <p>And the big one:</p> <ul> <li>Reduce the processor&#8217;s maximum wattage or disable <a href="">Turbo Boost</a></li> </ul> <p>Back in 2015, I <a href="">experimented with disabling Turbo Boost</a> and discovered that it reduced performance by about a third, but also boosted battery life by almost as much. Since then, I&#8217;ve been running <a href="">Turbo Boost Switcher Pro</a> to automatically disable Turbo Boost when I&#8217;m running on battery power, and it has been wonderful: I made it through that 8-hour flight only because Turbo Boost was off.</p> <p>Over the last few days, I&#8217;ve run battery tests on my 2018 13-inch MacBook Pro with the (awesome) 2.7 GHz i7 and my 2015 2.2 GHz 15-inch<sup id="fnref:pfKDuWxMd3"><a href="#fn:pfKDuWxMd3" rel="footnote">3</a></sup> to see how far I could push the battery life using <a href="">Volta</a>, which can disable Turbo Boost and/or set wattage limits on the CPU.</p> <p>My test was based on the &#8220;Heavy&#8221; script <a href="">from last time</a>, but using <code>xcodebuild</code> every few minutes with Overcast&#8217;s current codebase (which is larger and includes some Swift). Improvements are in green and performance reductions are in red:</p> <p><style><!-- .turboboosttable { margin: 2em auto; border-collapse: collapse; } .turboboosttable th, .turboboosttable td { text-align: center; border: 1px solid #f4f4f4; padding: 0.5em; } .turboboosttable th { width: 15%; } .turboboosttable th.lcol { text-align: right; } .turboboosttable th.notbold { font-weight: normal; } .turboboosttable th { background-color: #f4f4f4; } .turboboosttable .lightslash { opacity: 0.33; } .turboboosttable td.noturbo { background-color: #f8f8f8; } .turboboosttable .perfminus { color: #a00; } .turboboosttable .perfplus { color: #0a0; } --></style></p> <h3>15-inch 2015 MacBook Pro (2.2 GHz quad-core i7)</h3> <table class="turboboosttable"> <tr> <th class="lcol">&nbsp;</th> <th>Battery life</th> <th>Geekbench single/multi</th> <th>xcodebuild</th> </tr> <tr> <th class="lcol notbold">Normal</th> <td>3:36</td> <td>3963<span class="lightslash">/</span>13864</td> <td>43.9s</td> </tr> <tr> <th class="lcol notbold">No Turbo</th> <td class="noturbo">5:06<div class="perfplus">+42%</div></td> <td class="noturbo">2796<span class="lightslash">/</span>9917<div class="perfminus">−29<span class="lightslash">/</span>28%</div></td> <td class="noturbo">63.4s<div class="perfminus">+44%</div></td> </tr> </table> <h3>13-inch 2018 MacBook Pro (2.7 GHz quad-core i7)</h3> <table class="turboboosttable"> <tr> <th class="lcol">&nbsp;</th> <th>Battery life</th> <th>Geekbench single/multi</th> <th>xcodebuild</th> </tr> <tr> <th class="lcol notbold">Normal</th> <td>3:09</td> <td>5412<span class="lightslash">/</span>18983</td> <td>34.3s</td> </tr> <tr> <th class="lcol notbold">28W</th> <td>3:28<div class="perfplus">+10%</div></td> <td>5401<span class="lightslash">/</span>16326<div class="perfminus">−0<span class="lightslash">/</span>14%</div></td> <td>37.4s<div class="perfminus">+9%</div></td> </tr> <tr> <th class="lcol notbold">18W</th> <td>4:05<div class="perfplus">+29%</div></td> <td>5248<span class="lightslash">/</span>14133<div class="perfminus">−3<span class="lightslash">/</span>26%</div></td> <td>43.5s<div class="perfminus">+27%</div></td> </tr> <tr> <th class="lcol notbold">12W</th> <td>4:44<div class="perfplus">+50%</div></td> <td>4818<span class="lightslash">/</span>11835<div class="perfminus">−11<span class="lightslash">/</span>38%</div></td> <td>48.2s<div class="perfminus">+41%</div></td> </tr> <tr> <th class="lcol notbold">No Turbo</th> <td class="noturbo">5:05<div class="perfplus">+61%</div></td> <td class="noturbo">3624<span class="lightslash">/</span>13324<div class="perfminus">−33<span class="lightslash">/</span>30%</div></td> <td class="noturbo">48.9s<div class="perfminus">+43%</div></td> </tr> <tr> <th class="lcol notbold">6W</th> <td>6:24<div class="perfplus">+103%</div></td> <td>4065<span class="lightslash">/</span>7596<div class="perfminus">−25<span class="lightslash">/</span>60%</div></td> <td>76.1s<div class="perfminus">+121%</div></td> </tr> </table> <p>It&#8217;s impressive how much faster this new 13-inch model is than <a href="">the best laptop ever made</a> due to significant CPU and SSD improvements.</p> <p>Dropping the wattage to 6W, the thermal limit of the fanless 12-inch MacBook, interestingly (but not surprisingly) makes it perform effectively identically to the <a href="">best 12-inch MacBook</a> in Geekbench. This is an extreme option, but one I&#8217;d occasionally take if offered. It roughly doubles compilation times, but also doubles the battery life.</p> <p>This ratio holds for most other configurations: the gain in battery life is about as large as the loss in heavy-workload performance. That&#8217;s a trade-off I&#8217;d gladly make when I need to maximize runtime.</p> <p>The best bang-for-the-buck option is still to just disable Turbo Boost. Single-threaded performance hurts more than with wattage-limiting, but it&#8217;s able to maintain better multi-threaded performance and more consistent thermals, and gets a larger battery gain relative to its performance loss.</p> <p>And Volta, which offers both wattage limits and Turbo disabling, requires disabling System Integrity Protection to install an unsigned kernel extension, which I really don&#8217;t recommend. Turbo Boost Switcher, which doesn&#8217;t offer wattage control, works with SIP using a signed extension and its Pro version has more convenient features for automatic toggling.</p> <p>For now, I&#8217;m going to continue to happily run <a href="">Turbo Boost Switcher Pro</a> to selectively give myself better battery life, and I recommend it for anyone else with the same need.</p> <p>But what I ultimately want is for a true Low Power Mode built into macOS that could provide this sort of CPU throttling <em>and</em> software changes, which would ultimately achieve even greater gains.</p> <div class="footnotes"> <hr /> <ol> <li id="fn:pfKDuWxMd1"> <p>Whose work <em>does</em> get 10 hours out of a MacBook Pro? None of the use-cases on <a href="">the marketing page</a> &#8212; Photography, Coding, Video Editing, 3D Graphics, and Gaming &#8212; are likely to achieve even half of that in practice.&#160;<a href="#fnref:pfKDuWxMd1" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pfKDuWxMd2"> <p>I&#8217;ve heard that 15-inch models are wired such that the discrete GPU is required when external displays are connected. Otherwise, whether it&#8217;s used or not is a software decision, and <a href="">gfxCardStatus</a> can override it in certain conditions.&#160;<a href="#fnref:pfKDuWxMd2" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pfKDuWxMd3"> <p>It&#8217;s not brand new, so it&#8217;s not a perfect comparison, but the battery only had 90 cycles before this test.&#160;<a href="#fnref:pfKDuWxMd3" rev="footnote">&#8617;&#xFE0E;</a></p> </li> </ol> </div> Overcast 4.2: The privacy update, 27 Apr 2018 14:56:21 EDT<p><a href=";mt=8&amp;at=11lIuy&amp;ct=marcoorg">Overcast 4.2 is out now</a>. It enhances privacy in two major areas:</p> <h3><strong>Anonymous sync by default</strong></h3> <p>Overcast has offered anonymous sync accounts since 2014. They&#8217;re fully functional, but they lack email addresses or passwords, so they can&#8217;t log into the website. A login token is stored in iCloud so the account can be accessed after a restore or upgrade, or from other devices you own.</p> <p>Previously, the login screen pushed email logins. But with four years of perspective, feedback, and usage data, I now think that&#8217;s the wrong move. Only a single-digit percentage of customers use the website, and the iCloud token-sync method solves cross-device logins for almost everyone.</p> <p>Your personal data isn&#8217;t my business &#8212; it&#8217;s a <a href="">liability</a>. I want as little as possible. I don&#8217;t even log IP addresses anymore.</p> <p>If I don&#8217;t need your email address, I really don&#8217;t want it.</p> <p>68% of Overcast accounts have email addresses today. To reduce that as much as possible, I&#8217;ve made major changes to account handling:</p> <p style="text-align: center; margin-top: 1.5em; margin-bottom: 2em;"> <a href=""><img style="border: 1px solid #eee; max-width: 45%; margin-right: 5%;" src=""/></a><a href=""><img style="border: 1px solid #eee; max-width: 45%;" src=""/></a><br/> <small>The previous login screen (left) and the new one.</small> </p> <p>In Overcast 4.2, the login screen now prominently encourages anonymous accounts by default.</p> <p>If you already have an account in iCloud, it&#8217;ll pop up a dialog box over this screen asking if you want to use it.</p> <p>And the first time you launch 4.2, people with email-based accounts will be encouraged to migrate them to anonymous accounts:</p> <p style="text-align: center; margin-top: 1.5em; margin-bottom: 2em;"> <img style="border: 1px solid #eee; max-width: 45%;" src=""/><br/> <small>The migration prompt that shows on the first run.</small> </p> <p>Finally, you can now change your account between email-based and anonymous whenever you want.</p> <h3><strong>Blocking ad-tracking images</strong></h3> <p>In most podcast apps, podcasts are downloaded automatically in the background. The only data sent to a podcast&#8217;s publisher about you or your behavior is your IP address and the app&#8217;s name. The IP address lets them derive your approximate region, but not much else.</p> <p>They don&#8217;t know exactly who you are, whether you listened, when you listened, how far you listened, or whether you skipped certain parts.</p> <p>Some large podcast producers are trying <em>very</em> hard to change that.</p> <p>I&#8217;m not.</p> <p>Big data ruined the web, and I&#8217;m not going to help bring it to podcasts. Publishers already <a href="">get enough from Apple</a> to inform ad rates and make content decisions &#8212; they don&#8217;t need more data from my customers. Podcasting has thrived, grown, and made tons of money for tons of people under the current model for over a decade. We already have all the data we need.</p> <p>One of the ways publishers try to get around the limitations of the current model is by embedding remote images or invisible &#8220;tracking pixels&#8221; in each episode&#8217;s HTML show notes. When displayed in most apps, the images are automatically loaded from an analytics server, which can then record and track more information about you.</p> <p style="text-align: center; margin-top: 1.5em; margin-bottom: 2em;"> <a href=""><img style="border: 1px solid #eee; max-width: 45%;" src=""/></a></p> <p>In Overcast 4.2, much like Mail (and for the same reason), remote images don&#8217;t load by default. A tappable placeholder shows you where each image will load from, and you can decide whether to load it or not.</p> <p>I believe I&#8217;ve done this in the most secure way possible &#8212; I&#8217;m actually displaying the show notes using a strict <a href="">Content Security Policy</a> &#8212; and I would <strong>love</strong> to hear from anyone who finds a way to inject auto-loading remote images or execute arbitrary JavaScript in show notes.</p> <h3><strong>Bug fixes</strong></h3> <p>Overcast 4.2 also includes a bunch of minor fixes, and two big ones:</p> <ul> <li>Fixed the major slowdowns and high battery usage that resulted from extremely large podcast artwork.</li> <li>Password-protected <em>episodes</em> are now supported on password-protected feeds.</li> </ul> <p><a href=";mt=8&amp;at=11lIuy&amp;ct=marcoorg">Get it now in the App Store</a>!</p> Overcast 4.1 now available, 13 Mar 2018 20:42:08 EDT<p><a href=";mt=8&amp;at=11lIuy&amp;ct=marcoorg">Overcast 4.1 is now in the App Store</a> with some small but nice new features.</p> <p><strong>Smart Resume</strong> is actually two features:</p> <ol> <li>It jumps back by up to a few seconds after having been paused to help remind you of the conversation.</li> <li>It slightly adjusts resumes and seeks to fall in the silences between spoken words when reasonably possible.</li> </ol> <p>Both are subtle but noticeable benefits (my favorite kind), especially when you&#8217;re being interrupted a lot, such as while following turn-by-turn navigation directions.</p> <p>Smart Resume is on by default, and can be turned off in Nitpicky Details.</p> <p><strong>Delete episodes 24 hours after completion:</strong> Before, episodes could either be auto-deleted immediately upon completion, or not at all. There&#8217;s now a third option, auto-deleting 24 hours after completion, which will soon be the default for new accounts.</p> <p>The 24-hour threshold is only enforced after a successful sync, so it won&#8217;t auto-delete anything in the middle of an extended offline period, such as a long flight.</p> <p>Auto-deletion, either immediate or after 24 hours, also no longer applies to Premium subscribers&#8217; Uploads.</p> <p><strong>Password-protected podcasts:</strong> Some private podcast feeds, including many paid and members-only podcasts, require a username and password via HTTP Basic Auth. You can now add these in the Add URL screen.</p> <p>Password-protected podcasts, and other private feeds such as Patreon bonus feeds and anything using the <code>&lt;itunes:block&gt;</code> tag, do not show up in search or recommendations.</p> <p><strong>Noteworthy bug fixes:</strong></p> <ul> <li>Resuming playback after quitting in the background, especially on very long podcasts and/or when using AirPods, no longer occasionally results in glitchy noises and incorrect durations.</li> <li>Playback under certain conditions no longer stalls, requiring pausing and playing again.</li> <li>Downloads now fail less often.</li> <li>Playback controls no longer disappear occasionally.</li> <li>Smart Speed total savings now appear at the bottom of the Settings screen for locales that use commas as their decimal separator.<sup id="fnref:pTEOizqmk1"><a href="#fn:pTEOizqmk1" rel="footnote">1</a></sup></li> <li>Extremely large playlists now only show the most/least-recent 500 episodes to improve app performance for users with very high subscription counts.</li> </ul> <p>There&#8217;s also one removal: rotation support on iPhone. (The iPad app still rotates.) iPhone rotation has always been disabled by default, and had been buried in Nitpicky Details for a long time, so <em>very</em> few people have ever used it. Meanwhile, it has become increasingly difficult to support and maintain, especially with the modern complexities of rotation and the dramatically increased workload of supporting the iPhone X in landscape.</p> <p>iPhone rotation has simply proven far too costly to maintain for its extremely low usage, and it had to go to free up more of my time for more highly demanded features. I apologize to the few people who did use it, and I hope this isn&#8217;t too disruptive for you.</p> <p>The rest is all good news. <a href=";mt=8&amp;at=11lIuy&amp;ct=marcoorg">Go get Overcast now</a>!</p> <p>In the next update, I&#8217;ll be addressing the biggest design failure of Overcast 4: the non-discoverability of the Effects and Notes pages in the Now Playing screen. Expect the return of an ancient user-interface tool known as &#8220;buttons&#8221;.</p> <div class="footnotes"> <hr /> <ol> <li id="fn:pTEOizqmk1"> <p>This was Overcast&#8217;s oldest known bug, which had been there since 1.0: some users, mostly in central Europe, wouldn&#8217;t see Smart Speed totals. It turned out to be one of the most interesting and obscure bugs I&#8217;ve seen.</p> <p>The total-time-saved value is stored on-device as it accumulates, then gets sent to the server to be combined with any listening you do on other devices. The overall total is read back from the server, and the local total is reset, on each sync.</p> <p>I was using an <code>NSNumberFormatter</code> to read the total value from Overcast&#8217;s server as a <code>double</code>. My server always sends values with U.S.-style number formatting, using a period as the decimal separator (e.g. &#8220;1234.5&#8221;). But by default, <code>NSNumberFormatter</code> uses the device&#8217;s locale, so in countries that use a comma as the decimal separator (e.g. &#8220;1234,5&#8221;), it was interpreting the server&#8217;s numbers with periods as invalid and returning zero. So the Settings screen thought they hadn&#8217;t saved any time, and hid the time-saved label.</p> <p>Fortunately, it was an easy fix: setting that <code>NSNumberFormatter</code> locale to <code>en_US</code> to match what the server was sending. And since the accumulated local totals were still being sent and added properly, the correct historical data is there &#8212; it just wasn&#8217;t being displayed correctly.&#160;<a href="#fnref:pTEOizqmk1" rev="footnote">&#8617;&#xFE0E;</a></p> </li> </ol> </div> WatchKit is a sweet solution that will only ever give us baby apps, 26 Feb 2018 15:03:35 EST<p>In the original <a href="">2007 iPhone introduction</a>, Steve Jobs famously derided other smartphones at the time for running &#8220;baby&#8221; software and the &#8220;baby&#8221; internet. He was right.</p> <p>Developers weren&#8217;t given access to make native apps until the iPhone&#8217;s second year. Before the native development kit was ready, Apple tried to pass off web apps as a &#8220;<a href="">sweet solution</a>&#8221; for third-party apps, but nobody was fooled.</p> <p>Apple wasn&#8217;t using web apps for their own built-in iPhone apps &#8212; they were using native code and frameworks to make <em>real</em> apps.<sup id="fnref:pFMrzsSqF1"><a href="#fn:pFMrzsSqF1" rel="footnote">1</a></sup> Developers like me did our best with web apps, but they sucked. We simply couldn&#8217;t make great apps without access to the real frameworks.</p> <p>Apps were terrible, and didn&#8217;t take off, until we had access to the same native tools that Apple used.</p> <p style="text-align: center; margin-top: 1.5em; margin-bottom: 1.5em;">*&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;*</p> <p>Developing Apple Watch apps is <a href="">extremely frustrating and limited</a> for one big reason: unlike on iOS, Apple doesn&#8217;t give app developers access to the same watchOS frameworks that <em>they</em> use on Apple Watch.</p> <p>Instead, we&#8217;re only allowed to use WatchKit, a baby UI framework that would&#8217;ve seemed rudimentary to developers even in the 1990s. But unlike the iPhone&#8217;s web apps, WatchKit doesn&#8217;t appear to be a stopgap &#8212; it seems to be Apple&#8217;s long-term solution to third-party app development on the Apple Watch.</p> <p>The separation of Apple&#8217;s internally-used frameworks from WatchKit has two huge problems:</p> <ul> <li><strong>Apple doesn&#8217;t feel WatchKit&#8217;s limitations.</strong> Since they&#8217;re not using it, it&#8217;s too easy for Apple&#8217;s developers and evangelists to forget or never know what&#8217;s possible, what isn&#8217;t, what&#8217;s easy, and what&#8217;s hard. The <a href="">bugs and limitations I report to them</a> are usually met with shock and surprise &#8212; <em>they have no idea</em>.</li> <li><strong>WatchKit is buggy as hell.</strong> Since Apple doesn&#8217;t use it and there are relatively few third-party Watch apps of value, WatchKit is <em>far</em> more buggy, and seems far less tested, than any other Apple API I&#8217;ve ever worked with.<sup id="fnref:pFMrzsSqF2"><a href="#fn:pFMrzsSqF2" rel="footnote">2</a></sup></li> </ul> <p>Apple will never have a very good idea of where WatchKit needs to improve if they&#8217;re not using it. But this sweet solution is the only choice anyone else has to make Apple Watch apps.</p> <p><strong>WatchKit only lets us create &#8220;baby&#8221; apps.</strong> That&#8217;s all it will ever let us create.</p> <p>WatchKit needs to be discontinued and replaced.</p> <p>No focus on quality or expansion of WatchKit will fix this. There are only two ways to meaningfully improve Watch apps, spur third-party innovation, and unlock the true potential of the Apple Watch.</p> <p>One solution is for Apple to reimplement all of its own Watch apps with WatchKit instead of their internal frameworks, which will force them to fix WatchKit&#8217;s many bugs and dramatically expand it.</p> <p>The much better solution, and the one I hope they take, is for Apple to expose its <em>real</em> watchOS UI and media frameworks to third-party developers, as it has done on iOS.</p> <p style="text-align: center; margin-top: 1.5em; margin-bottom: 1.5em;">*&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;*</p> <p><em>I also made this argument in podcast form in <a href="">Under The Radar 114</a>.</em></p> <div class="footnotes"> <hr /> <ol> <li id="fn:pFMrzsSqF1"> <p>Defensive web developers who object to my &#8220;real&#8221; classification, remember this was 2007 hardware with 2007 cellular speeds and 2007 browser capabilities. You don&#8217;t realize how good you have it today. (But most apps should still be native.)&#160;<a href="#fnref:pFMrzsSqF1" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pFMrzsSqF2"> <p><a href="">Here&#8217;s one from today</a> for <code>WKAudioFilePlayer</code>, an abysmal, demoralizing API that I lost weeks of my life battling that feels like it had literally <em>zero</em> testing at Apple. I&#8217;d bet money that nobody at Apple has ever tried to build an app with it.&#160;<a href="#fnref:pFMrzsSqF2" rev="footnote">&#8617;&#xFE0E;</a></p> </li> </ol> </div> Defending your app from copies and clones, 22 Feb 2018 08:48:53 EST<p>App developers sometimes ask me what they should do when their features, designs, or entire apps are copied by competitors.</p> <p>Legally, there&#8217;s not a lot you can do about it:</p> <ul> <li><strong>Copyright</strong> protects your icon, images, other creative resources, and source code. You automatically have copyright protection, but it&#8217;s easy to evade with minor variations.<sup id="fnref:pvEnZOtTJc"><a href="#fn:pvEnZOtTJc" rel="footnote">1</a></sup> App stores don&#8217;t enforce it easily unless resources have been copied <em>exactly.</em></li> <li><strong>Trademarks</strong> protect names, logos, and slogans. They cover minor variations as well, and app stores enforce trademarks more easily, but they&#8217;re costly to register and only apply in narrow areas.<sup id="fnref:pvEnZOtTJtm"><a href="#fn:pvEnZOtTJtm" rel="footnote">2</a></sup></li> <li><p>Only assholes get <strong>patents.</strong> They can be <a href="">a huge PR mistake</a>, and they&#8217;re a fool&#8217;s errand: even if you get one (<a href="">$20,000+ later</a>), you can&#8217;t afford to use it against any adversary big enough to matter.</p> <p>Don&#8217;t be an asshole or a fool. Don&#8217;t get software patents.</p></li> </ul> <p>If someone literally copied your assets or got too close to your trademarked name, you need to file takedowns or legal complaints, but that&#8217;s rarely done by anyone big enough to matter. If a competitor just adds a feature or design similar to one of yours, you usually can&#8217;t do anything.</p> <p>You can publicly call out a copy, but you won&#8217;t come out of it looking good:</p> <ul> <li>If they&#8217;re more successful than you, it&#8217;s envy and sour grapes.</li> <li>If they&#8217;re less successful than you, it&#8217;s jealousy and punching down (and giving them attention!).</li> <li>The public may have a very different opinion on whether you&#8217;re really being copied from, whether you were really the first to do it, or whether you deserve to &#8220;own&#8221; it.</li> </ul> <p>These disputes are best kept private, or not fought at all.</p> <p><strong>Nobody else will care as much as you do.</strong> Nobody cares who was first, and nobody cares who copied who. The public won&#8217;t defend you.</p> <p>The instant someone else has the same feature or design as you, the public and press see it as a collective checkbox feature, or a &#8220;standard&#8221; or &#8220;obvious&#8221; design, that apps in this category just <em>have</em>. It&#8217;s no longer yours.</p> <p>You can try to &#8220;educate&#8221; the public, but you&#8217;ll lose.</p> <p>This feels unfair when it happens to you, but it&#8217;s just how it goes, and the entire ecosystem benefits. Every app &#8212; even yours &#8212; includes countless &#8220;standard&#8221; and &#8220;obvious&#8221; features and designs that, at one time, weren&#8217;t. <a href="">Everything is a remix</a>.</p> <p>A great design or feature can give you a competitive advantage for a little while, but it&#8217;s always temporary. Compete on marketing, quality, and what you can do next, not the assumption that nobody can copy what you made.</p> <p>Setting the roadmap for competitors is a satisfying accomplishment, but only a personal one. <em>You</em> know you&#8217;ve done it. That has to be enough.</p> <div class="footnotes"> <hr /> <ol> <li id="fn:pvEnZOtTJc"> <p>For instance, nobody else can make an app that uses Overcast&#8217;s exact icon, or anything clearly derivative of it, but I can&#8217;t stop anyone from making a different-looking, originally-drawn orange icon with a radio tower in it.&#160;<a href="#fnref:pvEnZOtTJc" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pvEnZOtTJtm"> <p>For instance, nobody else can make an audio player named Overcast or anything similar to it, but I can&#8217;t stop anyone from making a weather app with that name. And other podcast players can&#8217;t make features named Smart Speed or Voice Boost, but I can&#8217;t stop them from making similar features with different-enough names.&#160;<a href="#fnref:pvEnZOtTJtm" rev="footnote">&#8617;&#xFE0E;</a></p> </li> </ol> </div> The end of the conference era, 17 Jan 2018 18:02:58 EST<p>Chris Adamson <a href="">notes a significant contraction in iOS and related conferences recently</a> (via <a href="">Michael Tsai</a>).</p> <p>Having attended (and sometimes spoken at) many of these conferences over the years, I can&#8217;t deny the feeling I&#8217;ve had in the last couple of years that the era of the small Apple-ish developer-ish conference is mostly or entirely behind us.</p> <p>I don&#8217;t think that&#8217;s a bad thing. This style of conference had a <em>great</em> run, but it always had major and inherent limitations, challenges, and inefficiencies:</p> <ul> <li><strong>Cost:</strong> With flights, lodging, and the ticket adding up to thousands of dollars per conference, most people are priced out. The vast majority of attendees&#8217; money isn&#8217;t even going to the conference organizers or speakers &#8212; it&#8217;s going to venues, hotels, and airlines.</li> <li><strong>Size:</strong> There&#8217;s no good size for a conference. Small conferences exclude too many people; big conferences impede socialization and logistics.</li> <li><strong>Logistics:</strong> Planning and executing a conference takes such a toll on the organizers that few of them have ever lasted more than a few years.</li> <li><strong>Format:</strong> Preparing formal talks with slide decks is a <em>massively</em> inefficient use of the speakers&#8217; time compared to other modern methods of communicating ideas, and sitting there listening to blocks of talks for long stretches while you&#8217;re trying to stay awake after lunch is a pretty inefficient way to hear ideas.</li> </ul> <p>It&#8217;s getting increasingly difficult for organizers to sell tickets, in part because it&#8217;s hard to get big-name speakers without the budget to pay them much (which would significantly drive up ticket costs, which exacerbates other problems), but also because conferences now have much bigger competition in connecting people to their colleagues or audiences.</p> <p>There&#8217;s no single factor that has made it so difficult, but the explosion of podcasts and YouTube over the last few years must have contributed significantly. Podcasts are a vastly more time-efficient way for people to communicate ideas than writing conference talks, and people who prefer crafting their message as a produced piece or with multimedia can do the same thing (and more) on YouTube. Both are much easier and more versatile for people to consume than conference talks, and they can reach and benefit <em>far</em> more people.</p> <p>Ten years ago, you had to go to conferences to hear most prominent people in our industry speak in their own voice, or to get more content than an occasional blog post. Today, anyone who could headline a conference probably has a podcast or YouTube channel with hours of their thoughts and ideas available to anyone, anywhere in the world, anytime, for free.</p> <p>But all of that media can&#8217;t really replace the socializing, networking, and simply <em>fun</em> that happened as part of (or sometimes despite) the conference formula.</p> <p>I don&#8217;t know how to fix conferences, but the first place I&#8217;d start on that whiteboard is by getting rid of all of the talks, then trying to find different ways to bring people together &#8212; and far more of them than before.</p> <p>Or maybe we&#8217;ve already solved these problems with social networks, Slack groups, podcasts, and YouTube, and we just haven&#8217;t fully realized it yet.</p> Fixing the MacBook Pro, 24 Nov 2017 19:14:29 EST<p>Despite <a href="">my love for the previous Retina MacBook Pro</a>, I won&#8217;t be able to use it forever. The best laptop to ever exist should be in the future, not the past.</p> <p>There&#8217;s a lot to like about the new MacBook Pros, but they need some changes to be truly great and up to Apple&#8217;s standards.</p> <p>Here&#8217;s what I&#8217;m hoping to see in the next MacBook Pro that I believe is technically possible, reasonable, widely agreeable, and likely for Apple to actually do, in descending order of importance:</p> <h3><strong>Magic Keyboard</strong></h3> <p>Butterfly keyswitches are a design failure that should be abandoned. They&#8217;ve been controversial, fatally unreliable, and expensive to repair since their introduction on the first 12&#8221; MacBook in early 2015. Their flaws were evident immediately, yet Apple brought them to the entire MacBook Pro lineup in late 2016.</p> <p>After three significant revisions, Apple&#8217;s butterfly keyswitches remain as controversial and unreliable as ever. At best, they&#8217;re a compromise acceptable <em>only</em> on the ultra-thin 12&#8221; MacBook, and only if nothing else fits. They have no place in Apple&#8217;s mainstream or pro computers.</p> <p><strong>The MacBook Pro must return to scissor keyswitches.</strong> If Apple only changes one thing about the next MacBook Pro, it should be this. It&#8217;s far more important than anything else on this list.</p> <p>Fans of the butterfly keyboard&#8217;s feel need not worry &#8212; this doesn&#8217;t mean we need the old MacBook Pro keyboard, exactly.</p> <p>The <a href="">Magic Keyboard&#8217;s</a> scissor switches feel similar, but with a bit more travel, and all of the reliability and resilience of previous keyboard generations. They&#8217;re a much better, more reliable, and more repairable balance of thinness and typing feel likely to appeal to far more people &#8212; even those who like the butterfly keyboards.</p> <p>The Magic Keyboard only needs one change to be perfect for the MacBook Pro: returning to the &#8220;inverted-T&#8221; arrow-key arrangement by making the left- and right-arrow keys half-height again. This arrangement is much more natural and less error-prone because we can align our fingers by feeling the &#8220;T&#8221; shape, a crucial affordance for such frequently used keys that are so far from the home row.</p> <h3><strong>Great first-party USB-C hubs</strong></h3> <p>The MacBook Pro bet heavily on the USB-C ecosystem, but it hasn&#8217;t developed enough on its own.</p> <p>When people can&#8217;t get what they need from Apple at all, or at a remotely competitive price, they&#8217;ll go to cheap third-party products, which are often unreliable or cause other problems. When these critical accessories aren&#8217;t flawless, it reflects poorly on Apple, as it harms the overall real-world experience of using these computers.</p> <p>If a third-party hub or dongle is flaky, the owner doesn&#8217;t blame <em>it</em> &#8212; they blame their expensive new Apple computer for needing it.</p> <p>Apple needs to step up with its own solid offerings to offer more ports for people who need them.</p> <p><a href="">Apple&#8217;s most full-featured USB-C accessory</a> is downright punitive in its unnecessary minimalism: one USB-C passthrough, one USB-A (a.k.a. regular/old USB), and an HDMI port that doesn&#8217;t even do 4K at 60 Hz &#8212; all for the shameless price of $80.</p> <p>Instead of giving us the <strong>least</strong> that we might possibly need, this type of product should give us the <strong>most</strong> that can fit within reasonable size, cost, and bandwidth constraints. I&#8217;d like to see at least two USB-C ports, at least two USB-A ports, and HDMI that can do 4K60. An SD-card reader would be a nice bonus.</p> <p>To make it easier to go all-USB-C on our peripherals and cables, I&#8217;d also like to see a true USB-C <em>hub:</em> one USB-C in and at least three USB-C out, with power passthrough on one.</p> <p>And just as we learned that the need for pro displays shouldn&#8217;t be outsourced to LG, Apple should stop outsourcing critical adapters and hubs to Belkin. They&#8217;re not as good as Apple&#8217;s, and they never will be.</p> <h3><strong>More ports</strong></h3> <p>USB-C is great, but being limited to 2 or 4 total ports (including power) simply isn&#8217;t enough. Even if you adopt the USB-C ecosystem, these MacBook Pros are more limited than their predecessors:</p> <ul> <li>The 13&#8221; MacBook Air can connect to power, two USB devices, Thunderbolt, and an SD card simultaneously. Its replacement, the 13&#8221; MacBook &#8220;Escape&#8221; (without Touch Bar), can only connect to two total devices on battery, or one when powered.</li> <li>The 2015 13&#8221; and 15&#8221; MacBook Pros can connect to power, two USB devices, two Thunderbolt devices, HDMI output, and an SD card simultaneously. Their replacements can only connect to four devices on battery, or three when powered.</li> </ul> <p>If there&#8217;s not enough Thunderbolt or PCIe bandwidth to have more USB-C ports, that&#8217;s fine — not every port needs to be USB-C with Thunderbolt. All of that cost and bandwidth is unnecessary for most common real-world uses of laptop ports (power in, charging iPhones, external keyboards, etc.).</p> <p>Dongles should be the exception, not the norm, in real-world use &#8212; most owners should need zero. But HDMI and USB-A are still <em>far</em> too widely used to have been removed completely, and neither are likely to fade away anytime soon regardless of how Apple configures their laptops. Re-adding HDMI and at least one USB-A port would reduce or eliminate many people&#8217;s dongle needs, which I bet would dramatically improve their satisfaction.</p> <p>Finally, Apple should give serious consideration to bringing back the SD-card slot. SD cards are more widely used than ever in photography, video, audio, and other specialized equipment, and they provide excellent options for fast, reliable storage expansion and data transfer. And they&#8217;re going to be around for a while &#8212; Wi-Fi and cables don&#8217;t or can&#8217;t replace most current uses in practice.</p> <h3><strong>Back away from the Touch Bar</strong></h3> <p>Sorry, it&#8217;s a flop. It was a solid try at something new, but it didn&#8217;t work out. There&#8217;s no shame in that &#8212; Apple should just recognize this, learn from it, and move on.</p> <p>The Touch Bar should either be discontinued or made optional for all MacBook Pro sizes and configurations.</p> <p>Touch ID is the only part of the Touch Bar worth saving, but the future is clearly Face ID. If we can&#8217;t have that yet, the ideal setup is Touch ID without the Touch Bar. We&#8217;d retain the Secure Enclave&#8217;s protection for the camera and microphones, and hopefully get the iMac Pro&#8217;s boot protection, too.</p> <h3><strong>Nicer charger</strong></h3> <p>USB-C PD charging and replaceable charging cables are great advances that should be kept. USB-C PD is the reason I didn&#8217;t include battery life in this list &#8212; occasional needs for extended battery life can be achieved with inexpensive USB-C PD batteries.</p> <p>But Apple could make their chargers and cables so much nicer &#8212; and they only need to look to their own recent past.</p> <p>I&#8217;d like to see them bring back the charging LED on the end of the cable, and the cable-management arms on the brick. These weren&#8217;t superfluous &#8212; they served important, useful functions, and their removal made real-world usability worse for small, unnecessary gains.</p> <p>MagSafe would be nice, but I don&#8217;t think it&#8217;s essential. MagSafe 2 wasn&#8217;t universally loved because it detached with too little vertical pressure when used on laps, couches, or beds, but maybe it could be moved to a splitting module along the cable, a few inches from the laptop end, like the original Xbox&#8217;s controller cables?</p> <p>The move to a detachable, &#8220;standard&#8221; USB-C cable doesn&#8217;t preclude any of this. It&#8217;s already a specialized, dedicated power-only cable in practice (high-wattage USB PD support, but no Thunderbolt, and limited to USB 2.0 speeds). Third-party cables could still work &#8212; Apple&#8217;s could just be nicer.</p> <h3><strong>Keeping what&#8217;s great</strong></h3> <p>There&#8217;s a lot about the current MacBook Pro that&#8217;s great &#8212; fast internals, quieter fans, Touch ID, P3 screens, Thunderbolt 3, USB-C PD charging, and space gray, to name a few.</p> <p>We shouldn&#8217;t have to choose between what&#8217;s better about the previous generation &#8212; connectivity, reliability, and versatility &#8212; and what&#8217;s great about this one.</p> The best laptop ever made, 14 Nov 2017 16:38:50 EST<p>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&#8217;t been (and may never be) surpassed.</p> <p style="text-align: center; margin-top: 2em; margin-bottom: 2em;"><img class="extrawide" src=""/></p> <p>Introduced in 2012, less than a year after Steve Jobs died, I see it as the peak of Jobs&#8217; vision for the Mac.</p> <p>It was the debut of high-DPI Macs, starting down the long road (which we still haven&#8217;t finished) to an all-Retina lineup. And with all-SSD storage, quad-core i7 processors, and a healthy amount of RAM all standard, <em>every</em> configuration was fast, capable, and pleasant to use.</p> <p>At its introduction, it was criticized only for ditching the optical drive and Ethernet port, but these were defensible, well-timed removals: neither could&#8217;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.</p> <p>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.</p> <p style="text-align: center; margin-top: 2em; margin-bottom: 2em;"><img class="extrawide" src=""/></p> <p>The MagSafe 2 power adapter breaks away safely if it&#8217;s tripped over, and the LED on the connector quickly, clearly, and silently indicates whether it&#8217;s charging and when the battery is fully charged.</p> <p>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 &#8212; one on each side &#8212; let us connect or charge our world of standard USB devices.</p> <p>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.)</p> <p style="text-align: center; margin-top: 2em; margin-bottom: 2em;"><img class="extrawide" src=""/></p> <p>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.</p> <p>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&#8217;s fingers wouldn&#8217;t inadvertently brush against it while typing.</p> <p>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.</p> <p style="text-align: center; margin-top: 2em; margin-bottom: 2em;"><img class="extrawide" src=""/></p> <p>The power adapter&#8217;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.</p> <p>Versatile USB-A ports allow travelers to standardize on just <em>one</em> 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.</p> <p>The 2015 revision brought the modern Force Touch trackpad and used the space savings to increase the battery to 99.5 Wh, <em>just</em> 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.</p> <p style="text-align: center; margin-top: 2em; margin-bottom: 2em;"><img class="extrawide" src=""/></p> <p>And I like the backlit Apple logo on the lid. Maybe I&#8217;m old-fashioned, or maybe I just miss Steve, but it &#8212; along with the MagSafe LED and the startup chime &#8212; reminds me of a time when Mac designs celebrated personality, humanity, and whimsy.</p> <p style="text-align: center; margin-top: 1.5em; margin-bottom: 1.5em; color: #aaa;">*&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;*</p> <p>I recently returned to the 2015 15-inch MacBook Pro after a year away.</p> <p>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.</p> <p>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 <em>old</em>.</p> <p>It didn&#8217;t.</p> <p>It feels as delightful as when I first got one in 2012. It&#8217;s fast, capable, and reliable. It gracefully does what I need it to do. It&#8217;s <em>barely</em> heavier or thicker, and I got to remove so many accessories from my travel bag that I think I&#8217;m actually coming out ahead.</p> <p>It feels like a professional tool, made by people who love and need computers, at the top of their game.</p> <p>It&#8217;s designed <em>for</em> us, rather than asking us to adapt ourselves to it.</p> <p>It helps us perform our work, rather than adding to our workload.</p> <p>This is the peak. This is the best laptop that has ever existed.</p> <p>I hope it&#8217;s not the best laptop that <em>will</em> ever exist.</p>