Archive for March 15, 2017

Wednesday, March 15, 2017 [Tweets] [Favorites]

The Curious State of Apple Product Pricing

Neil Cybart:

Given the preceding list, a strong case could have been made for Apple to price its new wireless headphones at $249, or even $299. The fact that Samsung priced its Gear IconX at $199 seemed to suggest a sub-$200 retail price for AirPods was unlikely. Instead, Apple sent shockwaves pulsing through the market by pricing AirPods at only $159. The action instantly removed all available oxygen from the wireless headphone space. The idea of Apple coming out with a new product that would underprice nearly every other competitor was unimaginable ten years ago.

[…]

At $269, Apple Watch Series 1 is one of lowest-priced smartwatches worth buying in the marketplace. Attractive pricing was one key factor driving record Apple Watch sales this past holiday quarter. In fact, even the Apple Watch Series 2, at $349, is one of the lowest-priced smartwatches in its class[…]

However, it seems like most Mac models are not as competitively priced right now, Apple is focusing on the high end of the tablet market, and it sounds like iPhone prices will be expanding up rather than down.

Update (2017-03-17): See also: MacRumors.

John Gruber:

AirPods are still showing a delivery estimate of “6 weeks”. Either demand remains unexpectedly strong or production remains unexpectedly difficult (or some combination of both).

That One Optional Property

Soroush Khanlou:

Other code in the view controller switched on the message’s existence to determine which views to allocate, how to lay them out, and so on. The optionality of the property represents more than existence of a simple string. It had implications in the rest of the view controller and the rest of the view layer.

The more essential point here is that the string now no longer represents a string that might be there or might not — it now represents the presentation style or mode that the view controller is in. Was it created in the context of a push notification or through normal browsing? The answer is in this barely related property!

His solution is to replace it with an enum or a promise, both of which have other benefits besides clarity.

Allo Can Reveal What You’ve Searched For

Tess Townsend:

A unique feature of Allo is that you can use Assistant while in the middle of a conversation with a friend. You could, for example, ask Assistant to search for restaurants in a certain area, while you’re talking to a friend about where to eat.

But Assistant isn’t perfect, and sometimes it responds with answers unrelated to questions at hand, or it will respond with an answer to an earlier question — and it’s then that it can inadvertently reveal a previous search query.

[…]

Google responded to our story: “We were notified about the Assistant in group chats not working as intended. We’ve fixed the issue and appreciate the report.”

Previously: Google Reneges on Allo Privacy Feature.

Looking at Model-View-Controller in Cocoa

Matt Gallagher:

When Cocoa says Model-View-Controller it’s mostly trying to evoke the notion of Separated Presentation and Content in application design (the idea that the model and view should have a decoupled design and be loosely linked at construction). To be fair, it’s not just Cocoa that uses Model-View-Controller in this way: most modern uses of the term are really intended to convey Separated Presentation rather than the original Smalltalk-80 definition.

[…]

The important point to note is that the controller is the center of the object graph with most communication passing via the controller – distinct from the Smalltalk-80 version where the model was the center of the graph.

[…]

In my opinion, the critical failing for Cocoa Bindings remains the difficulty in adding custom transformations and custom properties. These could both be done but the work involved in registering transformers and exposing bindings dictionaries made a tiresome affair. It always just seemed easier to pass the data through the view controller without bindings. This meant that Bindings tended to help the simplest problems (that didn’t need much help) but didn’t have much impact on the harder problems.

Since Cocoa Bindings in Mac OS X 10.3, there haven’t really been any clear attempts by Apple to alter the design pattern used for Cocoa apps.

Marcel Weiher:

The problem with using the same name is shadowing: since the names are the same, accessing the original definition is now hard. Again, this wouldn’t really be a problem if it weren’t for the fact that the old MVC solved exactly the kinds of problems that plague the new MVC.

Previously: Model Widget Controller (MWC) a.k.a.: Apple “MVC” Is Not MVC.

The Story of Firefox OS

Ben Francis (Hacker News):

During this five year journey hundreds of members of the wider Mozilla community came together with a shared vision to disrupt the app ecosystem with the power of the open web. I’d like to reflect on our successes, our failures and the lessons we can learn from the experience of taking an open source browser based mobile operating system to market.

[…]

In a rush to get to market we imitated the app store model with packaged apps, adding to the problem we set out to solve. Lost focus on what makes the web the web (URLs). Too much focus on the client side rather than the server side of the web stack.

[…]

After realising “open” on its own doesn’t sell, ultimately chose a strategy to compete mainly on price, which is just a race to the bottom. Suffered from a lack of product leadership and direction after the initial launch.