Archive for November 26, 2019

Tuesday, November 26, 2019

Ink: Markdown Parser in Swift

John Sundell (tweet):

Welcome to Ink, a fast and flexible Markdown parser written in Swift. It can be used to convert Markdown-formatted strings into HTML, and also supports metadata parsing, as well as powerful customization options for fine-grained post-processing. It was built with a focus on Swift-based web development and other HTML-centered workflows.

It doesn’t depend on Foundation or even regular expressions.

Gatekeeper Override for Indirect Launching

Chuq Von Rospach:

The first time I tried to publish new images to Flickr, Lightroom aborted and the OS put up a dialog warning me that the app “magick” isn’t signed and so it might be dangerous, so the OS wouldn’t let it launch. “magick” is part of the ImageMagick graphics tool suite, a commonly used set of image manipulation tools; as of today the developers haven’t signed it with a developer certificate from Apple, so Apple’s Gatekeeper will reject it.

You can tell the OS to let the app run, but it’s not obvious where to do that. Here’s how:

Try to export some images and get the warning dialog. Then open up the System Preferences app and navigate to the “Security and Privacy” section and the “General” tab. At the bottom of that tab, you should see some text similar to the warning you got in the dialog. There’s an “Allow” button there. If you click it, you’re approving that app as something that’s okay to be launched.

When launching an app directly, the workaround is easier: you can Control-click and choose Open from the contextual menu.

In both cases, why doesn’t the alert tell you how to resolve the problem (if you do, in fact, trust the software)? In my view, this is poor design and essentially security through obscurity. Apple decided that they don’t want you to run unsigned software, but they don’t want to (or realistically can’t) completely forbid it, so they provide an escape hatch but keep it hidden. macOS doesn’t trust the user to make the right decision, so it acts as though there’s no choice.

It could have explained the situation, from Apple’s point of view, and perhaps required a few extra clicks to confirm. But instead it makes it look like an unsolvable problem. Most customers will probably give up. Some will enter the text into Google and find who-knows-what. In other words, Apple is delegating the explanation to an unknown third party.

Walt Mossberg:

Today I upgraded both of my fairly new Macs to the Catalina OS. Then I tried to run Skype. On my MacBook Pro, it wouldn’t load. On my MacBook Air, it launched fine, but wouldn’t work. Had to use an iPad. Is this Apple’s way of forcing a switch to the iPad from the Mac? WTF?

Note: Skype was up to date. Even so, on one of the Macs, I tried downloading it again from the Web and was told my Mac couldn’t run it because Apple couldn’t check it for malware. I saw no opt out from this warning box. Again, WTF?

Again, the alert presents it as if something is broken. The app certainly could be checked for malware. It’s just that Apple has decided to only do the check in a particular way. The app certainly could be launched without the check, but Apple has decided not to tell you that.


Update (2019-11-27): Rosyna Keller:

There’s no need to google or anything. The dialog that comes up has a help button that can be clicked and discusses the options…

I should have mentioned that, but I don’t think it’s a good solution:

Mike Hay:

I mean, I understand Apple building the UX for the 90% of consumers who buy a mac, but I would prefer a different user type in the Users & Groups to having to constantly affirm that I want to go against recommended practice.

Update (2020-02-04): Rosyna Keller:

The button now works in macOS 10.15.3. Thanks for reporting the issue!!

Slow Xcode 11 Objective-C Builds

Chris Liscio:

When I build my app, Xcode 11 appears to stall out completely (dropping from full core usage down to 10-20% CPU) during the Objective-C build phases.


The bug manifested for me like this:

  1. Starting with a clean DerivedData folder, I can build my app, Capo in about 60 seconds, flat.
  2. Once I clean the build folder using command-shift-K, all subsequent builds will take anywhere from 180s to 500s (in the very worst case, which I’ve not seen for a while now.)

After some back & forth with Apple’s engineers, I learned to turn on clang’s -Rmodule-build flag to see what’s going on behind the scenes. It turns out that—for every Objective-C file that is built—framework modules are being re-built unnecessarily.

Trademarked Colors

Paul Kafasis:

Recently, I spotted a story about T-Mobile successfully forcing a company called Lemonade to change the color of their marketing materials in Germany. T-Mobile was able to do this because they own a trademark on the color magenta. I first learned of the rather ridiculous idea of trademarking a color many years ago, and since that time, I’ve kept a not-at-all comprehensive list of stories about this practice. Today, let’s take a look at just a few colors that companies have attempted to trademark, with varying degrees of success.


Worse, it seems T-Mobile isn’t even using the color they actually have trademarked, as evidenced by this graphic from the story[…]

Black Friday 2019

My apps are on sale for Black Friday and Cyber Monday, and here are some other good deals that I found:

Lists of deals: