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
Bjango: Using SVGs in asset catalogs

Marc Edwards:

SVGs can now be used as assets for iOS, iPadOS, macOS, and watchOS apps. The most exciting part of this new feature is that there’s not much to say — it’s full SVG support, and it just works.

Germany’s Corona-Warn-App uses FMDB

The Corona-Warn-App is an app that helps trace infection chains of SARS-CoV-2 (which can cause COVID-19) in Germany. The app is based on technologies with a decentralized approach and notifies users if they have been exposed to SARS-CoV-2. Transparency is key to both protect the app's end-users and to encourage adoption.

I found out a couple of days ago that the iOS version of the Corona-Warn-App is using FMDB, which I find delightful. FMDB has been around a long time and it's still an Objective-C project, but it keeps on kicking and showing up in places I'd never imagined.

June 24, 2020

I'm really enjoying the format of the WWDC videos that are coming out. The talks I've been interested in are short and focused, so I don't have to fast forward through sections I'm not interested in.

The code sections in the Developer app are almost pretty awesome too. It's a shame the Developer app is a buggy port from iOS- anytime I click on a code section to copy it, the scrollview either pages to the top or goes to some other random location. It's super frustrating. Hopefully Catalyst changes in MacOS 11 will make it better.

I've got Acorn compiling as a universal binary now, so in theory it'll run on the new ARM processor Macs. Retrobatch is mostly there as well, but I'm feeling lazy about it at the moment and will finish it up when I have actual hardware to test on. I can't imagine it'll take more than a couple of hours at this point. Maybe even less- I've got a 3rd little app I've been fiddling with and all it took to compile was updating Sparkle. We'll see what happens when it actually runs though.

Speaking of, I'm seeing folks get approved for the new developer transition kits who don't even have Mac apps! Ship dates and everything. I'm still over here crossing my fingers, wondering why this guy who's been developing Mac apps for over 20 years hasn't gotten one yet. Yeesh.

Update: I'm good on the dev kit!

Anyway, the more I think about the ARM transition, the more I get excited about it. Between Rosetta 2, running iOS apps on the Mac, virtualization of other ARM based OSs, and of course AppKit- Macs are going to be an amazing development environment. And with Apple's commitment to keeping existing tech around (like OpenGL, OpenCL, etc.), something I'm still shocked by, bringing existing apps forward to the new architecture is going to be a breeze.

While some of the changes in MacOS Big Sur aren't to my liking (what the hell happened to the Messages icon? The shadows are horrible!), I'm pretty happy with it overall and I can't wait to ship my updates for it.

June 22, 2020

I feel like I have whiplash.

I'm super happy that the Mac is finally moving to  processors and I've already applied for the dev kit. Hopefully I'll be getting it soon. Can we call it the Chip, instead of "Apple Silicon"? Maybe the name of the new processors just hasn't been announced yet?

The new MacOS UI is going to take a bit getting used to, but I'm OK with it. In fact, it's moved in a direction I was expecting so it lines up nicely with some things I've already started working on for Acorn. Retrobatch will also fit nicely in it.

Rosetta 2 - I did not see that happening, which is kind of amazing and to be honest I'm slightly disappointed about! There's too much backwards compatibility in my opinion. Apparently OpenGL is still present as well.

iPad and iPhone apps running on ARM Macs- that's crazy and not something I thought I'd see happening either. And that's the part that is giving me whiplash. What's going to happen when the Mac is flooded with iOS apps? Are prices for apps on the Mac going to plummet like they did on iOS? Will I still be able to make it as an indie in five years?

I hope so, and I'll continue to make the best apps I can, but I can't say I'm not worried.

Overall, I'm excited. And I can't wait to start working with those new processors.

Wil Shipley on the State of the App Store

Wil Shipley on the App Store:

We have all been asking for years now for these changes. I've filled out three or four of these surveys before. I know Phil specifically says he doesn't want to hear about upgrade pricing anymore, but Phil also is working for the world's richest company, which sells hardware and gives software away.

I also recently filled out this survey and I wish I had been as thoughtful in my responses as Wil is in his. It probably won't surprise you to know that I agree with everything he mentions.

June 10, 2020

With all the recent rumors flying around about the Mac transitioning to ARM processors, I've seen some assertions about what this means for software going forward. I thought I could chime in on this as someone who's been developing software for the Mac for a long time, including the last architecture transition from PowerPC to Intel.

