Programming
AppKit and UIKit as a competitive advantage
We all rushed to SwiftUI when it came out: it was the future, wasn’t it? New generations of programmers would be able to achieve more stuff with less code, and we, old-timers, didn’t want to be left behind.
SwiftUI is no longer the future—it’s the present, albeit a present that’s permanently catching up with the past. Though it’s improved a lot, creating truly polished applications still requires reaching out to AppKit and UIKit, two fantastic frameworks that we, old-timers, once tried become decent at.
It turns out we have the edge: look who’s laughing now.
My new keyboard
When I started using Linux, in the late 90s, I was looking for a familiar editing experience—something resembling the IDEs I was used to: QBasic, Turbo Pascal, etc. Just by looking at it, I thought that Emacs fit the bill. But it took me a minute of actually using it to understand how wrong I was.
So I turned to the bi-modal vi camp and learned it well. As I became more familiar with the Unix philosophy, I also learned ed. I still use both whenever I need to edit something quickly.
The Bell-Labs-esque establishment frowns at Emacs even more than at vi, and I never ever again came close to it.
But now, as a 44-year-old practicing various Lisps, I’ve developed some FOMO, and bought a second-hand copy of Learning GNU Emacs: A Guide to the World’s Most Extensible Customizable Editor (2005).
My favorite way of procrastinating is buying new stuff: “I’m not incompetent: it’s the tools I have, they’re just not up to my virtuosity.” I could have gotten used to the finger gymnastics that my Magic Keyboard was demanding from me. Instead, it’s my girlfriend who will have to get used to the noises of my new HHKB Professional Classic.
I chose the cabled version because I couldn’t tolerate the bulge of the wireless variants. And I picked the Classic because its looks bring me fond memories of the 90s, when life was easy because I didn’t need to spend my very own money to buy overpriced toys.
Clojure has a marketing problem
I’ve been using Datomic these days, but the official documentation isn’t helping a lot: broken links, outdated information, no sense of narrative. If I weren’t a beginner, I’d be tempted to create an unofficial site and give some love to the material. In fact, I’m already tempted, despite being a beginner!
Sadly, the problem goes beyond the content and beyond Datomic.
I can totally imagine a Clojure-curious human skimming through the official sites and feeling that the “Clojure is dead” cliché is actually true. The UIs look so dated or are just plain hideous, and the copy is so unpolished...
Clojure is amazing and has the most wonderful people working on it and with it. We in the know may not need it to also look good—but I fear many potential newcomers do, and we’re scaring them away.
An Introduction to Isolation in Swift
Recently, someone asked me a question about actor isolation. The specifics aren’t important, but I really got to thinking about it because of course they were struggling. (…) Here’s breakdown of the concepts, in the simplest terms I could come up with.
It’s an excellent article.
SwiftUI constrains me, and that’s good
I love constraints. Perfect rhymes in songwriting are my favorite example: I could talk for hours about how they improve the understandability of a song, or how they enrich semantics, etc., but by far the most important benefit is that they introduce a design constraint. They restrict my options, reducing thousands of possible line endings to maybe one or two. That’s good.
Jeff Johnson notes that GUI toolkits such as Interface Builder, conceived to boost app developers’ productivity, often fall short. Their primitives are flexible, but this flexibility allows for choices that go against the platform’s idioms.
The opposite is true for SwiftUI. I find its rigidity frustrating, but it discourages non-idiomatic UI patterns. As a result, my designs are usually better.
Now, it’s of course possible to create terrible designs using SwiftUI—just look at the average how-to Medium post. Perhaps we should invite SwiftUI to constrain us even further.