Archive for January 2017

Tuesday, January 31, 2017

Fun With Swift String Interpolation

Ole Begemann:

The source of the problem is that “unsafe strings” and “safe strings” are so fundamentally different that we should often treat them differently, yet we tend to use the same String type for both. So let’s introduce separate types for these concepts. I’m calling these UnsafeString and SanitizedHTML.


If we make sure that all rendering APIs only accept SanitizedHTML as input, the new types make it impossible to accidentally render an unescaped string.


Customizing how your own types interpret an interpolation string is an extremely powerful feature, especially for DSLs. Building SQL queries or localized strings are just two examples where you could employ the same techniques (here’s an implementation of the latter by Brent Royal-Gordon). Any task that needs strings built from components can probably profit from it.

It Just Works

Adrian Kosmaczewski (via Andy Lee):

I start iTunes. It tells me that I need to log in to Apple Music. I do not remember ever having logged off. I enter my username and password. The dialog goes away. iTunes still does not allow me to listen to music. I close and re-open iTunes. I log off and on a few times. I finally reboot my Mac. I discover that the artist I would love to listen to that morning is not available on iTunes Music. I select another artist. I hit play. Music does not come out from the built-in speakers. I plug in my old 2002 Harman Kardon SoundSticks. I plug the USB 3 to USB dongle first.


I sit on my Mac and open a Pages file stored on iCloud, one I was working on my iPad Pro during the weekend. The sync fails and I cannot see the last modifications I made on my iPad Pro. Open and close apps on both devices. I reboot them both. Pages for Mac tells me that there is a conflict between the versions in both devices, even though I have never edited the file on the Mac. I select the version on the iPad. My changes are lost.


I try to open an application I bought yesterday on this Mac. The operating system protests, telling me that I have to login to the App Store because the application was bought in another Mac. It is not true. I log in anyway. The app opens.

This seems too bad to be real, but I’ve had days recently that feel like this. I have an old Mac and sometimes think a new one would be more reliable, until I read about problems people are having with a brand new MacBook Pro and display. At least I don’t have kernel panics.

Lloyd Chambers:

I had mangled a bunch of html files as part of a major site overhaul, and I just wanted the top-level folder back as of 12 hours or so prior—that’s the type of thing perfect for Time Machine.

  1. Enter Time Machine.
  2. Restore Folder.
  3. Observe that the restored folder now has ZERO files in it (empty). Time Machine WIPED OUT everything. No error message, no indication of any issue (that folder has had files for many years, and thousands of them).

Update (2017-01-31): Peter Steinberger:

Huh, has it been another month yet? About time for Time Machine to break again.

Mac App Store Top Charts for 70 Cents

Jeff Johnson (tweet):

I’m not sure exactly what it means to be near the bottom of the overall charts. I do know exactly what it means to be near the bottom of the Social Networking charts: nothing! There are 180 apps each on the Top Paid Social Networking and Top Grossing Social Networking charts. My app was 18 out of 180 and sold 1 unit.


We do know that some developers are doing very well on the Mac App Store. The question is, how many? It’s hard not to conclude that the top charts themselves are extremely top-heavy.

Previously: Exploring the App Store’s Top Grossing Chart.

Update (2017-02-02): Nick Heer:

Of note, most of the apps ahead of Underpass are third-party implementations of popular iOS apps like Instagram, WhatsApp, and Facebook Messenger. And, at number thirteen in the Top Grossing chart, Apple’s long-outdated FaceTime app. That doesn’t sound like a healthy ecosystem.

LG 5K Display and Wi-Fi Interference

Sebastian Anthony (via Peter Steinberger, Hacker News):

The spiritual successor to Apple’s Thunderbolt Display, the LG UltraFine 5K monitor, which only started shipping out from the Apple online store this week, appears to suffer from a major fault: when placed within two metres (6.5ft) of a wireless router, the display starts to flicker; move it really close, and the monitor goes black and becomes unusable. An LG Electronics support person confirmed the issue, saying it “only happens for the 5K monitors we have, not other LG monitors.”

If that wasn’t bad enough, 9to5Mac’s Zac Hall reports that his LG 5K monitor, under the duress of a nearby Wi-Fi router, can freeze the MacBook Pro that it’s plugged into, forcing a reboot to bring it back. When he moved the router (an Apple AirPort Extreme) from beside the monitor to another room, everything went back to normal.

The Apple Store reviews are also a horror show.

Previously: LG Ultrafine 5K Reviews.

Update (2017-01-31): McCloud:

I bought the 4K version and it literally worked only twice. Third time plugging it in it died.

Luc Vandal:

The first 5K display I received had the same issues as the 4K except that it worked for about a minute and then just died. Since I had similar issues with the previous display, I went to the Apple Store to exchange the laptop for a new one, thinking that something was wrong with it. Unfortunately it didn’t solve the issue and had to, once again, send the display back to Apple and order a new one.


The thing wobbles like a Bobblehead. I don’t have the most stable desk but that was never an issue with my iMac.


The overall construction quality not what you would expect from a product endorsed by Apple. This display is more expensive than a Thunderbolt Display and yet it feels much cheaper. That Apple is fine with that is beyond me.

Update (2017-02-03): Benjamin Mayo (iMore, MacRumors, Hacker News):

LG has now said that it has identified the hardware problem in which Wi-Fi routers within 2 feet of the display resulted in signal interference issues. All new UltraFine units produced after February will not be affected as they will be fitted with ‘enhanced shielding’. Existing owners of the UltraFine 5K Display, recommended by Apple as the best companion to the 2016 MacBook Pro, will need to contact LG support for assistance.

Activation Lock Status Checker Removed

Juli Clover:

As it turns out, the Activation Lock website was a vital part of a bypass hack used to unlock devices bricked by Activation Lock, perhaps hinting at why Apple shelved it.

The process is demonstrated in the video below. By changing one or two characters of an invalid serial number, hackers are able to generate a valid serial number, using the Activation Lock tool for verification purposes to make sure it’s functional. That valid number, which belongs to a legitimate device owner, can then be used to unlock a previously non-functional iPhone or iPad.

The Activation Lock scheme that steals valid serial numbers from existing iOS users potentially explains a mysterious Apple ID bug that’s been plaguing iPhone owners for months.

Monday, January 30, 2017

Riptide: WebKit’s Retreating Wavefront Concurrent Garbage Collector

Filip Pizlo:

As of r209827, 64-bit ARM and x86 WebKit ports use a new garbage collector called Riptide. Riptide reduces worst-case pause times by allowing the app to run concurrently to the collector. This can make a big difference for responsiveness since garbage collection can easily take 10 ms or more, even on fast hardware. Riptide improves WebKit’s performance on the JetStream/splay-latency test by 5x, which leads to a 5% improvement on JetStream. Riptide also improves our Octane performance.


WebKit uses a simple segregated storage heap structure. The DOM, the Objective-C API, the type inference runtime, and the compilers all introduce custom marking constraints, which the GC executes to fixpoint. Marking is done in parallel to maximize throughput. Generational collection is important, so WebKit implements it using sticky mark bits. The collector uses conservative stack scanning to ease integration with the rest of WebKit.


Draining in parallel means having to synchronize marking. Our marking algorithm uses a lock-free CAS (atomic compare-and-swap instruction) loop to set mark bits.


Our collector does not move objects. Instead, it uses the mark bit to also track generation. Quite simply, we don’t clear any mark bits at the start of an eden collection. The marking algorithm will already ignore objects that have their mark bits set. This is called sticky mark bit generational garbage collection.


Riptide is able to stop the world for certain tricky operations like stack scanning and DOM constraint solving.

Riptide uses a retreating wavefront write barrier to manage races between marking and object mutation. Using retreating wavefront allows us to avoid any impedance mismatch between generational and concurrent collector optimizations.

Facebook Accepts Slightly Mis-typed Passwords

Interesting threads on Hacker News and Stack Overflow. It sounds like Facebook accepts different variations on your password, and it also warns if your new password is too similar to your old one. In both cases, this is done by generating strings (e.g. with different case or the last character removed) based on what you typed. Only the hash of the actual password is stored.

Take Control of Your Digital Legacy

Joe Kissell:

In the customer survey Take Control Books conducted a few months ago, the topic of one’s digital legacy was the most popular by a large margin. People are increasingly concerned about what will happen to their accounts, email, photos, and other data if they die or become incapacitated; and beyond that, how they can make sure all (and only) the data they want to pass down to future generations is preserved in a way that will still be useful decades or centuries from now. I tackle all these subjects, and more, in Take Control of Your Digital Legacy.

Update (2017-01-31): Joe Kissell:

To introduce the book to you, I’ve framed a number of the questions that prompted the book, and their answers, as a conversation with my completely imaginary Aunt Agatha.

Processing the Selected Text via Script

It seems like it should be easy to run the selected text in any app through a shell script, but I’ve run into a surprising number of issues doing this. I’ve long used ThisService to create system services out of shell scripts that sort lines, smarten quotes, and apply title case. Then I would assign keyboard shortcuts in System Preferences and have easy access to the scripts from any app.

Over the last few months, keyboard shortcuts for system services (and PDF services) have become unreliable. They still show up in System Preferences, but they usually don’t work. Often, System Preferences forgets them. It also forgets which services I’ve enabled and disabled, hiding my favorite scripts and bringing back dozens of commands that I never use. This makes the Services contextual menu unwieldy. The Keyboard preferences pane is awkward to use, so that it takes a long time to go through the list checking and unchecking the appropriate boxes.

My first thought was to use LaunchBar, which I knew could get and replace the selected text (either using a script or a service). However, this takes multiple steps: long Command-Space to load the text, Tab, type the name of the script/service, Command-Shift-C to copy the result text and paste it back. This is fine for occasionally used scripts, where keyboard shortcuts would not be practical, but not for ones I use many times per day.

How about using FastScripts to assign keyboard shortcuts and run the scripts? Unfortunately, most applications are not scriptable enough to access the selected text. I wrote a script to use GUI scripting to invoke my service from the Services menu:

my runServiceNamed("Title Case")

on runServiceNamed(_serviceName)
    tell application "System Events"
        set _frontApp to first application process whose frontmost is true
        tell _frontApp
            set _appMenu to menu 2 of menu bar 1
            set _servicesMenu to menu 1 of menu item "Services" of _appMenu
            set _menuItem to menu item _serviceName of _servicesMenu
            click _menuItem
        end tell
    end tell
end runServiceNamed

However, GUI scripting the menu bar doesn’t seem to work in MarsEdit, one of the apps where I would use the scripts most frequently.

I ended up giving up on services entirely and used GUI scripting and the clipboard to get and set the selected text:

my process("/Users/mjt/Library/Application Support/BBEdit/Text Filters/")

on process(_scriptPath)
    set _savedClipboard to the clipboard

    -- Copy selected text
    tell application "System Events" to keystroke "c" using {command down}
    delay 1 -- Without this, the clipboard may have stale data.

    -- Clipboard has Mac line breaks, but script requires Unix.
    set _script to "pbpaste | tr '\\r' '\\n'  | " & _scriptPath's quoted form & " | pbcopy"
    do shell script _script

    -- Paste to replace selected text
    tell application "System Events" to keystroke "v" using {command down}
    delay 1 -- Without this, may restore clipboard before pasting.

    set the clipboard to _savedClipboard
end process

This is ugly and has some downsides: there are delays necessitated by the GUI scripting, and certain types of clipboard data are not preserved. But I can assign a single keyboard shortcut, which FastScripts won’t forget, and it works reliably.

Note: I originally wrote the script to use the clipboard instead of pbcopy and pbpaste. The latter are better because that way the text doesn’t end up in an AppleScript variable. Getting the text from AppleScript into stdin seems to require using either echo, which is subject to the shell’s command length limit, or writing to a temporary file.

Sunday, January 29, 2017

How Much Has That Mac Been Used?

Keir Thomas:

This is obviously only of use on a MacBook (including Pro/Air), but the number of times a battery has been charged is useful information. This is represented as the charge cycle figure. A low charge cycle figure on an older Mac means one of two things: either the Mac hasn’t been used much or – and perhaps more likely – the Mac has spent most of its life attached to its charger, so might rarely have left the owner’s home or office. Either way, a low number is good news.


This figure is approximately the number of hours the drive has been powered-up since it was installed in the computer.


If the user you’re buying the Mac from has never reinstalled macOS/OS X then you can find out exactly when they first powered-up the Mac and completed the initial setup. Just open a Terminal window as described above and paste in the following:

ls -l /var/db/.AppleSetupDone

Macs Lose Marketshare

Michael Potuck (Hacker News):

It’s not surprising that Mac sales dropped for Apple in 2016 as they experienced their first year over year sales decline since 2001. What is interesting, however, is that as Mac sales dropped roughly 10% and personal computers overall dropped 5.7% for the year, the top four leaders in the market all saw growth as Apple was pushed to number five.

Although Mac sales were up in Q4 2016 compared to Q4 2015, an analyst note today from Bloomberg’s Anand Srinivasan and Wei Mok has revealed Apple has dropped to the fifth largest PC vendor, with ASUS (ASUSTeK) overtaking fourth place. The top four vendors are now Lenovo, HP, Dell, and ASUS.

This comes after a long period of growing relative to the rest of the industry.

Previously: How Apple Alienated Mac Loyalists.

Update (2017-01-31): Nick Heer:

After over a decade of near-constant growth that went against the PC industry’s decline, 2016 was a down year in terms of absolute sales and sales relative to Apple’s primary competitors.

Funding the Web

The Changelog podcast has a fascinating interview:

Brendan Eich, founder of Brave and creator of JavaScript, joined the show to talk about the history of the web, how it has been funded, and the backstory on the early browser wars and emerging monetization models. We also talked about why big problems are hard to solve for the Internet and the tradeoffs between centralization and distribution.

Previously: Brave Browsers, Apple/Google Hiring Lawsuit.

Swift Weak References and Type Erasure

Curt Clifton:

In one of my side projects, two interesting Swift problems—heterogeneous arrays and weak references—collided in an interesting way.


How can we clean up the old callers? We need some logic that tells us when a signal has been deallocated. But we don’t have a direct reference to any signals at all from the data model. We gave that up when we used type erasure. The only references to the signals are inside the callers.

That realization leads to the insight that unlocks this problem. We can capture a weak reference to the signal inside another closure that tells us whether or not a signal has been deallocated[…]

Friday, January 27, 2017

Injection II, the App

John Holdsworth (tweet):

The Injection plugin for Xcode is now a standalone app. This allows you to inject changes to class method implementations into a running application in the simulator or a macOS app. Injecting is now as simple as downloading the app and having it running in the background while you are working on a project in Xcode then using the menu bar item “Inject Source” (don’t forget to save the file!)


The app includes the “Xprobe” viewer for browsing an application’s memory. It’s loaded into an app using the “Load Xprobe” menu bar item. Initially, Xprobe displays a “sweep” of objects found by recursively following ivars pointing to other objects from a set of seeds. Clicking on an instance link displays the ivars of that object at that point in time. A snapshot can also be taken to freeze the state of the entire application and store it as a standalone web page for later analysis such as this file from Artsy’s eidolon.

Rusty’s Next “Mac mini”

Russell Ivanovic:

No worries you might say, go to Apple and buy a new Mac mini! Except when you do, you quickly realise there’s something up with the Mac Mini[…] Yes that’s right, it hasn’t been updated in 813 days…and the last update Apple made to them was mostly a downgrade in terms of performance. No one except the most desperate of people should even consider buying one of these things. The fact that Apple will still happily sell you a 2-3 year old computer for new prices is beyond insulting.

With the above in mind, I asked myself a question I haven’t really considered since switching to macOS (the artist formerly known as OS X) back in the early 2000’s. Do I actually need this computer to run macOS? I quickly realised I don’t. I need Chrome, I need a few basic apps and I need my Elgato EyeTV Diversity USB stick to be supported so I can watch TV. It turns out there’s another OS that has all those: Windows.

Update (2017-05-07): Russell Ivanovic:

Out of the box a few things struck me. Firstly: Just how small it was. If that iPhone 7 above doesn’t give you an idea, here it is sitting on top of my old Mac Mini.

Flickr’s Year Without Buying Storage

Archie Russell (via Hacker News):

One of the largest cost drivers in running a service like Flickr is storage. We’ve described multiple techniques to get this cost down over the years: use of COS, creating sizes dynamically on GPUs and perceptual compression. These projects have been very successful, but our storage cost is still significant.