Let it be stated that I have no knowledge of what Apple's internal plans are. These are educated guesses based on my years of experience of working with Apple and Apple's frameworks. And maybe this is all for nothing, since this transition might not even happen!

Assertion: The Cocoa frameworks are going away with this transition.

I find it very unlikely that Cocoa is going away anytime soon. Cocoa is largely written in Objective-C, and since Apple has been heavily investing in Swift the idea is that Cocoa must be going away.

Cocoa is the framework that drives pretty much every app on MacOS. Without NSWindow, without NSView, you've got no apps on the Mac. Apple could completely rewrite Cocoa in Swift, but that would be a monumental waste of resources and would take many years to accomplish. Apple famously keeps its teams small, so I don't see them spending the time to do this, only to say 5 years from now "Hey- it's all in Swift now! Isn't that great? Sorry we didn't get anything done in the meantime and here's a whole new set of bugs you'll be discovering as well".

"But wait! What about SwiftUI?" you might say. SwiftUI is barely one year old. Look at how long it's taken Swift to get to a point where it's not incredibly painfully to use. SwiftUI is most likely on a similar track, and regardless, many parts of SwiftUI also sit atop Cocoa.

Assertion: Objective-C is going away with the ARM transition, and it'll be Swift only from here on out.

Objective-C isn't going anywhere anytime soon. Too much of MacOS and too many important applications rely on it. Heck- the Cocoa frameworks are written in Objective-C! Objective-C is still incredibly important to Apple, even if the marketing department doesn't like to mention it.

And again, Swift code on MacOS completely relies on Objective-C.

Assertion: ARM Macs will exclusively run Catalyst apps.

The thinking goes, since major apps like Microsoft Word and Photoshop already have versions on the iPad, it would be a piece of cake for them to recompile and run on MacOS as Catalyst apps.

This would be a serious downgrade for users of these apps on MacOS, and would be a major departure from the way the apps currently behave on MacOS. And even with Catalyst, it's still a lot of work for an iPad app to look and feel like a Mac app. You're still going to need a team to make sure everything ports correctly, in addition to adding all the missing functionality that your users would expect to be there. I just don't see this happening either.

Assertion: ARM Macs will only allow sandboxed app.

This could happen. I give it a 50/50 shot at happening. Personally, I hope it doesn't happen as there are still many problems with the sandbox on MacOS that have yet to be resolved, even though developers have been complaining about it for years.

Assertion: OpenGL is going away on ARM for MacOS.

Yea, this is totally happening. OpenGL and OpenCL have been deprecated for a while now in favor of Metal. Apple will use this opportunity to drop them.

Will Apple release ARM based Macs this year? I hope so, I think the upside is huge. We'll lose things like VMware and other x86 based applications which will be sad, but if it brings better performance and longer battery life, I'm all for it.

June 3, 2020

Shortly after the 2016 elections I found myself, my wife and daughter (almost 5yo), and a couple of thousand other people down in Seattle for an event around Green Lake. It was a moment of everyone joining together, a show of solidarity. Or something. I live in a very liberal area so you can imagine people were feeling pretty down and not sure what to do after the election.

There was a playground within walking distance from where we stood, so afterwards our daughter was swinging from bars and running around with other little kids, as they do. I remember seeing one child with curly dark hair wearing a shirt that said Black Lives Matter on it. I looked to see if their parents were wearing similar clothing.

Of course they weren't. Why weren't they? Why weren't any adults wearing this message? Why wasn't I? I agreed that Black Lives Matter. We were all outraged by what we were seeing happening to black people in America. But why did I never see expressions of this outrage in the physical world? And when I do, why are the adults having the children wear the clothes?

It was embarrassment or a fear of being judged, I surmised. Was that the reason I had seen no adults, in real life, sharing this message? Was this why I wasn't proclaiming this for everyone to see?

It gnawed at me. The memory of this little kid wearing a BLM shirt and the shame I felt for not doing the same never left my mind.

So I made some bumper stickers. 3 inches by 10 with black text on a white background. Black Lives Matter. Easy to read and hard to miss. It's the only bumper sticker on my car, and for years I've been driving with it, on the lookout for reactions. I kept the extras in my glove compartment, hoping someone would say something as I parked. Maybe exchanging some sort of positive dialog and I'd be able to hand out the extras and they would show up on other cars.

