The Shape of Everything
A website mostly about Mac stuff, written by Gus Mueller
» Acorn
» Retrobatch
» Twitter
» Mastodon
» Instagram
» Github
» Maybe Pizza?
» Archives
» Feed
» Micro feed
What goes into making an OS to be Unix compliant certified?

Terry Lambert, Apple Core OS Kernel Team:

We had a lot of gratitude in the Open Source community particular for our fixes to make bash pass the tests.

You have absolutely no idea how much Apple contributed to the Open Source community, as part of this project, because it was a secret project - at least to people outside Apple so we didn't advertise the fact.

But I expect we contributed about two million lines of code, to hundreds of Open Source projects, over the course of that year.

A lot of gratitude - but it wasn't collective, and so Apple was still faulted for "using Open Source code, but never contributing back".

We fixed at least 15 major gcc bugs, for example.

You have no idea.

Tomoya Ikeda - Macintosh Artist

Matt Sephton:

Tomoya Ikeda (池田友也) might not be a name you’re familiar with, but if you used a classic Macintosh computer at any time during in the 1990s you’re likely already familiar with some of his work.

November 16, 2021

Collin Carroll: Female excellence in rock climbing likely has an evolutionary origin

As hypothesized, relative female rock-climbing ability was shown to be extraordinary. A female climber has climbed a 5.15b-rated route, one of only 27 people to have successfully ascended a route rated 5.15b or higher. Additionally, this exceptional performance is not limited to one female outlier. Two other women have climbed 5.15a-rated routes, placing 3 females in the top 90 climbers of all time. This level of female achievement is far beyond that seen in other sports. The 100-m dash, with a relatively narrow PG itself, does not have a single female runner in the top 2,000 competitors, and the fastest female time ever recorded is slower by 0.19 s than the 2000th-fastest-ever male time. This trend holds true for the marathon, too. The top female does not enter into the top 2,000 marathon runners, and she is more than 2 min slower than the 2,000th-fastest male (“World Athletics” 2020). This means that there are likely many thousands more male runners who surpass the world-record-holding females in each track & field event. Rock climbing as a sport shows a much narrower PG at its upper echelon than either short-distance or long-distance running.

The world is finally noticing that female rock climbers are getting really, really good. And when you look at the top female climbers, they aren't exactly tall either. A lot of the weekly youth classes at our gyms are mostly populated by girls as well. If you're a lady and rock climbing interests you - I say go for it.

I wouldn't be surprised in the slightest if at some point in the near future, the hardest route in the world was first sent by a female.

When Led Zeppelin Was in Seattle

Lord Rare Rock on Instagram:

Seattle - 1977 - After Zeppelin was banned for life from the Edgewater Inn for previous incidents, such as the infamous shark, they somehow got that ban reversed. The manager, James Blum, warned them to be on their best behavior this time. I think we can imagine how they took that warning. It is said that on that night, the band threw not one, but five televisions into the Puget Sound which was directly below the windows at the Edgewater Inn. The band racked up an obscene amount of damage fees, which Richard Cole happily paid. When they were checking out, Cole was asked by one of the hotel clerks - "I’ve heard that Led Zeppelin has a reputation for throwing TVs. But I thought it was BS. Can you tell me, what does it feel like to just toss a TV out of your window?” Cole replied, ”Kid, there are some things in life that you’ve got to experience for yourself," as he slid $500. “Go toss a TV courtesy of Zeppelin”

November 10, 2021

Tedium:10 Image File Formats That Didn’t Make It

From PCX to TGA to VRML, considering a number of image formats that the world forgot. Not every image standard is going to last, no matter how pretty it is.

Some of these formats I'd argue did "make it". But time marches on.

October 15, 2021

This coming Monday, Apple is having an event they are referring to as "Unleashed". The general rumor is this will be an announcement of new MacBook Pros with faster M1 based processors.

