Archive for October 7, 2015

Wednesday, October 7, 2015

Apple News

Josh Centers:

Instead of being salvation for publishers, Newsstand quickly became a prison. Publishers had to become (or hire) developers in order to participate in Newsstand — an expensive proposition, and not something most publishers are good at.

[…]

Apple hasn’t given up on periodicals, though, and is taking a different approach in iOS 9 with News, which acts more like a traditional RSS reader, pulling articles directly from publisher feeds (which are far easier to maintain than entire apps) and displaying them in a consistent format (while still allowing some large publishers to tweak the look slightly). With potentially hundreds of millions of users, News could have a significant impact on the world of online journalism. To start, Apple is testing a proprietary Apple News Format with select publishers, and Wired is experimenting with publishing articles to Apple News first. Apple is also hiring journalists to edit Apple News, pointing at bigger things ahead.

John Gordon notes that when you share a link, it gets redirected through https://apple.news, Apple’s version of Twitter’s t.co:

So, despite my dire expectations, Apple, for now, is providing redirects to the web source. This doesn’t mean Apple will never interfere with the distribution of information that would hurt Apple’s business or offend its executives, and my confusion between NYT and Apple content is a bit weird (user error?), but for now News.app isn’t necessarily evil.

Tom Harrington:

Apple News consistently lags Flipboard for updating sources, sometimes by days. Doesn’t reload the sites on demand either…

As I write this, Apple News is not showing my blog post from two hours ago. Indeed, for weeks it didn’t show my C-Command Blog at all, even though Apple had e-mailed to say that it was in Apple News. And it’s slow in another way: the app itself is not as responsive as browsing the same site in Safari.

The other thing that bothers me is the machine-generated tags. For my EagleFiler 1.6.6 post, which is mainly about updates for El Capitan, it shows “Mac OS X Snow Leopard.” For my SpamSieve 2.9.21 post, it shows “Operating Systems.” For my in-progress hiking blog, it tags a hike in Lebanon, New Hampshire as “Meriden, Connecticut.”

Update (2015-10-09): Nick Heer:

Fortunately, if a website has an RSS feed, there’s another way to add it to News. In Safari, just tap the Share icon and scroll across the bottom row of actions until you find Add To News. Tap this icon and the sharing sheet will disappear. There will be no visual confirmation of any kind, but the site will be added to News.

I tried that with two sites, and an hour later both are still just showing the spinning progress indicator in the News app.

Update (2015-10-22): Samantha Bielefeld:

A site like Daring Fireball, which is almost exclusively text-only by design, has a News channel littered with images that are present on the source website being linked to.

[…]

My own channel hasn’t updated with my most recent content since I published ‘Universal Deep Linking in iOS 9’ all the way back on September 23rd.

Update (2015-10-29): Ben Brooks is having problems with Apple News missing posts, as am I.

Lee Bennett:

Related to Apple News woes, I submitted a site ages ago, denied coz title too simple. Resubmitted. Been >1 month with no progress.

Update (2019-05-16): Nick Heer:

I now know how app developers feel. It took them nearly three years to indicate that some bullets on some posts I made a long time ago might not be perfectly formatted.

Core Data in El Capitan

There are again no Core Data release notes this year, but there is WWDC 2015 Session 220 (video, PDF):

Previously you may have used -hasChanges, this was a rather basic dirty flag, if you touch the object, we would mark it dirty. But with -hasPersistentChangedValues we’ll ensure that the properties on the object are different than what’s in the persistent store ensuring you don’t have any false positives.

Also new on NSManagedObject is -objectIDsForRelationsipNamed: for relationship named. This is ideal for working with large relationships mainly because we won’t materialize the entire relationship in memory rather we’ll return to typed array of object IDs to you. This allows you to go through these object IDs and work with your objects in smaller sizes.

[…]

Well Core Data has you covered this year, simply tell us which attributes should be unique across any entity and we’ll make sure all instances of that entity keep that unique attribute, be it email addresses, part numbers, UPC, you name it, we’ll make sure it is unique across all instances.

[…]

NSBatchDeleteRequest works like NSBatchUpdateRequest in that it acts directly in the persistent store without loading any objects into memory.

[…]

Whenever you have a store that’s created or migrated or just opened on the new iOS from an older version the managed object model used to create it is cached into the store and it is used by lightweight migrations when they fail to find appropriate source model as sort of a last-ditch effort.

Zachary Orr:

And there you have it! That’s all you need to get unique constraints working in Core Data. In my demo project, I’ve used a NSFetchedResultsController to show where unique constraints will not work well. If you’re displaying data using a fetched results controller, you’ll still see entities with non-unique properties, since conflict resolution only happens when saving our managed object context, and fetched results controllers work with in-memory objects.

Jeremiah Jessel:

refreshAllObjects This refreshes all the objects in the context while preserving the unsaved changes. The references will remain valid and it will break any retain cycles that may have been inadvertently created.

Florian Kugler and Daniel Eggert:

When using multiple managed object contexts concurrently, you also have to handle race conditions when deleting objects. iOS 9 and OS X 10.11 have a convenient solution for this problem in the form of the context’s shouldDeleteInaccessibleFaults property. However, this convenience comes with tradeoffs. Alternatively you can implement robust deletion using a two-step deletion process.

