Archive for May 4, 2016

Wednesday, May 4, 2016

Apple TV 4 After Six Months

Ole Begemann:

The remote looks really nice, and I imagine it works great in Jony Ive’s perfectly-lit, tidy, pure white living room. In real life, it often is a usability disaster[…]


Navigating the UI via touch works mostly fine, although it does feel imprecise at times. I imagine that a simple four-directional pad would actually work better for most things I frequently do. However, I can see why Apple went with touch because it allows interactions that would be impossible with buttons, like scrubbing.


The default UI animations are slooooooow and block user input while they’re running.


Despite all the problems I mentioned, I really like the new Apple TV and use it almost daily.

Josh Centers:

The problem isn’t a complete lack of apps (there were over 2600 back in December, and likely many more than that now), but a dearth of those that make the Apple TV compelling (see “Apple TV App Store Growing Quickly… In the Wrong Direction?,” 11 December 2015). Just about every cable channel that offers a provider-activated streaming app has an entry in the tvOS App Store. But highly anticipated apps such as Amazon Video, Sling TV, and Spotify are nowhere to be found.


Elsewhere, Apple TV gaming seems to be struggling. Disney recently announced that it’s already dropping support for its Apple TV version of Disney Infinity, saying in a forum post […] That’s disturbing news for anyone who shelled out $99.95 for the Disney Infinity 3.0 Edition Starter Pack from the Apple Store, which is still on sale! Given that Apple also sells many of the accompanying Disney Infinity action figures, Disney’s abandonment of this app has to be a big blow to the Apple TV team.


A common lament these days is that Apple promotes big developers while ignoring the little guys. […] That’s if you’re a small fish. If you’re a big developer, you have to worry about Apple competing with your core business! Why should Spotify help boost the new Apple TV with an app when Apple is hoping to drive them out of business with Apple Music? If you’re a content provider, why support the Apple TV, when Apple is likely going to compete against you soon?

Marco Arment:

The new Apple TV is decent, but not great — exactly what I’d say about the Apple Watch, the other new Apple platform launched last year.


I’d say Apple TV, Apple Watch, and Apple Music all suffer from the same issues facing many Apple products today: […] To summarize it in one word: hubris.

Update (2016-05-04): Lee Bennett:

When writing about TV4, why do people always forget the fact that tapping the four trackpad edges is like the cursor pad they want?

Update (2016-05-05): Nick Heer:

I wasn’t aware of Siri’s language limitations, but so far, the Apple TV has been the best voice control and dictation experience for me. It seems more consistent and reliable than iOS or watchOS, and many of the baffling early-day omissions — lack of App Store or Music search, for instance — have been remedied.

Survey of Developers Who Use Macs


Most programmers would probably agree that unit tests improve code quality. Nevertheless, our survey reveals a big gap between theory and reality: be it lack of time or budget, but only a minority of developers writes unit tests regularly.


A whopping third of developers uses Trello for task management. This makes it the most popular tool by far, followed by JIRA, Omnifocus, and Wunderlist.


Developers seem to manage bugs & issues in one of three ways: using JIRA, GitHub Issues, or no special tool at all! With almost one in four developers not using a dedicated tool, a lot of text files and emails must be floating around.


The overwhelming majority of development teams does not use any dedicated tools to handle customer support. […] On the other hand, those people that do use a customer support tool are in agreement that Zendesk is the go-to service.

The GCD Handbook

Soroush Khanlou:

Calling dispatch_semaphore_wait will block the thread until dispatch_semaphore_signal is called. This means that signal must be called from a different thread, since the current thread is totally blocked. Further, you should never call wait from the main thread, only from background threads. […] One notable caveat is that each time you call enqueueWork, if you have hit the semaphore’s limit, it will spin up a new thread. If you have a low limit and lots of work to enqueue, you can create hundreds of threads.


If you have many blocks of work to execute, and you need to be notified about their collective completion, you can use a group. dispatch_group_async lets you add work onto a queue (the work in the block should be synchronous), and it keeps track of how many items have been added. Note that the same dispatch group can add work to multiple different queues and can keep track of them all. When all of the tracked work is complete, the block passed to dispatch_group_notify is fired, kind of like a completion block.


GCD’s barrier set of APIs do something special: they will wait until the queue is totally empty before executing the block. Using the barrier APIs for our writes will limit access to the dictionary and make sure that we can never have any writes happening at the same time as a read or another write.

Update (2016-06-06): Michael Rhodes:

The problem I saw here, which Soroush also notes, is that this approach starts a potentially unbounded number of threads, which are immediately blocked by waiting on a semaphore. Obviously GCD will limit you at some point, but that’s still a lot of work and a decent chunk of memory. While this code is necessarily simplified to introduce this use of semaphores, the bunch of waiting threads needled at me.

To achieve effects like this with queue-based systems, I often find I need to combine more than one queue. Here, in the solution Soroush and I got to, we need two queues to get to a more efficient solution which only requires a single blocked thread.

Twitter Is Back on My Phone

Eddie Smith:

It’s because I created a worse problem by removing Twitter. My desire for news and information didn’t die when I took Twitter away, and I began using the Apple News app. This turned out to be a horrible idea because no matter how much I tried to curate and tell Apple News what I wanted to see, it filled my “You” tab with mainstream headlines of death and disaster. The unfortunate reality of a news aggregator is that by the time you cover every tragedy in the last 24 hours, there’s no room for anything else.

The F-35’s Buggy Software

Dan Grazier (via Hacker News):

Despite many fixes, the aircraft’s Autonomic Logistics Information System (ALIS) is so flawed that government auditors believe the computer system may not be deployable. These problems may also delay the Air Force’s declaration of Initial Operational Capability.


ALIS is the ground-based computer system meant to diagnose mechanical problems, order and track replacement parts, and guide maintenance crews through repairs. It also allows pilots to plan missions and later review their performance. At least, it’s supposed to do all of those things.

So far, the software has been so flawed that maintenance crews have had to resort to time-consuming workarounds. In one instance, maintainers even had to manually burn data onto CDs and drive off base to send the massive files across a civilian WiFi network.


Speaking as someone who left a company that did radar software development in ADA (and some C). We were a subcontractor of Boeing and wrote the software for them.

We didn’t formally verify the code, its way too complex, but everything was reviewed and heavily tested. And tested again. Then integrated and tested…

Ada is pretty strict and if it compiles you usually had some confidence it was going to at least run ok.

The industry was moving to C/C++ because developers know it and promises of higher productivity. I did kinda grow to like ada. It had its warts, but it was good. It reminds me a bit of GO with its packages.