At the beginning of 2016, we challenged ourselves to go further — to go a full year without needing new storage hardware. Using multiple techniques, we got there.


Because we were concerned that further rollout of dynamic thumbnail generation would place a heavy load on our resizing infrastructure, we targeted only thumbnails from less-popular images for deletes. Using this approach, we were able to handle our complete resize load with just four GPUs. The process put a heavy load on our storage systems; to minimize the impact we randomized our operations across volumes. The entire process took about four months, resulting in even more significant gains than our storage threshold adjustments.


Running our users’ original photos through lossless compression was probably our highest-risk approach. We can recreate thumbnails easily, but a corrupted source image cannot be recovered. Key to our approach was a re-compress-decompress-verify strategy: every recompressed image was decompressed and compared to its source before removing the uncompressed source image.

Previously: Real-time Resizing of Flickr Images Using GPUs.

Update (2017-01-30): I don’t know whether this is related, but Flickr is now showing thumbnails from other people’s photos in our private album.

Swift 4 String Manifesto

Dave Abrahams and Ben Cohen (mailing list):

The first step in improving this [internationalization] situation is to regularize all localized operations as invocations of normal string operations with extra parameters.


When assigning a Substring to a longer-lived variable (usually a stored property) explicitly of type String, a type conversion will be performed, and at this point the substring buffer is copied and the original string’s storage can be released.


With Substring and String being distinct types and sharing almost all interface and semantics, and with the highest-performance string processing requiring knowledge of encoding and layout that the currency types can’t provide, it becomes important to capture the common “string API” in a protocol. Since Unicode conformance is a key feature of string processing in Swift, we call that protocol Unicode[…]


Index interchange between String and its unicodeScalars, codeUnits, and extendedASCII views can be made entirely seamless by having them share an index type (semantics of indexing a String between grapheme cluster boundaries are TBD--it can either trap or be forgiving). Having a common index allows easy traversal into the interior of graphemes, something that is often needed, without making it likely that someone will do it by accident.


In the long run, we should improve Swift string interpolation to the point where it can participate in most any formatting job. Mostly this centers around fixing the interpolation protocols per the previous item, and supporting localization.


This proposal depends on two new features in the Swift language:

  1. Generic subscripts, to enable unified slicing syntax.

  2. A subtype relationship between Substring and String, enabling framework APIs to traffic solely in String while still making it possible to avoid copies by handling Substrings where necessary.

Regarding this last point, note that String is a struct.

Chris Lattner:

I agree with Joe that Swift can learn a lot from Perl 6 grammar’s and we should take the time to do it right.


So why bless regex literals with language support at all? I see several reasons[…]

Designing for iPad Power Users

Matt Gemmell:

An increasing number of people — myself included — use an iPad for work. There are plenty of apps designed with that in mind, but I often find rough edges, as if the developers haven’t quite considered that people are potentially spending their entire day using the software.

The needs of iPad power users aren’t conceptually different from those of desktop or laptop users, but the nature of the hardware and its capabilities tends to cause some things to be overlooked. Based on my own experience, here’s some stuff that you, as a developer, should think about implementing if your customers are working with their iPads.

Interface Builder: View Is Clipping Its Content

Daniel Jalkut:

At this point you can usually just “size to fit” and Interface Builder will use its knowledge of the control’s class, and that class’s ability to size itself to suit its content. Or, if you’re using Auto Layout, it might mean that you need to ask Interface Builder to update the items’s frame, allowing Auto Layout to essentially size to fit for you.

In this case however I have a conundrum: both “size to fit” and AutoLayout insist this is the proper size and placement for the control, yet Interface Builder is still convinced the control will clip its content (the text of the menu item title).


I can’t win: if I let Auto Layout have it’s way, I get an annoying clipping notice. If I let the clipping notice have its way, Auto Layout throws a fit.

This hasn’t worked properly in years. Another reason to go nibless.

Thursday, January 26, 2017

Omni’s 2017 Plans

Ken Case:

We’ll be continuing the process of switching to free downloads across all our apps on Mac and iOS. Beyond the benefits we’ve already delivered (upgrade discounts, free upgrades for recent purchases, and free trials), this will make it possible for us to offer enterprise licensing for our iOS apps with support for volume discounts.


This summer, OmniFocus will be ten years old. We’ve improved a lot of things about the app over those ten years, but to maintain file format compatibility there are some things about the way we work with the app that haven’t ever changed. Last year we laid the groundwork for finally changing some of those, when we switched to a new, extensible file format and added encryption. This year, we’re going to make some fundamental improvements to the data OmniFocus keeps track of.


In 2016 we scratched the surface with URL automation on iOS, but in 2017 we plan to roll out user automation on iOS in a big way across all our apps with a much richer set of capabilities. This automation support won’t be limited to a simple set of URL primitives; instead, we’re adding support for running JavaScript code: code that has the same level of deep support for manipulating the data in our apps as we’ve previously exposed to AppleScript.

As with Core Data and cloud storage, they’re not waiting for Apple to provide the services that they want for their iOS apps.

Update (2017-02-20): See also: Omni Automation.

Swift ABI Stability Manifesto

Michael Ilseman (tweet, Reddit):

ABI is per-platform, as it is a low level concern influenced by both the architecture and the OS. Most platform vendors define a “standard ABI” which is used for C code and built on by C-family languages. Swift, however, is a very different language from C and has its own per-platform ABI. While most of this document is platform-agnostic, platform-specific concerns have influenced details of the design and implementation of Swift’s ABI.


Decisions about the ABI will have long-term ramifications and may limit the ways in which the language can grow and evolve in the future. Future Swift versions can add new, orthogonal aspects to the ABI, but any inefficiencies or inflexibilities present when stability is declared will (effectively) persist forever for that platform.


Library evolution introduces resilient layouts of public types by default and provides new annotations that freeze the layout for performance. A resilient layout avoids many of the pitfalls of the fragile binary problem by making the layout opaque. Resilient types have far more freedom to change and evolve without breaking binary compatibility: public data members can be rearranged, added, and even removed (by providing a computed getter/setter instead). The new annotations provide the ability to relinquish these freedoms by making stricter guarantees about their layout in order to be more efficiently compiled and accessed.


Any standard library API shipped post-ABI-stability must be supported into the future to ensure binary compatibility. The standard library will also be utilizing resilience annotations and inlineable code. Inlineable code is code that is bundled with the client’s code, and is available for inlining to the optimizer if it decides to do so. The standard library faces the following (non-exhaustive) list of challenges for ensuring binary compatibility[…]

Previously: Chris Lattner ATP Interview, ABI Stability Deferred Until After Swift 3.0.

Update (2017-01-27): David Hart:

ABI stability is an important feature which many Swift users are looking forward to. If I understand it correctly, once it’s here, the Standard Library becomes part of that ABI and only additive and backwards-compatible changes can be done. Seeing how we are still heavily modifying the Standard Library this year (Strings), wouldn’t it be wiser to let those changes simmer under the scrutiny of the broader community of Swift users for a year before we make it into the ABI?

See also: Swift 4 String Manifesto.

Habits and Productivity

David Sparks:

If you’ve been thinking about changing some habits as we head into 2017, why not game the system with an app? I have fallen off the wagon with habit tracking so I looked at a lot of the popular habit tracking apps before settling on Productive as my favorite. It has a bit of whimsey in its design and is customizable in just about every way you can think of for a habit-tracking app.

Eddie Smith:

My favorite app for habit-forming is Streaks, which is designed to encourage you to complete tasks over consecutive days, X times per week, etc. It can even read health data from your iPhone and automatically check off health-related tasks.Being January, a lot of people have habit-forming on the brain. My favorite app for habit-forming is Streaks, which is designed to encourage you to complete tasks over consecutive days, X times per week, etc.


But in 2016, I started taking a more inverted approach and embraced the “to-don’t.” I’m willing to bet for most people in modern times, you’ll find more low hanging fruit in to-don’t lists, which are simply lists of things you do not want to do.

Eddie Smith:

I’ve begun to understand that I’m essentially a collection of “selves” that change subtly throughout the day, and I’ve learned to manage these “selves” as different workers—or like a great football coach who knows how to get each player to play to his full potential.

Twitter Sells Fabric to Google

Rich Paret:

In just two years, Fabric has grown to reach 2.5 billion active mobile devices, and Fabric’s Crashlytics and Answers kits were recently recognized as the #1 SDKs for app stability and analytics. We are incredibly proud of the products we have built and grateful to this community of more than 580K passionate mobile developers.

Today we enter the next chapter for Fabric and are pleased to announce that we’ve signed an agreement for Fabric to be acquired by Google and for our team to join Google’s Developer Products Group, working with the Firebase team.

Francis Ma:

Our ultimate goal with Firebase is to free developers from so much of the complexity associated with modern software development, giving them back more time and energy to focus on innovation.


The integration of Fabric is part of our larger, long-term effort of delivering a comprehensive suite of features for iOS, Android and mobile Web app development.

Marco Arment:

iOS devs: Any decent self-hostable crash reporters, analytics packages?

I think it’s wise to consider bringing this in-house these days.

Dumping Fabric for Overcast 3 since their Google acquisition. We had a good run and it gave me lots of data, but very little was actionable.

Apple Sues Qualcomm

Apple (PDF):

Qualcomm was one among many companies that contributed to the development of standards related to how cellular phones connect to voice and data networks. As a contributor, Qualcomm is entitled to a fair royalty based on the value of its particular contribution. Qualcomm is not entitled to collect royalties based on the contribution of others to the standard, or unrelated innovation by companies that utilize the standard—but this is precisely the business model that Qualcomm has established and that it protects through monopoly power and unlawful licenses. In order to purchase Qualcomm chips or obtain access to patents pledged to a cellular standard, Qualcomm demands that third parties pay Qualcomm a royalty much greater than the value of Qualcomm’s contribution to the standard— a value based on the entire price of the innovative products that only incidentally incorporate the standard.


Apple, which has been overcharged billions of dollars on Qualcomm’s illegal scheme, brings this action to recover its damages, enjoin Qualcomm from further violations of the law, and request declaratory relief. Among Apple’s damages are nearly $1 billion that Qualcomm owes to Apple under an agreement between the two companies. Qualcomm claims that Apple has forfeited those amounts by responding to requests in the course of an investigation by the Korea Fair Trade Commission (“KFTC”), which recently levied the largest fine in its history against Qualcomm. Qualcomm has withheld the required contractual payments from Apple even though the agreement clearly permits Apple to respond to the KFTC’s lawful investigation and requests for information. If that were not enough, Qualcomm then attempted to extort Apple into changing its responses and providing false information to the KFTC in exchange for Qualcomm’s release of those payments to Apple. Apple refused.


“While we are still in the process of reviewing the complaint in detail, it is quite clear that Apple’s claims are baseless. Apple has intentionally mischaracterized our agreements and negotiations, as well as the enormity and value of the technology we have invented, contributed and shared with all mobile device makers through our licensing program. Apple has been actively encouraging regulatory attacks on Qualcomm’s business in various jurisdictions around the world, as reflected in the recent KFTC decision and FTC complaint, by misrepresenting facts and withholding information. We welcome the opportunity to have these meritless claims heard in court where we will be entitled to full discovery of Apple’s practices and a robust examination of the merits,” said Don Rosenberg, executive vice president and general counsel, Qualcomm Incorporated.

There are some good comments on Hacker News.

Update (2019-01-15): Juli Clover:

Williams also detailed many of Apple’s past interactions with Qualcomm. In 2011, when Apple negotiated a contract to use Qualcomm as a supplier for modems instead of Infineon because of Apple’s need for CDMA-compatible chips, Qualcomm demanded a percentage of the iPhone’s cost.

The two companies ultimately negotiated a rebate that brought the total royalty fee down to $7.50 per iPhone, though Apple had wanted to pay $1.50 per phone, equivalent to 5 percent of the value of the baseband chip, which was $30. Under the terms of that deal, though, Apple had to agree to a “marketing incentives agreement” to speak out against the WiMax standard that was popular at that time.

Update (2019-01-23): Juli Clover:

Apple has been ordered to stop using a part of a recent press release that claimed the iPhone 7 and iPhone 8 would still be available in Germany through carriers and resellers, reports Bloomberg.

Apple released the statement following a preliminary injunction in December that prevented the company from selling older iPhones in Germany. Apple at the time said that while it would stop selling the devices at its own retail stores, they would remain available via other means.

Juli Clover:

Williams wanted to continue to work with Qualcomm despite the legal battle, but Qualcomm accused Apple of leaking Qualcomm computer code needed to customize mobile chips. Williams offered to “firewall” the Apple engineers using the Qualcomm software and said nothing of value could be obtained from the code anyway.


Qualcomm in September 2018 accused Apple of stealing confidential information and trade secrets and passing it on to rival chipmaker Intel.

Update (2019-01-29): Rob Enderle:

In reading through the testimony, it appears clear that even the basis of this case is in question. It is presented as a pricing dispute over a $7.50 licensing charge Qualcomm levies on iPhones, which they argue should be closer to $6 (most pay $13 and get less service, by the way). This disputed amount is about .15 percent of the cost of a $1,000 iPhone. Even if Apple passed the saving through to consumers, which it likely would never do, given its focus on increasing margins, this would save you $1.50 on your next iPhone purchase. The seeming misdirection is that while this would result in billions to Apple, it likely should be paying a premium over the $13 other firms pay because it requires a massive amount of special services also identified in the trial. So, ironically, Qualcomm shouldn’t have given the firm a discount and likely wouldn’t be in this position if it hadn’t. (Typically, Qualcomm licenses the manufacturers of the phones, not the brand owner, but made a regrettable exception for Apple.)

What became clear in testimony this week was that Apple just wants Qualcomm’s IP, but doesn’t want to pay for it. An Apple executive witness testified that Qualcomm refused to sell Apple modems to support the FTC contention that Qualcomm punitively punished firms that didn’t license its technology. While true, this was an interesting deception that avoided the nuance. What happened was that Apple wanted access to source code as part of the deal, but since it had been allegedly providing this source code to Intel to help it catch Qualcomm, Qualcomm demurred and provided three choices.

Apple could get the modems without the source code (since Qualcomm does much of the integration work, Apple doesn’t really need it); it could get the last generation of Qualcomm modems, which it had the source code for and had been crippling to cover up the fact that the Intel modems weren’t competitive; or it could get the new modems and the source code if Apple committed to using them for at least 50 percent of its phones. On this last, Qualcomm wanted to make sure it didn’t provide Intel the source code through Apple and then not actually sell any of its own modems.

Update (2019-03-21): Juli Clover:

Apple and Qualcomm this week wrapped up a patent trial where Apple was accused of infringing on three of Qualcomm’s patents, and the verdict from the jury is in -- Apple violated Qualcomm’s patents in its iPhones.

Wednesday, January 25, 2017

Requiem for the Thunderbolt Display

Nick Heer:

For me, that one special thing is my Apple Thunderbolt Display. I know: it’s crazy to spend a thousand bucks on a 27-inch display, even back when I bought it in 2012. […] Yet, it remains the thing on my desk that I would fight the hardest to keep.


Unfortunately, the best reason to buy a Thunderbolt Display over its competitors hasn’t been carried over to the UltraFine 5K: it is no longer the amazing docking station that the Thunderbolt Display once was.

I think I’ve only ever had three external Apple displays: the 12-inch CRT for the Apple IIGS and a pair of 22-inch LCD Apple Cinema Displays attached to a PowerPC tower. The LCDs used the unfortunate Apple Display Connector, which meant using an adapter because the my Mac had one ADC port and one DVI port. These were my first CRT and first LCD displays respectively. Subsequent to each, other manufacturers seemed to offer better products and/or much better prices. Apple displays have their fans, but I haven’t even considered them lately. The 30-inch Cinema Display was way too expensive, and since then I’ve been using 30-inch Dell displays, while Apple only offered 27 inches. The extra height is very useful, and I don’t think I would want to give it up, even for Retina.

Previously: LG Ultrafine 5k Reviews.

App Store Review Replies and Prompting API

Apple (Hacker News, MacRumors):

iOS 10.3 introduces a new way to ask customers to provide App Store ratings and reviews for your app. Using the SKStoreReviewController API, you can ask users to rate or review your app while they’re using it, without sending them to the App Store. You determine the points in the user experience at which it makes sense to call the API and the system takes care of the rest.

When iOS 10.3 ships to customers, you will be able to respond to customer reviews on the App Store in a way that is available for all customers to see. (This feature will also be available on the Mac App Store.)

