The Shape of Everything
A website mostly about Mac stuff, written by Gus Mueller
» Acorn
» Retrobatch
» Twitter
» Micro.blog
» Mastodon
» Instagram
» Github
» Maybe Pizza?
» Archives
» Feed
» Micro feed
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: http://flyingmeat.com/download/latest/Acorn6Preview.zip
Retrobatch 1.4.4 beta: http://flyingmeat.com/download/latest/Retrobatch1Preview.zip

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 heycorn@flyingmeat.com 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?

The Pursuit of Tone: Buddy Guy

An Ernie Ball documentary on one of my favorite guitarists, Buddy Guy.

Buddy on Muddy Waters: "The rumor was he was sick, let's call him and go out there. And he answered. 'I ain't sick motherfucker, just keep the blues alive.'"

November 23, 2020

I'm hearing from a number of people that some old versions of Acorn aren't working correctly on Big Sur. This isn't unexpected, as apps that haven't had updates in 5-10 years probably aren't going to work on the latest and greatest versions of MacOS. Every year Apple changes fundamental things in the OS, and it's a ton of work for developers to keep an app looking correct and running with the latest MacOS versions.

At the same time, I've been amazed that people have been using Acorn 3.x for over 8 years. That's … kind of amazing? Acorn has gone through all kinds of changes since then and I think it's in a much better spot these days. But I can't help but be wowed that it was still working great for people for so long. They probably know that version of the app better than I do at this point.

I look back at Acorn 3's single palette and I get a little nostalgic. It seemed such a simpler time (it probably wasn't, but everything is rosy when you look back).

If you have an older OS and want to grab and older version of Acorn, we keep all the previous copies available for download on our legacy page. If you bought it from us, you'll always be able to get it from us.

As of now, the only officially supported version of Acorn for Big Sur is version 6.6.3. But if you're on a previous version of Acorn and it runs great on your OS and you love it, you do you and keep on keeping on.

How to Create a Bootable Installer for MacOS

In short, to make a boot disk for MacOS:

sudo /Applications/Install\ macOS\ Catalina.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume

I had no idea Apple was including a shell tool as part of the OS distribution, specifically for making bootable disks. And apparently it's been around for quite some time. I always squirrel away all the OS releases for testing, so this is super helpful for me.

Capo 4

Capo is an app that helps you learn songs by ear, available on both the Mac and iOS. It's one of my favorite apps and I use it on both iOS and the Mac to help figure out tricky guitar solos (Hendrix, SRV, etc.).

The new version has a really neat ML power chord detection algorithm. Chris Liscio, the creator of Capo, has a written a number of interesting articles about how exactly that happens. I've used it a bit, and it's great, but my favorite feature is still the spectrogram combined with the tabbing features. It's pretty amazing.

If you haven't checked out Capo already, you really should. And if you play guitar, you kind of need this app- there's nothing else nearly as good as Capo out there.

Accelerating TensorFlow Performance on Mac

In short, Apple has created a fork of TensorFlow (a machine learning package) which is accelerated on Macs (including the new M1 Macs).

One of the problems I've encountered when trying out machine learning ideas is that a lot of sample code and tutorials out there are written with TensorFlow in mind, but CoreML is the standard library on MacOS. And the TensorFlow to CoreML model converters seemed a bit finicky. I'm hoping this new Apple improved branch of TensorFlow will be a lot nicer.

Apple App Store Small Business Program

Starting January 1, 2021, App Store developers can apply to have their commission rates dropped from 30% to 15% if they made less than $1 million in proceeds the previous year.

This is very good news and I'm happy to see a reduction in fees finally happen.

Can we get upgrade pricing next?

Intel’s Disruption is Now Complete

James Allworth:

Indeed, that deal between Apple and Intel was more important for Intel than it could have ever possibly realized. But it wasn’t because Intel had sewn up the last of the desktop computer processor market. Instead, it was because Intel had just developed a relationship with a company that was thinking about what was coming next. And when Apple were figuring out how to power it — and by it, I’m talking about the iPhone — they came to their new partner, Intel, for first right of refusal to design the chips to do.

How did Intel respond?

November 13, 2020

First up, I released Retrobatch 1.4.3 this morning as a Universal Binary, meaning it will run natively on the new Apple Silicon Macs. There are also a couple of bug fixes, features, and compatiblity fixes for MacOS 11 Big Sur. It's just like the version of Retrobatch on Intel Macs… just… you know, for Apple Silicon now.

I recently posted an article on Flying Meat's website about Acorn and Big Sur and Apple Silicon. In short, Acorn 6.6.3 (which is now out), is fully compatible with Big Sur on Intel. Acorn 6 on Apple Silicon runs pretty well, but the the seed fill based tools are a little pokey (magic wand selection, flood fill). But otherwise it runs just fine. It's currently running in Rosetta however.

