Guest Bad Bug: Double-click to Install Preference Panes, etc.

New bug in 10.11.4 reported by Daniel Jalkut disallows double-click installs of preference panes with default Gatekeeper settings. Workaround #1: control-click and use Open button, which works with anything, including apps and preference panes. Workaround #2 from Rob Griffiths is to drag-install preference panes.

This is a different flavor of Bad Bug. It’s one which comes along in an update and causes a disruption of the user experience harmful to some chunk of indie developers. Hopefully, word will get around about the workarounds and it won’t hurt folks too badly. Feel free to do your part and tell your friends.

Bad Bug #2: Makes Me Blue, So Blue

This is another long-standing Bad Bug. It’s clearly broken, easy to demonstrate, and difficult to believe it would be allowed to persist. I realize that in writing about these, I open myself to criticism along the same lines. In a way, I welcome it. Maybe we’ve got a Bad Bug in our software that’s getting in your way. If so, blog about it passionately. Rally others to your cause. Write us and insist we take a second look.

Bad Bug #2 is in Core Graphics. Both renderings below are of the same PDF document. On the left, the document is rendered using PDFKit. On the right, the document is rendered using CoreGraphics.

CoreGraphics and PDFKit Bug In Action

I filed this bug with Apple at OS X 10.11.1, and there have been three dot releases with no fix. While it’s possible to work around the bug by drawing into an NSView rather than using Core Graphics, that’s not really an acceptable workaround. It’s also difficult to detect exactly what causes the bug, as it does not impact all CMYK nor all overprint mode (OPM) documents. In other words, trying to work around this would create a huge performance hit.

Fortunately, the bug is “cosmetic” in nature, meaning that although the colors are presented incorrectly to the user when a PDF is drawn using Core Graphics, the underlying colors are correct when viewed in other PDF applications. This isn’t much solace to us and PDFpen, but it is much better than the alternatives.

Please feel free to reproduce and file duplicate bug reports, and we’ll keep our fingers crossed that this is addressed in macOS Sierra.

UPDATE (July 18, 2016):

Turns out, the bug is limited to PDFs with transparency layers.

The workaround is to wrap the drawing in begin / end transparency layer calls:

    CGContextRef context = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
    CGContextBeginTransparencyLayer(context, NULL);
    CGContextDrawPDFPage(context, page);
    CGContextEndTransparencyLayer(context);

Keeping my fingers crossed it gets fixed in macOS Sierra.

Bad Bug #1: HTML Popup Menus Fail in Slide Over

As a software developer, I understand that not all bugs are severe. Not all bugs will be addressed in the lifetime of a piece of software. Time can be limited. A bug can be rare enough not to merit further investigation. Really bad bugs, which cause crashes, tend to get fixed. Bad bugs, which fall short of that, can remain far longer than one would hope. This series aims to shed light on Bad Bugs.

Apple introduced multitasking as one of the marquee features of iOS 9. Slide Over multitasking is available on a broad variety of iPads. To use Slide Over, one drags in from the right margin and chooses an app. The app then runs in a horizontally compact view on the right third of the screen.

If an app displays a web view which shows a <select> element (popup menu), the user can’t make a selection in Slide Over. Tapping the popup menu invokes a modal view. Tapping a menu item doesn’t dismiss the modal view. The user can’t do anything else with the app at that point. They’re stuck.

Image of Bad Bug in Action

The bug was reported to Apple by December 8, 2015. That report was closed as a duplicate. Based on its bug number, the original must have been filed before September 17, 2015. It’s fair to assume any fix would have missed 9.1, released on October 21, 2015. It’s difficult to believe a fix missed 9.2 on December 8, 2015 and 9.2.1. So far, there’s no fix in 9.3b5.

Given that the bug was already reported, I asked DTS for a workaround (case 636921784). They responded: “Our engineers have reviewed your request and have determined that you are experiencing an issue for which there is no known workaround at this time.” This is surprising because the bug does not occur in Safari under the same circumstances.

To me, this is a Bad Bug because:

  • It affects a headline feature of iOS 9
  • It’s been known for a while (six months or so)
  • There is no workaround

For good measure, I filed bug 25006548, which I expect will be closed as a duplicate. Hopefully, filing duplicates like these causes some internal up-voting so that Bad Bugs such as this can be addressed.

UPDATE: Christian Hemker notes that this issue was first reported on August 13, 2015 by the Chromium team. Thanks, Christian!

Bionic Me

I hadn’t considered my iPhone a “bionic extension” until I used my iPhone’s camera to solve a problem by doing something I couldn’t do with my body.

This summer, in the course of painting the dining room, I had to take down curtains. Removing the curtains and rods was easy. Removing the fixture which held the rods was not.

The fixture had no visible screws or points of attachment. The space between it and the ceiling was smaller than my head, so I couldn’t see down from the top. I could feel an opening at the top, so I was pretty sure this held the clue to how these worked.

I was very lucky to have a flash of inspiration and realize that I had a camera in my pocket. My iPhone could certainly fit into the space between the ceiling and the fixture. Armed with this photo, I was able to solve my problem:

Wall Fixture

The fixture had screws which slid along a track on the wall. Once I pushed up on the fixture, those screws cleared the track, and I was able to pull the fixture off the wall with ease.

I tend to think of the iPhone as a communication and computing device, so sometimes I forget that it operates within the physical world. Better yet, it can do so in ways that I cannot.

It felt incredibly rewarding to use my iPhone to solve this particular problem. I hope the next time I’m faced with something similar that my iPhone comes to mind.