Marco.orghttps://marco.org/I’m Marco Arment, creator of Overcast, technology podcaster and writer, and coffee enthusiast.Overcast summer updatehttps://marco.org/2019/07/21/overcast-summer-update/2019/07/21/overcast-summer-updateSun, 21 Jul 2019 16:14:44 EDT<p>Today&#8217;s <a href="https://apps.apple.com/us/app/overcast-podcast-player/id888422857">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="https://marco.org/2019/04/27/overcast-clip-sharing">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="https://apps.apple.com/us/app/overcast-podcast-player/id888422857">Overcast is free in the App Store</a>. Give it a try.</p> Apple is Listeninghttps://marco.org/2019/06/09/apple-is-listening/2019/06/09/apple-is-listeningSun, 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="https://daringfireball.net/2017/04/the_mac_pro_lives">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="https://techcrunch.com/2018/04/05/apples-2019-imac-pro-will-be-shaped-by-workflows/">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="https://marco.org/2018/11/06/mac-mini-2018-review">I started and ended a YouTube mini-career</a> just to review it.</p> <p>And the <a href="https://www.apple.com/mac-pro/">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="https://www.theverge.com/circuitbreaker/2016/6/21/11991302/iphone-no-headphone-jack-user-hostile-stupid">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 Overcasthttps://marco.org/2019/04/27/overcast-clip-sharing/2019/04/27/overcast-clip-sharingSat, 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="https://itunes.apple.com/app/overcast-podcast-player/id888422857">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="http://www.marco.org/media/2019/04/shareclip.png" style="max-width: 50%; border: 2px solid #eee; border-radius: 12px;" onclick="if (this.paused) this.play(); else this.pause();" onplay="document.getElementById('shareclippp').innerHTML = '⏸️';" onpause="document.getElementById('shareclippp').innerHTML = '▶️';"> <source src="http://www.marco.org/media/2019/04/shareclip-hevc.m4v" type='video/mp4; codecs="hev1.1.6.L93.B0"'/> <source src="http://www.marco.org/media/2019/04/shareclip-h264.m4v" type='video/mp4; codecs="avc1.42E01E"'/> <source src="http://www.marco.org/media/2019/04/shareclip.webm" type='video/webm; codecs="vp8.0"'/> <img src="http://www.marco.org/media/2019/04/shareclip.png" 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) v.play(); 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="https://overcast.fm/+LzqSd770Y/44:22">This remark on Unco</a> by <a href="https://www.relay.fm/people/stephenhackett">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="http://www.marco.org/media/2019/04/shareclip-step1.png"/><img style="border-radius: 6px; max-width: 30%; border: 2px solid #eee; margin-right: 2%;" src="http://www.marco.org/media/2019/04/shareclip-step2.png"/><img style="border-radius: 6px; max-width: 30%; border: 2px solid #eee;" src="http://www.marco.org/media/2019/04/shareclip-step3.png"/> </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="https://overcast.fm/+HfJiJmHrg"><img style="border-radius: 6px; max-width: 50%; border: 2px solid #eee; margin-right: 2%;" src="http://www.marco.org/media/2019/04/shareclip-pagerefresh.png"/></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="https://daringfireball.net/2019/04/not_all_shows_are_podcasts">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="https://itunes.apple.com/app/overcast-podcast-player/id888422857">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="https://getslopes.com/">Slopes</a> and <a href="http://supertop.co/castro/">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 Searchhttps://marco.org/2019/01/28/overcast-instant-search/2019/01/28/overcast-instant-searchMon, 28 Jan 2019 13:14:38 EST<p style="text-align: center; margin-bottom: 2em;"> <video id="instantsearchvideo" loop autoplay muted playsinline poster="http://www.marco.org/media/2019/01/instantsearch.png" style="max-width: 70%; border: 1px solid #eee; border-radius: 12px;" onclick="if (this.paused) this.play(); else this.pause();" onplay="document.getElementById('instantsearchpp').innerHTML = '⏸️';" onpause="document.getElementById('instantsearchpp').innerHTML = '▶️';"> <source src="http://www.marco.org/media/2019/01/instantsearch-hevc.m4v" type='video/mp4; codecs="hev1.1.6.L93.B0"'/> <source src="http://www.marco.org/media/2019/01/instantsearch-h264.m4v" type='video/mp4; codecs="avc1.42E01E"'/> <source src="http://www.marco.org/media/2019/01/instantsearch.webm" type='video/webm; codecs="vp8.0"'/> <track src="http://www.marco.org/media/2019/01/instantsearch.vtt" kind="descriptions" srclang="en"/> <img src="http://www.marco.org/media/2019/01/instantsearch.png" 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) v.play(); 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="https://itunes.apple.com/app/overcast-podcast-player/id888422857">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="https://itunes.apple.com/app/overcast-podcast-player/id888422857">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 Prohttps://marco.org/2018/11/09/ipad-pro-2018-review/2018/11/09/ipad-pro-2018-reviewFri, 09 Nov 2018 15:18:04 EST<p><style type="text/css"><!-- /* thanks https://stackoverflow.com/a/46272114 */ .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="https://www.youtube.com/embed/BBD_48AY0Zc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> </div> </div> <p><a href="https://www.youtube.com/watch?v=BBD_48AY0Zc">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 Minihttps://marco.org/2018/11/06/mac-mini-2018-review/2018/11/06/mac-mini-2018-reviewTue, 06 Nov 2018 06:01:39 EST<p><style type="text/css"><!-- .reviewgraph { margin-top: 2em; margin-bottom: 2em; } h2 { margin-top: 2em; } /* thanks https://stackoverflow.com/a/46272114 */ .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="https://www.youtube-nocookie.com/embed/0ixJLLbP8Is" 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="https://www.youtube.com/watch?v=0ixJLLbP8Is">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="https://rogueamoeba.com/audiohijack/">home-theater mixer</a>, <a href="https://www.plex.tv/">Plex</a> server, <a href="https://www.fujitsu.com/us/products/computing/peripheral/scanners/scansnap/">ScanSnap</a> server, Apple Photos backup, and <a href="https://www.backblaze.com/atp.html">Backblaze</a> host for our <a href="https://www.synology.com/en-us">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="http://www.marco.org/media/2018/11/macmini-ports.jpg" 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="http://www.marco.org/media/2018/11/macmini-geekbench.png"><img src="http://www.marco.org/media/2018/11/macmini-geekbench.png"/></a> </p> <p><a href="https://www.geekbench.com/">Geekbench</a> results are very strong. The i7 Mac Mini scored better on single-core performance than <a href="https://browser.geekbench.com/mac-benchmarks">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="http://www.marco.org/media/2018/11/macmini-xcode.png"><img src="http://www.marco.org/media/2018/11/macmini-xcode.png"/></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="https://techcrunch.com/2018/10/30/apple-t2-security-chip-microphone-eavesdropping/">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="https://overcast.fm/">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="http://www.marco.org/media/2018/11/macmini-blackmagic.png"><img src="http://www.marco.org/media/2018/11/macmini-blackmagic.png"/></a> </p> <p>The <a href="https://itunes.apple.com/us/app/blackmagic-disk-speed-test/id425264550">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="http://www.marco.org/media/2018/11/macmini-ffmpeg.png"><img src="http://www.marco.org/media/2018/11/macmini-ffmpeg.png"/></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="http://www.marco.org/media/2018/11/macmini-opencl.png"><img src="http://www.marco.org/media/2018/11/macmini-opencl.png"/></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="https://daringfireball.net/2018/11/the_2018_ipad_pros">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="https://marco.org/2018/07/31/mac-low-power-mode">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="https://www.ifixit.com/">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="https://itunes.apple.com/us/app/compressor/id424390742">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 Infographhttps://marco.org/2018/10/09/infograph-legibility/2018/10/09/infograph-legibilityTue, 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="http://www.marco.org/media/2018/10/watch-infograph-default.jpg"/> </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="https://daringfireball.net/2018/09/apple_watch_series_4">John Gruber finds it &#8220;far too busy&#8221;</a></li> <li><a href="https://sixcolors.com/post/2018/10/apple-watch-series-4-review-the-invisible-redesign/">Jason Snell finds it &#8220;pretty and packed with features&#8221;, but misses hour numerals</a></li> <li><a href="https://9to5mac.com/2018/10/04/customizing-infograph-apple-watch-series-4/">Zac Hall removes almost everything to improve legibility</a></li> <li><a href="https://david-smith.org/blog/2018/10/05/considering-low-contrast-complications/">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="http://www.marco.org/media/2018/10/watch-infograph-mine.png"/> <img class="roundwatch" title="My Utility configuration" src="http://www.marco.org/media/2018/10/watch-utility-mine.png"/> <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="http://www.marco.org/media/2018/10/watch-classic1-submariner.jpg"/> <img class="watchimg" title="Patek Philippe Nautilus" src="http://www.marco.org/media/2018/10/watch-classic2-nautilus.jpg"/> <img class="watchimg" title="A. Lange &amp; Sohne Saxonia" src="http://www.marco.org/media/2018/10/watch-classic3-saxonia.jpg"/> <img class="watchimg" title="Seiko Presage SARY085" src="http://www.marco.org/media/2018/10/watch-modern1-cocktailtime.jpg"/> <img class="watchimg" title="Damasko DA44" src="http://www.marco.org/media/2018/10/watch-modern2-da44.jpg"/> <img class="watchimg" title="Nomos Metro" src="http://www.marco.org/media/2018/10/watch-modern3-metro.jpg"/> </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="http://www.marco.org/media/2018/10/watch-color.png"/> <img class="roundwatch" title="Simple" src="http://www.marco.org/media/2018/10/watch-simple.png"/> <img class="roundwatch" title="Explorer (no numbers)" src="http://www.marco.org/media/2018/10/watch-explorer.png"/> <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="http://www.marco.org/media/2018/10/watch-activity-analog.png"/> <img class="roundwatch" title="Utility (no numbers)" src="http://www.marco.org/media/2018/10/watch-utility-minimal.png"/> <img class="roundwatch" title="Infograph" src="http://www.marco.org/media/2018/10/watch-infograph-minimal.png"/> <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="http://www.marco.org/media/2018/10/watch-infograph-digital.jpg"/> </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="https://www.hodinkee.com/articles/jony-ive-apple-watch-collector-hodinkee-magazine">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="https://www.instagram.com/p/BoDR0MijPP8/?taken-by=marcoarment">Solar</a>.&#160;<a href="#fnref:pMiV5VkCX3" rev="footnote">&#8617;&#xFE0E;</a></p> </li> </ol> </div> Overcast 5: Watch, Siri, search, and redesign!https://marco.org/2018/09/17/overcast5/2018/09/17/overcast5Mon, 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="http://www.marco.org/media/2018/09/overcast5-phone.jpg"/><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="https://overcast.fm/">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="https://marco.org/2017/08/10/removed-send-to-watch">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="https://marco.org/2017/09/24/what-watch-podcast-apps-need">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="http://www.marco.org/media/2018/09/overcast5-watch.jpg"/></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="http://www.marco.org/media/2018/09/overcast4.png"><img class="screenshot3" src="http://www.marco.org/media/2018/09/overcast4.png"/></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="http://www.marco.org/media/2018/09/overcast5-np1-effects.png" ><img class="screenshot3" src="http://www.marco.org/media/2018/09/overcast5-np1-effects.png" /></a><a href="http://www.marco.org/media/2018/09/overcast5-np2-nowplaying.png"><img class="screenshot3" src="http://www.marco.org/media/2018/09/overcast5-np2-nowplaying.png"/></a><a href="http://www.marco.org/media/2018/09/overcast5-np3-shownotes.png" ><img class="screenshot3" src="http://www.marco.org/media/2018/09/overcast5-np3-shownotes.png" /></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="http://www.marco.org/media/2018/09/overcast5-nowplaying-combo.png"><img class="screenshot1" src="http://www.marco.org/media/2018/09/overcast5-nowplaying-combo.png"/></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="http://www.marco.org/media/2018/09/overcast5-np-chapters.png" ><img class="screenshot3" src="http://www.marco.org/media/2018/09/overcast5-np-chapters.png" /></a> <a href="http://www.marco.org/media/2018/09/overcast5-np-sleeptimer.png" ><img class="screenshot3" src="http://www.marco.org/media/2018/09/overcast5-np-sleeptimer.png" /></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="http://www.marco.org/media/2018/09/overcast5-ft-search.png" ><img class="screenshot3" src="http://www.marco.org/media/2018/09/overcast5-ft-search.png" /></a> <a href="http://www.marco.org/media/2018/09/overcast5-ft-podcast.png"><img class="screenshot3" src="http://www.marco.org/media/2018/09/overcast5-ft-podcast.png"/></a> <a href="http://www.marco.org/media/2018/09/overcast5-ft-siri.png" ><img class="screenshot3" src="http://www.marco.org/media/2018/09/overcast5-ft-siri.png" /></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="https://marco.org/2018/04/27/overcast42">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="https://overcast.fm/">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 Machttps://marco.org/2018/07/31/mac-low-power-mode/2018/07/31/mac-low-power-modeTue, 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="https://en.wikipedia.org/wiki/Intel_Turbo_Boost">Turbo Boost</a></li> </ul> <p>Back in 2015, I <a href="https://marco.org/2015/06/07/disabling-turbo-boost">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="https://www.rugarciap.com/turbo-boost-switcher-for-os-x/">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="http://volta.garymathews.com/">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="https://marco.org/2015/06/07/disabling-turbo-boost">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="https://marco.org/2017/11/14/best-laptop-ever">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="https://browser.geekbench.com/macs/422">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="https://www.rugarciap.com/turbo-boost-switcher-for-os-x/">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="https://www.apple.com/macbook-pro/">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="https://gfx.io/">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 updatehttps://marco.org/2018/04/27/overcast42/2018/04/27/overcast42Fri, 27 Apr 2018 14:56:21 EDT<p><a href="https://itunes.apple.com/us/app/overcast-podcast-player/id888422857?ls=1&amp;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="https://en.wikipedia.org/wiki/General_Data_Protection_Regulation">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="http://www.marco.org/media/2018/04/overcast41-login.png"><img style="border: 1px solid #eee; max-width: 45%; margin-right: 5%;" src="http://www.marco.org/media/2018/04/overcast41-login.png"/></a><a href="http://www.marco.org/media/2018/04/overcast42-login.png"><img style="border: 1px solid #eee; max-width: 45%;" src="http://www.marco.org/media/2018/04/overcast42-login.png"/></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="http://www.marco.org/media/2018/04/overcast42-migration.png"/><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="https://techcrunch.com/2017/12/14/apple-launches-its-podcast-analytics-service-into-beta/">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="http://www.marco.org/media/2018/04/overcast42-remote-image.png"><img style="border: 1px solid #eee; max-width: 45%;" src="http://www.marco.org/media/2018/04/overcast42-remote-image.png"/></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="https://en.wikipedia.org/wiki/Content_Security_Policy">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="https://itunes.apple.com/us/app/overcast-podcast-player/id888422857?ls=1&amp;mt=8&amp;at=11lIuy&amp;ct=marcoorg">Get it now in the App Store</a>!</p> Overcast 4.1 now availablehttps://marco.org/2018/03/13/overcast41/2018/03/13/overcast41Tue, 13 Mar 2018 20:42:08 EDT<p><a href="https://itunes.apple.com/us/app/overcast-podcast-player/id888422857?ls=1&amp;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="https://itunes.apple.com/us/app/overcast-podcast-player/id888422857?ls=1&amp;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 appshttps://marco.org/2018/02/26/watchkit-baby-apps/2018/02/26/watchkit-baby-appsMon, 26 Feb 2018 15:03:35 EST<p>In the original <a href="https://www.youtube.com/watch?v=vN4U5FqrOdQ">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="https://daringfireball.net/2007/06/wwdc_2007_keynote">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="http://benjaminmayo.co.uk/developing-for-apple-watch">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="https://marco.org/2017/09/24/what-watch-podcast-apps-need">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="https://overcast.fm/+FgnaVMt3Q/14:03">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="https://twitter.com/qzervaas/status/967522663143886850">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 cloneshttps://marco.org/2018/02/22/your-app-was-copied/2018/02/22/your-app-was-copiedThu, 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="http://www.candlerblog.com/2013/12/23/no-thanks-ia/">a huge PR mistake</a>, and they&#8217;re a fool&#8217;s errand: even if you get one (<a href="http://www.ipwatchdog.com/2015/04/04/the-cost-of-obtaining-a-patent-in-the-us/id=56485/">$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="https://www.everythingisaremix.info/">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 erahttps://marco.org/2018/01/17/end-of-conference-era/2018/01/17/end-of-conference-eraWed, 17 Jan 2018 18:02:58 EST<p>Chris Adamson <a href="http://subfurther.com/blog/2018/01/15/the-final-conf-down/">notes a significant contraction in iOS and related conferences recently</a> (via <a href="https://mjtsai.com/blog/2018/01/16/the-final-conf-down/">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 Prohttps://marco.org/2017/11/24/fixing-the-macbook-pro/2017/11/24/fixing-the-macbook-proFri, 24 Nov 2017 19:14:29 EST<p>Despite <a href="https://marco.org/2017/11/14/best-laptop-ever">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="https://www.apple.com/shop/product/MLA22LL/A/magic-keyboard-us-english">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="https://www.apple.com/shop/product/MJ1K2AM/A/usb-c-digital-av-multiport-adapter">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 madehttps://marco.org/2017/11/14/best-laptop-ever/2017/11/14/best-laptop-everTue, 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="http://www.marco.org/media/2017/11/mbp2015.jpg"/></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="http://www.marco.org/media/2017/11/mbp2015-left.jpg"/></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="http://www.marco.org/media/2017/11/mbp2015-right.jpg"/></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="http://www.marco.org/media/2017/11/mbp2015-travel.jpg"/></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="http://www.marco.org/media/2017/11/mbp2015-back.jpg"/></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> The impossible dream of USB-Chttps://marco.org/2017/10/14/impossible-dream-of-usb-c/2017/10/14/impossible-dream-of-usb-cSat, 14 Oct 2017 15:31:55 EDT<p>I love the idea of USB-C: one port and one cable that can replace all other ports and cables. It sounds so simple, straightforward, and unified.</p> <p>In practice, it’s not even close.</p> <p>USB-C normally transfers data by the USB protocol, but it also supports Thunderbolt… sometimes. The 12-inch MacBook has a USB-C port, but it doesn’t support Thunderbolt at all. All other modern MacBook models support Thunderbolt over their USB-C ports… but if you have a 13-inch model, and it has a Touch Bar, then the right-side ports don’t have full Thunderbolt bandwidth.</p> <p>If you bought a USB-C cable, it might support Thunderbolt, or it might not. There’s no way to tell by looking at it. There’s usually no way to tell whether a given USB-C device requires Thunderbolt, either — you just need to plug it in and see if it works.</p> <p>Much of USB-C’s awesome capability comes from Thunderbolt and other Alternate Modes. But due to their potential bandwidth demands, computers can’t have very many USB-C ports, making it especially wasteful to lose one to a laptop&#8217;s own power cable. The severe port shortage, along with the need to connect to non-USB-C devices, inevitably leads many people to need annoying, inelegant, and expensive dongles and hubs.</p> <p>While a wide variety of USB-C dongles are available, most use the same handful of unreliable, mediocre chips inside. Some USB-A dongles make Wi-Fi drop on MacBook Pros. Some USB-A devices don’t work properly when adapted to USB-C, or only work in certain ports. Some devices only work when plugged directly into a laptop’s precious few USB-C ports, rather than any hubs or dongles. And reliable HDMI output seems nearly impossible in practice.</p> <p>Very few hubs exist to add more USB-C ports, so if you have more than a few peripherals, you can’t just replace all of their cables with USB-C versions. You’ll need a hub that provides multiple USB-A ports instead, and you’ll need to keep your USB-A cables for when you’re plugged into the hub — but also keep USB-C cables or dongles around for everything you might ever need to plug directly into the computer’s ports.</p> <p>Hubs with additional USB-C ports might pass Thunderbolt through to them, but usually don’t. Sometimes, they add a USB-C port that can only be used for power passthrough. Many hubs with power passthrough have lower wattage limits than a 13-inch or 15-inch laptop needs.</p> <p>Fortunately, USB-C is a great charging standard. Well, it’s more of a collection of standards. USB-C devices can charge via the slow old USB rates, but for higher-powered devices or faster charging, that’s not enough current.</p> <p>Many Android phones support Qualcomm’s Quick Charge over USB-C, which is different — usually — from the official, better, newer USB-C Power Delivery (PD) standard. Apple products, some Android phones, and the Nintendo Switch use USB-C PD. Quick Charge devices don’t get any benefit — usually — from PD chargers, and vice versa.</p> <p>Your charger, cable, and any standalone batteries you want to use all must support the same charging standard for it to work at full speed.</p> <p>Some cables don’t support USB-C PD at all, and most don’t support laptop wattages. Apple’s cable supports USB-C PD charging at high wattages… unless you bought the earlier version that doesn’t. Most standalone batteries sold to date don’t support USB-C PD — there are only a handful on the market so far, and most of them can’t charge a laptop at full speed, unless it’s the 12-inch MacBook.</p> <p>You can use USB-C PD to fast-charge an iPhone 8 or iPad Pro with a USB-C to Lightning cable. But it doesn’t work with every USB-PD battery or charger, or every USB-C to Lightning cable, or every iPad Pro.</p> <p>And, of course, there’s usually no way to tell at a glance whether a given cable, charger, battery, or device supports USB-C PD or at what wattages.</p> <p>It’s comforting to think that over time, this will all settle down and we’ll finally achieve the dream of a single cable and port for everything. But that’s not how technology really works.</p> <p>Before today’s USB-C can become ubiquitous and homogeneous, the next protocol or port will come out. We’ll have new, faster USB 4.0 and Thunderbolt 4 standards over the same-looking USB-C ports. We’ll want to move to an even thinner USB-D port. The press will call it “the future” and Apple will celebrate its new laptops that only have a USB-D port — two, if we’re lucky.</p> <p>And we’ll have to start over again, buying all new cables, dongles, hubs, chargers, batteries, and displays to adapt it to what we really need.</p> <p>Maybe next time, we’ll get it right. But probably not.</p> What we need from Apple to make standalone Apple Watch podcast appshttps://marco.org/2017/09/24/what-watch-podcast-apps-need/2017/09/24/what-watch-podcast-apps-needSun, 24 Sep 2017 21:17:44 EDT<p>The Apple Watch desperately needs standalone podcast playback, especially with the LTE-equipped Series 3, which was designed specifically for exercising without an iPhone.</p> <p>Believe me, <a href="https://marco.org/2017/08/10/removed-send-to-watch">I&#8217;ve tried</a>. But limitations in watchOS 4 make it impossible to deliver standalone podcast playback with the basic functionality and quality that people expect.</p> <h3><strong>Deal-breaker: Progress sync</strong></h3> <p>Unlike on iOS, Watch apps aren&#8217;t allowed to play audio in the background and continue running.<sup id="fnref:pPxoltIei1"><a href="#fn:pPxoltIei1" rel="footnote">1</a></sup></p> <p>The only way to continue playback in the background on watchOS 4 is to use the <a href="https://developer.apple.com/documentation/watchkit/wkaudiofileplayer"><code>WKAudioFilePlayer</code> API</a>. This is unsuitable for podcast players in its current state for one big reason:</p> <p>It takes audio playback out-of-process, suspending the host app indefinitely during playback, and does not wake up the host app to notify it of playback progress or other relevant events like pausing, seeking, or reaching the end of an episode.</p> <p>Since most podcast listeners also listen on their iPhone, the Watch needs to sync each episode&#8217;s listening progress with its iPhone app or a web service. But if you reach the end of a workout and pause playback without launching the podcast app, such as with a headphone &#8220;pause&#8221; button, turning off your headphones, removing your AirPods, or using the Now Playing app on the Watch, there&#8217;s no guarantee that the podcast app will be notified of your progress anytime soon. So when the user later goes to the iPhone app to continue playback, progress will be lost, or episodes&#8217; state (played, deleted, recommended, etc.) will be wrong.</p> <p><strong>Minimum fix:</strong> During <code>WKAudioFilePlayer</code> playback, wake the host app to let it record progress periodically (ideally at least every minute) and on state-change events, such as pausing, seeking, and reaching the end of a file.</p> <p><strong>Better fix:</strong> Let apps continue running in the background indefinitely while they&#8217;re playing audio with <code>WKAudioFilePlayer</code>, just as workout apps can, so they can track their own state.<sup id="fnref:pPxoltIei2"><a href="#fn:pPxoltIei2" rel="footnote">2</a></sup></p> <p>To achieve the minimum experience-quality level that Apple and Overcast customers expect, watchOS and <code>WKAudioFilePlayer</code> also need a few more changes:</p> <h3><strong>Volume control API or widget</strong></h3> <p>Overcast&#8217;s top request for the Watch app by far is volume control via the Digital Crown, both for iPhone and Watch playback (when I offered it). It&#8217;s especially necessary for standalone Watch playback, as there&#8217;s very little access anywhere in watchOS to the concept of the system volume level.</p> <p><strong>Fix:</strong> An API to set the volume level, or a system UI widget for volume control like iOS&#8217; <a href="https://developer.apple.com/documentation/mediaplayer/mpvolumeview"><code>MPVolumeView</code></a>.</p> <p>The lack of volume control is especially damaging with watchOS 4&#8217;s great new &#8220;Auto-launch Audio Apps&#8221; setting. If you&#8217;re playing audio from an iPhone app and have its corresponding Watch app installed, that Watch app shows by default when your Watch screen activates. If you don&#8217;t have its Watch app installed, the built-in Now Playing app shows instead.</p> <p>In the last few days since watchOS 4&#8217;s launch, I&#8217;ve had dozens of users tell me that they&#8217;ve uninstalled Overcast&#8217;s Watch app <em>just</em> to force the Now Playing screen to auto-launch instead, <em>just</em> so they could have quick access to volume control.</p> <h3><strong>Output-device presence, switching</strong></h3> <p><code>WKAudioFilePlayer</code> will not play to the Watch&#8217;s built-in speaker &#8212; it only plays to headphones connected to the Watch via Bluetooth. If playback is attempted without headphones connected, <code>WKAudioFilePlayer</code> just silently fails to play, without returning any errors.</p> <p>Making matters worse, there appears to be no way to reliably detect the presence or absence of a suitable Bluetooth output device to avoid this.</p> <p>Another common user request for Watch audio apps is an AirPlay output control. The rise of AirPods has increased this need and exacerbated the output-device-presence issue, as their multi-device sharing behavior leads to less certainty by the user about which device they&#8217;re currently connected to, and a more frequent need to manually select them on the current device.</p> <p><strong>Minimum fix:</strong> Fix the error-reporting behavior of <code>WKAudioFilePlayer</code> when suitable play conditions aren&#8217;t met, and provide a way to detect the presence or absence of a suitable audio-playback device so our apps can relay this information to the user.</p> <p><strong>Better fix:</strong> Also provide a standard AirPlay UI control, possibly integrated with the volume control, again like <code>MPVolumeView</code> on iOS.</p> <h3><strong>Next/previous-track commands</strong></h3> <p>Podcast listeners expect previous- and next-track buttons on headphones, cars, and the Now Playing app to perform 30-second seek operations instead of changing episodes completely. On iOS, <a href="https://developer.apple.com/documentation/mediaplayer/mpremotecommandcenter"><code>MPRemoteCommandCenter</code></a> lets apps respond to these commands however they want.</p> <p><code>WKAudioFileQueuePlayer</code> provides no such customization, ignores previous-track commands, and forces next-track commands to skip to the next audio file, losing any progress in the current one &#8212; and if there isn&#8217;t a next file in the queue, it stops playback completely. And all of this happens without waking the host app.</p> <p><strong>Minimum fix:</strong> Wake the host app whenever the current queue item changes in <code>WKAudioFileQueuePlayer</code>.</p> <p><strong>Better fix:</strong> Bring <code>MPRemoteCommandCenter</code> or an equivalent to watchOS, and if the host app adds its own command handlers, disable the built-in <code>WKAudioFileQueuePlayer</code> behavior for previous-/next-track commands.</p> <h3><strong>Data-transfer progress, speed</strong></h3> <p>While some apps may be able to perform direct downloads of podcast episodes from the internet to the Watch, many will rely on transferring audio files from the iPhone to the Watch to ensure compatible formats, consistent timestamps, small files, or audio-processing features.</p> <p>Transferring a podcast file to the Watch is a long-running task, often taking at least a few minutes per episode (and sometimes much longer), but the <a href="https://developer.apple.com/documentation/watchconnectivity/wcsessionfiletransfer"><code>WCSessionFileTransfer</code></a> class provides no progress information. So there&#8217;s no way for apps to inform users how long the transfers may take, or if they&#8217;re currently moving at all.</p> <p><strong>Minimum fix:</strong> Add a progress API on <code>WCSessionFileTransfer</code>.</p> <p><strong>Better fix:</strong> Add a progress API on <code>WCSessionFileTransfer</code> and provide actionable information if the transfer is currently paused or waiting for something, such as having other transfers ahead of it in a queue, or needing a different power or connectivity state.<sup id="fnref:pPxoltIei3"><a href="#fn:pPxoltIei3" rel="footnote">3</a></sup></p> <p><strong>Additionally:</strong> Wi-Fi and LTE transfers to the Watch are currently <em>much</em> faster than Bluetooth, often by an order of magnitude, but the Watch seems to send all <code>WCSessionFileTransfer</code> data over Bluetooth even when connected to a power source. File transfers should use Wi-Fi when power allows.</p> <h3>Nice-to-have: Streaming audio playback</h3> <p>One of the most compelling features of the Series 3 Watch with LTE is streaming Apple Music playback, but there&#8217;s no streaming audio-playback API available to developers on watchOS today. Every method requires locally downloaded files.</p> <p>I recognize this is a big task. That&#8217;s why it&#8217;s a &#8220;nice-to-have&#8221;.</p> <p><strong>Enhancement:</strong> Bring a relevant subset of <a href="https://developer.apple.com/documentation/avfoundation/avplayer"><code>AVPlayer</code></a> to watchOS, or expose streaming-audio playback via some other method.</p> <div class="footnotes"> <hr /> <ol> <li id="fn:pPxoltIei1"> <p>There&#8217;s one elaborate exception that we discussed in <a href="https://overcast.fm/+FgnZa1ZTk">Under The Radar #98</a>: workout apps, which are allowed to run in the background <em>and</em> play audio. So this all becomes possible if you combine a standalone podcast player with a workout app, <em>and</em> only allow podcast playback while a workout is active that was started <em>from that app.</em> But this forces the combination of two completely different app types, and users would find the workout-during-playback requirement confusing, inexplicable, and limiting.</p> <p>Requiring podcast apps to also be workout apps is a user- and developer-hostile hack that Apple probably doesn&#8217;t intend.&#160;<a href="#fnref:pPxoltIei1" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pPxoltIei2"> <p>This could also allow the use of the more capable in-process APIs such as <code>AVAudioPlayer</code>, which appeared to work well in watchOS 3.&#160;<a href="#fnref:pPxoltIei2" rev="footnote">&#8617;&#xFE0E;</a></p> </li> <li id="fn:pPxoltIei3"> <p>While I have you, please also add this reporting for paused or waiting background <code>NSURLSessionDownloadTask</code> transfers.&#160;<a href="#fnref:pPxoltIei3" rev="footnote">&#8617;&#xFE0E;</a></p> </li> </ol> </div> Overcast for iOS 11 coming soonhttps://marco.org/2017/09/22/overcast-ios11-soon/2017/09/22/overcast-ios11-soonFri, 22 Sep 2017 22:32:41 EDT<p>I&#8217;m sorry that I missed the iOS 11 launch for my fancy drag-and-drop update. It&#8217;s coming soon, but it&#8217;s not ready yet.</p> <p>In <a href="https://overcast.fm/+BgMW5b0oY/10:49">Hello Internet episode 4</a>, <a href="https://www.youtube.com/CGPGrey">CGP Grey</a> introduced a metaphor for work-life balance as four light bulbs &#8212; work, friends, family, and health &#8212; between which one can allocate 100 watts, total. So it&#8217;s possible to shine brightly in one area at significant cost to the others, or to try to have a mediocre spread between all of them.</p> <p>Usually, I prioritize family and work, in that order, and my friends are pretty tolerant of my general neglect, but health gets left as a pretty low priority.</p> <p>This summer, I decided I finally needed to devote significant time to health, and since my family always comes first, that mostly came at the expense of reduced work time.<sup id="fnref:pgOSnb2AQ1"><a href="#fn:pgOSnb2AQ1" rel="footnote">1</a></sup> And iOS 11 has ended up requiring more changes and fixes than I expected.</p> <p>So I have a great Overcast update for iOS 11 and iPhone X in progress, but it&#8217;s not done yet. I appreciate your patience, and I hope you&#8217;ll find it worth the wait.</p> <div class="footnotes"> <hr /> <ol> <li id="fn:pgOSnb2AQ1"> <p>I&#8217;m fine. I just finally realized that the correct amount of exercise for a 35-year-old was probably not zero.&#160;<a href="#fnref:pgOSnb2AQ1" rev="footnote">&#8617;&#xFE0E;</a></p> </li> </ol> </div> Couragehttps://marco.org/2017/09/18/courage/2017/09/18/courageMon, 18 Sep 2017 13:41:26 EDT<p>Many Apple fans were amused when Phil Schiller explained the removal of the headphone jack on last year&#8217;s iPhone as &#8220;courage&#8221;. But that was nothing compared to what happened last week.</p> <p>For ten years, the iPhone looked like this:</p> <p><center> <svg style="max-width: 33%; margin-top: 2em; margin-bottom: 2em;" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 430 870" xml:space="preserve"> <rect stroke="black" stroke-width="26" stroke-miterlimit="10" fill="none" x="15" y="14" width="401" height="841" rx="43" /> <rect fill="black" x="26" y="23" width="379" height="78" /> <rect fill="black" x="26" y="768" width="379" height="78" /> <circle stroke="rgb(255, 255, 255)" stroke-width="4" stroke-miterlimit="10" fill="none" cx="215.5" cy="817" r="31.5" /> <path stroke="rgb(255, 255, 255)" stroke-width="4" stroke-miterlimit="10" fill="none" d="M 183.5,51.5 L 248.5,51.5" /> </svg> </center></p> <p>A rounded rectangle, bars on top and bottom, and a circle centered in the bottom bar. If you want to get fancy, put a line in the top bar, too.</p> <p>It&#8217;s so simple that even when children draw it, it&#8217;s <em>instantly</em> recognizable as an iPhone to most of the world&#8217;s population. Not just any phone &#8212; an iPhone, specifically.</p> <p>As an <a href="https://overcast.fm/">app developer</a> and fan, I was hoping that the long-rumored edge-to-edge iPhone screen would still be a rectangle, possibly even with room for a Home button on a narrower bezel, so I wouldn&#8217;t have to change my habits (or my app&#8217;s layout):</p> <p><center> <svg style="max-width: 33%; margin-top: 2em; margin-bottom: 2em;" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 416 853" xml:space="preserve"> <rect stroke="black" stroke-width="19" stroke-miterlimit="10" fill="none" x="11.5" y="10.5" width="394" height="831" rx="24" /> <rect fill="black" x="12" y="20" width="394" height="31" /> <rect fill="black" x="12" y="802" width="394" height="31" /> <rect stroke="rgb(255, 255, 255)" stroke-width="4" stroke-miterlimit="10" fill="none" x="173" y="819" width="71" height="14" rx="7" /> </svg> </center></p> <p>But that&#8217;s the unmistakable image of an Android phone. (Or a generic smartphone &#8212; same thing.)</p> <p>Apple would&#8217;ve lost what the iPhone has had since its introduction: a unique, recognizable shape that distinguishes itself from all of the other boring rectangles out there.</p> <p>Many are now speculating that Apple will find a way to get rid of the iPhone X&#8217;s top &#8220;notch&#8221; (officially called the &#8220;sensor housing&#8221;) as soon as they can, and that this is a temporary design meant only for a few years. But I don&#8217;t think so.</p> <p>Many app developers are planning to hide the notch in the UI with black bars. But Apple explicitly <a href="https://developer.apple.com/ios/human-interface-guidelines/overview/iphone-x/">says not to</a>.</p> <p><center> <svg style="max-width: 33%; margin-top: 2em; margin-bottom: 2em;" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 416 853" xml:space="preserve"> <rect stroke="black" stroke-width="19" stroke-miterlimit="10" fill="none" x="11.5" y="10.5" width="394" height="831" rx="48" /> <path fill="black" d="M 131.56,10 L 313,10 313,31 C 313,31 313,31 313,31 L 313,32.05 C 313,40.27 307.86,47.61 300.13,50.43 295.16,52 290.54,52 281.29,52 L 140.69,52 C 126.46,52 121.84,52 117.67,50.62 L 116.87,50.43 C 109.14,47.61 104,40.27 104,32.05 104,31 104,31 104,31 L 104,31 104,10 Z M 131.56,10" /> </svg> </center></p> <p>This is the new shape of the iPhone. As long as the notch is clearly present and of approximately these proportions, it&#8217;s unique, simple, and recognizable.</p> <p>It&#8217;s probably not going to significantly change for a long time, and Apple needs to make sure that the entire world recognizes it as well as we could recognize previous iPhones.</p> <p>That&#8217;s why Apple has made no effort to hide the notch in software, and why app developers are being told to embrace it in our designs.</p> <p>That&#8217;s why the <a href="https://techcrunch.com/2017/07/31/homepod-firmware-reveals-iphone-8-design-and-facial-recognition/">HomePod software leak</a> depicted the iPhone X like this: it&#8217;s the new basic, recognizable form of the iPhone.</p> <p>Apple just completely changed the fundamental shape of the most important, most successful, and most recognizable tech product that the world has ever seen.</p> <p><em>That&#8217;s</em> courage.</p>