Jim Dalrymple (via Pedraum Pardehpoosh):

There is no doubt that developers want feedback on their apps. Positive feedback could lead to more downloads and purchases of the app. However, the process for leaving a review was a bit clunky. Often times you would get a pop-up notice in the app asking for a rating or review—if you decided to do it, you were taken out of the app and into the App Store.

That’s been fixed now.

When you are prompted to leave a review, customers will stay inside the app, where the rating or review can be left for the developer. It’s easier for customers and the developers still get their reviews.

John Gruber:

The replies that developers will be able to leave on App Store reviews will be attached to the user review to which they’re replying. It’s not a thread, per se, because users can only leave one review, and developers can only leave one response to each review, but they will be connected visually. Users can then edit their review, and developers can then edit their reply.


An individual app can prompt three times for a review per year, period.


The new APIs will be eventually be the only sanctioned way for an iOS app to prompt for an App Store review, but Apple has no timeline for when they’ll start enforcing it.

Benjamin Mayo:

There is a high probability that the reviews section in the App Store becomes the de-facto customer support channel because that’s what users will see first. However, this isn’t necessarily a good thing.

David Barnard:

Apple creates problem, Apple puts a bandaid on without addressing the underlying incentives.

Mike Rundle:

Exactly right. The entire “review reset” system discourages bug fix releases. Hostile to developers and users.

There are definitely issues with both of these new features, but overall I think they will improve things.

Previously: App Store Reviews, Responding to App Reviews on Google Play.

Setapp Goes Live


Setapp gives you a growing suite of hand-picked apps in one signup. There’s no store — just a folder on your Mac, and no hidden costs — just a flat monthly fee.


There’s no need to dig through hundreds of App Store listings, search for reviews, and compare prices: with Setapp, you always have the best app for the job. It’s like getting all the apples, while someone else does the picking.


Setapp gives you access to shiny new software versions without charging any extra for upgrades. Every app you see on Setapp is yours — and we do mean the app, not just the current version.

As a developer, I’ve declined to participate so far, for a number of different reasons, but it will be interesting to see how this goes. Revenue based on usage could work very well for some types of apps and very poorly for others. As a customer, I already own a few of these apps, and it doesn’t seem to make sense to subscribe on the chance that I’ll need others in the future. I’d also be a little worried about developers pulling out right before an upgrade.

John Voorhees:

For a flat subscription fee of $9.99 per month, customers can download any of the 61 apps and use them as long as they continue to make monthly payments. After MacPaw receives a 30% cut of customers’ subscription fees, developers who participate in Setapp are paid based on a formula that accounts for the price their apps are sold for outside the service and whether customers use the apps each month, which MacPaw tracks.


If Setapp helps developers build sustainable businesses by attracting new users, I’m all for it, but I’m skeptical. There’s a tension here. Customers are being offered an all-you-can-eat buffet of apps. The more apps that are used, the better the value for customers. At the same time, the more apps a customer uses, the less each developer of those apps gets paid. That might be fine if these are customers the developers wouldn’t attract without Setapp, but what if each Setapp user means one less full price app sale? […] Setapp feels like a short-term solution to a long-term problem that I’m afraid will hurt developers in the end by driving average app prices down even further.

Juli Clover:

Using one of the Setapp apps does require a subscription, so access is revoked if a subscription is canceled. An online connection is required for updates, but all software can be used offline.

Marcus Fehn:

We see Setapp as an interesting opportunity for a certain kind of user, and we want to be part of that opportunity. […] For us, Setapp is just another way to get Ulysses into the hands of users. It’s an option.

Update (2017-01-26): Adam C. Engst:

So let’s take the sample set of apps I mentioned above and see how that breaks out (with round numbers). Of a single user’s $10, $7 goes to the developers and $3 goes to MacPaw. That $7 is distributed among five apps that cost $291 proportionally by list price, broken out into 17 price tiers with individual multipliers. Assuming I’ve understood MacPaw’s documentation right, each app in this example would earn about 30 percent of its list price in a year. The more apps you use, though, the less each developer will earn.

Update (2017-02-09): Dan Counsell:

You might also be wondering what happens if a developer removes their app from Setapp as this has potential to be catastrophic from a users point of view. The good news is you get to keep the app installed at its current version. I think this is an extremely well thought out feature. It’s reassuring to know that an app you rely on won’t suddenly disappear from your Mac when you need it most.


The only real downside from a developer perspective is that every release has to go through a review process, just like the Mac App Store.

Update (2017-06-29): Adam C. Engst:

Nearly halfway through Setapp’s first year, it’s time to take a look and see how it’s doing. Most notably, the number of apps available to subscribers has grown from 60 to 77 (from 69 developers), providing users with lots more functionality without sacrificing quality or providing many nearly identical apps.


Setapp now has 10,000 paying users and another 200,000 people who are using it in the free 30-day trial mode, which can be extended by encouraging a friend to sign up. Those aren’t Apple-level numbers, of course, but they’re respectable for just a few months.

I polled a few developers who are participating in Setapp, and although all of them remain optimistic about Setapp’s potential, Setapp hasn’t contributed significantly to the bottom line for any of them.

Update (2018-02-01): Setapp:

Nevertheless, one year later we have 107 apps on the platform with over 300,000 users and $1.5M in ARR. And we are growing fast.

Monday, January 23, 2017

Optionals and Hackintoshes

Erica Sadun:

Applications normally can’t plan for, anticipate, or provide workarounds for code running on unofficial platforms. There are too many unforeseen factors that cannot be incorporated into realistic code that ships.

Adopting a universal style of conditional binding enables you to “guide the landing” on unexpected failures, including those failures that occur under less exotic circumstances.

Every Upcoming Chromebook Will Run Android Apps

Andrew E. Freedman (via Slashdot):

The news comes from a single line of text in Google’s list of Chromebooks that can support the programs: “All Chromebooks launching in 2017 and after as well as the Chromebooks listed below will work with Android apps in the coming future.” Below that is a list of older Chromebooks that will also run Android apps.


Many non-touch Chromebooks can also support Android apps, but the experience probably won’t be as good.

Update (2017-01-23): Peter Steinberger:

And this works really well - we optimized PDF Viewer for it, took a day. Better than most Windows apps.

United Airlines Flights Grounded by Computer Outage

Alex Johnson and Jay Blackman (via Hacker News):

U.S. officials told NBC News that the Aircraft Communications Addressing and Reporting System, or ACARS, had issues with low bandwidth. No further explanation was immediately available for what United described only as “an IT issue.”

Previously: Why the Airline Industry Could Keep Suffering System Failures.

The State of Apple

Anita Balakrishnan (Hacker News):

“At Apple in 2007, organizationally it was the wild west,” Burrough said. “I was hired under a particular manager, but for the first two years worked on projects that had virtually nothing to do with that manager’s core responsibility. That’s because the organization wasn’t the priority, the projects were the priority. It was the exact opposite of ’not my job.’ It was ‘I’m here to solve whatever problems I can, irrespective of my role, my title, or to whom I report.’ It was wild.


But today, the “dynamic has clearly and distinctly changed,” and Apple is much closer to his job at Palm, said Burrough, who most recently founded a 3D printing company called Bilt It.

“Working at Palm, the teams were highly organizational, [hierarchical] and responsibilities were siloed,” Burrough said. “There was a clear sense that each person had a clear responsibility, and rarely deviated from it. When you went to someone for help solving a problem ‘not my job’ was a common response.”


Burrough said he endorses the comparison between Ballmer and Cook. He went on a tweet storm on Tuesday where he said apple was no longer a “dynamic change-maker.”

Bob Burrough:

The very first thing Tim did as CEO was convert Apple from a dynamic change-maker into a boring operations company.

Apple’s internal culture is vastly different today than it was five years ago.

Tim Cook fired Scott Forstall and aligned the executive staff so as to have peace. ...which is to say there is no conflict

Executives aren’t competing with each other any more. And, Tim’s message was loud and clear: “Don’t bring me conflict.”

The result is the conflict is pushed lower in the organization. The proportion of middle managers has exploded.

Neil Cybart:

A double standard is being used to judge Tim Cook. No other tech CEO is being graded on the same scale as Cook. He is being penalized for not entering questionable product categories. In addition, the new products that Apple has decided to sell are looked at through an iPhone lens. Apple has the best-selling smartwatch in history, with sales approaching 25M units in less than two years, and yet the product is looked at by some observers with a yawn. This type of criticism is just not found when it comes to judging Cook’s peers.


The Apple Watch serves as a great example of how power within Apple is much more decentralized than many assume. Apple Watch is Jony’s baby. As told in the The New Yorker profile of Jony Ive published two years ago, Jony met some resistance among Apple executives regarding the Apple Watch’s main tenets involving fashion and luxury. Apple would become a very different company selling a device like Apple Watch. After some convincing, Jony was able to alleviate most concerns, and Apple marched towards Apple Watch. When it came time to manage the Apple Watch team, Apple COO Jeff Williams was eventually put in charge. This doesn’t exactly jump out as an obvious decision given that Jeff Williams is a supply chain expert.


The removal of Scott Forstall as SVP of iOS back in 2012 takes on a new level of importance when discussing the topic of Tim Cook and his inner circle. It has been reported that Forstall did not get along with other Apple executives. While we have never officially heard Forstall’s side of the story, which is odd, Cook’s desire for a powerful inner circle does support the theory that Forstall was removed in order to position this tight-knit group of Apple SVPs as a type of brain trust. Forstall was clear in his ambitions to one day be CEO. Cue, Schiller, and Williams don’t hold similar ambitions. Instead, ideas are bounced off each other and disagreements are hashed out within this group before being funneled to the rest of the company. Forstall threatened to throw off this dynamic and risk having Cook’s leadership structure collapse.


The Apple TV has suffered the same fate as the Apple Watch: Apple dumped an App Store and Springboard onto it and called it a new product. They essentially brought iOS to the living room, which isn’t such a bad thing at first glance — except it is the least integrated device in the entire Apple ecosystem. It doesn’t have Continuity, even though it needs it more than any other product; instead we have annoying “Keyboard Input” notifications. And instead of a login/identity solution so that we wouldn’t need Keyboard Input notifications, Apple is relying on their competitors to fill the gap (yet again). AirPlay is harder to use today than in iOS 7. Proactive is missing, so users are reduced to furiously swiping up and down a giant grid of icons. Tim Cook famously said he “loves operating his Apple TV from his Apple Watch”, yet it didn’t even ship with support for Apple’s existing remote app, and now there are two remote apps but only the old one works on the Apple Watch. After a simple one-tap setup, AirPods are “ready to use with all your devices“ — except Apple TV.


I have written extensively about Apple’s problems with services originating from their hardline privacy stance. However, there is another major issue: Apple views services as a value-adding feature, rather than a discrete platform. This stems from their hardware-centric business model, which is accordingly reflected in their device-centred services approach. The problem is that services are eating software, and now often indistinguishable from each other. Therefore, Apple should be treating their services with equal importance as iOS, macOS and tvOS: iCloud should be best-in-class; Siri should be more than just souped-up Voice Control; Apple Music shouldn’t delete people’s music libraries; these services should work seamlessly across all their devices and platforms — even on the web.


Apple’s greatest threat is losing this culture; looking at the company today, I am concerned that this is indeed occurring[…] After watching Steve Jobs’ last keynote, I was astonished at the contrast; Apple’s air of self-awareness seems to have been replaced with an increasingly self-congratulatory attitude.


Many people believe the removal of this conflict is helpful to Apple, but Forstall precisely embodied the character Steve Jobs described as being necessary for creating the best products. Steve Jobs himself was often described as a very divisive, larger-than-life character, who also didn’t get along with people. In fact, former employee Michael “Rands” Lopp said, “In my years at Apple, the Caffe Macs chatter about Forstall was that he was the only legit successor to Jobs because he displayed a variety of Jobsian characteristics.”

Marco Arment:

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

Chris Lattner ATP Interview

Accidental Tech Podcast did a great interview with Chris Lattner (tweet). The whole episode is worth listening to, but here are some of my thoughts:

He seems to agree that the “Objective-C without the C” branding for Swift was more about making developers feel comfortable with the language than it was a description of what the language actually is and aspires to be.

With so many other responsibilities at Apple, Swift was always kind of a side project for him. So his leaving Apple is less of a change for Swift than one might think.

It sounds like Tesla is primarily interested in his engineering and management skills. They might at some point use Swift for something, but it does not sound like he was hired to adapt it for their purposes, as some have speculated.

He thinks the criticisms of Swift not being dynamic enough are overblown because many dynamic features, such as introspection, can and likely will be added to Swift in the future. I agree with the latter and am not worried that patterns like the responder chain will be impossible. My main concern has been that message passing is opt-in rather than the default. This closes the door on unanticipated swizzling and other techniques. Once the dispatches have been baked in (or, I guess, out) they cannot be changed. This is not an area where Swift can satisfy both camps, and it has been obvious from day one which way it leans. So I think it would have been rather pointless to try to argue this point on Swift Evolution.

Objective-C literals are described as an easy sugar feature that Apple added while much of the team was busy with Swift. I have never understood why it took so long for this feature to arrive. It could have been added to Objective-C 1.x but instead came about 6 years after Objective-C 2.0. Or, to put a positive spin on this, the rate of progress with Swift is incredible compared with what we saw with Objective-C.

Swift doesn’t support 32-bit Intel for Mac or the old Objective-C runtime. I had assumed this would mean that Apple would drop support for the 32-bit frameworks as it starts using Swift internally, but he seems to think that Swift will add 32-bit support so that it can be used in AppKit.

There is a great overview of ARC vs. garbage collection. I think ARC was absolutely the right choice.

He makes a strong argument that ABI compatibility should be postponed again.

The planned Rust-like ownership model sounds like it will give us an escape hatch for ARC problems: manual memory management, but only when you need it, and with lots of compiler support to prevent mistakes.

See also: Lattner’s Slashdot interview, Daniel Jalkut.

Previously: Chris Lattner Is Leaving Apple, Swift Plans, “It’s a Coup”, Objective-C Drops vtable Optimization, Copland 2010 Revisited, Regarding Objective-C & Copland 2010.

Update (2017-01-23): ATP now has a full transcript of the interview (tweet).

Update (2017-01-26): See also: Analog(ue).

Wednesday, January 18, 2017

The Problem With AMP

Kyle Schreiber (via Hacker News):

The largest complaint by far is that the URLs for AMP links differ from the canonical URLs for the same content, making sharing difficult. The current URLs are a mess. They all begin with some form of before showing a URL to the AMP version of the site. There is currently no way to find the canonical link to the page without guessing what the original URL is.


AMP is about lock-in for Google. AMP is meant to keep publishers tied to Google. Clicking on an AMP link feels like you never even leave the search page, and links to AMP content are displayed prominently in Google’s news carousel. This is their response to similar formats from both Facebook and Apple, both of which are designed to keep users within their respective ecosystems. However, Google’s implementation of AMP is more broad and far reaching than the Apple and Facebook equivalents. Google’s implementation of AMP is on the open web and isn’t limited to just an app like Facebook or Apple.


The AMP HTML Specification states that all AMP HTML pages must load a JavaScript file from If you already run Google Analytics on your pages you probably don’t care that you’re loading yet another black-box JS file from Google. But sites that load absolutely nothing from external sources (such as this one) should understand the privacy and security implications that come along with running JavaScript that you don’t control.


Google is abusing its powers. The search rank is our currency and Google has pushed AMP sites to the top for some while. So, everybody is now building weird AMP layers for their sites. We went from a free to a proprietary mobile web in just a few weeks. And we can’t do anything. It feels like the times when the Internet Explorer tried to rule except that more people were complaining.

The open solution to a faster mobile web would have been so easy: Just penalize large and slow web pages without defining a dedicated mobile specification. That’s it.

John Gruber:

The lock-in aspect makes no sense to me. Why would I want to cede control over my pages to Google? AMP pages do load fast, but if publishers want their web pages to load fast, they can just engineer them to load fast. Best answers I got were that it wasn’t really strategic — publishers are going with AMP just because their SEO people are telling them to, because Google features AMP pages in search results. I suppose that is a strategy, but ceding control over your content to Google isn’t a good one in the long term.

Previously: Google’s Accelerated Mobile Pages.

Update (2017-02-09): Danny Sullivan:

As promised, Google is making a change to how it displays Accelerated Mobile Pages, so that users can easily view and share links that lead directly to publishers’ sites rather than to Google’s copy of the content.

