Archive for July 19, 2017

Wednesday, July 19, 2017

Transmit 5

Cabel Sasser (Hacker News, MacRumors):

Seven years after the first release of Transmit 4, our well-loved and widely-used macOS file transfer app, we sat down with an incredibly exhaustive list of ideas, and — this’ll sound like I’m exaggerating but I’m mostly sure I’m not — we did it all.

With one massive update we’ve brought everyone’s favorite file-transferring truck into the future with more speed, more servers, more features, more fixes, a better UI, and even Panic Sync. Everything from the core file transfer engine to the “Get Info” experience was rethought, overhauled, and improved.

There are both short and long lists of changes. The app feels very familiar, but even as a relatively light Transmit user I can see that many, many parts of the interface have been revised.

There are also some interesting changes on the business side. It’s no longer available from the Mac App Store (perhaps in part because it’s not sandboxed). Despite not being in the Mac App Store, there is no upgrade pricing. It’s $35 for everyone right now, increasing to $45 after a week. (For Transmit 4, released in 2010, the regular price was $34, with upgrades for $19.)

Eli Schiff has noted some icon changes.

Update (2017-08-02): Kenichi Yoshida:

Why was the interior of the Transmit 4 truck icon removed in Transmit 5? Cabel answered question!

Update (2017-08-22): Matthew Guay:

The advantage didn't hold with uploading a single 20MB zip file—there, Cyberduck was actually around 10% faster across a couple tests. So perhaps Transmit isn't best at raw speed, but does seem better at handling folders and mixed files—the types of things you'll need to upload to your server to, say, install a CMS. And there, it's really fast.

Apple’s Machine Learning Journal/Blog

Apple (Hacker News):

Welcome to the Apple Machine Learning Journal. Here, you can read posts written by Apple engineers about their work using machine learning technologies to help build innovative products for millions of people around the world. If you’re a machine learning researcher or student, an engineer or developer, we’d love to hear your questions and feedback.

The RSS feed was not initially advertised, as is common these days.

John Gruber:

The language is more accessible than a peer-reviewed technical journals, but alas (but unsurprisingly for Apple), the articles are un-bylined.

Update (2017-07-20): Nick Heir:

For some reason, the virtually all-text site includes on every page a 1 MB JavaScript file. The first published article is a 4 MB page which, while not an egregious file size generally, is pretty ridiculous for something that’s largely text. A great deal of the additional bulk comes in the form of images that could easily be compressed: the lead image is a 110 KB PNG file, which I losslessly compressed to 30 KB by running it through a basic image optimization tool. It’s a little thing, but the little things stack up to a text-based article that wastes multiple megabytes of bandwidth.

Designing Better Touch Bar Experiences

Joe Cieplinski:

I used to prefer triaging email on my iPad, because filing into folders was easier on iOS than on macOS. But on iOS that process is two taps, not one. So the Mac has become even more efficient at this task once again, thanks to this Touch Bar design.


Another app that does Touch Bar extremely well is Flexibits’ Fantastical. Here, the designers didn’t try to cram in buttons for creating or editing events, which is already easy to do from the keyboard, or other more common tasks. Instead, they used the bulk of the space on Touch Bar for a big slider that lets you jump to a different day, week, month, or year. […] Previously, to jump to October, I would have switched to the trackpad, moved the cursor to the forward button next to the Today button, then clicked it several times to jump to October. Now, I can keep my hands on the keyboard, reach up, and slide over to October with one swipe.

Mail shows the name of the predicted mailbox in the Touch Bar but not in the toolbar.

Cracking the Code Behind Apple’s App Store Promo Card Design


Apple’s App Store gift cards have a special trick: you can simply hold one up to your iPhone or Mac’s camera and it’ll automatically scan in the code and redeem the card for you. As developers, we thought it’d be cool to print some of our own promo code cards to give away at events, so we tried to create our own scannable cards.


The app seems to recognize two things: A surrounding box and a code in the middle of this box. Once the app recognizes this pattern, it draws an on-screen box and tries to identify the code inside the box. The box itself isn’t enough: the app only kicks off its code recognition engine as soon as it finds specific characteristics of the specific font.


This private framework is what iTunes and the App Store on your iPhone use to recognize codes. As it turns out, that’s where the elusive font is stored. There are two fonts:

  1. ‘Scancardium’ is used for entering and recognizing codes.
  2. ‘Spendcardium’ looks as though it’s used to obscure sensitive credit card details as you enter them.

Strongly Typed Identifiers in Swift

Tom Lokhorst:

We implement the Hashable and Equatable protocols so we can use these identifiers in Sets and as Dictionary keys.

We use RawRepresentable so we get the Equatable implementation for free, Hashable is implemented in a protocol extension[…]


Haskell has a language feature that implements this pattern of wrapping an existing type to create a new type. It is called: newtype.

That would also be nice to have in Swift. It looks similar to typealias, but creates a new type, instead of just an alias.

Otherwise there is a lot of boilerplate. He presents several ways of reducing it.

Refactoring Reveals Truths

Soroush Khanlou:

The refactoring process helps eliminate these potential bugs and expose these enhancements by iteratively driving the complex towards the simple. Reducing the algorithm down to its barest form also helps you see how it’s similar to other algorithms in your code base. These are all second-order effects, to be sure, but second-order effects pay off.


The algorithm has revealed its beautiful internal symmetry now. Very clear intent, very clear algorithm, and each component is simple. It’s now more obvious how to tweak and modify this algorithm.