Every little reminder to my white neighbors would help, I thought. Hello random white person behind me in an SUV- have you thought about your privilege today? It's a bumper sticker. It's not much, but it's something.

Over three years now, and I still have all of the unused bumper stickers in my car. Nobody has said a thing. I was being foolishly optimistic hoping I could convince or talk to someone about it.

...

But this is supposed to be a post about what's happening in these socially distant days.

Life continues, for most of us.

We apparently have a small family of rabbits living off our grass and clover and vegetable garden. Three small ones and at least one adult. Kirstin has tried to block them from entering under our fence, but she has found out it doesn't work very well from the videos I show her of bunnies squeezing on through.

She's torn, as am I. She's worried about the strawberries we grow every year and I'm slightly pissed about the decapitated pepper plants. But the bunnies are so damn cute! Our dog is super curious about them as well, and wants to be their giant friend. There may or may not be a bunny relocation effort in the near future, depending on Kirstin's tolerance. I'm fine with them, enough peppers will survive.

I haven't had a pizza takeout for a number of weeks because I started a new project to turn our little tool shed into a bouldering cave. It feels good to be pulling on climbing holds again, and to hang from a 50° wall, even if it is only 3 or 4 feet off the ground. This combined with traversing on our retaining wall is keeping me in climbing shape. I'm still hopeful that the climbing gym will open up again at some point this summer, but I have no doubt that it'll be closed again in the fall when the second wave hits.

And so life goes on. Waiting for what feels like forever and at the same time, no time at all. Hoping a vaccine will come sooner rather than later.

...

I guess I lied earlier about how many BLM bumper stickers I have left. This past week 6 of them went to new homes, via Kirstin, who let people know they were available on a local moms mailing list.

I hope to see them on cars around town. I hope to see more reminders for everyone, everywhere, that Black Lives Matter. I'm hopeful for change, but if things continue as they are it'll only happen one inch at a time, one beating after another. Another murder. And then things will quiet down again.

A bumper sticker feels pointless and more than a little silly. I know I can do more than this piddly little thing and who am I, hiding up North away from all the violence saying "Hey look at me I'm doing my part!". I'm not doing all I can. Barely any of us are, and some of use are actively pushing against change.

But I hope that even if it makes only one person stop and think for a few seconds, or to feel some shame, it's done something positive. It's too easy to move on and forget about injustice for a while once the flames burn out. I hope that after the current protests die down and the outrage is put away for a while, I hope to see more reminders for everyone. Let's not forget and let's be mindful of our prejudices and make changes every day, and let us keep on reminding our white neighbors and friends that America is still awash in racism. And let's vote for people who will make change in the right direction, and let's push back and call out racist behavior when we see it

May 28, 2020

Acorn 6.6 is out. You can update to this release via the App Store as or the Acorn ▸ Check for Updates… menu if you bought it directly from us.

Originally this was going to be a bug fix release but I kept on adding useful things and it snowballed into a feature release. As usual, the full release notes have all the details about what was updated.

The main new features are with the Shape Processor. If you're not already familiar with the shape processor, it's a neat ability Acorn has to take shapes on vector layers and pipe them through a series of actions, similar to how Automator or Acorn's bitmap filters work. Only instead of working on pixels, the processors will alter the shapes by scaling them or moving them around, or changing colors or blend modes. There's even a processor which will generate shapes for you- so if you want your canvas to fill up with hundreds of stars, you can do that.

Acorn 6.6 adds new processors which let you set the stroke, fill, and blend mode of your processed shapes. You can now also flip your shapes and even shift colors.

Chaining these processors together can get you some neat looking images. You can make interesting desktop backgrounds, as well as textures for your photos. Or if you just need a bunch of hexagons arranged in a circle, that's just two processors stacked together.

Have you made something interesting with the Shape Processor? I'd love to see it either via Twitter (I'm @ccgus) or via email.

There are of course the usual bug fixes and other minor details. And if you don't already have Acorn, a no-strings attached free trial is available on our website. Try it out, and we're always looking to hear from you about feature requests, thoughts, and anything else.

May 14, 2020

It's now spelled with a capital M.

Dithering

A new podcast from Ben Thompson and John Gruber. Three episodes per week, 15 minutes per episode. Not a minute less, not a minute more.