John Gruber:

A little easier, but I would argue that they shouldn’t be doing this in the first place, and the new UI they’ve exposed is deliberately obfuscated.


This is what you call a begrudging UI. Google wants you to pass around the AMP URL, not the publisher’s original URL. If they wanted to make it easier to share the original URL, the anchor button would be a direct link to the original URL. No need for a JavaScript popover. You could then just press the anchor button to go to the original, and press and hold for Safari’s contextual menu. And they could just use the word “Link” or “URL” instead of a cryptic icon.

Michael Rockwell:

A quick thought: wasn’t the whole point of AMP to shrink page sizes and increase the speed of browsing? If that’s the case, why does Google have to pre-cache these pages at all? Shouldn’t they be fast enough on their own without the help of Google’s servers?

Underpass 1.0 for Mac


Underpass is a chat app for the Mac that features end-to-end encryption for complete privacy and security.


Peer-to-Peer — There’s no signup or account. Underpass does not connect to a third-party service. Your Mac connects directly to your chat partner’s Mac over your network.

Privacy — Underpass does not request your phone number, email, contacts, or any other personal information. You don’t even need to use your real name.

The flip side to the non-centralized approach: you’ll need to exchange IP addresses and passwords via some other means before you can chat over the Internet.

It’s from longtime Mac developer and blogger Jeff Johnson, who writes (tweet):

Underpass is 99 cents! I can hear customers rejoicing and developers cursing. I make no apologies for my price, though. I didn’t start the App Store race to the bottom. In fact, I had nothing to do with it. The race was already over when I got here. That ship has sailed, sunk, and been immortalized in a James Cameron film. I do feel that the “value” of Underpass is a lot higher than $0.99, but I’m competing against apps that are free, and a chat app requires more than one person to be useful, so in effect I need to convince two customers at a time to buy it rather than just one. In my opinion, a higher price would severely limit initial adoption and probably doom the app to low sales. It may be doomed to low sales in any case, but I think this price gives it the best chance.

It’s a tough market. I think he’ll need to charge more than that—at least for some customers—for it to be a success. On the other hand, for just 99 cents I bought it even though I barely ever chat.

Update (2017-01-22): Jeff Johnson:

On a LAN it’s easy to advertise a network service by name via Bonjour and resolve the IP address with DNS. There’s DNS on the internet of course, but your Mac can’t simply publish a DNS record on the internet. The internet DNS servers are not under your direct control, so you’d have to go through a DNS hosting service to publish a DNS record for your chat server. Fortunately, there are Dynamic DNS providers that allow you to give your computer at home an internet domain name and automatically update your DNS if your ISP changes your IP address. On the other hand, if you decide to skip DNS altogether, you have to know the IP address of your partner to have a chat over the internet.


In answering the question of why I made Underpass, I’ve already gone partway toward answering the question of why you should use Underpass. Let me now fully answer that second question. The key feature of Underpass is decentralization. Underpass is peer-to-peer. It does not use a third-party service for chat. Why is this important? Because when you require a third party, you become absolutely dependent on the third party. A centralized chat service creates a single point of failure. If it goes down, it can take down millions of people with it. And let’s be honest, every centralized service goes down. This has been demonstrated ad infinitum. If you’re lucky, it’s just a temporary outage. Eventually, though, most centralized services shut down permanently. Nothing lasts forever. Especially nothing free, and a lot of chat services are free. When the people in charge of the centralized service run out of money, or just decide that there’s not enough profit, they will shut it down, leaving all of the users out in the cold. Another problem with centralized services is that they could be hijacked by hackers, malicious insiders, governments, et al. This may or may not be a remote possibility, but I think it would be unwise to assume that centralized services are invulnerable. They make an inviting target precisely because so many people rely on them.

Update (2017-06-29): See also: iPhreaks Show.

Update (2018-08-07): Jeff Johnson:

For marketing purposes, I want to emphasize the device-to-device capability of Underpass, because I don't think the person-to-person capability has taken off or will take off. P2P seems like too small a niche for a chat app. Even if there's an audience for P2P chat, the price was a barrier. It's difficult enough to convince one person to buy your app, and if every version of the app is paid, then you have to convince two persons to buy the app in order to chat with each other. On the other hand, if one person just needs to transfer data between their Mac and iPhone, they still have to buy two copies of the app. Thus, I had the idea of making one of the versions free, to lower the barrier to entry. The free version would also serve as a kind of trial.

Friday, January 13, 2017

Swift 3 Protocols

Brent Simmons:

I first learned protocol-oriented-programming with Objective-C, and I was very pleased to see the Swift team emphasize this style.

But, at least at this writing at the end of 2016, I still run into problems when I use this style of programming in Swift.

Dave Abrahams:

Protocols (a.k.a. concepts) are not just bags of syntax; unless you can attach semantics to the operations, you can’t write useful generic algorithms against them. So we shouldn’t have DefaultConstructible for the same reason we shouldn’t have “Plusable” to represent something that lets you write x + x.

Via Ole Begemann (tweet):

Yet, by conforming a type to Equatable you also guarantee that your implementation follows the protocol’s semantics, which are listed in its documentation.


One problem with a generic init() requirement without additional context is that T() means very different things for different T[…]


The fourth argument against the DefaultConstructible protocol is that it clashes with Swift’s policy to not initialize values to “zero” or some other default. In contrast to many other languages, Swift doesn’t zero out memory for variables — the compiler forces the programmer to initialize every variable with an explicit value.

Joshua Emmons:

I’ve found these two papers particularly enlightening:

Safari Can’t Play New 4K YouTube Videos

Mike Wuerthele (via Rosyna Keller):

The shift appears to have taken place on Dec. 6, according to a Reddit thread delving into the issue. Google has been pushing the open and royalty-free VP9 codec as an alternative to the paid H.265 spec since 2014, but has never said that it would stop offering 4K video on the YouTube site in other formats, like the Apple-preferred H.264.

Videos uploaded to the service prior to Dec. 6 in 4K resolution can still play back in full 4K resolution on Safari from the YouTube homepage. Additionally, Mac users utilizing Chrome still have the ability to play back new videos in 4K, as Safari is the only holdout among the major browsers that doesn’t support the codec.

Update (2017-01-23): Rob Griffiths:

Google seems to now be using the open and royalty-free VP9 codec for 4K videos viewed on its YouTube site, but reverts to the H264 codec when those same videos are embedded on other sites.


I installed a bunch of browsers (some of which I’d never heard of before), and tested each to see which supported VP9 and which did not.


David Smith (tweet):

This situation gave me the idea for a little side project, PodSearch, empowering the same quick podcast recall for anyone. The concept was simple. Take a few of my favorite podcasts and run them through automated speech-to-text and make the result searchable.


I found that even though this an awful transcription, it is actually pretty good for keyword searching. Is Shutting Down

Dalton Caldwell (Hacker News, Slashdot):

Ultimately, we failed to overcome the chicken-and-egg issue between application developers and user adoption of those applications. We envisioned a pool of differentiated, fast-growing third-party applications would sustain the numbers needed to make the business work. Our initial developer adoption exceeded expectations, but that initial excitement didn’t ultimately translate into a big enough pool of customers for those developers.

Clark Goble:

Big benefit of ADN was having enough characters to comments on links and requotes. Hard in Twitter. Tone often comes off wrong.

Riccardo Mori:

But after a few weeks something clicked. I was loving the place. I thought the first interactions and mutual follows would involve people I knew (and knew me) from Twitter; instead I was welcomed by others I didn’t know from anywhere. A sense of ‘community in the making’ was quite palpable.

And things only got better from there. I’m speaking about my experience, of course. ADN felt like the early days of Twitter, possibly even better. A basic feature like having 256 characters available in a post, instead of Twitter’s 140, turned out to make a huge difference. Conversations lasted longer, got deeper, and with longer posts, people could explain themselves in a much better way than the average quipping in Twitter’s exchanges. Private messages, too, could be longer (2048 characters). The whole atmosphere was different than Twitter’s.

The closest alternative is probably Gab, although that does not seem to have native apps nor any traction in Mac/iOS tech circles.

More interesting are the decentralized alternatives, which include Manton Reece’s new

Today, most writing instead goes into a small number of centralized social networking sites, where you can’t move your content, advertisements and fake news are everywhere, and if one of these sites fails, your content disappears from the internet. Too many sites have gone away and taken our posts and photos with them.

I want to encourage more independent writing. To do that, we need better tools that embrace microblogs and the advantages of the open web. We need to learn from the success and user experience of social networking, but applied to the full scope of the web.

I first set out to build a new service just for microblogs. It has a timeline experience like a social network, with replies and favorites, but it’s based on RSS, with the main posts pulled from independent sites.

I’ve backed his Kickstarter.

Previously: State of the Union.

Update (2017-01-13): Nick Heer:

The biggest difference between and is that the latter can be self-hosted, and is entirely decentralized. If Reece were to stop development of in ten years, existing installations would continue to work as long as the programming languages that power it remain compatible.

Update (2017-01-23): cgiffard:

“We are starting an archival project for and would love your input and assistance.” — Archive Team

Update (2017-01-25): Jonathan LaCour:

Manton, too, believes that the future of the open web is bright, and is throwing his own efforts behind the launch of a new, open platform for microblogging—like Twitter, but distributed, and owned by its users. We’d like to make it as easy as possible to launch a WordPress-powered microblog on DreamHost that integrates well with Manton’s upcoming service. In order to support that mission, DreamHost is kicking in a $5,000 pledge to the Kickstarter.


If we succeed in our mission and vision, along with Manton, you’ll no longer just be a username belonging to a faceless organization. You’ll be able to build your digital presence as the open web intended: with your own domain, the freedom to move from one provider to another, and the assurance that your data belongs to you, and no one else.

Thursday, January 12, 2017

100 Days Without the App Store

Bogdan Popescu:

All of Dash’s App Store revenue has migrated to direct sales, with a slight increase.


Dash for iOS was never a significant part of my revenue and like most iOS apps it was never sustainable. I should have open-sourced it a long time ago, as it now brings in more revenue by promoting Dash for macOS.


Dash for iOS returned to the App Store just a few days after I open-sourced it, thanks to He Tiancong and Jie Wang. This is despite the fact that I specifically chose a license that’s incompatible with the App Store. I highly recommend avoiding Dash on the iOS App Store, as I do not know what modifications they have made to my code.

Previously: Apple Removed Dash From the Mac App Store, Apple and Kapeli Respond About Dash.

Update (2017-01-12): Both of the iOS apps are called Dash and have the same icon. And one of them even uses Kapeli’s name. Apple’s reviewers should catch stuff like this.

Bad Uncle Leo:

@appstore did the same to @i0n1c over his App SysSecInfo. Other App clones w same functionality were approved. Just not his.

Update (2017-01-13): Bogdan Popescu (tweet):

Two more developers just released Dash on the iOS App Store as paid apps: Cuilian Su and Zuogen Zhang.

Apple Is Becoming HBO

Shira Ovide:

Apple is making the rounds in Hollywood, seeking to buy high-quality original TV series and perhaps movies. The idea is to supplement the Apple Music streaming song service with more digital video, the Wall Street Journal reported on Thursday. Think of Apple creating shows with similar quality and buzz to Netflix’s series “Stranger Things” but available only to subscribers who pay $10 a month for Apple Music.

Mitchel Broussard:

Apple executives have told Hollywood that the new original content will launch by the end of 2017, according to the new report. In terms of specific genres, HBO’s Westworld and Netflix’s Stranger Things were both used as comparisons for what Apple is aiming to produce on Apple Music. These proposed series and movies “don’t have any particular relationship to music,” unlike Carpool Karaoke and Vital Signs.

Zac Cichy:

Not that Sony is a bad company. But I think we could all agree that Apple becoming Sony would be very bad.

We live in an age where there is more good video content available than one could reasonably watch. But there’s only one good combination of a desktop OS and hardware, and it’s being neglected. Apple doesn’t have the resources and attention to make sure that PDF files work or that their customers have a good Wi-Fi experience. And of course there’s plenty of iOS and cloud work to do, too. TV and movie content seems like an unnecessary distraction. Apple should focus on the things that only they can do.

Update (2017-01-13): Dan Moren:

Granted, that might mean that those content providers are less enthusiastic about doing business with Apple, especially since their own shows would presumably take a backseat to Apple’s prominent marketing of its in-house efforts, such as in the new TV app that’s now front-and-center on Apple’s set-top box.

Six Colors’ 2016 Apple Report Card

Jason Snell:

“Apple TV has effectively stood still in 2016, despite needing significant attention in UI and remote design, performance, bugs, and reliability,” said Marco Arment. “Third-party apps and games have mostly failed to materialize, with Apple making no meaningful changes to address this.”


“I’ve been using Apple computers since 1980, and this is the first year where I feel like Apple is just another company rather than the computer that delighted me through all these decades,” said Brent Simmons. “It feels like Apple is no longer the company for people who make things.”

“This is a company that has lost touch with its users,” said Kirk McElhearn. “They’re harming their reputation with long-time users, they’re killing themselves in the ‘pro’ sector, where Apple used to be the main provider, and even ‘average’ users are starting to question whether it’s worth buying Apple products.”

Unlike much of the panel, I did not see a software quality improvement in 2016.

Previously: Apple’s 2016 in Review, Six Colors’ Apple Report Card.

Update (2017-01-12): Nick Heer:

From my perspective, Apple’s 2016 was uneven, at best. Unlike the panel, I thought the iPad had a pretty poor 2016: the 9.7-inch iPad Pro was introduced in the spring, and then it seemed like they forgot all about the iPad’s hardware and software for the rest of the year. My Apple TV gets lots of use, but mostly as a Netflix and YouTube box; very few streaming services are available in Canada. The Mac story is frustrating, and software quality is still rough. Over the course of many of the products and updates introduced this year, I’ve also felt that Apple has struggled to establish clear narratives and compelling rationales.

On a positive note, the reliability of Apple’s cloud services have noticeably improved, iOS 10 fixes many of my biggest complaints — while introducing some new ones — developer relations seem improved, and the company’s commitment to privacy is a particular highlight.

Static Typing vs. Testing

Robert C. Martin (Reddit):

My problem is that both [Swift and Kotlin] have doubled down on strong static typing. Both seem to be intent on closing every single type hole in their parent languages.


But before you run out of fingers and toes, you have created languages that contain dozens of keywords, hundreds of constraints, a tortuous syntax, and a reference manual that reads like a law book. Indeed, to become an expert in these languages, you must become a language lawyer (a term that was invented during the C++ era.)


Why are these languages adopting all these features? Because programmers are not testing their code. And because programmers are not testing their code, we now have languages that force us to put the word open in front of every class we want to derive from. We now have languages that force us to adorn every function, all the way up the calling tree, with try!. We now have languages that are so constraining, and so over-specified, that you have to design the whole system up front before you can code any of it.


All these constraints, that these languages are imposing, presume that the programmer has perfect knowledge of the system; before the system is written.

Drew McCormack:

Not in total agreement with the post, but quite a lot of agreement.

Joe Groff:

A type system is only as static as the code it describes. If you can change code, you can change types! The machine can even help you.

Chris Eidhof:

I don’t think it’s an either/or situation at all: we can have a solid type system and write “manual” tests.

A type checker actually does testing for you. It’s not a replacement for TDD, but it allows you to completely get rid of a whole bunch of tests.


In Swift, once you change foo to return an Int?, the compiler will now show an error for each time you call foo. This makes it easy to make that change, because until you have reviewed every single call to foo, the program simply won’t compile. I think of the compile errors as a todo-list, not as a speed bump.

Krzysztof Zabłocki:

I’m pro testing but I think this matches my thoughts exactly, almost anything you can do to get errors earlier in dev process is worth it.

I like both testing and types. The problem is that sometimes types get in the way. It would be nice to be able to do some work in a more dynamic style and then nail things down before shipping. That is the promise of type inference, but it’s not the reality of developing in Swift today.

Update (2017-01-12): Isaiah Carew:

i wish i could have both. static typing is really useful sometimes. really a burden other times.

David Owens II:

My main problem with Swift has always been this: far too pedantic about types and complete lack of a dynamic runtime.

Update (2017-01-13): Mark Bernstein:

Reading this debate, I was startled to realize one thing I’d overlooked: I almost never make type errors. I make plenty of errors – for me, programming is always about correcting errors – but type errors are once in a blue moon affairs.

