What is a JSON feed? Learn more

JSON Feed Viewer

Browse through the showcased feeds, or enter a feed URL below.

Now supporting RSS and Atom feeds thanks to Andrew Chilton's feed2json.org service


Stuart Breckenridge

Made with ones and zeros.

A feed by Stuart Breckenridge


When Does the iMac Pro Go On Sale?

Permalink - Posted on 2017-12-13 10:53

There’s been no clear indication from Apple as to which countries will be able to order the iPad Pro from 14th December. However, it appears that Singapore will not be one of them:

It’s strange, normally Singapore is a launch country for new products.

Month 13 is Out of Bounds

Permalink - Posted on 2017-12-06 15:28

After the recent macOS security update I started seeing this message flooding the console:

It’s appearing at least 20 times per second and other than disabling Bluetooth, I haven’t found a way to stop it.

Update: This is wide spread.

Fast Charging Comparison on iPhone X

Permalink - Posted on 2017-12-06 00:18

Fantastic comparison of wired (5W, 12W, 18W, 29W, 30W, 87W), and wireless (5W, 7.5W) charging speeds on iPhone X by Juli Clover, at MacRumors.

via MacRumors

Two things stand out to me:

  • Getting to 50% is noticeably quicker with fast-chargers (30 minutes vs. over 60 minutes with the 5W charger in the box)
  • After an hour of charging, the difference between the 12W iPad charger and the fast-chargers is negligible (~7%)

At work I use a 29W Anker USB-C charger1 and at home I use my iPad’s charger and don’t notice the difference. That said, I can’t help but agree with Juli’s conclusion:

It’s not really worth it using the 5W charger that the iPhone ships with if you can help it, because it’s incredibly slow.

Would a 12W charger in the box have been too much, Apple?

  1. This used to be available on Amazon’s Singapore site but has, for some reason, vanished. ↩︎

iOS 11.1.2 December 2nd Crash Loop

Permalink - Posted on 2017-12-02 07:30, modified at 13:11

Juli Clover, for MacRumors:

A date-related bug in iOS 11.1.2 appears to be causing iPhones and iPads to continually crash or respring when time-based local notifications are received after 12:15 a.m. on December 2, according to reports on Twitter and reddit.

The problem seems to be tied to local notifications received from apps that offer daily or repeat reminders. For example, meditation app Headspace, one of the affected apps, sends daily reminders to users to encourage them to take some time to meditate. Any app using local (as in not pushed from a remote server) notifications that repeat will cause a crash.

I am intrigued as to what is tying December 2nd and repeating local notifications1 together to cause this issue. Regardless, along with #iamroot, this is yet another embarrassing bug for Apple.

Update 2017-12-02: Here’s an oddity: a major point release of iOS being made available on a weekend. It’s probably got something to do with this bug.

  1. I attempted to recreate the bug using a local notification from Todoist but it was unsuccessful, likely because it was a single notification. ↩︎

Why Hasn't Twitter Removed Trump's Retweets?

Permalink - Posted on 2017-12-01 01:57, modified on 2017-12-02 13:11

Ivana Kottasová, writing for CNN:

President Trump has been heavily criticized for his decision to retweet three graphic anti-Muslim videos.

But why did Twitter allow them in the first place?

The anti-Muslim videos were first posted by Jayda Fransen, deputy leader of the far-right party Britain First. They depict violent assaults and the destruction of a statue of the Virgin Mary.

They also appear to violate the terms of use published by Twitter. It warns users: “You may not promote violence against, threaten, or harass other people on the basis of race, ethnicity, national origin, sexual orientation, gender, gender identity, religious affiliation, age, disability, or serious disease.”

Asked why the original tweets have not been deleted, a Twitter spokesperson said:

“To help ensure people have an opportunity to see every side of an issue, there may be the rare occasion when we allow controversial content or behavior which may otherwise violate our rules to remain on our service because we believe there is a legitimate public interest in its availability.”

