Archive for November 16, 2018

Friday, November 16, 2018

Transmit 5 on the Mac App Store

Cabel Sasser (tweet):

Does it have the same features as regular Transmit 5?
Yes, it does! With one small exception — “Open in Terminal” depends on AppleScripting the terminal, which isn’t possible with sandboxing (yet). But even viewing or editing or changing the permissions of files you don’t own is now possible, which wasn’t until very recently.

What about Transmit Disk?
It’s not in this initial release, but stay tuned.

[…]

Will Transmit 5 support iCloud for sync?
We’re not planning to. We know it’s a bit of a bother to manage another account, but we really value the ability to debug syncing problems directly.

The Mac App Store version is $25/year subscription with a 7-day free trial, compared with $45 for the direct sale version, which had a launch sale but no upgrade pricing. They aim to have a new major version every 2–3 years. It also looks like Apple has a new link for managing App Store subscriptions.

Max Seelemann:

6 years into mandatory app sandboxing on the Mac App Store, it’s still not possible to ship a decent FTP client without SIX different kinds of “temporary” permission exceptions.

What a mess…

And, notably, there are no known changes to the clunky and buggy way that the sandbox provides access to files using security-scoped URLs. The main sandboxing improvement seems to be providing a way to edit (but not directly read?) files that you don’t own.

Jeff Nadeau:

See the associated NSWorkspaceAuthorizationType enum, NSWorkspaceAuthorization object, and NSFileManager API.

These were not mentioned at WWDC or in the initial seed, but they are in the Xcode 10 headers. In order to use the new API you need to request the com.apple.developer.security.privileged-file-operations entitlement.

In summary, at least based on what we know so far, this looks like a very narrow enhancement to support Transmit (and perhaps BBEdit). Most of what was impossible in the sandbox before still is.

See also: Daniel Jalkut.

Previously: Mac App Store Sandboxing, IAP Trials, Multiplatform Services, Productivity Apps and Subscription Pricing, Transmit 5, Panic Discontinues Transmit for iOS.

Update (2018-11-26): Core Intuition mentions that, once the trial is over, Transmit is non-functional until you pay. It does not, for example, allow read-only access the way Omni’s apps do. They (and I) didn’t think this was allowed by App Store policy. Does Apple accept this because it’s a pure subscription app?

Update (2019-05-31): This episode of The Talk Show has an interesting nugget about the Mac App Store version of Transmit. Panic was not allowed to tell customers, in the in-app purchase screen, that there’s a way for them to purchase without a subscription, so they included a link to send them an e-mail if you have a problem with subscriptions. The e-mails go to an auto-responder that tells how to purchase the direct sale version.

The Zig Programming Language

Andrew Kelley (via Dan Luu):

Zig is an LLVM frontend, taking advantage of libclang to automatically import .h files (including macros and inline functions). Zig uses its own linker (LLD) combined with lazily building compiler-rt to provide out-of-the-box cross-compiling for all supported targets. Zig is intended to replace C. It provides high level features such as generics, compile time function execution, and partial evaluation, yet exposes low level LLVM IR features such as aliases. The Zig project believes that software can and should be perfect.

I liked the discussion about failed memory allocations and how Zig gives you a lot of information when an error occurs.

Why Zig:

The entire concept of the heap is strictly in userspace. There are some standard library features that provide and work with heap allocators, but those are optional standard library features, not built into the language itself. If you never initialize a heap allocator, then you can be sure your program is never going to cause heap allocations.

Update (2019-07-05): Andrew Kelley:

The Zig community grew in size so much, that some weekends I found myself with only enough time to merge pull requests and respond to issues, and no time leftover to make progress on big roadmap changes.

I found this both exciting, and frustrating. Here I was working on legacy code 40 hours per week, while multiple Zig issues needed my attention.

And so I took the plunge. I gave up my senior backend software engineer salary, and will attempt to live on Patreon donations.

Monolithic Xcode Workspace

Daniel Jalkut:

The challenge here is rooted in Xcode’s inability to maintain more than one open reference to a project at a time. If you have a common library “CoreFunctions.framework” and several apps with “CoreFunctions.xcodeproj” embedded in them, then the first app you open in Xcode that references it “wins,” and all the subsequent apps end up with un-expandable proxy icons for the project reference.

The monolithic workspace is a bit unwieldy but great to not have to do the close and reopen dance every time I want to check whether a change to a common framework has an impact on another app.

Why I’m Ditching Android

Kev Quirk (via Hacker News):

Android vendors are almost as bad as Windows when it comes to bundling additional applications with their devices. It’s almost a meme at this point. But at least on Windows you can uninstall all the bloatware. Most of the bloatware on Android devices I’ve used over the years cannot be removed as they’re marked as system apps.

[…]

I hardly ever get notifications for emails, calendar events, social media etc. I assume this is because the battery saving measures kill the background processes. So the apps can’t carry out background tasks, like checking for new email.

[…]

The iPhone SE is actually a phone sized device. It’s cheap, and it’s still supported by Apple. It’s seemed like a no-brainer to give it a try.

Sadly, he wrote this in March, and the iPhone SE is no longer available from Apple’s store, although there are currently some great deals on it elsewhere.