That'd be great, but what I really want is some sort of M1/M1X/M2 based iMac Pro with a big display. It's been a while since I've bought a new desktop (I'm still rocking a late 2015 iMac for some reason), and I'm eager for something newer and faster. Hopefully we'll also get a release day for MacOS Monterey.

One thing that I haven't seen remarked upon much, is that it's been few weeks since a new beta of Xcode 13 dropped with a Monterey SDK to build against. This makes me think that there will be new APIs for dealing with some sort of new hardware in whatever is coming out Monday. So whatever we're getting, I bet it's going to be a little more involved than just a standard hardware upgrade.

Ben Thompson on Apple's App Store Conundrum

The Sub Club Podcast:

On the podcast, we talk with Ben about all things app stores. From Apple’s revolutionary launch of the App Store in 2008 to the monopoly-like powers, both Google and Apple now wield today. With multiple lawsuits filed, government investigations ongoing, and developer sentiment at an all-time low, we take an honest look at the challenges and trade-offs in trying to bring two of the world’s largest companies to heal.

This is a great interview with Ben Thompson on all of the big issues currently surrounding Apple's App Store. If you're a developer on any of Apple's platforms, you need to make some time to give this a listen.

September 2, 2021

I released Acorn 7.1 yesterday, which has some new features, changes, and bug fixes. There's nothing earth shattering in here, just another release that continually improves Acorn. The full release notes are available as always.

There is one little, yet devilish, bug fix in the 7.1 release. It took a while to track down and the fix of course was super easy.

Soon after the release of MacOS 11.5 I started getting crash reports. Lots of crash reports. They all had similar stack traces, pointing to something in the guts of Apple's Key Value Observing code (_NSKeyValueObservationInfoGetObservances specifically).

But the messages from my customers in the crash reports all pointed to wildly different things. Someone was using flood fill, and got a crash. Someone else was changing the size of the pencil tool, or someone else was changing a preference, or someone was exporting an image. The one thing that they all had in common was that a preference was being changed or read.

So something in the frameworks for MacOS 11.5 obviously changed, and was surfacing a bug in Acorn that's probably been around for a while (this wasn't my first thought of course. My first thought was that Apple broke Acorn again, horribly, like they did last April).

And I couldn't get it to reproduce more than once or twice. It was pretty infuriating.

I started bouncing ideas off some friends, and I eventually came to the idea of having one of my tech savy customers who could reproduce it to try running Acorn from the terminal with NSZombies turned on. If you're not familiar with it, NSZombies is a debugging tool which will report when messages are sent to classes which have had their memory reclaimed.

And sure enough, the crash happened with a message helping me pinpoint exactly where it was going wrong. What was it? Acorn's startup window had a bit of code that was listening for a preference change and when that window was closed it wasn't unregistering the listener code from the framework.

Here's the kicker - this particular preference (which was a setting for all white windows (which never shipped for good reasons)) was never called or used in any way. Just this little bit of code saying "hey let me know if this pref changes so I can update my appearance". And then when it was released, it never cleaned up. So the fix was to delete the code which listened for the no-longer-existing pref.

Programming is really dumb sometimes.

So Acorn 7.1 is out, you should go grab it. It's got a really good bug fix in it.

Oh, and support for Mozilla's MozJPEG encoder in the Export window is new. That's been a popular request.

Allen Pike on the Persistent Gravity of Cross Platform

Allen Pike: The Persistent Gravity of Cross Platform

In practice, the tradeoff is about more than “cheap vs. good”. Unintuitively, sometimes native tech can actually be the cheapest way to achieve a certain goal, and sometimes cross-platform technologies actually lead to better products, even for very well-funded companies. So what is a useful way to think about the tradeoff?

Over the last decade I’ve talked to people at hundreds of companies about how they’re developing and supporting apps, helping them evaluate and plan native and cross-platform app work. While there are a lot of factors that go into this technology decision, there’s one that I think is particularly illuminating.

More and more apps written with web tech (such as Electron) are showing up on the Mac desktop everyday. I understand why, but I don't have to like it.