I've really been enjoying Dithering. I already regularly listen to their existing podcasts (Gruber's The Talk Show and Thompson's Exponent with James Allworth). So now that they are regularly on a podcast together- well it's a no-brainer that I'm going to like that one as well.

Dan Moren's Adventures in Self-Publishing

Dan Moren:

Back in the mid-’90s, my friend Jason and I started up an online magazine devoted to fantasy and science-fiction. We originally set out distributing it on local bulletin boards as a self-contained app generated by a program called DOCMaker, but as the popularity of the web rose, we eventually transitioned there.

For many years, that was the most experience I had with self-publishing, until a couple weeks ago, when I decided to embark upon a new experiment: putting out ebook versions of a couple short stories in the same Galactic Cold War universe as my three novels.

Dan used Acorn to make the cover for his books. Which is awesome.

April 29, 2020

I recently received a support question that basically went like this:

Why are screenshots pasted into Acorn twice the size as those pasted into Keynote? A screenshot on my MacBook Pro at 1000x500 becomes a 2000x1000 image in Acorn. If I paste that same captured image into Keynote, it comes in at 1000x500.

The screenshot is being taken on a @2x Retina display. These modern displays will show 4 pixels for every 1 square point on the screen. We call them @2x displays because the pixel count is twice as wide and twice as tall for the images being displayed. But really the pixel count went up 4x because we doubled in two directions.

So the display is cramming way more pixels into the same space, so the DPI (aka "resolution") of the is increased to make up for this. For @1x displays DPI has traditionally been 72, but on @2x displays it is 144. And when the screenshot is taken on a @2x display, a DPI value of 144 is added to the metadata of the image.

Acorn is a bitmap image editor and it will always show pixels at a 1 to 1 ratio to the screen pixels. This is standard behavior for every modern image editor when viewing your image unscaled. You can of course change the DPI of an image Acorn, which will be written to the image file when you save it. But when editing one image pixel is matched to one screen pixel.

Back to Keynote. When you paste an image into Keynote it'll read the DPI of the image before figuring out how much room the image should take up. Keynote will then scale the bounds of the image depending on what the DPI is set to. So a 1000px wide image from an @2x display will show up 500pts across. A 1000px wide image from a @1x display will show up 1000pts across.

You can do some fun tricks with this knowledge.

Take a @2x screenshot and paste it into a new image in Acorn. Open up Image ▸ Resize Image sheet and change the dpi to 72. Then copy and paste the image into Keynote. It's twice as big now. Go back to Acorn and change the dpi to 36, and repeat. It's @4x now! Go back one more time and change the DPI to 288. Now the image is @.5x now.

The number of pixels in the image never changed, but the way Keynote treated the image did. (TextEdit will also look at the DPI when figuring out how to show it).

April 25, 2020

Quarantine life continues.

I'm starting to get into a groove. Work hasn't been very consistent lately, but Kirstin was off for a number of days this week and was able to handle all of Madeline's school work. I was then able to get a number of productive work days in with Acorn and other stuff. It felt good.

Speaking of, Kirstin was picking up work packets from Madeline's school and decided to hit the Starbucks drive-through to take advantage of their free coffee for health care workers. In addition to the coffee, the barista threw in a bag of beans and some chocolate covered madeleines. Kirstin said she felt guilty at first, but then realized that since she's working directly with Covid-19 patients, maybe she shouldn't. And Madeline got to eat some madeleines.

Two of our favorite lunch restaurants opened back up for takeout, which makes myself and Madeline super happy. Most of their customers were from the Everett Boeing plant, which also opened back up this past week. I think there's a good chance the plant will be closing down again because I can't imagine the virus isn't going to spread like crazy in there.

100 pull-ups a day ended up causing problems as expected, so I've cut way back. Running in the morning continues. So does my scheming for trying to build a little climbing wall somewhere in our yard.

I recently found out our county sheriff is an asshole, saying the governor’s stay-home order is unconstitutional, so he's not going to enforce it. Over 200k people have died from Covid-19 as of today. 52k of those in the U.S. I don't understand why face masks of any kind aren't mandatory yet.

