The Shape of Everything
A website mostly about Mac stuff, written by Gus Mueller
» Acorn
» Twitter
» Maybe Pizza?
» Code
» Archive
March 23, 2018

This is just a quick note to point out, because I wasn't aware or I had previously forgotten, that Quick Look plugins on MacOS are multithreaded by default. This can be turned off however, by setting the property list key QLNeedsToBeRunInMainThread to YES.

A couple of days ago I was sent an Acorn crash report by my fellow dev Daniel Jalkut, which showed a crash in a background thread, from Acorn's Quick Look plugin, when trying to use the File ▸ Open… window. Two things stood out to me at once.

1) Huh, those are multithreaded now?
2) Why is this running in Acorn's address space?

Apparently QL plugins have always been multithreaded, and it's just been pure luck that the crash wasn't happening more often. Well, mostly luck. The crash would only occur when the plugin was rendering two or more Acorn images made from version 1.x, and those images had text layers in them. There aren't many of those images sitting around on people's computers. (The crash was caused by using a shared NSLayout manager on two different threads at once. I've got it fixed for the next Acorn update).

The other surprising thing was that Acorn was crashing at all. I had always assumed that the plugins ran in their own address space? Apparently not always. So if you write a bad Quick Look plugin, you can bring down your own app, (and possibly even someone else's?).

Lesson learned, I now know better, better stronger faster, etc.

Minimalism in Programming

Pointers Gone Wild: Minimalism in Programming

I also (try to) subscribe to this philosophy as much as I can.

Via Brent Simmons at

Email Sucks

It snowed this morning, but it's all melting now. It's a nice Sunday otherwise and the house is quiet with only myself and the dog. But I've got an email problem which means my inbox is overflowing and I'm close to throwing it all out but first I'll see if I can solve it the reasonable way.

February 16, 2018

Acorn 6.1 has been released.

As described last December, my goals for this release were to move to Metal 2 (on MacOS 10.13+) and to bring back some color to the UI. And I'm happy to say both happened relatively smoothly, and I even added HEIC/HEIF encoding support if you're running MacOS 10.13.4+.

I've also made some tweaks with how brushing works (it's faster now- over 160 FPS on my iMac*) and while exploring that code, I've come up with some ideas that I think will make it even smoother and faster in the future.

For the App Store version of Acorn, I've also removed the option to "purchase" a free trial for $0 via in app purchases. You can still grab the free trial off our website, and if you like it you can purchase Acorn directly from us or from the App Store.

IAPs have a lot of issues on the Mac, and provided a really crappy experience just to enable free trials. Incomplete store APIs (such as receipt refreshing), buggy / hung app store background processes (we were having to tell people to restart their computers if the purchases weren't working), 403 App Store errors when trying to purchase the trial, dialog boxes saying "Are you sure you want to spend $0?" which scared people away, and of course emails from people assuming that I was going to try and charge them after the trial was up and they wanted to cancel their "subscription".

It's not been fun.

If Apple ever implements a real way to have trials in the App Store some day, or makes other changes resulting in a nicer experience for free IAPs, we'll look at bringing it back. But for now I don't think it's worth it for Acorn.

But let's not let that overshadow this nice release. If you're not running it already, go grab Acorn 6.1 and try it out. Better, faster, smoother, stronger. And the full release notes are also available as always.

* I had to disable display sync when brushing to actually get above the MacOS's hard coded clamp of 60FPS. There's a tiny bit of tearing when this is done, but since it's around the size of the brush, it's barely noticeable. I'm curious what the frame rate would be on an iMac Pro.

Random iPhone Issues

This morning I had to reboot my iPhone to clear up some networking issues. I do this about once or twice a week when my download speeds slow to a crawl. A reboot always fixes it.

But when I rebooted my iPhone this time, my AirPods weren't connecting very well and when they finally did the volume was super low and I couldn't pause the audio by tapping the AirPods. Another reboot fixed this problem.

This kind of thing is worrying, and the networking problem showed up last fall with the big iOS release. How do I even file a reasonable radar against these problems?

Allen Pike Chain of Fools

Allen Pike: Chain of Fools:

A great overview of what's going on with blockchains right now.

Apple Platform SDK API Differences

Matt Stevens has a nice site which shows real diffs between the different SDK releases: Apple Platform SDK API Differences. Looks like ImageIO got a whole bunch of new IPTC constants in 10.13.4, and Core Graphics got kCGImageByteOrderDefault, which is kind of weird but OK. I suppose being explicit about that couldn't hurt.

January 25, 2018

Yesterday Apple released to developers the first beta of MacOS 10.13.4, and I was delighted to see that support for encoding HEIF images was included (finally). So naturally, and only a few hours later (sorry for the delay), I've got a pre-release version of Acorn which supports it. My new image processing app also supports HEIF, so if you're in need of converting more than a couple of images to this new format, send me a note.

Now a couple of random thoughts.

The UTI and file extension that advertises for HEIF is "public.heic" and .heic. HEIF stands for High Efficiency Image File Format, HEIC stands for… HEIF images encoded with the High Efficiency Video Codec (HEVC). So it's short for HEIHEVC I guess? At any rate, it's getting very confusing on my end as to what to call it, so I'm following Preview's lead and files saved out of Acorn get the file extension of .heic for HEIF images.

Then again, HEIF is a container format. It supports HEVC and H.264. Kind of like QuickTime's .mov format. So maybe .heic makes sense after all, because it's not like we have room for 8 bytes associated with the file to give us any more information such as what app to open it in and the format of the file. Instead, we get an extension and magic headers in the file. But I digress.

HEIF supports up to 16 bits per channel! This is super awesome because it means we've got a great image format that not only compresses images better than JPEG, but we can keep our colors accurate when paired with wide gamut color profiles such as Display P3. Goodbye banding! But there's bad news as well. Apple's encoders both on iOS and MacOS only support 8 bits per channel. So that means if you were wanting to convert your RAW images to HEIF but you wanted to keep your color accuracy, you're out of luck for now.

But it's all a step in the right direction.


Rogue Amoeba: Farrago

"Today, we’re delighted to unveil a brand-new product! Our new soundboard app Farrago offers the best way to quickly play sound bites, audio effects, and music clips on your Mac."

Looks pretty nice.

Either Insane or Brilliant

Agenda is a new note taking app for MacOS. +1 for the nice UI and a great domain name. Agenda also has online forums built directly into the app, and I can't decide if this is insane or brilliant.