Twitter knows these tweets violate their rules and by not acting to remove them they show just how spineless they are as an organisation. There is no legitimate public interest in seeing these videos, one of which has already been debunked by the Dutch Embassy.

Twitter have effectively given Trump a blank cheque to say what he wants regardless of impact or truth. Their leadership should be ashamed of themselves.

On Brexit

Permalink - Posted on 2017-10-27 14:38, modified on 2017-12-02 13:11

Alexander Stubb, vice president of the European Investment Bank:

“I have a British heart pumping, I am married to a Brit, my children have dual nationality and I think Brexit is one of the biggest travesties that we have seen in the modern era,” he said.

“So I will do everything in my power to alleviate the pain, but the economic facts are just such that there are no winners in Brexit - apart from perhaps a few lawyers. Unfortunately, we will see this in the coming years.”

I couldn’t agree more.

Apple Reportedly Reduced Face ID Accuracy to Speed Up iPhone X Production

Permalink - Posted on 2017-10-25 14:20, modified at 23:43

Tim Hardwick:

Several reports in recent months have covered Apple’s struggle to ensure significant components for the upcoming iPhone X can be produced in large enough quantities to meet demand, with the main culprit being the 3D sensing modules that power the phone’s TrueDepth camera and Face ID technology. In a surprise development, a new Bloomberg report today claims that Apple overcame its production challenges by quietly telling suppliers they could reduce the accuracy of the face recognition technology to make the iPhone X easier to manufacture.

I don’t buy this for one minute. Apple publicly announced the accuracy of Face ID and continue to advertise the accuracy on the iPhone X product page.

Update (2017-10-26): Statement released by Apple and shared with TechCrunch:

Customer excitement for iPhone X and Face ID has been incredible, and we can’t wait for customers to get their hands on it starting Friday, November 3. Face ID is a powerful and secure authentication system that’s incredibly easy and intuitive to use. The quality and accuracy of Face ID haven’t changed. It continues to be 1 in a million probability of a random person unlocking your iPhone with Face ID.

Bloomberg’s claim that Apple has reduced the accuracy spec for Face ID is completely false and we expect Face ID to be the new gold standard for facial authentication.

Singapore to Stop Increasing Car Numbers from 2018

Permalink - Posted on 2017-10-25 14:14, modified at 23:43

In 2018, Singapore will stop adding additional cars to the roads. As reported by Bloomberg (via Daring Fireball):

Singapore, among the world’s most expensive places to own a vehicle, will stop increasing the total number of cars on its roads next year.

The government will cut the annual growth rate for cars and motorcycles to zero from 0.25 percent starting in February, the transport regulator said on Monday.

“In view of land constraints and competing needs, there is limited scope for further expansion of the road network,” the Land Transport Authority said in a statement on its website. Roads already account for 12 percent of the city-state’s total land area, it said.

To clarify the commentary on Daring Fireball, if you want a car but don’t own one, you’ll need to wait until you can buy a Certificate of Entitlement — essentially a 10-year license to own a car — which are available via auction.

■ On USB-C and Thunderbolt 3

Permalink - Posted on 2017-10-15 05:53, modified on 2017-10-25 23:43

Marco Arment (via Michael Tsai):

While a wide variety of USB-C dongles are available, most use the same handful of unreliable, mediocre chips inside. Some USB-A dongles make Wi-Fi drop on MacBook Pros. Some USB-A devices don’t work properly when adapted to USB-C, or only work in certain ports. Some devices only work when plugged directly into a laptop’s precious few USB-C ports, rather than any hubs or dongles. And reliable HDMI output seems nearly impossible in practice.

Very few hubs exist to add more USB-C ports, so if you have more than a few peripherals, you can’t just replace all of their cables with USB-C versions. You’ll need a hub that provides multiple USB-A ports instead, and you’ll need to keep your USB-A cables for when you’re plugged into the hub — but also keep USB-C cables or dongles around for everything you might ever need to plug directly into the computer’s ports.

Hubs with additional USB-C ports might pass Thunderbolt through to them, but usually don’t. Sometimes, they add a USB-C port that can only be used for power passthrough. Many hubs with power passthrough have lower wattage limits than a 13-inch or 15-inch laptop needs.

After a bit of trial and error, I’ve settled on using the J5 Create USB-C 4 Port Hub with my MacBook Pro, and I’ve had no issues. Connected to my MacBook Pro:

My current setup just works on my MacBook Pro. (Sans the external SSD, I can also connect the USB-C hub to my (Windows) work laptop and be good to go. Skype for Business calls with an Artemis gaming headset is overkill!) However, it wasn’t all plain sailing.

I initially used Apple’s USB-C Digital AV Multiport Adapter, which had several limitations. Firstly, the USB-C port on the dongle is for power only and doesn’t support data. Secondly, when using the HDMI port to connect to an external monitor, its output was limited to 30fps at 4K1.

I’ve had an equally difficult time purchasing appropriate Thunderbolt 3 cables. The Akitio Node came with a 0.5m Thunderbolt 3 which wasn’t long enough for my needs. My first long cable purchase was the 2m Belkin Thunderbolt 3 cable from Apple. The product description:

This 2-meter cable supports Thunderbolt 3 throughput (up to 40 Gbps), 4K or 5K Thunderbolt display connectivity, and up to 60W of charging power to your Thunderbolt 3 devices.

Use this fully Thunderbolt-certified cable to connect to Thunderbolt 3 docks, hard drives, monitors, and more. You can even use it to daisy-chain up to six Thunderbolt 3 devices.

Unfortunately, it refuses to work with my Akitio Node. Despite being advertised as an active Thunderbolt 3 cable at 2m, it appears to be passive2. I’ve now bought a Cable Matters 2m cable and can confirm that it works perfectly.

Thunderbolt 3 and USB-C are far from perfect. They are, however, a significant step in the right direction.

  1. When using USB-C to USB-C the MacBook will output 60fps at 4K. ↩︎

  2. More info ↩︎

BBEdit 12

Permalink - Posted on 2017-10-13 14:22, modified on 2017-10-25 23:43

An unexpected release today — BBEdit 12 with over 100 refinements and new features. As usual, they have best in class release notes.

It (still) doesn’t suck and it’s an instant purchase for me.

Easily Steal an iOS User's Password

Permalink - Posted on 2017-10-10 13:53, modified on 2017-10-25 23:43

iOS asks the user for their iTunes password for many reasons, the most common ones are recently installed iOS operating system updates, or iOS apps that are stuck during installation.

As a result, users are trained to just enter their Apple ID password whenever iOS prompts you to do so. However, those popups are not only shown on the lock screen, and the home screen, but also inside random apps, e.g. when they want to access iCloud, GameCenter or In-App-Purchases.

This could easily be abused by any app, just by showing an UIAlertController, that looks exactly like the system dialog.

Even users who know a lot about technology have a hard time detecting that those alerts are phishing attacks.

Astounding work by Felix Krause which shows just how easy it is to replicate an iOS system dialogue in order to steal a user’s password. Apple must fix this.

Mike Pence Takes Part in Publicity Stunt Instead of Doing His Job

Permalink - Posted on 2017-10-09 01:39, modified at 23:24

Kneeling during the U.S. national anthem is a form of protest against racial injustice and to do so is protected under the First Amendment. Thus, when you read this, via the BBC, you can’t help but be confused:

US Vice-President Mike Pence has walked out of a National Football League (NFL) game after several players refused to stand for the US national anthem.

Mr Pence said he could not be present at an event that “disrespects our soldiers, our flag” after abandoning the game in his home state of Indiana.

The Vice President of the United States can’t be present when people excercise their First Amendment rights? It gets worse, though:

The Vice President of the United States can’t be present when people excercise their First Amendment rights because he was taking part in a publicity stunt orchestrated by the President of the United States.

It’s beyond shameful.

AIM to be Discontinued