I do have a version of Acorn which is a Universal Binary where everything works great, but there are big changes in it and I'm going to have a public beta for it first. I'm not quite there yet, but hopefully soon, and I'll be posting about it here as soon as it's ready.

So how about those new Apple Silicon Macs?

They look pretty sweet to me. The thing I'm probably looking forward to most is the unified memory architecture (aka UMA) between the CPU and GPU the new M1 processors provide. UMA speeds up so many things in Acorn by virtue of not having to copy pixels around as much. Brushing is faster, rendering is faster, and things just feel smoother. It's nice.

So how about MacOS 11 Big Sur?

In general, I think it's a good upgrade. The new sounds are great, the overall feel of it is decent. However, I can't get past the super plain toolbar icons that are showing up in Safari, Mail, and Xcode's preferences windows. Ditto for the iOS style icons in the Dock. I think it's a great idea to take cues from iOS, but I don't think this should extend to everything. Mac icons have always been rich in color and detail, and have always had a certain style to them. These iOS icons just don't fit.

But overall, I don't find myself missing Catalina. The collection of little good things in Big Sur make me happy with it.

November 7, 2020

There's lots of celebrating, not just in the US but around the world, that Joe Biden has won the US presidency. We heard fireworks this morning when all the networks called it.

The impromptu celebrations in the streets right now are pretty amazing. I've seen lots of great clips, but this one of everyone singing "Sweet Caroline" in Black Lives Matter Plaza is my favorite. It's a silly song that everyone knows the words to, and the energy from the crowd is amazing. You can see multiple bottles of champagne opened in celebration. People are overjoyed right now, for good reason.

October 17, 2020
Ballot drop-off is super easy in Washington.

I received my US election ballot yesterday, filled it out today and dropped it off at the nearest drop box. Voting up here in Washington State has been mail in (or drop off) for a long while now, and it's pretty awesome. No lines and I can sit down and take my time to fill it out.

There were a number of things to vote on, but I waited until last to fill in my choice for president, expecting to feel a rush of satisfaction. And there was a bit of that, but there was also a whole range of emotions I wasn't expecting including sadness and anger and frustration; a whole spectrum of other feelings. But the biggest emotion I felt was fear that this train-wreck of an administration would continue for another four years.

I know it's not as easy for everyone to vote as it is for us in Washington. But regardless, please vote if you are of age. And if you're still undecided, vote for someone who cares for all of America, vote for Biden.

Idle Words on Protest and Power

Maciej Cegłowsk has some good advice:

When the George Floyd protests began to spread nationally in the summer of 2020, I noticed many people on social media asking Hong Kongers for advice on protest tactics–which apps to use, what equipment to wear, the best way to extinguish tear gas. Americans were preparing for a summer of protest the way they would for any new activity—by making sure they had the best gear.

As a witness to the Hong Kong protests, I shared this admiration for the protesters and their sense of flair. But the lessons I wished my fellow Americans would absorb from the protests were more strategic. In paticular, I wanted them to focus on what hadn’t happened in the territory during a long season of protest.

September 23, 2020

This past September 18th was the 50th anniversary of Jimi Hendrix's death. He would have been 77 years old.

Hendrix was amazing. Beyond amazing. Something on a whole other level. It's hard to explain.

It seems that the longer I play guitar (going on 27 years now) the more I appreciate just what a master he was. Hendrix's playing went far beyond where anyone else had gone with a guitar. And it struck me while reading a passage about his age when starting (15 years old with a five-dollar used acoustic guitar), that Hendrix only played for 12 years of his life.

Twelve years! Just thinking about that breaks my mind. Any other person would need multiple decades to reach the level of agility to mimic what he did, let alone invent the techniques and music.

It makes me sad to wonder what music Hendrix would have made if he hadn't died.

And when he passed away, Hendrix was just getting into my favorite musical phase with the Band of Gypsys (if you haven't listened to it, the box set "Songs For Groovy Children: The Fillmore East Concerts" is amazing collection (Music link)). This live version of Power of Soul might as well be my anthem.

I'll leave you with this blurb from the Guardian:

The story goes that one night, shortly after Hendrix had arrived in London, Eric Clapton, then with Cream, and feted as “God” for his virtuosity, invited him to jam on stage. Hendrix showed God how to play. A furious Clapton confronted Hendrix’s manager, Chas Chandler, after the gig: “You never told me he was that fucking good.”

Jimi's Woodstock GuitarThe guitar Hendrix played at Woodstock, which I got to see at [Seattle's MoPOP](https://www.mopop.org//exhibitions-plus-events/exhibitions/hendrix-wild-blue-angel/).