Weeknotes 2024 W49: Mosaic
Quick bits:
-
I’ve been feeling rather sleepy this week. I had accidental siestas twice this week! Is it the winter darkness? Is it more?
-
I cleaned my shoes. Having vegan shoes is nice because you can just soak them in soapy water for a while. It was worth it, though there still is a lot of grease on them — a consequence of cycling so much.
-
I gave up on cycling this week, because a) it’s cold and wet, b) the traffic in Berlin is going to kill me, and c) my bike needs repairs after last week’s crash.
-
I’ve been playing with another idea: an article that showcases modern print-specific CSS for building delightful PDFs/printouts. CSS has come a long way.
-
I’ve been on the isotretinoin1 treatment for nearly three months,2 and so far it has not been effective as its goal. It is slow-working, so I suppose need to have more patience. Patience? In this economy?!
Shower thoughts:
- On an analogue clock, the first hand is the hour hand, the second hand is the third hand, and the second hand is the minute hand. How confusing.3
I attended a mosaic workshop J organized and I made this:
Isn’t it pretty? Needs a bit more cleaning now that I look at it, but I’m satisfied with the outcome. First time doing this, and oh is it nice to create something physical!
ddenv, as well as its predecessors, had one particular problem: when setting up services (like PostgreSQL and Redis), it’d expose environment variables with predefined/hardcoded names like DB_URL
. This meant that the application had to adjust to the environment variables ddenv provided.
No more, though! Earlier this week, I solved this with template-able environment variables. Behold:
up:
- postgresql:
version: 17
env:
DB_ADDR: "{{ .Host }}:{{ .Port }}"
- ruby
- bundle
I think this is a rather neat and simple solution.
I am slowly heading back into macOS development.
I started checking out SwiftUI, but it’s by far not powerful enough for what I need to do. One of the first things I needed was an outline view with drag-and-drop support, and that is simply not possible with SwiftUI.
So, back to AppKit it is. The last time I used it was in the Mac OS X 10.4 days4 with Objective-C, which was certainly a bit of a pain. At least Swift is a definite improvement. But nonetheless, I’m not particularly happy with AppKit:
-
The AppKit documentation is woefully lacking. Many concepts are documented with only a single sentence. Old and archived documentation seems to be the best way to learn, but it’s all quite out of date. Apple used to be good at documenting things — what happened?
-
Documentation gets stale so quickly. I bought a book macOS development with SwiftUI and AppKit, and even though it’s from last year, it’s already so out of date that I had to find help on the Internet.
-
AppKit offers no good solution for reliably managing state. There is no documentation on best practices for doing so, either. (Cocoa Bindings are icky.)
-
Many of the sample source code is incomplete or crashes on edge cases.5 The sample source code just is not helpful in building realistic applications.
-
The Swift programming language is updating so fast that old code (from just a few years ago) doesn’t compile anymore. I don’t want to think about what that means for my own future projects.
On top of that, AppKit is also just buggy (remarkably so for its maturity). This makes creating even simple applications just frustrating. Most recently, I struggled to create an inspector view. I could not figure out how to not have it intrude into the toolbar:
I’m tired of Appkit. It’s not fun. The friction is far too high. But if not AppKit… then what?
-
Pure SwiftUI? Not an option because SwiftUI lacks far too much functionality.
-
SwiftUI with fallback to AppKit? Maybe.
NSViewRepresentable
makes this a possibility.
Xcode is very much not great either. It crashes far too often, and its UI has consistency issues, with errors that refuse to disappear after they’ve been resolved. It seems the only way to “fix” the inconsistent state is to close and reopen the Xcode project.
I’m thinking about going back to JavaScript (and Electron, maybe). I know, I know — not something I thought I would be looking forward to. But it is honestly rather appealing: I’ve got the knowledge, and it would give me the freedom to come up with my own design aesthetic — a rather intriguing idea because modern UI design is rather mid.6
But perhaps Scrivener is just fine and the idea of creating my own Scrivener-inspired structured prose editor is a little silly. A lot of work for very little gain. Perhaps I’ll drop it — I’ve got more productive things on the list of ideas anyway.
Bleh.
Links:
-
The Imminence of the Destruction of the Space Program (Robert Vanwey): I was aware of Kessler Syndrome, but wasn’t aware of how enormous the consequences could be. Technological dark age coming up?
-
Airport typeface: So pretty! (I thought I linked to it in a previous weeknotes entry, but apparently not.)
-
Own your brand (Pedro Piñera): Yep!
-
The Website Manifesto (Nora Reed): Yep! (Similar argument as the previous link.)
-
When Your Hero Is A Monster (The Leftist Cooks)
-
A Deep Dive into The Caretaker’s Everywhere at the End of Time (Pad Chennington)
-
One of the Most Important Images On Earth (Hank Green, vlogbrothers)
-
The Chart Missing From ALL Spreadsheet Software (minutephysics)
-
A Short History of the 303 in 12 songs 🙂 How the 303 failed successfully - our fav TB-303 patterns (Captain Pikant)
Silly links:
-
Bürgeramt Simulator: Horrifying!
-
Wearing A Salmon On Your Head Is Back In Fashion For Orcas, After A 37-Year Break (James Felton, IFLScience): How fancy!
-
kirby vs. this blog post (mgx): I want more of this whimsical nonsense!
Tech links:
-
Certain names make ChatGPT grind to a halt, and we know why (Benj Edwards for Ars Technica)
-
Haunted by my own projects (Cassidy Williams): Relatable. Though I don’t think I’m necessary that bad at it.
-
How a BBC navigation bar component broke depending on which external monitor it was on (Josh Tumath): Fascinating. There’s no way you can predict the outcome of this bug hunt.
-
I Built Apple’s 1980s iPad Concept! (Kevin Noki): That looks amazing!
-
Also known under the brand name Accutane. ↩︎
-
I wrote about starting the isotretinoin treatment in Weeknotes 2024 W38: Sequoia letdown. ↩︎
-
This is also true for second-hand clocks! ↩︎
-
I feel old! ↩︎
-
This applies to SwiftUI sample source code, too. ↩︎
-
mid (adjective, slang): mediocre, of below-average quality. It’s modern slang, y’all. Get with the times. ↩︎