Gus Continues to Work on Acorn

Flying Meat’s Gus Mueller on the life of an independent developer in reaction to Apple acquiring Pixelmator: But today I woke up, and got to work on Acorn. And I’ll do the same tomorrow and the day after that. I enjoy what I work on and I plan on doing it for many years to come. And I truly value my independence. I love being able to work on what I want, and when I want to.

Continue reading …

Org-Mode Emphasis Keymap with Mnemonics

In Emacs Org-Mode, the default key binding to “highlight” or “format” the selection is C-c C-x C-f. This will then ask for the org-mode syntax thingie to use, i.e. */_~=+. Literally, that’s the prompt. So you have to know which character to use to embolden text. That’s *. But which one is code? It’s ~. And = is for verbatim text, while + is for strike-through.

Continue reading …

Swift Concurrency Provides Compile-Time Feedback for Runtime Behavior

If you struggle with Swift 6 and Swift Concurrency (and who doesn’t), this may brighten your mood a bit: Matt Massicotte published a proper introduction.

My personal highlight is this:

[W]e can just play around with our types, their APIs and structure, and the compiler will give us feedback about their concurrent behaviors. You can often get considerable amounts of work done without even needing to run the code! That gives you a really fast feedback loop.

The ability to iterate on a design’s runtime behavior this way is cool.

I believe I, too, felt this effect when playing around with actor isolation. But Matt really nailed expressing what this means.

It’s compiler feedback for implicit assumptions we made in the past. We don’t need to test parts of concurrent behavior if we learn to wield this tool.

Well, this is the vision.

The reality in the past year(s) and the current discussion is dominated by expressing frustrations because it’s hard to understand. It would’ve been hard before, too, but now we can’t gloss over things like NSImage being inherently async when passing actor boundaries anymore because the compiler won’t let us. And some first party API’s aren’t even properly or fully ported to Swift concurrency support, yet. And documentation is sparse.

But I do share Matt’s excitement that vision and reality will eventually conflate, and we’ll be better off then.