Permalink - Posted on 2017-10-07 22:03, modified on 2017-10-09 23:24

Michael Albers:

If you were a 90’s kid, chances are there was a point in time when AOL Instant Messenger (AIM) was a huge part of your life. You likely remember the CD, your first screenname, your carefully curated away messages, and how you organized your buddy lists. Right now you might be reminiscing about how you had to compete for time on the home computer in order to chat with friends outside of school. You might also remember how characters throughout pop culture from “You’ve Got Mail” to “Sex and the City” used AIM to help navigate their relationships. In the late 1990’s, the world had never seen anything like it. And it captivated all of us.

AIM tapped into new digital technologies and ignited a cultural shift, but the way in which we communicate with each other has profoundly changed. As a result we’ve made the decision that we will be discontinuing AIM effective December 15, 2017

The first internet messaging client I ever used was AIM as it was bundled with one of the many AOL CDs. While my friends and I quickly moved to MSN Messenger — which itself was discontinued in 2013 after morphing into Window Live Messenger — throughout school and university, it was AIM that started everything off.

These days I use Skype for Business at work. It holds up OK in a desktop context but it doesn’t translate well as a mobile experience. The way we communicate has, indeed, changed.

Keybase Introduces Encrypted Git

Permalink - Posted on 2017-10-05 04:25, modified on 2017-10-09 23:24

From the Keybase blog:

It is end-to-end encrypted. It’s hosted, like, say, GitHub, but only you (and teammates) can decrypt any of it. To Keybase, all is but a garbled mess. To you, it’s a regular checkout with no extra steps.

Even your repository names and branch names are encrypted, and thus unreadable by Keybase staff or infiltrators.

We think this is better than paying a fee to store it in plaintext.

I’m no expert, but will encrypting and decrypting larger git repositories not come with a significant performance hit? Regardless, I’m interested in this development and will be testing it out shortly.

(Note: I am one of the people who does sign commits.)

Yahoo Confirms 2013 Data Breach Affected All Accounts

Permalink - Posted on 2017-10-04 01:30, modified on 2017-10-09 23:24

It turns out Yahoo’s 2013 data breach affected all accounts in existence at the time of the breach:

Subsequent to Yahoo’s acquisition by Verizon, and during integration, the company recently obtained new intelligence and now believes, following an investigation with the assistance of outside forensic experts, that all Yahoo user accounts were affected by the August 2013 theft.

This seemed to be inevitable.

Previously: Yahoo’s 2013 Data Breach Expanded to 2015 and 2016, Yahoo Confirms Security Breach of 1 Billion Accounts

Match Data in GameKit

Permalink - Posted on 2017-10-03 01:35, modified on 2017-10-09 23:24

Over the last few days I’ve started working with the GameKit API for the first time in a few years. It’s as bad as I remember.

The most egregious problem I have come across is this particular API:

