Archive for January 25, 2021

Monday, January 25, 2021

Hazel Codesigning and Notarization Woes

Paul Kim:

The biggest problem at launch was some users getting an “Unidentified developer” alert when opening the dmg. I had various users send in logs, but it was only when someone found a log message pertaining to the rpath for one of the binaries in the bundle that I was able to identify the problem. Strangely enough, that person didn’t receive the “Unidentified developer” error alert.

[…]

When translocated, the binary is no longer on the disk image, instead it is copied to a temp location on disk. Hazel is unaware of this and as a result, doesn’t run the installer. Why was Hazel being translocated? I’m still not sure. It’s my understanding that if an app and its containing dmg is signed and notarized, it shouldn’t be translocated.

[…]

Logs from users showed that the quarantine flag was still set on the helper and that was preventing it from being run. When the user copies an app, like say from a disk image to /Applications, the quarantine flag should be cleared for the app and everything inside but for some reason it was not clearing it for the embedded binaries. Note that unlike when a user launches an app from Finder where they will be asked to run the app, a login item helper will fail to launch without any prompt.

[…]

Lastly, none of the tools or processes in place (codesign, spctl, notarization) catch these cases. These are all issues related to the static structure of the app bundle so it seems like they should be detectable.

I’ve also seen a lot of customers with quarantine issues lately. They drag and drop the app to their Applications folder, but Finder doesn’t clear the com.apple.quarantine xattr for some reason. When they try to launch the app, macOS reports it as damaged even though everything except that xattr is fine.

Previously:

Update (2021-02-05): A customer recently found that one of my apps had been unexpectedly translocated, despite being notarized and distributed on a signed disk image. It still had the quarantine attribute in the Applications folder.

Codye 1.1.3

Howard Oakley:

In the six years since I started to publish articles here, one feature I’ve been searching for is a good way to present source code. This article is the ultimate gamble: I’m going to explain how to do this, and demonstrate how well it works. So if it all goes horribly wrong, please don’t laugh. This demo is based on a single tool, the cheap app Codye, from the App Store, and aimed at anyone with a WordPress blog; it may well be suitable for other blogging systems too.

Codye really feels like a Catalyst app. On the other hand, I’m not aware of any native apps with this feature set. BBEdit can copy code as HTML, and you can copy and paste from Xcode to TextEdit and then export as HTML, but these methods require post-processing if you want HTML that uses CSS classes instead of raw formatting. On the other hand, Codye uses a JavaScript-based parser, which in my experience is not as accurate.

Hush Content Blocker for Safari

Joel Arvidsson:

Block nags to accept cookies and privacy invasive tracking in Safari on Mac, iPhone and iPad.

[…]

Unlike some blockers, Hush has absolutely no access to your browser habits or passwords. Nor does it track behavior or collect crash reports - nothing leaves your device.

Via John Gruber:

It targets those insipid, never-ending, utterly pointless “cookie notices”, popovers begging you to join email newsletters, and other bits of tracking. It kills dickbars and dickbar-like annoyances. I’ve been running it for days and it’s the sort of thing you don’t notice at all until you disable it and all of a sudden you’re back to approving cookie access every single goddamn time you load an article at The Guardian and squinting to find the hidden “X” that closes a popover asking if you’ll sign up for something you don’t want and never asked for.

Big Sur Document Icons Are Illegible

Jason Snell:

In Big Sur, documents associated with many apps appear to not use custom icons, but rather use a generic white document image with a small thumbnail of the app icon at the center. At the small icon size in list view, this icon appears to be 32×32.

[…]

Unfortunately, this new Big Sur behavior requires me to attempt to see the icon placed on the blank generic document icon — an icon that’s about 12×12. It’s almost impossible to tell the difference between documents that use this same approach.

Previously:

Brad Cox, RIP

Legacy (Hacker News):

Dr. Cox was a computer scientist known mostly for creating the Objective – C programming language with his business partner, Tom Love, and for his work in software engineering (specifically software reuse) and software componentry.

[…]

Stepstone hoped to sell “ICPaks” and Dr. Cox focused on building his ICPak libraries and hired a team to continue work on Objective-C, including Steve Naroff. The late Steve Jobs’, NeXT, licensed the Objective-C language for it’s new operating system, NEXTSTEP. NeXT eventually acquired Objective- C from Stepstone. Objective-C continued to be the primary programming language for writing software for Apple’s OS X and iOS.

Bill Bumgarner:

His impact on many of our careers and on computing in general was immeasurably huge. Certainly, I can point to much of my career and have Dr. Cox to thank for enabling it!

Gus Mueller (tweet):

Everything just sort of aligned in my brain. Previously I found myself struggling to express the ideas I had in my head, and it was a frustrating experience. Now I was struggling to type fast enough and come up with new ideas that I could express in Objective-C. I felt like I could do anything I wanted with it.

Dave Dribin:

I love that Objective-C came from Brad reading the now infamous Smalltalk article in the Aug 1981 (Vol 6, No. 8) issue of Byte with the balloon on the cover and him thinking “I could do something pretty similar in C”.

Becca Royal-Gordon:

Even though I don’t use it much these days, Objective-C is a much better language than it has any right to be—a genuine pleasure to use thanks to its brilliant balance between conceptual purity and practical concessions. Dr. Cox and his colleagues helped make it that way.

Ken Kocienda:

Objective-C remains one of the best languages ever for creating apps and frameworks. Mac OS X, iOS, and the App Store all sat on the foundations of this great language. There would be no iPhone without Objective-C.

Jesper:

Objective-C is presumably the mainstream language with the most outsized influence. Along with Ruby and Squawk later on, it carried the values of Smalltalk into the modern programming era. Introspection and messages and dynamism, rather than C++ vtable optimization and trickery inventing seven kinds of memory management/ownership subtlety and delegating all to the programmer. Getting things to work together in a coherent and easy way that befits a small system, rather than spending 90% of your attention making sure no performance is untowardly spilled on the floor.

John Gruber:

Great programming languages are great for writing certain types of software. Objective-C is great for writing apps and app frameworks. Turns out that made for a great language — and an enormous competitive advantage for the one company that banked its entire software stack on it.

Nick Heer:

Cox sure made his dent in the universe.

See also:

Previously:

Update (2021-01-26): John Gruber (tweet):

When I listen to my favorite app developers speak of Objective-C and its runtime, they almost never talk of the source code they wrote. They speak about it like Kocienda does, like it gave them the ability to put their fingers on the apps themselves. Like they weren’t writing instructions to make the app, but that they were writing the app itself. Not writing a recipe for baking a cake, but somehow baking a cake directly, and tweaking it to taste better and look prettier as it’s cooking. And if you needed to write ungainlier-looking recipes to get that on-the-fly dynamic feel for the cake as it’s being made, so be it, because the cake is the thing, not the recipe.

Steve Troughton-Smith:

It was an elegant language, for a more civilized age, and it served me well.

See also: Core Intuition.