I wonder if strong typing is a solution to a problem we don’t really have, or whether I’m just Doing It Wrong.

I concur. I think Swift’s optionals solve a real problem. The stronger typing, e.g. for collections, can make calling APIs more concise and help with auto-completion, but I don’t see this preventing many errors for me.

Update (2017-01-14): Robert C. Martin:

To be clear, and at the risk of being repetitive, that blog was not an indictment of static typing. I rather enjoy static typing. I’ve spent the last 30 years working in statically typed languages and have gotten rather used to them.

My intent, with that blog, was to complain about how far the pendulum has swung. I consider the static typing of Swift and Kotlin to have swung too far in the statically type-checked direction. They have, IMHO, passed the point where the tradeoff between expressiveness and constraint is profitable.


You might therefore say that the type system is a kind of “test” that fails for all inappropriate invocations of f. I might concede that point except for one thing – the way f is called has nothing to do with the required behavior of the system. Rather it is a test of an arbitrary constraint imposed by the programmer. A constraint that was likely over specified from the point of view of the system requirements.


So what the type system is checking is not the external behavior of the program. It is checking only the internal consistency of the program text.

Wednesday, January 11, 2017

The Inside Story of BitTorrent Inc’s Collapse

Jessi Hempel (via Hacker News):

But transforming this technology into any kind of business has proved elusive. By last spring, BitTorrent had already endeavored to become a media company, twice. There was BitTorrent Entertainment Network, launched in 2007, which was a storefront for movies and music that made no money and shut down a year later. And then there was the BitTorrent Bundle, launched in 2013, which was a competitor to iTunes and Amazon that let artists distribute their work directly to fans at a fraction the cost. In 2014, the company even announced plans to produce its own original series, a scifi show called Children of the Machine. But by early the next year, BitTorrent had given up on this strategy, too.


The latest chapter of BitTorrent’s saga begins in earnest in 2015. By then, many of the company’s executives and directors were exhausted. They still couldn’t agree on a path forward for the company. Some people believed it should double down on its technical business, building products people loved. They’d developed a product called Sync, for example, which was a decentralized version of Dropbox. Others wanted it to be an entertainment company, striking deals to send content to those people. With no focus, the company had reached an impasse. Earlier that year, BitTorrent had laid off nearly a third of its 150 employees.


Perhaps the lesson here is that sometimes technologies are not products. And they’re not companies. They’re just damn good technologies.


In early 2016, Resilio Inc. was spun out of BitTorrent Inc. to bring the power and resilience of distributed technology to the modern enterprise. Resilio started with core BitTorrent technology and hardened it for commercial use while adding the centralized management and control required for modern IT.

Previously: Replacing Dropbox With Resilio Sync.

Bringing Wide Color to Instagram

Mike Krieger (via Craig Hockenberry):

In other places — like when initializing a CGContext for other drawing operations — it’s common to use CGColorSpaceCreateDeviceRGB when creating a CGColorSpaceRef. This will create an sRGB colorspace on most devices, and we’ll lose our wide color information. Most of the initial work for wide color on Instagram was tracking down everywhere that this color space was hard-coded.

Instead, we can see if our screen supports wide colors (using UIScreen.mainScreen.traitCollection.displayGamut), and if so, use CGColorSpaceCreateWithName(kCGColorSpaceDisplayP3). Again, we found that creating a wrapper that returns the appropriate colorspace for that device was helpful.


Instagram uses OpenGL for most of its image editing and filtering. OpenGL isn’t color managed; it operates on a range (say, 0.0 to 1.0), and it’s up to the output surface to determine what colors that actually maps to.

The good news is that this meant we had to make very few changes to make our GL pipeline wide-color compatible. The biggest change was to ensure that when we extracted pixel buffers from our GL surface, we were using the appropriate colorspace before converting from a CVPixelBufferRef to a CGImageRef.

I can see the Instagram logo in their canary image even though my Mac doesn’t have a P3 display.

Tony Fadell’s Stories About the First iPhone

Dave Lee:

Apple had many of the best brains in the business, but until that point it hadn’t ever made a phone of its own.

And so Fadell planned a fact-finding world tour to meet experts and check out research labs of telecoms experts.

It began with one manufacturer in Malmo, Sweden - a trip which ended with all of their bags, notes and equipment being stolen from their cars while they were inside a restaurant having dinner.


“Until you can agree with us you can’t come back in this room,” Fadell recalled Jobs saying to pro-keyboarders. “If you don’t want to be on the team, don’t be on the team.” The disagreements soon stopped.


“I thought, ‘We must make this work with a stylus’,” Fadell remembered. ”Because we knew it was right, even though Steve was making a philosophical point initially saying you can just use your finger. We knew there will come a day when you’re going to need a stylus.

“We did it without his knowledge, it was behind the scenes. He would’ve ripped my head off.”

App Extensions Are Not a Replacement for User Automation

Sal Saghoian (via Federico Viticci, Todd Ditchendorf):

Let’s imagine that Apple decided to combine their engineering resources to form app teams that delivered both iOS and macOS versions of applications.

In such a scenario it may seem logical to retain application features common to both platforms and to remove those that were perceived to require extra resources. Certainly Automation would be something examined in that regard, and the idea might be posited that: “App Extensions are equivalent to, or could be a replacement for, User Automation in macOS.” And by User Automation, I’m referring to Apple Event scripting, Automator, Services, the UNIX command line utilities, etc.

This is pretty much what I feared was Apple’s thinking.

Based upon the information presented in this overview, it is clear that App Extensions do not provide the same abilities and functionality as the User Automation technologies of macOS, and objectively should not be considered a comparable replacement for them.

Previously: Tell Us Your Mac Automation Stories, Thank You, Sal.

Update (2017-01-12): John Gruber:

I’d prefer to see iOS gain serious automation capabilities — even if it’s an altogether new technology. But I’m dreadfully afraid of a future where MacOS is devolved to iOS’s state, with no supported automation technologies.

Tuesday, January 10, 2017

How Adobe Flash Fell, and Why Flash Content Is Worth Preserving

Keith Collins (via Hacker News):

The earliest signal of Flash’s fall came in 2007, when Apple decided not to support it in the newly introduced iPhone. At the time, the fifth version of HTML was about to emerge, and promised to replace some of the functionality Flash provided. With the nascent mobile web in mind, developers across the world began moving away from Flash and toward HTML5.


HTML5 became a catch-all term for the New Web: a pure, plugin-free internet experience that worked as well on the phone as it did on the desktop. […] By 2011, that idea had gained enough momentum that even Adobe acknowledged the changing tide. It ceased production of the Flash Player for Android and released a product called Edge Animate—a new way to create HTML5 content.


Facebook isn’t the only tech giant with a stake in Flash’s future. Earlier this month, Google announced changes to its Chrome browser that will block Flash by default. Users will still be able to access Flash content by clicking an opt-in button, but the move suggests a ticking clock on Chrome—the most popular web browser in the world—dropping support for Flash altogether. When that day comes, trying to play Flash games or watch Flash cartoons will be much like trying to play a cassette without a tape deck.


The Internet Archive and the Archive Team are currently saving Flash files. The website, which allows visitors to access archives of the internet past, provides emulations of vintage browsers, which will be necessary for viewing Flash content should modern browsers stop supporting the plugin entirely.

Previously: Thoughts on Flash.

Amazon’s 1-Click Checkout Patent Expires in 2017

Mike Arsenault (via Hacker News):

Amazon filed the 1-Click patent in 1997 and it was granted by the USPTO in 1999. In fairly broad terms, it protects any E-commerce transaction executed with one-click using stored customer credentials to validate.


Together with Amazon Prime, Amazon has put forth what are probably the two biggest game changing products in online retail over the past two decades. The 1-Click patent is scheduled to expire in 2017, but my guess is that Amazon doesn’t really care.

AirPods vs. the Competition

Jordan Kahn:

In the lead up to Apple’s release of AirPods late last month, I had tested just about every pair of cord-free earbuds already on the market. But now that AirPods are here and I’ve been using them daily for an extended period of time, the difference is even more striking than I anticipated.

With AirPods, Apple has done what it does best: taken an emerging product category with a frustrating user experience and delivered a polished product made possible by its control over both the hardware and software. And the AirPods are one of the best examples of that in a long time.

The AirPods continue to work well for me. Every few days there is a little glitch, but it’s short-lived and usually corrects itself. This is a big improvement over the Bluetooth headsets I had been using, and the audio quality is much better. Physically, the AirPods are a bit too slippery and easy to drop, and it takes two hands to get them out of the case. I wish they came in black.

Owen Williams:

AirPods are actually one of the few Apple inventions in recent memory that ‘just work’ like the company is famous for. From the moment you take them out of the box and flick the charging case open, they’re paired with your phone and automatically pop up on the screen, which actually shocks you for a second — you mean that’s it? It is.


When asking to change the volume, or skip a song not only would it rarely recognize me awkwardly tapping on the side over and over, it’d often do the opposite of what I asked, or even just randomly call someone. On top of that it’s incredibly slow, so by the time you’ve managed to do what you started out trying to do, it’d have been faster to pull out your phone, unlock it, do it and put it back again.

We all know Siri is crap on the iPhone, but putting it in your ears doesn’t make it any more convenient, instead, it made me resent how bad it really is.

I don’t think the idea of voice control is fundamentally flawed, but Siri is just too slow and unreliable.

I’ve seen a lot of reports of trouble with the double-tap gesture, but it’s almost always worked for me the first time. I expected to play/pause by temporarily removing one of the AirPods. But in practice I find myself using the double-tap nearly every time. When I’m pausing the audio, it’s usually also at a time when my hands are wet or dirty or I don’t have a good place to put the AirPod.

Serenity Caldwell:

I’d just about given up on listening to music wirelessly during my warmup — and then came the AirPods. Their tiny shape makes them a perfect candidate for slipping into my ears during warmups without having to remove any of my gear, and my helmet keeps them in place easily while I skate. And thanks to their lengthy Bluetooth range, I can put my iPhone by our bench, do laps, and never worry about losing my connection.

Previously: My AirPods Experience.

Update (2017-01-10): See also: The Talk Show.

Update (2017-01-12): John Gruber shows how to remove the AirPods from the case.

It would be nice, when the Mac and iPhone are together, if the Mac could “steal” the AirPods without having to first deselect them on the iPhone.

Lex Friedman’s way of removing the AirPods from their case is even better.

Update (2017-01-13): Park Silkenson compares the two methods.

Explanation for Consumer Reports’ Battery Results

Rene Ritchie quoting Apple (tweet, MacRumors, AppleInsider, Hacker News, ArsTechnica):

We learned that when testing battery life on Mac notebooks, Consumer Reports uses a hidden Safari setting for developing web sites which turns off the browser cache. This is not a setting used by customers and does not reflect real-world usage. Their use of this developer setting also triggered an obscure and intermittent bug reloading icons which created inconsistent results in their lab. After we asked Consumer Reports to run the same test using normal user settings, they told us their MacBook Pro systems consistently delivered the expected battery life. We have also fixed the bug uncovered in this test.

It sounds like they are referring to the “Disable Caches” setting in the Develop menu. It’s not front and center, but I wouldn’t call it “hidden” since it can be enabled from within Safari’s own Preferences window. It’s not a defaults write preference.

The setting definitely is used by customers, e.g. Web developers, though probably not by most consumers.

It does seem legitimate to me for Consumer Reports to turn off caching when repeatedly loading the same Web pages. A test that just reads from the cache would not be representative of real-world use. Maybe it would have been better to test a series of unique pages with the cache enabled. Either way, it’s hard to say what would be a fair, controlled test involving servers run by third parties from around the world. Consumer Reports tried to control for some factors by loading pages from their own server, but that introduces other problems.

Regardless, their main finding was the inconsistent battery life, and it sounds like that is explained by the Apple bug.

Previously: Consumer Reports on the New MacBook Pro’s Battery Life.

Update (2017-01-10): Consumer Reports:

We communicated our original test results to Apple prior to publication on Dec. 22 and afterward sent multiple rounds of diagnostic data, at the company’s request, to help its engineers understand the battery issues we saw in our testing. After investigating the issue, Apple says that the variable battery performance we experienced is a result of a software bug in its Safari web browser that was triggered by our test conditions.


Separate from Consumer Reports’ test findings, many MacBook Pro owners have posted in user forums about episodes of remarkably short battery life, and both CR’s findings as well as these consumer posts have caused much discussion and debate in the tech press and on user forums.


At Consumer Reports, we test every laptop from every manufacturer in a comparable way. Because people use laptops differently and because their usage can vary from day to day, our battery tests are not designed to be a direct simulation of a consumer’s experience. Rather, we look to control as many variables as possible, then perform a test that gives potential users a reasonable expectation of battery life when a computer’s processors, screen, memory, and antennas are under a light to moderate workload. This test has served as a good proxy for battery life on the hundreds of laptops in our ratings.


Many of these settings are set by default to extend battery life. That’s generally a good thing. But because these settings are so variable and situation-dependent, we turn several of them off during testing. For instance, we turn the screen auto-dimming features off on all laptops and set the displays to a constant level of brightness. […] We also turn off the local caching of web pages.

John Gruber:

I still think something was/is wrong with Consumer Reports’s testing, but I don’t think it’s fair to say that disabling the caches is unfair or a flawed method. And while the preference setting is obscure, I wouldn’t call it “hidden”.

Geoff Hackworth notes that none of this explains how Consumer Reports got a high of 19.5 hours, when Apple claims only 10 hours of “wireless web.” It will be interesting to see the times when they re-test.

Jason Snell:

At Macworld we built a lot of different lab tests over the years. It’s hard to test real-world performance in automated tests. You want to produce a result that represents what regular people would experience when using the product, but it’s a constant battle against software and hardware that’s designed to reduce power consumption at every turn. You can’t just use a human to do the testing, because in addition to being wildly inefficient (these tests take a days to perform, per system), they won’t be exactly the same on all the different systems.


There are judgment calls like that at every turn when you’re building lab tests.


My guess is that this bug is more likely the cause of the battery-life disparity than anything specifically weird or unfair in Consumer Reports’ laptops tests, but I suppose we’ll see when it revisits its findings.

Marco Arment (tweet):

Consumer Reports has a spotty history with calling Apple out on product flaws. […] But almost every time, the problem they’re reporting is real — especially in retrospect, after everyone’s defensiveness has passed and we’ve lived with the products for a while. It’s just debatable how big of a deal it is in practice.


Apple’s framing here is almost Trumpian, evading responsibility for the real problem — Apple’s bug — by attempting to insult the test (“does not reflect real-world usage”), discredit and imply malice by Consumer Reports (“a hidden setting”), and disregard the bug as irrelevant (“obscure and intermittent bug”).


But disabling the browser cache during a battery test to make results more consistent is reasonable, Apple’s browser offers that feature, and it’s neither very well hidden nor unused by any customers.

Andrew Hart:

They did contact Apple about the results, and Apple sent them a canned statement.


Apple declined to help until after CR published. That’s Apple’s MO.. they don’t acknowledge problems.

It would be interesting to know how long they waited before publishing, but it’s hard to fault them for doing so if that was Apple’s only response.

Nick Heer:

The [Apple] statement goes on a little longer, but the nutshell version comprises these three sentences. And I have issues with all of them.

Update (2017-01-13): Consumer Reports (Glenn Fleishman, John Gruber, Hacker News):

With the updated software, the three MacBook Pros in our labs all performed well, with one model running 18.75 hours on a charge. We tested each model multiple times using the new software, following the same protocol we apply to hundreds of laptops every year.

There’s still no explanation for the unexpectedly long battery life that they saw. And why did the bug fix reduce the time from 19.5 to 18.75 hours?

I’d also like to point out that people seem to be misremembering Antennagate, perhaps because of Jobs’ masterful presentation. The iPhone 4, even with the bumper, had worse reception than all previous iPhones. In the area where I live, this was the difference between the phone working and not working. The Apple Store wouldn’t acknowledge this and made it difficult to return the phone.

Update (2017-02-01): Gordon Mah Ung:

In looking at other battery run-down scenarios, I ran smack into a problem that’s likely at fault for many of the confusing battery life issues with the laptop, at least in macOS Sierra 10.12.2. On occasion, the laptop’s discrete GPU would just get stuck on and consume power even when it wasn’t used. Others had reported this too, but you’d really have to stumble onto it.

I was able to reproduce the issue in Safari by opening Google Maps, which would cause the laptop to switch over to the GPU for the WebGL workload. Opening additional browser tabs and then closing the Google Maps tab would, on occasion, leave the GPU consuming up to 10 watts of power while doing absolutely nothing.