For the past three weeks I've picked a day during the week and had pizza takeout for lunch in my driveway. A couple of friends would visit for a few minutes, at a comfortably safe distance, and they got to take home some pizzas. Madeline also delivered a couple of pizzas to some neighbors. It's a little bit of work, but it feels really good to talk to folks I haven't seen in a while. Especially the people I used see multiple times a week (usually climbing friends from Vertical World). Holy crap do I miss the climbing gym. The weather is starting to get nice and I'm hopeful that the national forests will open up for climbing soon, and that'll be great. But not being able to hang with my friends for… maybe a year or more? That hurts and I try and not think about it.

Of course worse things could be happening to us right now, so I hate to complain about anything. We're certainly better off than most, living in a suburb North of Seattle.

Gurman Says ARM Macs Are Coming

Mark Gurman writing for Bloomberg: Apple Aims to Sell Macs With Its Own Chips Starting in 2021.

Apple Inc. is planning to start selling Mac computers with its own main processors by next year, relying on designs that helped popularize the iPhone and iPad, according to people familiar with the matter.

The Cupertino, California-based technology giant is working on three of its own Mac processors, known as systems-on-a-chip, based on the A14 processor in the next iPhone. The first of these will be much faster than the processors in the iPhone and iPad, the people said.

While rumors of ARM Mac have been around for years, it really does feel like it should be happening sooner rather than later. I'm personally a big fan of the idea. When Macs switched from PPC to Intel Acorn and VoodooPad were there on day one. I actually had both up and running on the new processors in under an hour, and I expect to do the same again for both Acorn and Retrobatch.

This part of the reporting gave me pause though:

Apple is designing more of its own chips to gain greater control over the performance of its devices and differentiate them from rivals. Getting Macs, iPhones and iPads running the same underlying technology should make it easier for Apple to unify its apps ecosystem and update its computers more often.

(Emphasis mine).

I don't think unifying the chip architecture would make the app ecosystem any more unified. Apple could do this today if they really wanted to, fat binaries (where different cpu architectures are combined in the same application) have been around forever. Major frameworks are already on both architectures, which is the biggest hurdle. I think the problem is more philosophical, or maybe Apple just lacks the will or vision to actually get it done today, if ever.

Crafting "Crafting Interpreters"

Bob Nystrom on making his new book "Crafting Interpreters":

I hand letter everything. It takes a long time. I used to do graphic design, and I have this weird tic where any time I see something that looks handwritten, I look for multiple instances of the same letter to see if they are different or if the design just used a handwriting font. It’s almost always a handwriting font and I die a little inside to see the illusion evaporate.

Well, this is my damned book and no reader will ever feel that disappointment. Every single fucking letter in every one of the illustrations was hand lettered and is unique.

Also, if that’s not obsessive enough, I spent time changing my own handwriting to better match the text font of the book. I taught myself to write double-story “a” and “g” letters and practiced by filling pages of paper with the same letter over and over.

It's a delightful read.

April 6, 2020

I think it's kind of important to record what our daily activities are as this pandemic rages the globe. Even though it's super boring, I bet it'll still be interesting to read some day, maybe even informative. Maybe my daughter will look back at it 50 years from now, as a new pandemic rages the globe. (Make sure to put on masks right away, kiddo. You don't look stupid, you're just ahead of the curve).

It's a great time to get some home projects done. I guess. We're over 10k deaths now in the US. I'll just throw that stat out there.

Right, home projects. I already work from home, but it's hard to get programming done while I'm also watching Madeline. So when she's done with worksheets or anything that she can basically do with minimal help, we'll use the leftover time to do house projects. Most recently, I finished putting up the fascia for our deck (which was put on hold last November because of weather). The handrail posts are up as well and they look pretty good. We just need to order the actual handrails and then we'll be all set. The garden is being de-weeded as well when the days are nice. Madeline planted some seeds in her section of the garden, but she can't remember where exactly.

The apple tree seedlings are coming along, but we've lost 2 out 6. I think at least 4 will make it.

Since rock climbing isn't happening anymore, I've been looking at ways that we can keep in shape while not getting any vertical milage. I have a box of climbing holds, I just need to figure out to build a little bouldering wall. This is proving to be kind of difficult- we have high ceilings in a couple of spots at our house, but not necessarily where we'd want a climbing wall. I'd like to build one in the shed, but we already have things in the shed so where will they go? (I should get another shed obviously).