GKTurnBasedMatch.loadMatches { (matches, error) in 
    if matches != nil {
	    // Do something with the matches

This is the API description:

Loads the turn-based matches involving the local player and creates a match object for each match.

And this is the description of the matches parameter:

An array of GKTurnBased Match objects containing the match objects for matches that the local player is playing in, or nil if there are no matches to load.

This is hardly the full story. The loadMatches API will indeed download matches from Game Center, but what this description lacks is any reference (at all) to the fact that the downloaded matches will very likely include stale or non-existent matchData.1

As I encode the match score within matchData, I ran into issues when Game Center was downloading out-of-date matchData. This necessitated in a second call to either of the following functions before displaying data to the user:

GKTurnBasedMatch.load(withID: match.matchID!, withCompletionHandler: { (match, error) in 
    // Logic


match.loadMatchData(completionHandler: { (data, error) in 
    // Logic

In my opinion, the loadMatches API should return the current matches the user is participating in with the latest matchData.

  1. I’ve created rdar://34782360 in the hope that Apple will clear up this description in a future update. ↩︎

Trump Waives Jones Act for Puerto Rico, Easing Hurricane Aid Shipments

Permalink - Posted on 2017-09-28 15:01, modified on 2017-10-09 23:24

Niraj Chokshi, for The New York Times:

The Trump administration said on Thursday that it would temporarily waive a century-old shipping law for Puerto Rico that officials there said was hindering disaster relief efforts after Hurricane Maria.

The law, known as the Jones Act, was limiting access to food, medicine, clothing and needed supplies, officials said. Sarah Huckabee Sanders, the White House press secretary, announced the waiver on Twitter, saying that President Trump had authorized it after a request from Gov. Ricardo A. Rosselló of Puerto Rico.

This comes after Trump sided with industry as a reason for not waiving the law:

President Trump says he’s reluctant to lift shipping restrictions to get more aid to hurricane-ravaged Puerto Rico — because mariners don’t want him to.

“We’re thinking about that,” Trump said Wednesday when asked about lifting the Jones Act, which prohibits foreign ships from moving goods between US ports.

“But we have a lot of shippers and a lot of people that work in the shipping industry that don’t want the Jones Act lifted, and we have a lot of ships out there right now.”

Industry. Shameful.

Implementing Drag and Drop with an NSManagedObject

Permalink - Posted on 2017-09-27 04:32, modified on 2017-10-09 23:24

Back in July I started adding the drag and drop API to The FFI List. At the time, I wrote:

What I want to do — and what I haven’t worked out yet — is dragging from the search table view on to the saved tab in order to save FFIs. It’ll take a bit more work, but I’m sure it’s doable.

It turns out this was easier than I thought: all I had to do was assign the NSManagedObject to the UIDragItem’s localObject variable (1), add a UIDropInteraction to the appropriate UITabBar subview (2), and make the UITabBarController conform to the UIDropInteractionDelegate protocol (3).

1 — Assign an NSManagedObject to the UIDragItem’s localObject variable:

let dragItem = UIDragItem(itemProvider: itemProvider)
dragItem.localObject = <#NSManagedObject#>

2 — Add a UIDropInteraction to the tab bar in viewDidLoad():

let dropInteraction = UIDropInteraction(delegate: self)

3 — Make the UITabBarController conform to the UIDropInteractionDelegate protocol:

func dropInteraction(_ interaction: UIDropInteraction, canHandle session: UIDropSession) -> Bool {
    return session.hasItemsConforming(toTypeIdentifiers: [kUTTypePlainText as String])
func dropInteraction(_ interaction: UIDropInteraction, sessionDidUpdate session: UIDropSession) -> UIDropProposal {
    return UIDropProposal(operation: UIDropOperation.move)
func dropInteraction(_ interaction: UIDropInteraction, performDrop session: UIDropSession) {
    let ffi = session.items[0].localObject as! <#NSManagedObject#>
    // Necessary logic to parse the NSManagedObject

You can see it working over on YouTube.

Ferrari's First Ever First-Lap Double Retirement

Permalink - Posted on 2017-09-17 15:07, modified on 2017-10-09 23:24

Jamie Strickland, via the BBC:

It’s taken 67 years, nearly 1,000 grands prix and 108 drivers, the likes of Ascari, Fangio, Hawthorn, Surtees, Lauda, Andretti, Villenueve, Prost, Mansell and Schumacher have come and gone, but Ferrari have finally suffered the ignominy of their drivers taking each other out on the opening lap of a race.

Now that has been a long time coming.

I was there, at turn 5, when it happened!

Going the wrong way, Seb.

Astonishment at the statistics aside, this is the first F1 incident that I’ve seen in person and I am glad that the drivers involved have not been hurt.

Another Apple Leak

Permalink - Posted on 2017-09-09 23:32, modified on 2017-10-09 23:24

Someone at Apple leaked public download links for the iOS 11 gold master.

The HomePod leak was considered to be a mistake, but as this is the second time it’s happened, it’s clear to me that Apple has a security issue. This was leaked with malicious intent.