The Beauty of Bézier Curves

Freya Holmér has a wonderful video about how bézier curves are constructed with some amazing animations throughout. I wish this video had been around a decade or more ago, when I was really getting into bezier curves and implementing them in Acorn. It would have come so much more quickly to me after watching this.

August 17, 2021

This has easily been the longest sale we've ever had on Acorn - since March 17th!

But if you've been holding out on buying it for some reason, now is the time to purchase. The 50% off sale will end Monday, August 23rd, and the price will double from $19.99 up to $39.99 USD.

The bundle discount will still be available though. So if you buy multiple copies (or multiple apps), you can save some cash. Or buy now and save even more.

Anecdotes About the macOS Sandbox File Limit

Michael Buckley:

macOS only allows sandboxed apps to access a limited number of files at a time, but there is no way for an app to query how many files it can open, or if it’s close to the limit. In fact, this limit is dependent on the amount of RAM installed in the computer and the number of files open by other apps. Because this limit only affects apps that can batch process thousands of files, and users that want to do so, many users—and developers—remain unaware of it, despite the fact that it has affected some of Apple’s own apps.

This is the primary reason Retrobatch isn't sandboxed (and thus, not on the App Store). I've considered just dealing with the likely support emails (and suggesting folks give it full disk access, or only add folder), but I just can't bring myself to do it. What a pain this bug has been for years.

Every year at WWDC, since about 2015, I would hunt down a particular engineer I knew who was aware of this issue, and the first question I would ask is if this bug was fixed.

See also this really old radar: rdar://13006144: Sandbox and limitation on number of files that can be opened from a user.

May 21, 2021

50 Years ago today, Marvin Gay's album "What's Going On" was released. It's such an amazing album and if you haven't listened to it recently, why not today? The music and lyrics on this album are timeless in so many ways, both good and bad.

NPR: Remembering Marvin Gaye's Iconic 'What's Going On'

KEXP: Marvin Gaye 'What’s Going On' Day

On May 21st, 1971, Tamla-Motown released Marvin Gaye’s 11th LP, his first masterpiece, What’s Going On. Marvin used his platform as an artist to talk about what he was seeing in the world: people struggling to survive — addiction, rampant police brutality, and ecological disaster. Fifty years later, this album is as relevant as ever. On Friday, May 21st, join KEXP in celebrating a half-century of this landmark in music, while recognizing how much farther we still have to go. Because: It’s Still Going On.

There's a wealth of Marvin Gaye music on YouTube as well.

April 29, 2021

Update (May 25): Security Update 2021-003 Catalina was released by Apple, and has the required fixes in it to enable Acorn to work correctly again.

Update (May 2nd): Acorn 6.6.5 and Retrobatch 1.4.4 are out for anyone who has downloaded or purchased the apps directly from Flying Meat.