Update (2017-02-14): Benedict Slaney (via Rui Carmo):

I don’t know exactly what Apple or Intel have done right, but the power drain under low usage conditions is now around half of that that the previous MBP’s.


Given that the time remaining calculation is calculated by using nothing but the battery drain average over recent time, the only reason behind Apple’s statement that the newer CPU’s are causing unpredictable calculations that I can think of would be because sometimes the CPU moves into a higher power state for a minute or so, and that the time remaining estimate gets updated during the same period, only to be inaccurate because the CPU then switches into a low power state and spends the majority of its time there, or vice versa. But that answer just leaves more questions hanging.


This is in line with consumer reports saying that they would get around 19 hours out of a laptop on a single charge. It’s also in line with people reporting that under high load the new MBP lasts a shorter amount of time than the earlier models. It does have a 25% smaller battery, and it is more performant. Under high stress it will use its resources and drain the battery quickly.

Chris Lattner Is Leaving Apple

Chris Lattner (MacRumors, Reddit):

I’m happy to announce that Ted Kremenek will be taking over for me as “Project Lead” for the Swift project, managing the administrative and leadership responsibility for This recognizes the incredible effort he has already been putting into the project, and reflects a decision I’ve made to leave Apple later this month to pursue an opportunity in another space. This decision wasn’t made lightly, and I want you all to know that I’m still completely committed to Swift. I plan to remain an active member of the Swift Core Team, as well as a contributor to the swift-evolution mailing list.

John Voorhees:

Lattner’s contribution to Apple’s developer tools has been enormous. His departure is a big loss for Apple.

John Gruber:

The Apple developer community is still in the middle of the transition to Swift. I’m a little surprised he’d leave in the midst of the upheaval. It’s a thriving language, but it is far from a completed project — neither the language itself nor the OS frameworks.

Makes one wonder why Apple couldn’t keep him, but depending on what he ends up doing this could be very good for Swift.

Update (2017-01-10): Andrew Pontious:

I always wondered if Lattner would be happy under several layers of Apple management.

Company is very top-down.

For someone of his talents and ambition, you either work your way up to the top, or you leave.

Lattner is doing an AMA on Slashdot.

Wil Shipley:

I’m very sad to see Lattner go after Swift 3, but remember Parkhurst left NeXT after NeXTstep 3, and Cocoa’s had a 28-year run so far.

He’s going to Tesla (tweet):

We would like to welcome Chris Lattner, who will join Tesla as our Vice President of Autopilot Software. Chris’ reputation for engineering excellence is well known. He comes to Tesla after 11 years at Apple where he was primarily responsible for creating Swift, the programming language for building apps on Apple platforms and one of the fastest growing languages for doing so on Linux.

Jeff Johnson:

I hope Teslas will crash less than Xcode.

Dan, writing before the Lattner news (via Zac Cichy):

Apple’s poor ability to attract and retain artificial intelligence and services talent is the most serious effect. Apple rarely acquires AI or services companies; however, the odd occasion when they do, key staff depart soon after— often to work on competitors’ products[…]

Nick Heer (Hacker Newsx):

Also making news today is Daniel Gross’ announcement that he’s leaving Apple for Y Combinator. Gross directed many of Apple’s machine learning initiatives, while Lattner created Swift; these are two of the highest-profile initiatives within the company.

Update (2017-01-11): John Gruber:

Now, it feels like Apple is out of the car game, and Tesla is gunning for Apple’s lead in computing. You can’t overstate what a star Chris Lattner is.

USA Today:

Tesla Motors CEO Elon Musk famously called Apple a “Tesla graveyard” where his failed employees go to toil.

That was a nifty bit of Musk-esque verbal sparring in what is a growing talent war between the tech titans. But it seems he’s now robbing the graveyard.

See also: ArsTechnica, Reddit.

Seth Weintraub:

Chris Lattner isn’t the only high profile Apple executive who departed for Tesla over the past month, rather than sticking around to work on Titan. 9to5mac has learned that Matt Casebolt, a high profile Senior Director of Design for Apple’s Mac lineup left the company last month for a role at Tesla as Sr. Director Engineering, Closures & Mechanisms. A job meant for a man named Casebolt …

Over the past two and a half years Casebolt led the development of the MacBook Pro with its standout and sometimes controversial Touch Bar feature. Before that, he led the team working on the iconic ‘trash can’ Mac Pro and was previously instrumental in the design of the first generations of MacBook Air. These are some of Apple’s most iconic Mac products over the past decade.

Chris Lattner:

Ted has been one of the quiet but incredible masterminds behind Swift (and Clang, and the Clang Static Analyzer) for many years. His approach and modesty has led many to misunderstand the fact that he has actually been running the Swift team for quite some time (misattributing it to me). While I’m super happy to continue to participate in the ongoing evolution and design of Swift, I’m clearly outmatched by the members of the Apple Swift team, and by Ted’s leadership of the team.

Update (2017-01-13): Ben Lovejoy (Hacker News):

Business Insider reports that Lattner had found Apple’s extreme approach to secrecy wearing, especially as his role was to create open-source developer tools, including Swift.

Julie Bort:

“He always felt constrained at Apple in terms of what he could discuss publicly — resorting to off-the-record chats, surprise presentations, and the like,” the person told us. “Similarly, I know he was constrained in recruiting and other areas. Eventually I know that can really wear people down.”


This wouldn’t be Apple’s first time losing someone in a big public way because it insists on secrecy over collaboration. As we previously reported, Apple’s entire networking team quit within a one-week period back in 2015 when Apple asked the team to build a bulletproof network and then refused to allow it to collaborate with others outside the company in its field doing similar work via an organization called Open Compute Project.

Chris Lattner:

My decision has nothing to do with “openness”. The “friend” cited is either fabricated or speculating. Folk just want to make 🍎 look bad.

Update (2017-01-15): See also: Accidental Tech Podcast, Core Intuition.

Update (2017-01-18): Joe Rossignol:

As it turns out, Lattner told MacRumors the answer is actually very simple: he is ready to move on to something new.

See also: Accidental Tech Podcast’s interview with Lattner.

Update (2017-08-15): Juli Clover (Hacker News):

Lattner today announced that he has joined the Google Brain team to work on artificial intelligence.

Monday, January 9, 2017

Tell Us Your Mac Automation Stories

Adam C. Engst:

What should we make of Sal leaving? Apple didn’t lay him off specifically, it instead eliminated the position of Product Manager of Automation Technologies. It’s my understanding that multiple groups within Apple wanted to hire Sal afterward, but Apple was under some sort of hiring freeze that prevented him from migrating within the company. So it doesn’t look as though Apple was trying to get rid of Sal personally, which is good. What’s less good is that it would appear that Apple doesn’t see the need for having a position that evangelizes user automation internally.


Sure, Apple could have plans to replace AppleScript and Automator with super secret magic unicorn technologies, but based purely on what the company has done and said, it’s hard to believe that.


Even so, it’s obvious to anyone who uses iOS that there is still an important role for automation. I can tell Siri to “Change ‘Floating’ to 8 AM” to adjust the time of my wake-up alarm, but I have no way to automate the five taps necessary to play the audiobook we listen to every night in the Hoopla digital library app. Five wasted taps every night isn’t the end of the world, but if you can’t automate the little stuff, you certainly can’t automate the big stuff.


If Apple’s seeming indifference toward automation worries you because you rely on scripts, macros, workflows, and more to get your work done quickly, effectively, and accurately, here’s what I’d like you to do. Leave a comment on this article outlining how you depend on Mac automation tools in your job.

Previously: Thank You, Sal.

Update (2017-01-25): Adam C. Engst:

The stories poured in, and you can now read about the amazing things that fellow TidBITS readers have accomplished with AppleScript, Automator, and the many other automation technologies available to Mac users. It’s a lot, so don’t feel the need to do it all at once.

I’ll send these to Apple’s Tim Cook and Craig Federighi as well so they can see just how important automation is to the future of the Mac. And just to bring up how constantly I turn to automation tools, the start of each story below was formatted with a single grep search in BBEdit, saving me at least 10 minutes.

Voice-Based Personal Assistants

Spencer MacDonald:

The Alexa app on iOS is clearly a hybrid app, in fact I would say it is predominately web based. There are a few strange behaviours with navigation (sometimes you press back and it appears to pop an entire web view from the navigation stack, thus you actually go back multiple steps) and it doesn’t use native controls which can be quite jarring at times. The app works, but I’m pleased that besides the initial configuration you don’t have to use it. It does have a nice feature where it shows you all the events you have triggered, and also (rather creepily) allows you to playback the audio from any of your requests that triggered Alexa, which is good for when you ask yourself “Why did it do that?”.


Obvious I couldn’t review Alexa without making the comparison to the other assistant in my life, Siri. After living with the Echo for a few months, the detection and transcription capabilities of Alexa on the Echo is leaps and bounds ahead of Siri on the iPhone 7. Alexa is also better at answering general questions, like the weather, unit conversion etc. However I feel that Siri’s intents API implementation means that for the few supported domains (8 as of iOS 10), your interactions feel a lot more natural compared to when interacting with a Skill. In short they are both coming at the problem from different directions, Alexa is currently winning but in my opinion that has a lot to do with the hardware.

Ben Thompson (Hacker News):

In short, Amazon is building the operating system of the home — its name is Alexa — and it has all of the qualities of an operating system you might expect[…]


That leaves the business model, and this is perhaps Amazon’s biggest advantage of all: Google doesn’t really have one for voice, and Apple is for now paying an iPhone and Apple Watch strategy tax; should it build a Siri-device in the future it will likely include a healthy significant profit margin.

Amazon, meanwhile, doesn’t need to make a dime on Alexa, at least not directly: the vast majority of purchases are initiated at home; today that may mean creating a shopping list, but in the future it will mean ordering things for delivery, and for Prime customers the future is already here. Alexa just makes it that much easier, furthering Amazon’s goal of being the logistics provider — and tax collector — for basically everyone and everything.

Dan Moren:

As a happy Amazon Echo user for nearly two years now, you might think I wouldn’t be in the market for any other voice-controlled virtual assistant—and you’d be wrong. Dead wrong.

Upon returning home from my lengthy trip last month, one of the boxes awaiting me contained a Google Home that I’d ordered while abroad.


The other big comparison point against the Echo is sound quality. I don’t pretend to have an audiophile’s ear, but to me the Google Home sounded like it had a little more bass than the Echo but an overall muddier sound. While it’s definitely superior to the Echo Dot—low bar there—it’s certainly not too hard to find a better-sounding speaker than pretty much anything in this class.


In any case, voice recognition and synthesis are table stakes for these devices. The real question is whether or not the Google Home has any functionality so compelling that I’ll switch to using it over my Echo. The answer to that, so far, is…not really.

Khoi Vinh:

Alexa is clearly able to understand your commands—and act on them—better than Siri is able to, but it doesn’t feel leagues better. In practice, it’s not uncommon to have to issue commands three, four, five or more times before Alexa understands what you’re trying to say—or until you learn the way Alexa wants you to say it.


At home we also received an Echo Dot as a present, a product which I think could be a home run. For just US$50, you get everything that the Echo does except for the higher quality speaker (which means Amazon is basically charging you US$130 for the full fledged version’s speaker, when you think about it). At that price point, I could easily imagine having a Dot in each room of the house, which would make for a really powerful system.


And finally, design. The Google Home comes in a nicer package, is a much nicer form factor, and is just gorgeous. It’s a very handsome expression of impressive technology

Colin Cornaby:

Still finding that Alexa/Echo is horrible for home automation compared to Siri. Rare bright spot for Apple.

Stephen Hackett:

[Echo is] an open platform, meaning developers can write applications — dubbed Skills — that users can enable with just a tap in the Alexa mobile app.


HomeKit, on the other hand, is a closed system. Apple has a rigorous approval process before allowing a device or service to be listed as a supported partner. From a security standpoint, this is a big win.


People are all up in arms about headphone jacks, USB-C, and dongles. When the real issue is Apple completely missing huge new markets.

Apple had Siri out and was in the lead with voice control, then they wasted it. I never use Siri, she is nearly worthless, but I do use Alexa multiple times a day. Amazon is Leading the voice assistant market, and Google is right on their heels.

Home automation was supposed to get better with HomeKit but arrived basically stalled. They announced all these partners and sold their products at the Apple Store. Then when HomeKit finally was ready none of those products worked with HomeKit.

Steven Levy (via Dan Moren):

“That’s really important,” Schiller says, “and I’m so glad the team years ago set out to create Siri — I think we do more with that conversational interface that anyone else. Personally, I still think the best intelligent assistant is the one that’s with you all the time. Having my iPhone with me as the thing I speak to is better than something stuck in my kitchen or on a wall somewhere.”

Madison Margolin:

Gatebox is new holographic home assistant that’s similar to the Amazon Echo’s Alexa, only more anthropomorphic—and creepier. Made by the Japanese company Vinclu Inc, the device is a transparent, voice-activated cylinder that displays a tiny holographic character named Azuma Hikari (presumably, other characters can be added later). […] It seems designed specifically to appeal to lonely bachelors.

See also: Accidental Tech Podcast, The Talk Show.

Previously: Developing for the Amazon Echo, SiriKit.

Update (2017-01-10): See also: The Talk Show.

Atlassian Acquires Trello

Frederic Lardinois (Hacker News, Slashdot):

Atlassian today announced that it has acquired project management service Trello for $425 million. The vast majority of the transaction is in cash ($360 million), with the remainder being paid out in restricted shares and options. The acquisition is expected to close before March 31, 2017.

This marks Atlassian’s 18th acquisition and, as Atlassian president Jay Simons noted when I talked to him last week, also it largest. Just like with many of Atlassian’s other acquisitions, the company plans to keep both the Trello service and brand alive and current users shouldn’t see any immediate changes.

Michael Pryor (tweet, Joel Spolsky):

More than 19 million users later, Trello is used by everyone from the family planning their next vacation to employees at the largest enterprises in the world. Companies like Google, National Geographic, and even the United Kingdom’s government use Trello daily. Organizations like the United Nations and the Red Cross rely on Trello to accomplish their missions.


We’re excited about partnering with Atlassian because we both share a philosophy of empowering teams everywhere to work in their own style. We envision a world where hundreds of millions of people collaborate in teams however they like, with their imaginations being the only constraint for what they can accomplish. As part of Atlassian, Trello will be able to leverage investments in R&D that will enhance the product in meaningful ways. Our team will be able to focus on improving the core experience of Trello for all users. We are certain that Atlassian understands the unique and novel reasons why Trello is so successful and well-loved.

Mike Cannon-Brookes:

One of Trello’s strengths is its flexibility. You control how the board looks and operates so you can mold it to how your team works, and track progress in stages that reflect your processes. You can take this flexibility a step further by integrating the tools you already use with Trello as Power-Ups that extend the functionality of the boards to meet your team’s unique needs.

The JIRA family of products will continue providing purpose-built experiences such as JIRA Software, the #1 tool for agile software teams; JIRA Service Desk, a beautifully simple service desk solution for IT and business teams; and JIRA Core for project and process management.

JIRA tools excel at work that benefits from a well-defined, traceable, and repeatable process, whilst Confluence is great for teams creating and collaborating on documents and rich content. Trello perfectly fills a gap between the structured workflows of JIRA and the free-form collaboration of Confluence and will give teams the option to find the right Atlassian tool for the type of work they need to complete. Keep an eye out for integrations between these products in the near future.

Anil Dash (tweet):

Fog Creek and Trello don’t just share cofounders, we share a lot of the same DNA, and we even share the same beautiful office as our NYC headquarters. The same innovative process that resulted in Trello’s invention has yielded Gomix, which we think has the same potential to change the way people work and collaborate and create. And while there are ways we’ll be competing now (we really do think you’ll love FogBugz as an alternative to Jira!) we’re mostly just proud to see our sibling company succeed.

Previously: FogBugz, JIRA, and Wasabi.

Update (2017-01-11): Benjamin F. Wirtz:

For Atlassian, I believe this was exactly the right move. One of the questions that remain is: With that much overlap between their tools, how will a user who has not heard of neither Trello nor JIRA or Service Desk figure out what’s best for them? How will JIRA users decide between JIRA Agile boards and Trello once the products are integrated?

Update (2017-01-25): Mitt Tarasowski (via Hacker News):