We do have a retaining wall that's 8' at one spot! It won't take artificial climbing holds, so I've been experimenting with using construction adhesive to glue actual real rocks to it. So far so good- but it takes a couple of days for the glue to cure. When I'm done it'll be about 60' of traversing, which we can use to keep up endurance. It's actually usable now without any holds, but what's fun about that?

I'm starting to run a little more, and I'm trying to do 100 pull-ups every other day. I'll need at least one rest day between big sets to remain (hopefully) injury free- chronic tendonosis is pretty common in climbers and I'm certainly no exception.

Madeline's spring break is officially this week- but we're obviously just sitting at home. Schooling continues with some helpful worksheets and such from the school district. Google Classrooms starts up next week which will certainly be interesting. WA announced today that schools will be closed for the rest of the school year. I feel pretty bad for Madeline, as she's an only kid and doesn't have anyone her age to goof off with. I probably feel worse for her than she actually feels. I know she misses friends but is actually doing better than I thought she would.

Madeline is still obsessed by Zelda BOTW, continuously asking me questions and if I have discovered various objects or places yet.

Kirstin's hospital is still super short on masks. She's picked up some extra days since our previous plans for this week were canceled.

Family members are losing their jobs.

Omni laid off a number of folks last week, so that was a kick in the pants. Of the ten laid off, two I play Destiny with regularly (Kristina and Brian), Mark and Joel seem to have always just been floating in my circles, and Brent I've been friends with since the summer of 2003. Remember to support your indie companies by investing in their products!

Every night at some point, I find myself blindingly furious at our science-ignoring administration and anyone who excuses them.

Another week goes by with many more to come.

The Amazing Short Guitar Sounds of Kortney Sweikert on Instagram

I stumbled across Kortney Sweikert's Instagram page about a week ago, and I can't stop going back to it. It's a collection of original songs as well as a bunch of covers, just her on the guitar. Sometimes with loops for background. What she's chosen to share are incredibly short clips of these songs, plucked right out of the middle.

Here's the thing. Anyone can learn guitar, and after a number of years of practice you too will be able to play these songs. I've been playing for 27 years myself.

But you won't be able to play like her. What she has is an incredibly rare gift, which I'm sure has been honed to perfection over many years- but it's a gift nonetheless. She's shaping the notes around each other, hitting each tone at just the right moment, and blending everything together in a way that should be impossible. The sounds aren't just more than the sum of their parts, it's an order of magnitude more than the parts. The music is made out of the atmosphere.

I'm guessing most people won't be able to hear it. Maybe it's something you only pick up on after years of really listening to music. But- it's like the difference between Olly Moss and your average digital artist. This feels like Robert Johnson level playing.

Anyway, here are a few of my favorite clips:

"Just play."

"The Rain Song - Led Zeppelin pt.2"

"Never Going Back Again"

"2am 🌖"

March 31, 2020

I've just typed the magic commands* and let the servers do their thing and now Retrobatch 1.4 is loose on the world.

There's a couple of interesting new features in this update I'd like to call out. First up is JavaScript expressions in Retrobatch Pro. Various nodes in Retrobatch which allow you to set the size or length of a value (such as the Crop, Border, Gradient, Adjust Margin nodes) now have an option of running a little snippet of JavaScript code to figure out the value. This is a super powerful feature, which you can read about in our JavaScript Expressions documentation

Let's say you have some images of varying sizes, which are all at 480 x 380 or smaller, and you want them to expand to meet that size. But- you only want it to grow evenly on either side of the image, but you want to keep a baseline so only transparent area is added to the top of the image, and the bottom stays in the same spot. This little picture of the new Adjust Margins node shows how this can be done:

Yes, this is an oddball (and very real) case- but there's a billion of these little oddball cases out there. With the new JavaScript expressions support, these small but hard to do scenarios are now super easy.

And yes, all of the JavaScript support in Retrobatch now sits atop FMJS, which any developer can use to build similar support into their apps.

What else is new?