These releases fix most of the problems introduced by the security update, but Flood Fill, Instant Alpha, and the Magic Wand tools are still broken in Acorn. The App Store version of Acorn has not been updated because there's no way to have a new version distributed once it's been removed from sale (even if it is put back on sale, because I tried that and it's not working). Retrobatch was never in the App Store, so it was super easy to get an update out to everyone.

Acorn and Retrobatch are not the only apps impacted by this problem, and I'm hopeful that Apple will be releasing a patch which fixes this in the near future. It could still be a matter of weeks though, so please sit tight until then. The right people inside Apple are aware of the problem, so I'm sure it will be a temporary (though very very unfortunate) issue.

A few days ago on April 26, 2021, Apple released Security Update 2021-002 Catalina for anyone running MacOS 10.15.7.

This security update unexpectedly breaks OpenCL, which is a framework from Apple used for processing images. Other Apple frameworks such as Core Image use OpenCL in some situations. In those cases Core Image no longer works correctly.

The latest release of Acorn, version 7, no longer uses OpenCL by default for processing images. So if you've upgraded to Acorn 7 you're safe.

The Apple security update has broken Acorn versions 6 and lower. Any files saved in these versions of Acorn will end up empty. The update also breaks adding new layers, painting, just about anything to do with processing pixels in previous versions of Acorn.

Retrobatch is also impacted if you use any nodes that process images through Core Image.

While I'd love for everyone to take this opportunity to update to Acorn 7 as a fix, I realize that's not always the best solution and in some cases, not possible.

I'm currently investigating a fix for this, and I have a beta for anyone who is impacted by this to try out.

Acorn 6.6.5 beta:
Retrobatch 1.4.4 beta:

I don’t have any updates for Acorn 4 or 5. Unfortunately, those products are too old to be updated further. My hope is that Apple will revert their breaking change, so that Acorn 4 and 5 can once again work as expected on MacOS 10.15.7. However, if you don’t wish to wait, upgrading to version 7 is the way to go.

Here's the technical version of things as I understand it at this time.

The "Security Update 2021-002 Catalina" has broken Apple's OpenCL framework. Core Image, another framework by Apple and one that Acorn relies on heavily, uses OpenCL to process images when its renderer is set to "software" mode (the other mode is to use the GPU). Core Image tries to use OpenCL and then fails, so all images come out empty.

The quick fix is to tell Core Image not use the software renderer, and then Core Image will move everything to the GPU for processing and use Apple's Metal framework instead of OpenCL — for most cases. I think there is still hardware out there that can't use Metal, so it might fall back to OpenCL in that case.

The Acorn and Retrobatch betas above force Core Image operations to run on the GPU instead of the CPU if it detects you're running on 10.15.7. This will have an impact in various areas such as performance and possibly rendering. I've not done extensive testing so I'm not sure what the fallout from this change will be (though I know it will be there).

It's easy enough for me to pass out a beta and eventually a final release to anyone who purchased Acorn 6 directly from Flying Meat. However Apple's App Store has no mechanism for updating an app that's no longer for sale, and I don't know how to get this fix out to them. (Side note: Acorn 6 is actually marked as available for sale from my end in App Store Connect …but it's nowhere to be seen in the actual App Store. I've never been able to figure out why, and it's been this way since I released version 7.)

It's a big mess.

So why isn't Acorn 7 impacted by the security update? I spent a bunch of time last year getting Acorn 7 to run on the GPU. Targeting Core Image to use OpenCL was deprecated by Apple and it was a good time to stop using it. I was also able to do this because I dropped support for older versions of MacOS where Metal and OpenGL weren't quite accurate enough for Acorn.

Acorn 7 does have the ability to target the software renderer if you mess with the right preferences, but that's not the default setup for Acorn, and I haven't had any reports of people running into the issue (yet).

Nothing in the release notes for the security update mentions OpenCL. I'm baffled and completely in the dark as to what the changes were or why they were done. I've filed a bug report with Apple (FB9091798) and pinged some folks on the inside, but I don't know anything more than that.

Myself on the Run Loop Podcast

Collin Donnell's The Run Loop podcast is back! Collin and myself talk a while about Acorn 7 and pixels and pipelines and lots of other stuff too. It was a fun time.

March 19, 2021

Acorn 7, our image editor for humans, is out. It's currently on sale for $19.99 (50% off), directly from us or via the App Store. After the sale, the full price is moving up to $39.99 from $29.99. So unless you feel like giving me more money later on, now is a good time to buy it.

So what's new? Here's a casual overview of some things I find interesting with this release.

Visually, the most striking difference is the new unified windows. Acorn 7 has all the floating palettes placed together in the same window as the canvas (and if you prefer floating windows, we've got a pref for that). Unified windows have been a major feature request for a number of years, and I'm super happy to finally have it done for everyone.

It's nice. The same shortcuts work as before - the tab key will hide the inspectors, and ⌘⇧F will bring up the filters inspector as always. Pressing the f key will throw the window into full screen, and now the canvas isn't covered up by the floating palettes.

Acorn 7 is optimized for Apple M1 Silicon. The previous version of Acorn ran pretty well in the M1's emulation layer, Rosetta, but now Acorn 7 is natively built for the M1 which bumps up the speed. Beyond that, a bunch of filters were re-written in Apple's Metal GPU shading language, and I also managed to discover some other Metal optimizations which made Acorn's canvas drawing run quite a bit smoother (As an aside, I was very happy about this. While researching this problem I encountered forum questions posted by myself on this very topic from years ago. It always feels weird when that happens).

The Flood Fill, Instant Alpha, and Magic Wand tools all use a brand new multi-threaded seed fill routine I wrote and optimized on the M1 as well. Super geeky side note: as part of the debugging process when I was coding it, I had each thread draw different colors into a mask which was used for the result. On Intel, each color had a mostly equal representation across the mask. But when I was testing it on the DTK, which has two high performance cores and two low performance cores, you saw an imbalance where some colors were overrepresented and others were underrepresented. It was a visual result of the different speeds of the cores, which I thought was pretty cool.

New Perspective Fix & Crop tool. This handy little tool will draw guides on your canvas to help you fix perspective distortions. You simply line up the guides on your image by moving four handy little corners around, and press enter. Your image is then run through a perspective correction filter and cropped to the appropriate area.

I didn't think much of this feature at first, but I'm pleasantly surprised at how well it's being received. Props to for Kirstin pushing for this feature to be included.

Acorn 7 also has a new color picker. I've been wanting to do this for years, because the system color picker has been nothing but problems for me on account of its inability to set and stick with a specific color profile. For instance, if you have an image open in sRGB but you sample a color from the screen using the system picker, Acorn has to jump through hoops to convert it from the screen's color profile (which most certainly is not what the image is) and then into sRGB, and also keep the color picker informed about this profile change. And then I'd get support questions asking why colors were shifting ever so slightly, and I always hated answering those emails because to understand what's going on requires a lot of base knowledge about profiles and such, and well… it was a bother.

I could write pages and pages of other problems I encountered - but I'll spare you the details. Obviously, I had all these issues in mind when making the new picker, so it only ever has a single profile it draws with, and that's whatever color profile is set for the image. It's kind of nice just side-stepping all of those issues now. It was fun, in a strange way, writing the color picker. I don't consider it finished either, as I think there are a ton of other fun things I can eventually do with it.

OK, what else? The Export window is Über! (Acorn doesn't actually call it "Über" anywhere- I just think it's a good description of what it is now). I combined the previous web export window and the regular export save dialog into a single interface. So you get a nice preview, information on how big the file size is, as well as toggling between what you had previously and what it currently looks like. And I've even added animated GIF support when exporting. So you can open up an animated GIF, apply some filters or add some frames, and export it back out.

There's a new Navigation & Zoom Inspector which will probably be familiar to you if you've used other image editors in the past. It's a good way to quickly pan around your image when you're zoomed way in.

New Command Bar, which is sort of like Spotlight, but geared towards Acorn's commands and documentation. To search Acorn's docs, type "h" followed by a space, and then whatever topic you're interested in. Or, if you just want to quickly use the new Perspective Fix & Crop tool, you can type start to type "pers" which will filter up any commands that have those letters. Perspective Fix & Crop will be first, so you can hit enter and then you're in that mode quickly.

One nice thing about the Command Bar is that I can also include other random oddball things in there which don't necessarily deserve a menu item by itself. For instance, there's a toggle in there to switch Acorn into Dark Mode or to Light. There's an entry to quickly switch to pixels for the ruler, or fill the current selection or layer with the stroke color, or capitalize any currently selected text. I get requests all the time for cool little ideas (just today I got someone asking for the ability to pull the alpha channel out into its own layer). I've always shied away from these ideas because I want Acorn to be approachable, and having too many options in the menus can be a big turn off. But if they could be tucked away in the Command Bar, ready at your finger tips if you know it's there? I think that might end up being a very powerful thing if I can solve the discoverability problem (which might just be a matter of making sure everything is documented).

That's just a few of the new things in Acorn 7 I think are fun. As always, the full release notes are of available. There's a bunch of little things in there that are worth knowing about, so check them out. And of course, download a trial of Acorn today.

January 23, 2021

Dr. Brad J. Cox Ph.D. 1944 - 2021:

Dr. Brad Cox, Ph.D of Manassas, Virginia, died on January 2, 2021 at his residence. 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.

I had always struggled building apps for the Mac, first in Classic MacOS and then in Mac OS X. I used Java, I used REALbasic, and I even had a professional license for Metrowerk's CodeWarrior so I could write apps in C or C++. But there was always some sort of mental block, or maybe the way my brain worked never really lined up with the way these programming languages did. Out of these I was most efficient with Java, but the UI toolkit was pretty lacking.

Then I saw these cool apps coming out for Mac OS X, and they were proudly written in Objective-C.

I took a couple of runs at it. The brackets and pointers threw me off, but I kept on trying because I knew I needed to learn this language to build the apps I wanted to see in this world.

And then one day, I believe when plugging away on my little internet search utility VoodooNetKey, everything clicked.

Pointers, the brackets, selectors, messages. Oh my god, I get it now — the brackets! It's not a function call, it's something way better!

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.

And loadable bundles, and input managers- I can't express to you about how much fun it was being able to inject my Objective-C code into Safari or other applications to add functionality at runtime. Or using class-dump against the system frameworks to explore private methods. NSObject's performSelector: was just so great when you needed to quickly hack around something.

Objective-C was brilliant, powerful, and elegant.

All my applications are written in Objective-C even to this day. I play around in other languages from time to time, but I haven't found one that fits me like Objective-C does.

I realize it's not for everyone, and that Objective-C requires discipline, but it's been amazing for me. I owe my career in part to Brad Cox's creation, and I am forever grateful for it.

The Brain-Activity of People Coding Is Different

From the study:

The researchers saw little to no response to code in the language regions of the brain. Instead, they found that the coding task mainly activated the so-called multiple demand network. This network, whose activity is spread throughout the frontal and parietal lobes of the brain, is typically recruited for tasks that require holding many pieces of information in mind at once, and is responsible for our ability to perform a wide variety of mental tasks.

I've long thought programming is to a great extent about organizational skill, especially when it comes to larger projects.

Author Clive Thompson:

Just anecdotally — having interviewed hundreds of coders and computer scientists for my book CODERS — I've met amazing programmers and computer scientists with all manner of intellectual makeups. There were math-heads, and there were people who practically counted on their fingers. There were programmers obsessed with — and eloquent in — language, and ones gently baffled by written and spoken communication. Lots of musicians, lots of folks who slid in via a love of art and visual design, then whose brains just seized excitedly on the mouthfeel of algorithms.

Programming is different. If you haven't tried it because you think you suck at math, you should try anyway. You'd be in good company (I suck at math too).

December 29, 2020

I'm looking for some folks to help test out the next major version of Acorn. Does that sound interesting? If so, send an email to and I'll add you to the list.

What's new? Now optimized for Apple Silicon, single window mode, multi-threaded flood fills and other optimizations, more export options including animated gifs and gray color profiles, a new color picker, and more.

It's All Blues (Whales)

NYTimes: A New Population of Blue Whales Was Discovered Hiding in the Indian Ocean

The covert cadre of whales, described in a paper published last week in the journal Endangered Species Research, has its own signature anthem: a slow, bellowing ballad that’s distinct from any other whale song ever described. It joins only a dozen or so other blue whale songs that have been documented, each the calling card of a unique population.

“It’s like hearing different songs within a genre — Stevie Ray Vaughan versus B. B. King,” said Salvatore Cerchio, a marine mammal biologist at the African Aquatic Conservation Fund in Massachusetts and the study’s lead author. “It’s all blues, but you know the different styles.”

How could I not link to this?