Altlassian bought Trello for $425 million not because of its brand or its user base, but because Trello was a big threat to the company’s future.


While the company’s revenue grew, its product became overly complicated and difficult to maintain. By moving upmarket, Altlassian created a vacuum at lower price points into which competitors with disruptive technologies could enter. This is what Trello did.

Update (2017-03-09): Hiten Shah:

Trello might have become a $1B+ business if it looked like a “system of record” application—the single-source of truth for a company. Imagine if you could use Trello not just to track your marketing funnel, but to move information from your marketing board to your sales pipeline and product roadmap. Instead of having a separate Trello board for each team, you’d have a big board for the entire company.

Trello never became this “system of record.” It was an strong visual metaphor that the competition ultimately copied. Ultimately, the Kanban board was a really cool UX feature, but not a difficult one to replicate.

In SaaS, you don’t win by getting there first or having the best idea. You win by continually solving the problem better. When you build a feature that’s extremely popular or successful, the competition will steal it.

LG Ultrafine 5K Reviews

Colin Cornaby:

I picked up the Thunderbolt 3 to Thunderbolt 2 adapter, and hoped my [2013] MacBook Pro would be able to drive this display.


There were pretty obvious signs that this wasn’t an Apple product. The display was wrapped in a foil textured sort of wrap instead of the soft paper Apple uses. And the display very unhelpfully came with an Energy Star sticker pre-applied directly on the screen, which was at least easy to peel off. I’ve only bought Apple displays (with a display I borrowed for a gaming PC being the only exception), so the noticeable decline in packaging quality was bittersweet.


I downloaded SwitchResX which revealed something very interesting about how Apple handles the LG Ultrafine on older Macs. Apple is rendering the screen at 5k, but then downsampling it to 4k and sending it to the display. So my computer acts as if it is attached to a 5k display, even though it can push a 4k image. That’s a really clever enhancement that almost makes this display worth it for older Mac owners. Even with only 4k output, it could be a great drop in replacement for an Apple Thunderbolt Display, with a noticeable increase in image quality and P3 support (with a bit of help from SwitchResX.) Apple has clearly thought about the Apple Thunderbolt Display sized hole that is being left in their lineup for Macs that haven’t rolled over from Thunderbolt 2 yet.

Rene Ritchie:

That’s not to say Apple didn’t have a lot to do with the engineering — everything that makes it work so well with a MacBook Pro using just one Thunderbolt 3 cable. But the outside, what we look at, is nothing like Apple.

There are also compromises here. That gorgeous image and convenient charging all in one cable comes at a price — there’s precious little bandwidth left for other ports and peripherals.


That asterisk is Apple recommending you not use the LG display as the primary display on a Mac mini or Mac Pro, since it may not light up until after you boot, rendering pre-boot options unusable. Sadness.


Rumor has it the LG UltraFine 5K display uses the same if not a very similar panel to the iMac with Retina 5K display. To my eyes, though, it isn’t as glossy. That’ll please those who prefer more matte displays. Personally, though, I find the slight difference distracting and would have preferred if LG had finished it to match the MacBook Pro exactly. It’s especially noticeable when looking at both the MacBook Pro and the LG display at an angle.

Robert Gottlieb:

