Stuart Breckenridge

For Sale — 2016 13-inch MacBook Pro

Update(2017-07-31): Sold.

I’m selling my 2016 13-inch MacBook Pro on Carousell. It’s in near new condition, with original packaging, and has warranty until 30th October 2017.

Have a look.


Apple Discontinues iPod nano and iPod shuffle

Apple has discontinued the iPod nano and iPod shuffle after an incredible 12-year run. In a statement given to Business Insider:

Today, we are simplifying our iPod lineup with two models of iPod Touch, now with double the capacity, starting at just $199, and we are discontinuing the iPod Shuffle and iPod Nano.

The first time I saw an iPod nano in use was in 2007 when a colleague was showing me family pictures. I remember thinking that the screen was incredible for such a small device. Shortly afterwards I went and bought one, and to this day, I still think the iPod nano was my favourite iPod.

It’s hard to get over the fact that all that remains of the iPod lineup is the iPod touch.


How Microsoft Has Become the Surprise Innovator in PCs

Farhad Manjoo’s article, How Microsoft Has Become the Surprise Innovator in PCs, has some fundamental flaws. He writes:

The hybrid Surface Pro — the inheritor of that first Surface’s vision, the latest version of which was released in May — hasn’t just become a moneymaker for the company. It was also the clear inspiration for the Apple iPad Pro, which supports a pen and keyboard but still feels less like a full-fledged laptop than Surface does.

Why would you compare the iPad Pro to how much it feels like full-fledged laptop? If you want a full-fledged laptop then get a full-fledged laptop! And while you’re at it, define full-fledged. Does a full-fledged laptop need to have an Ethernet port, a Display Port, and some USB connectivity? If so, is a MacBook Pro with USB-C only connections not a full-fledged laptop?

I have an iPad Pro and a MacBook Pro and I don’t ever feel the need to define my iPad Pro in terms of its laptopyness. Similarly, I don’t compare a MacBook Pro to either an iMac or Mac Pro.

Farhad continues:

And in the spring, Microsoft showed off Surface Laptop, which sounds humdrum enough; in shape and purpose, it isn’t much different from the MacBook Air, Apple’s pioneering thin and light laptop. But Microsoft’s machine has a better screen than the Air, and, more important, a future. People loved the Air, but Apple doesn’t appear to want to upgrade it, so Microsoft stepped in to perfect Apple’s baby.

I’d argue that the Surface Laptop’s competitor is the MacBook, not the MacBook Air. The MacBook has a slightly smaller display but a higher PPI, USB 3.1, and is significantly lighter. That said, the MacBook doesn’t have a multi-touch display and the integrated GPU isn’t as good the one in the Surface Laptop.

Also of note: the article makes no mention of other PC makers. Is the implication that Asus, Lenovo, HP, et al., are simply not innovating at all?


The Drag and Drop API Is Simplicity at Its Best

Sometimes an API comes out of nowhere and astounds you with its power and simplicity. I’ve just had that experience with the new drag and drop API in iOS 11. In my FFI List app, with around 20 lines of code, I’ve been able to implement functionality that allows users to drag an FFI from the app into any other app that supports text drops.

The first step is specifying a drag delegate for the table view:

savedFFITableView.dragDelegate = self

The second step is implementing the UITableViewDragDelegate:

func tableView(_ tableView: UITableView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] {
    return dragItems(for: indexPath)
}

The final step, similar to Apple’s sample code, is to create the drag item(s):

func dragItems(for indexPath: IndexPath) -> [UIDragItem] {
    let item = CDStack.shared.savedFetchedResultsController.object(at: indexPath) as! FFISavedEntity
    var validity:String {
        if item.valid == "false" {
            return "This FFI is currently not on the GIIN list."
        } else {
            return "This FFI is currently on the GIIN list."
        }
    }
    let string = "Name: \(item.name)\nGIIN: \(item.giin)\n\(validity)".data(using: .utf8)
    
    let itemProvider = NSItemProvider()
    itemProvider.registerDataRepresentation(forTypeIdentifier: kUTTypePlainText as String, visibility: .all) { completion in
        completion(string, nil)
        return nil
    }
    
    return [UIDragItem(itemProvider: itemProvider)]
}

With those three short snippets this is the result:

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.


Control Center States in iOS 11

Ryan Jones (via Twitter):

Absolutely nails the difficulties in understanding the current Control Center UI.