File numbers with leading zeros for the Write node. You can add (and it's case sensitive) $FileNumber04$ in the File name: field of the Write node to have the file number of your image written out as part of the name, with a padding of up to 4 zeros. If you'd like to pad that number to 6, you would enter $FileNumber06$, and so on.

The Mask to Alpha node got a new "invert colors" option. Normally Mask to Alpha will convert the black areas of your image to transparent, and the white to opaque (with gray somewhere inbetween). With the new Invert Colors option, Mask to Alpha will now convert the white areas of your image to transparent, and keep the black opaque. This is great if you are scanning in line drawings from your own artwork, and want to make the backgrounds transparent.

This request comes up a lot in Acorn as well. Previously you'd have to add an Invert Colors node (or filter for Acorn), then the Mask to Alpha, and then Invert Colors again. Now it's just a checkbox in Mask to Alpha, which is super easy. I've also added an update to the same filter in Acorn for the next release. You can grab a preview of it from here.

And finally for my short list, you can now make a droplet which doesn't take any files. Why is this useful? Well, imagine you have a workflow that reads an image from the clipboard, resizes it to a specific width, and then writes it back to the clipboard. Now you can make a little droplet to do just this. Just a double click from the Finder (or a single click from the Dock) and your workflow is run.

The full release notes for Retrobatch 1.4 are available in the usual place.

* ./bin/otbuild.sh -e 1.4

March 28, 2020

We've been officially quarantining for 15 days now, but there were a couple of days in early March where we kept Madeline out of school because it looked like my wife Kirstin might have caught something. It cleared up quickly though, so back to second grade Madeline went. For a week anyway. Then school was called off till April 27th.

I've been baking more bread and posting pictures of pizza to Instagram. I've also been writing a little more frequently on my pizza blog and I have more things I'm working on for that site as well. (If you were wondering why all my pizza posts stopped years ago, well they didn't stop they just moved).

It's a bit odd, because I usually make extra bread loaves for my neighbors but I haven't really been doing that because of coronavirus and I'm scared I'd pass it on. Maybe I'm infected and I'm just asymptomatic? I was a bit dizzy a few days ago, which is a common symptom. But I've had dizziness prior to the outbreak as well. And there's lots of pollen in the air too. Who knows.

Kirstin works as a PT at Providence hospital, in the building where the U.S.'s first COVID-19 case was treated. She's still going into work, where they ration masks. And we live in Snohomish county, where the first U.S. outbreak occurred. Madeline had a bad cold for a little over a week, but she's all better now. Was it just the cold? Who knows. We've got no tests.

I've been messaging with friends in St. Louis, where I grew up. I get the impression that parts of the city are taking it very seriously, and some parts aren't at all. That doesn't bode well. Italy didn't take it seriously at first and as I write this, they just passed the 10k mark of confirmed deaths from coronavirus. New York is being hit super hard right now as well. Things are going to get way worse.

Dog walks are still happening in the gulch if it's not too windy. There's hardly anyone else in there thankfully, just a few locals. I bought Madeline the Zelda Breath of the Wild guide, which she pours over. It's something she really enjoys reading and the game is super fun for her- she mostly plays as a tourist visiting the different towns and stables and finding horses and exploring. She typically does the same in Minecraft, but Zelda is the new hotness right now.

Our favorite climbing gym laid everyone off. We're friends with everyone there, so it's sad not to see them anymore and know they are all out of jobs. The other local climbing gym claims they will be open on April 6th. I think they are tad optimistic about that. A couple of my favorite restaurants were doing take out, which we took advantage of while we could, but they've shut down at this point. Boeing's big factory up here closed and that was a big hit to the local restaurants.

Things are still happening for Flying Meat. I was already working from home so that's not a change (I gave up the office years ago). Having Madeline at home and getting work done is a bit of a challenge, but I'm finishing up Retrobatch 1.4 and still trying to figure out which new features will make it to Acorn 6.6. I'm also hacking away on little side projects as usual. Destiny still continues in the evenings.

We'll see what the next week brings. But if you're doing the math, it doesn't look like things are going to improve anytime soon.

March 25, 2020

This is a quick developer PSA. MacOS 10.15.4 was just released, and there was a minor change in the way NSAttributedString's -initWithHTML:options:documentAttributes method works. Previously (10.15.3 and earlier) if you passed a HTML snippet using HelveticaNeue with a size of 20, the minimum line height for the attributed string was set to 25 (and if you passed 40 for the font size, you'd get 49). With 10.15.4 the minimum line height is now set to 0. I'm actually in favor of this change, but if you were expecting certain layouts to happen based on the previous defaults, things might look different for you.

How did this happen? I'm guessing something in WebKit probably changed, which AppKit probably uses to convert the HTML to an attributed string. Why did this happen? Beats me.

You can test it out on your Mac using Python.