Despite all the talk about how Core Data is not a database, it seems to be continually growing database-type features. And that’s a good thing. Why not use the power of the underlying SQLite engine?

LZFSE Disk Images in El Capitan

One of my favorite improvements in El Capitan is the new LZFSE compression algorithm, which is available directly to apps as well as via a new disk image format. The new .dmg format is not accessible in Disk Utility, but I’ve added support for it in DropDMG 3.2.8. Here are some benchmarks I made imaging a 11.28 GB boot partition on a MacBook Air.

MethodSizeSavingsThroughput
zlib (10.10)8.86 GB21.4%63.5 MB/sec
zlib (10.11)8.75 GB22.3%36.8 MB/sec
LZFSE (10.11)8.60 GB23.8%107.7 MB/sec
bzip2 (10.11)7.03 GB*23.2%11.7 MB/sec
none (10.11)9.15 GB*0%114.4 MB/sec

The source and destination partitions were on the same SSD, and both were encrypted with FileVault 2. I’m impressed that the Air can decrypt, compress, and encrypt to the same drive at more than 100 MB/sec. In 1996, I measured copy throughput at just 43K/sec.

The bottom line is that LZFSE is both faster than zlib and compresses more tightly. (It is supposed to decompress faster as well.) Apple has also tweaked the way zlib is used so that disk images created on 10.11 are smaller than those created on 10.10 (but are slower to create). The smaller zlib disk images are still backwards compatible with previous OS versions, whereas the LZFSE disk images can only be opened on 10.11 or later.

Lastly, the redesigned Disk Utility has removed the feature for burning disk images. The help claims that you can do this with the Finder, but I think that feature has also been removed. You can still burn files and disk images with DropDMG.

Update (2015-10-07): The Burn command is still in the Finder, but now it’s only shown if a burner is connected.

I added results for bzip2 and none (no compression). The destination sizes say * because I no longer have the exact same volume (an El Capitan beta) to test with; I instead imaged a fresh El Capitan installation, which had a different source size (9.15 GB) but should be a similar mix of files. These new results show that bzip2 is really slow, which was common knowledge. More interestingly, no compression was not much faster than LZFSE (which makes sense given LZFSE’s goals), and bzip2 was actually worse at compressing than LZFSE (unexpected).

Tweetbot 4 for iOS and Tweetbot 2.1 for Mac

Federico Viticci:

Largely because of the economic realities of Twitter clients, few developers ever invested in a Twitter app for iPad that wasn’t a cost-effective adaptation of its iPhone counterpart. Many took the easy route, scaling up their iPhone interfaces to fit a larger screen with no meaningful alteration to take advantage of new possibilities.

[…]

In the process, Tweetbot 4 offers a dramatic overhaul of the iPad app, bringing a new vision for a Twitter client that’s unlike anything I’ve tried on the iPad before.

[…]

The most notable change in Tweetbot 4 for iPad is a new column view that puts a second column on the right side of the screen in landscape mode. Based on Tapbots’ previous work on OS X, the second column allows you to pin views, lists, and searches for the current account to the right. The column is fully interactive and it lets you move across different sections at any time with one tap.

[…]

This won’t come as a surprise, but Tweetbot 4 adds support for iOS 9’s Safari View Controller to open links inside the app with an in-app browser based on Safari. Safari View Controller can be enabled by going to Settings > Browser and toggling ‘Open in Tweetbot’.

Dr. Drang:

This is not a review. There are several other places you can go for that. What I want to talk about are the little charts it provides in the Stats view. They’re fun without being obsessive the way Twitter’s own analytics charts are.

Dan Edwards (via Dave Mark):

Recently Tweetbot 4 was released as a cross-platform update that’ll work on iPad & iPhone. Right now (at 50% off), it’s a $4.99/£3.99 app. Regardless of whether you bought the old Tweetbot recently, or at all.

Some people were pretty angry about this[…]

I like the new iOS version (App Store). It is frustrating, though, that this update again fits less on screen at once than the previous version:

Tweetbot 3

Tweetbot 3

Tweetbot 4

Tweetbot 4

The other problem, not Tapbots’ fault, is that to get out of Safari View Controller, you have to scroll to the top and then reach to tap the Done button at the top right of the screen.

The new Mac version (App Store) uses San Francisco, which looks great, and adds a useful Scroll to Last Read feature. There’s a bug with the global hotkey, which I’ve worked around with a script. There is still no way to select text in the main view.

Update (2015-10-08): Dr. Drang:

According to Paul, the next revision to Tweetbot will use monospaced numerals in the countdown, which will eliminate the jumpiness except when the number of digits changes. This’ll be much better, although personally I’d prefer either a right margin with a fixed width large enough to accommodate a three-digit count or to have the counter moved from the right margin to the otherwise unused space under the user’s avatar.

Nick Heer:

Despite this, the view I’m most interested in is not the Stats tab, but the Activity tab, which shows a real-time view of favourites, retweets, and replies. The latter is especially nice because it functions kind of like a conversation view or inbox; tapping on one of the cells will take you to the tweet. But tapping on a favourite or retweet will take you to the user profile of the person who performed that action, rather than the tweet to which it applies. That makes for an inconsistent and rather strange experience, for me at least.

Update (2015-10-14): The Tweetbot 4.0.2 update adds a swipe gesture for closing the Safari View Controller.