I have to plug in my ethernet to usb-c directly to my laptop to get the full speed out of it. I’m guessing something about the 5 GB connections on the back is limiting it somehow :( I’m thoroughly unimpressed with this monitor now. I do like the display but there are so many inconveniences so far that I’m seriously considering taking it back. But then I’m stuck with: What do I replace it with? Do I adapt a display port to usb-c and use up another port to power my mac with it’s power brick?

Luk Vandal:

If I had to do it again, I’d keep my iMac 5K/rMBP combo and wait a year or 2 until Apple solves USB-C and DisplayPort issues.

Peter Zignego:

It’s almost as if by not controlling the product start to finish Apple is sacrificing quality here.

Previously: MacBook Pro Ethernet Adapter Benchmark.

Update (2017-01-12): Ken Yarmosh:

After just a day of use, we’re planning to return the new LG UltraFine 5K monitors to Apple. Performance issues and poorly designed.

James Dempsey:

Just got told by @AppleSupport to contact LG support about 5K monitor. This was so much better when Apple made the whole widget.

It’s my newly delivered LG 5K display in its little-known ‘Two Pixel Mode’.

Its either this or blank connecting new MBP in clamshell mode.

Max Schoening:

1 out of 5 times plugging in the 5K LG monitor into a MBP throw a kernel panic. 1 out of 8 connected peripherals don’t work.

Ortwin Gentz:

Received my UltraFine 5K display today. Sadly it’s DOA. Works only with Apple Power brick attached and then kernel_task spins up to >100%.

Update (2017-01-25): Adam C. Engst (MacRumors):

TidBITS recently published an ExtraBITS link pointing at a Reddit thread claiming that Apple had removed reviews from the Apple Store page for the LG UltraFine 5K Display (see “Apple Pulls LG UltraFine 5K Display Reviews,” 23 January 2017). We have since learned that Apple never turned reviews on for that product, possibly because it was available only for pre-order for some time before shipping.

Update (2017-07-31): Matej Bukovinski:

Image retention on my LG 5k has gotten severe enough for people to read my Slack conversations on the lock screen for minutes.

Apple Removes LinkedIn App From Russian App Store

Cecilia Kang and Katie Bennerjan (via MacRumors):

Smartphone users in Russia can no longer download the LinkedIn app on iPhone or Android devices, following a similar move in China to block The New York Times app on iPhones.

The demand by Russian authorities to remove LinkedIn in Apple and Google app stores comes weeks after a court blocked the professional networking service for flouting local laws that require internet firms to store data on Russian citizens within the nation’s borders.


Direct blocking of websites has been done by China, Russia, Turkey and several other nations for years, usually through their state-run internet service providers. But civil rights groups say the pressure authoritarian governments are now placing on Apple and Google is a new wrinkle.

“Apps are the new choke point of free expression,” said Rebecca MacKinnon, who leads a project on open internet tracking at New America.

Previously: Apple Removes New York Times Apps From Chinese App Store.

OPML File Type on Macs

Brent Simmons:

I was fixing a bug in OmniOutliner where it wouldn’t open a file with an uppercase .OPML suffix. I did some digging, and the fix was to register the app as handling the file type.


OPML — Outline Processor Markup Language — was invented in 2000 by Dave Winer at UserLand Software. It’s not Apple’s format, and the correct file type is org.opml.opml.

I seem to recall a similar issue with a non-standard UTI for Markdown.

Friday, January 6, 2017

Unsafe Swift: Using Pointers and Interacting With C

Ray Fix (via Greg Heo):

MemoryLayout<Type> is a generic type evaluated at compile time that determines the size, alignment and stride of each specified Type.


Unsafe Swift pointers use a very predictable naming scheme so that you know what the traits of the pointer are. Mutable or immutable, raw or typed, buffer style or not. In total there is a combination of eight of these.


This example is similar to the previous one, except that it first creates a raw pointer. The typed pointer is created by binding the memory to the required type Int. By binding memory, it can be accessed in a type-safe way. Memory binding is done behind the scenes when you create a typed pointer.


Never bind memory to two unrelated types at once. This is called Type Punning and Swift does not like puns. Instead, you can temporarily rebind memory with a method like withMemoryRebound(to:capacity:). Also, the rules say it is illegal to rebind from a trivial type (such as an Int) to a non-trivial type (such as a class). Don’t do it.

Previously: Passing an Array of Strings From Swift to C, Swift 3.0 Unsafe World, Swift and C Libraries.

Bitter iCloud Truth

Daniel Jalkut:

The first thing to do was obviously to take care of those duplicates. Contacts on the Mac features a couple seemingly handy menu items for dealing with this problem: “Look for Duplicates” and “Merge Selected Cards.” I cannot recommend using either of these features.


After painstakingly merging cards in this manner for an hour or so (!), I had stopped paying close attention to whether conflicting data was being persisted well or not. At one point I stumbled upon the realization that I lacked the phone number for a contact whom I had sent an SMS message just within the past week. Other contacts were missing key data, too. An outdated email address here, a missing mailing address there. Whoops! Abort mission! Time to recover from that backup file.


I began to panic. Had I actually lost all of my Contacts data? In spite of dutifully backing up my local data and making a proactive archive from Contacts, the app had a very different idea of what my Contacts “truth” was.

On my Mac, the archive does seem to contain the data from iCloud, but I don’t dare to try restoring from it. It’s not clear to me what I would lose by creating a local vCard export instead of a Contacts Archive.

Chuq’s Advice for Apple

Chuq Von Rospach:

If I could only offer one thing to Apple, it’s this: “it’s okay to slow down — a little”. The iPhone has to ship a new version ever year, and you can’t take your eye off that for a minute, but other parts of the product line don’t need that kind of continuous update. MacOS would be okay with a new release every 18 months or two years, or a feature release as a tick and a performance release as a tock in a two year cycle.


When people are nervous, when they don’t know what might happen to the things they depend on in their life and work, they start speculating. And when there’s nothing to fill the space in the social media and online conversation space, that speculation ends up taking on a life of its own, especially the speculations of the better known, louder enthusiasts and influencers. The best antidote for that is to get in front of it with enough information to prefer the speculations from catching everyone’s attention in the first place.


I find it interesting that Apple seems to have chosen the “Tim writes an internal email that he likely knows will get leaked” as a tactic here, because I’m guessing it being a leak prevents it from being liable to the same kind of SEC “forward thinking” rules and regulations that his more formal communications might be held to. Nice hack.

Previously: Apple’s 2016 in Review.

The State of Safari Extensions

honestbleeps (via Peter Steinberger, Hacker News):

A little over a year ago, Apple announced that Safari extension developers would no longer be able to develop extensions for free. Instead, they had to pay the same $100 per year that iOS and MacOS developers do. The benefit, they alleged, is that you’d get the tools and support to develop iOS and MacOS apps in addition to Safari Extension development. According to them, this “simplified” their program.


All of the browsers’ extension galleries require that you submit your extension for review. Each of them, except Safari, has some automated processes to ensure you’ve checked all the right boxes and included all the right files and data. The fact that we waited two weeks to be notified of such a simple omission, and one that wasn’t noted in the first rejection, is pretty awful.

So, we submitted yet again, once again providing documentation of our license to use the term “reddit” in the name, just in case. What happens? We wait a few weeks and are once again rejected for using the term “reddit” in the name of our extension!


All four of the other browsers use effectively the same APIs — Safari is potentially going to change that in some ugly ways.

To develop a Safari extension may eventually require Xcode, rather than whatever editor a developer prefers to use.


The difference with Edge vs Safari is that Edge spent time getting extensions right. They worked directly with extension developers (including me!) to ensure that Edge supported as much of what RES needed as possible. I was even flown out to Microsoft to work with their developers for a day and help them get RES running.

Microsoft showed us a great deal of kindness and respect. Apple has essentially given us the middle finger.

OmniFocus 2.8 for Mac

The Omni Group:

In OmniFocus 2.8, basic search works the same way it has since 2014: Click into the Toolbar Search field or hit ⌥⌘F and type the string you’re looking for. The outline and sidebar are filtered to show just items in your current view that contain that string (if there are any). The part that’s new in 2.8 is that instead of being limited to just searching the current view, you can click the magnifying glass icon in the search field and expand the scope! The three search scope options (Here, Remaining, and Everything) mirror the search options available in OmniFocus on iOS.

Previously, I would have to create a new window that showed everything—I have a perspective for that—in order to do a global search. It turns out that I still prefer the perspective way because I can drive it from the keyboard. I can have a keyboard shortcut to open the perspective and then just close the window when I’m done. With the new global search, I have to use the mouse to change the search scope to global before the search and also to change it back afterwards.

See also: the full change list.

Stringify Automation Service

Jeff Porten:

Stringify sounds to me like the Internet automation service IFTTT on steroids (and if you’re not sure what IFTTT does, see “IFTTT Automates the Internet Now, but What Comes Next?,” 20 December 2013). IFTTT allows for one condition and one event; Stringify has multiple conditions and creates “macros” for the real world, like “if it’s after 7 PM, my motion sensor outside is tripped, and I’m not home, turn on my lights and send me a text.” Better yet, Stringify integrates with IFTTT so one can trigger the other and vice versa. Just as with IFTTT, I’m unclear on how Stringify plans to make money.

Previously: IFTTT Drops Pinboard and, Blames Them.

Thursday, January 5, 2017

Renewing Medium’s Focus

Ev Williams:

As of today, we are reducing our team by about one third — eliminating 50 jobs, mostly in sales, support, and other business functions. We are also changing our business model to more directly drive the mission we set out on originally.


Upon further reflection, it’s clear that the broken system is ad-driven media on the internet. It simply doesn’t serve people. In fact, it’s not designed to. The vast majority of articles, videos, and other “content” we all consume on a daily basis is paid for — directly or indirectly — by corporations who are funding it in order to advance their goals. And it is measured, amplified, and rewarded based on its ability to do that. Period. As a result, we get…well, what we get. And it’s getting worse.


So, we are shifting our resources and attention to defining a new model for writers and creators to be rewarded, based on the value they’re creating for people.

John Gruber:

Sounds good, but with no details as to what this “different — and bolder — approach” is, it’s hard to judge.


Does anyone actually like those “highlights from other users” on Medium? I find them distracting and gross, and the more popular an article is, the more of them I see (and the more nonsensical some of them are).

Dave Winer:

Through all the zigging, the thing that has remained constant at Medium is the high quality and usability of the software. But it’s possible for others to do what they do, to be as easy to use, without the uncertainty about its future as an archiving system.

This became especially relevant as people in government, including the president and members of Congress, used Medium to publish official statements. Those should be preserved at a constant location over time. Yes, they will be in, but we should strive to do better.

Manton Reece:

On Monday, I launched my Kickstarter project about independent microblogging, with a focus on owning your own content and making blogging easier. On Tuesday, Lindy West left Twitter in a post about Twitter’s inability to deal with harassment. On Wednesday, Ev Williams announced that Medium would lay off 50 employees.

The message is clear. The only web site that you can trust to last and have your interests at heart is the web site with your name on it.

Previously: Anywhere But Medium.

Apple Removes New York Times Apps From Chinese App Store

Katie Benner and Sui-Lee Wee (tweet, Hacker News, MacRumors):

Apple, complying with what it said was a request from Chinese authorities, removed news apps created by The New York Times from its app store in China late last month.

The move limits access to one of the few remaining channels for readers in mainland China to read The Times without resorting to special software. The government began blocking The Times’s websites in 2012, after a series of articles on the wealth amassed by the family of Wen Jiabao, who was then prime minister, but it had struggled in recent months to prevent readers from using the Chinese-language app.


Apple has previously removed other, less prominent media apps from its China store. It is unclear how the company evaluates requests from Beijing to take down apps and whether it ever resists them.


When the Chinese government began blocking the Times websites in 2012, it also prevented users with Times apps from downloading new content.

But readers in China can still gain access to The Times using software that circumvents the government’s firewall. And in July 2015, The Times released a new version of its Chinese-language app that adopted a different method for retrieving articles, one that the government appeared unable to stop.

So the app would still work if only people were able to get it. But Apple doesn’t allow iOS users to download and install apps directly; you have to go through the App Store.

Update (2017-01-06): John Gruber:

I don’t think Apple had any choice here, other than pulling out of China.

And given that The Times’s website has been blocked in China since 2012, the closed, proprietary App Store has given Chinese readers four years of access to The Times that they couldn’t get over the open web.

Update (2017-01-11): See also: The Talk Show.

Update (2017-01-22): Farhad Manjoo:

In the last few weeks, the Chinese government compelled Apple to remove New York Times apps from the Chinese version of the App Store. Then the Russian government had Apple and Google pull the app for LinkedIn, the professional social network, after the network declined to relocate its data on Russian citizens to servers in that country. Finally, last week, a Chinese regulator asked app stores operating in the country to register with the government, an apparent precursor to wider restrictions on app marketplaces.


But that’s not the end of this story. The banning of apps highlights a deeper flaw in our modern communications architecture: It’s the centralization of information, stupid.

Intel Core i7-7700K Kaby Lake Review

Mark Walton (Hacker News):

The Intel Core i7-7700K is what happens when a chip company stops trying. The i7-7700K is the first desktop Intel chip in brave new post-”tick-tock” world—which means that instead of major improvements to architecture, process, and instructions per clock (IPC), we get slightly higher clock speeds and a way to decode DRM-laden 4K streaming video.

There are apparently power consumption improvements, however.

Dan Luu:

Dear linkbait authors, I’m pretty sure Intel is trying. If you look at research $, they appear to be trying exponentially harder over time.

Marcel Weiher:

We are in an effective post-Moore’s law world, and have been for a couple of years. Yes, we can still put more transistors on the chip, but we are pretty much done with single core performance, at least until some really big breakthrough.


Most of the things that go into squandering CPU don’t parallelize well, so removing the bloat is actually starting to become cheaper again than trying to combat it with more silicon.

Lloyd Chambers:

[There] are at least a few reasons why the Intel ‘Kaby Lake’ release is significant:

  • Improved graphics performance.
  • My understanding is that the Kaby Lake ‘H’ series supports 32GB memory, thus making a MacBook Pro with 32GB of DR 23000 DRAM possible. But whether the power draw is viable on a laptop is unclear (meaning what we could expect from Apple, given the rationalizations seen with the Nov 2016 MacBook Pro).
  • The i7-7920HQ 3.1 GHz (turbo boost to 4.1 GHz, 4 real CPU cores) might be suitable for a MacBook Pro.
  • The i7-7700K 4.2 GHz (turbo boost 4.5 GHz) shoudl be suitable for an iMac. This perhaps is the “standstill” point—that’s only 5% faster than the 4.0 GHz iMac 5K that sits on my desk today—at the cost of a 95 watt TPD.

Paul Haddad:

Every PC manufacturer today announced Kaby Lake updates. I’m guessing Apple will wait until at least April to announce a MacBook with one.

Razer’s “Project Valerie” Triple Display Laptop

Juli Clover:

Razer, known for its gaming laptops and accessories, today unveiled its latest product, the world’s first triple display laptop. Project Valerie features a Razer laptop that’s equipped with one main display and two fold out side displays, all of which are 4K.


According to Razer, though its equipped with three displays, Project Valerie has a form factor that’s comparable to other 17-inch gaming laptops on the market, fitting neatly into a laptop bag so it can be taken anywhere. It’s about 1.5 inches thick and weighs approximately 12 pounds.

Apple once made a MacBook Pro with a single 17-inch display, and it was great. I don’t really expect Apple to make something like this, but it’s not as crazy as it sounds. Many notebooks are transported from one location to another and not used on the go (making battery life irrelevant). I would love to be able to work remotely with a larger display or (better) multiple displays. The weight and dimensions compare favorably with lugging an actual external display, which I’ve considered, though I’ve not tried one like this.

Update (2017-01-05): I meant to also link to the new Acer laptop (via Mike Rundle):

As if gaming laptops weren’t already bulky and expensive enough, Acer is taking things a step further in the new year with its massive Predator 21 X, whose pricing it announced at CES 2017 today.

The $9,000 (not a typo) machine features a curved 21-inch display that offers a resolution of 2560×1080 pixels with 120Hz refresh rate, as well as G-Sync support to eliminate visual artifacts and issues like screen tearing.

Under the hood, it packs a 7th-gen Intel Core i7-7820HK Kaby Lake processor paired with not one, but two GeForce GTX 1080 GPUs in SLI configuration. They’re accompanied by 64GB of RAM and there’s room for five storage drives – a 1TB HDD and four 512GB SSDs[…]

Previously: New MacBook Pros and the State of the Mac.

Hiya: Filter Spam Calls

Katie Floyd:

Out of desperation, I’ve tried a few of these Apps claiming to screen or block suspected spam callers as they’ve popped up in the App store. Thus far the only one I’ve found that has worked somewhat reliably is Hiya. (Glenn Fleishman writing for Macworld has a more extensive review)


One concern of note, Hiya requires users to provide access to their contacts, a request that always makes me leery. Hiya told Macworld the data is required to add contacts to its whitelist and the information is kept private. Still, be aware. After a few months of use I’ve found Hiya overall accurate with a few bugs that have been fixed by uninstalling and reinstalling the app.

Update (2017-01-09): Marco Arment (tweet):

I had Hiya installed for weeks and it never identified a single spam call, during which time I got about ten. I followed all of their voodoo troubleshooting steps, but it just never worked, so I deleted it. (Too bad I can’t un-send them my contacts. Thanks a lot.)

Wednesday, January 4, 2017

The Leap Second

Jack Forster:

UTC used to be based on the rotation of the Earth around its axis, as observed at Greenwich. Once upon a time – a simpler, happier time – the second was exactly 1/86,400 of a day. By the mid-1950s, however, clocks had gotten accurate enough that we’d figured out that the Earth’s rotation on its own axis was irregular, so in 1952, the International Union Of Astronomers decided to define the second as a fraction of one orbit of the Earth around the Sun: a second would now be 1/31,556,925.9747 of a tropical year.

However, the year turned out to have the same basic problem as the day; it’s irregular, changing slightly in length from one year to the next. (This is different, by the way, from the problem that requires the insertion of an extra day in a Leap Year; the Leap Year is inserted to keep the Gregorian Calendar in sync with the seasons, but the reason for the Leap Year, is that there isn’t a whole number of days in a year, not that an astronomical year varies slightly in length from one year to the next.)


As it turns out, atomic clocks are much more stable than the Earth’s rotation around its axis, or its orbit around the Sun, and it soon became clear that while an atomic clock-based time standard (UTC) was great to have, it meant that there was going to be a cumulative difference between UTC, and observed mean solar time. While both the astronomical day, and year, are irregular, the day overall has been getting slightly longer for at least the last few centuries. To keep UTC and mean solar time in sync, a Leap Second is occasionally added to UTC.

Via Nick Heer:

Accurate time is also essential for things like HTTPS certificates and, apparently, Cloudfare’s CDN services.

Previously: Intercalation.

Getting a New 2013 Mac Pro in 2017

Chris Adamson:

Waiting isn’t really an option, with my 2008 machine not supported by Sierra.

I think my needs, for development and especially for video work (Motion and Wirecast, mainly) are best served by the Mac Pro. Even the pathetic, three-year-old Mac Pro, because what I want is lots of cores, silent operation, and expandability of RAM and storage, something the iMac and MacBook Pro can’t offer.


If Marco’s right, then the choice is either today’s Mac Pro, or no Mac Pro.


I’m honestly not sure Apple is even a consumer electronics company anymore. I’m starting to think they’re more a fashion and luxury goods company instead. […] The whole reason I bought AAPL in the first place was from reading Motley Fool back in the day (on AOL even! yes, I’m old!), whose emphasis on buying single stocks came from knowing what a company did and how it could be profitable doing that. I understood Apple in the 90s and believed that if they kept doing the right thing, they would succeed. They did, and I was rewarded handsomely for believing in them. But now, what the heck am I supposed to think when they’re maybe making a car, or making $300 coffee table books to celebrate how great they are? This makes no damn sense to me, so it’s time for me to be out.

I’m always amazed at just how small the Mac Pro looks in photos.

Previously: How Apple Alienated Mac Loyalists.

Update (2017-01-11): See also: The Talk Show.

OWC DEC MacBook Pro Dock

Juli Clover (via Paul Haddad):

Other World Computing today announced the OWC DEC, an attachment designed to snap onto the bottom of a 2016 MacBook Pro to add additional functionality to the machine.

The OWC DEC adds 4TB of storage, an SD Card Slot, USB Type-A ports for using standard USB devices, and a Gigabit Ethernet port. According to OWC, additional features will be introduced at a later date.


When installed, the OWC DEC and MacBook Pro will be as thin as a 2012 MacBook Pro, allowing this advanced solution to retain the attractive light weight design that users favor.

Previously: New MacBook Pros and the State of the Mac.

Tuesday, January 3, 2017

Apple’s 2016 in Review

Chuq Von Rospach (Hacker News):

Apple’s model of who its users are and what they want seems to be different than what happens out in the real world among its real users. And that to me indicates potential problems of all sorts, since that misjudgment affects not only forecasting, but product design, feature choice and performance specifications all tie back into this. And given the criticism of the MacBook Pros by many long-time Mac users, that’s a worry.


Apple’s always been a data driven company, but I think they’ve gotten overly reliant on data to drive business decisions. Spreadsheets can tell you where the sweet spots in the market are and how to hit them, but they struggle at finding and bringing forward strategic areas that also need coverage. That was, actually, one thing that Steve excelled at. It means you need people in leadership who understand their user base and which bits are strategic and need to have product coverage.


There are far too many details of bugs slipping into releases, weird design choices (the chaos of trying to use stickers in messages, for instance), usability problems and general “lack of polish” and the trend line on the quality of OS and app releases is headed in the wrong direction.


My worry is that Apple isn’t seeing this, because it’s looking at the sales numbers and they look fine, with many products under backlog and strong demand (including the new MacBook Pros). If you just look at the numbers, things are okay. But what Apple’s always been good at is looking beyond the numbers to the things they don’t say — and I worry they’ve lost that.

Previously: How Apple Alienated Mac Loyalists, New MacBook Pros and the State of the Mac.

Update (2017-01-03): Gus Mueller:

I really miss the previous generation of Mac Pros.

Andrew Abernathy:

I personally wish Apple would stay in the wifi game, and improve their products, if for no other reason than I trust them most on security.

John Gruber (tweet):

Something is clearly wrong with the AirPort line. Either it should have been updated long to remain state-of-the-art, or it should have been discontinued.


“What the hell happened with the Mac Pro?” is the most interesting question about Apple today. Because something clearly went way wrong with this product. I’m not convinced the basic idea for the design is unsound — the idea is that expansion would come in the form of external peripherals, rather than things you install inside the box.

I’m not sure that makes sense given the price of RAM and the improvements in SSDs and GPUs. If I’m going to keep the CPU for a long time, which given its slower rate of improvement is likely, it would be really nice to be able to upgrade the stuff inside the box. I’d rather not have appendages.

Updates to the same basic design would make sense. An all-new design would make sense. Getting out of the Mac Pro game would make sense. Selling 1000-day old pro workstations at the same prices as in 2013 makes no sense. Whatever the explanation is, this situation is an unmitigated disaster.

Update (2017-01-05): Philip Elmer-DeWitt (via Chuq Von Rospach):

The must-read Apple rant of the week is Chuq Von Rospach’s Apple’s 2016 in review. The veteran of a dozen Silicon Valley firms—including 17 years at Apple—Von Rospach has written a critique of Apple’s annus horribilis so sharp and on-the-mark that even die-hard Apple apologists are recommending it.

Nick Heer:

Forgive me for pointing out the obvious here, but Apple, unlike its peers, is the only company that makes hardware that can officially run MacOS and iOS. Google and Microsoft may now have their own integrated hardware and software products — in the form of the Pixel and Surface, respectively — but other companies make hardware that runs Android and Windows.

This puts Apple in a position of incredible power and responsibility. Their platforms are exceptional. Even as I complain at length about the myriad bugs and quality issues in MacOS, I’ve also used Windows recently and I can assure you that there’s a gigantic gap. Yet this responsibility, I feel, is something that they haven’t always treated with the respect it deserves.

Rene Ritchie:

Fixing it, of course, is non-trivial. Should Apple go back to doing less but doing it better?


Update (2017-01-11): See also: The Talk Show.

Finding an Alternative to Mac OS X

Wesley Moore (Hacker News):

I deeply value the consistency, versatility, reliability and integration of Mac OS X and the excellent quality hardware it runs on. However the current state of the Mac has me considering whether it’s still the right platform for me.


At the end of November motivated by the lacklustre MacBook Pro updates I installed a bunch of different OSes to see if I could find one that met my requirements. These are what I tried[…]

If Apple drops the ball with the Mac, I doubt we’ll ever see anything like it again.

Update (2017-01-04): John Siracusa:

The last time Mac users were seriously passing around articles like this was during the transition from Mac OS to Mac OS X.

John Gruber (tweet):

The truth is, for most of us, there is no good alternative to MacOS. Nothing. And it took so long — not years but decades — for MacOS to get to where it is that I don’t think any other OS could ever catch up. That’s what’s driving the arguably paranoid fear that Apple is abandoning the Mac. It’s not so much the evidence (lack of updates to Mac Pro and Mac Mini, and concerns about software quality) as the high stakes: if the Mac goes away, the world will be left without a Mac-quality desktop OS.

I think a lot of the hardware issues are temporary, and Apple could change course relatively quickly if motivated. The software quality is a more serious concern. Apple is one of the richest companies in the world, but it has built up a staggering amount of technical debt. I see no signs that this is being addressed. The best case—that Apple recognizes the problem and decides to do something—would probably take at least five years to pay it down.

Update (2017-01-05): Billy Chitkin (via Chuq Von Rospach):

The prospect of changing over to a new software ecosystem is scary. We totally get it, switching out the platform that you pay your bills with is a big deal, and certainly not a decision to take lightly. You’ve grown comfortable over the years with the OS that you love and the ecosystem around it, but now the future of Motion Design on the Mac looks a bit uncertain. We know that you have a lot of questions about making the switch, so let’s take a look at some of the bigger ones and see if we can’t ease some of those concerns.

Update (2017-01-26): Tony Heupel:

So, hedging my bets and moving away from Apple products and putting my money where my mouth is, I have come to this conclusion: while I’m VERY, VERY concerned for Apple and it’s impacts on me as a developer and therefore on my family, I simply think Apple has made the best tradeoffs when it comes to these devices I use every day, all day.

Update (2017-01-29): Wesley Moore:

The next frontier is Linux on my MacBook. I think that will be more of a test, particularly with hardware support (especially WiFi and trackpad).

This experiment has consumed days of my time at this point and the result is not in any way as polished as macOS. For the type of work I do and how I like to do it, it is still a productive environment though. Plus there is the added benefit of access to much more up-to-date, varied hardware than Apple is offering at the moment.

Anil Dash’s Advice for Twitter

Anil Dash:

I don’t think that smart people at Twitter haven’t thought of these ideas: I’m merely emphasizing that nobody on the outside can tell if they did or not. So you have to ship. You have to launch new features, tell users what they are, and explain why you made them.


Your relationship with Wall Street investors (and, to some degree, with advertisers) is fundamentally broken because you’ve gotten trapped into using the wrong metrics to measure the success or progress of Twitter. […] Meanwhile, do you know how many new video creators joined YouTube this quarter? Me neither! You know why? Because all the good videos are on YouTube! What percentage of people who visit YouTube each month are logged in? What percentage ever uploaded a video? Answer: Nobody gives a shit. Because YouTube inarguably drives culture, and people (and advertisers!) want to be part of that.

Via John Gruber:

By measuring the wrong things, not only is Twitter not being rewarded for what it is doing well, but it’s also providing motivation to Twitter to allow bad behavior.

Condensed History of VisiCalc

Dan Bricklin (tweet):

Steve Jobs once told an interviewer that “if VisiCalc had been developed for another computer, you’d be interviewing somebody else.” Dan Bricklin wanted to streamline his work at Harvard Business School, and he wound up changing the world of computing forever. Check out this talk to learn what led him to develop his revolutionary tool.

He practiced documentation-driven development.

“Hidden Figures” and NASA’s Human Computers

Matt Blitz (via Chris Turner):

In 1935, the NACA (National Advisory Committee for Aeronautics, a precursor to NASA) hired five women to be their first computer pool at the Langley campus. “The women were meticulous and accurate… and they didn’t have to pay them very much,” NASA’s historian Bill Barry says, explaining the NACA’s decision. In June 1941, with war raging in Europe, President Franklin Roosevelt looked to ensure the growth of the federal workforce. First he issued Executive Order 8802, which banned “discrimination in the employment of workers in defense industries or government because of race, creed, color, or national origin” (though it does not include gender). Six months later, after the attack on Pearl Harbor brought the U.S. into the throes of war, NACA and Langley began recruiting African-American women with college degrees to work as human computers.


The film primarily focuses on John Glenn’s 1962 trip around the globe and does add dramatic flourishes that are, well, Hollywood. However, most of the events in the movie are historically accurate. Johnson’s main job in the lead-up and during the mission was to double-check and reverse engineer the newly-installed IBM 7090s trajectory calculations. As it shows, there were very tense moments during the flight that forced the mission to end earlier than expected. And John Glenn did request that Johnson specifically check and confirm trajectories and entry points that the IBM spat out (albeit, perhaps, not at the exact moment that the movie depicts). As Shetterly wrote in her book and explained in a September NPR interview, Glenn did not completely trust the computer. So, he asked the head engineers to “get the girl to check the numbers… If she says the numbers are good… I’m ready to go.”