Weeknotes 2025 W25: Blades in the Dark
Quick bits:
-
I had stopped doing my morning pages for a while, but I am fully back for it now. It is consistently a great thing to do (especially when accompanied a fresh cup of coffee). I stocked up on ink, and I so I won’t need to worry about my fountain pen running dry for quite a while.
-
I found a typo in my master dissertation. It is a bit late at this point, given that I handed it in about fifteen years ago.
-
The Infection will need a bit longer to be overcome.
-
It continues to be the case that finding one’s glasses is easier when already wearing them. Fortunately, when I am not wearing them, my glasses are consistently in the places where I have a good reason to take them off.
-
I published a tiny bug-fix release for my Solitaire game.
-
I guess I am playing TTRPGs now! M—— organised session 0 of a new Blades in the Dark campaign, for which I am rather excited.
For Deniki, I’m struggling to figure out a good way to handle state management.
It is a 100% AppKit application, which gives me the power and the flexibility to build what I need. This is great, but also comes with quite the overhead: state management just isn’t an interesting problem to solve.
I have experimented with writing small parts in SwiftUI, which trades flexibility and power for conciseness, but sharing state between SwiftUI and AppKit is something I have no real good clue how to do. My attempts at using Observation framework have failed, as has my experimentation with the older ObservableObject protocol. More research is needed.
There’s also Cocoa Bindings, which could be useful in reducing some of the boilerplate. But does that increase the overall complexity, or decrease it? How does it interact with Observation/ObservableObject?
My curiosity got the better of me, and I tried Gemini again. It told me to rewrite my macOS Swift application into Electron/JavaScript/Tailwind. I said no, then it suggested rewriting it in Java+Swing.
Even when I got it to generate Swift/AppKit code, it often doesn’t compile, and even if it does, in 95% of the cases it does not actually work, either due to runtime exceptions or the code having a distinctly different effect from what I intended.
Why I still bother with LLM technology is beyond me.
The big question that is looming over all this: given my consistently abysmal experience with it, how can it be that there are people who claim that LLM-based code generation is genuinely helpful for them?
Entertainment:
-
I finished Unavowed.1 Even though I had played it before, I entirely do not remember the twist. Good stuff.
-
With Twin Peaks2 available on Mubi, I started rewatching it all. I am halfway through season two, which is not nearly as bad as I remembered. In fact, the whole series is even better than I remembered.3
-
I did not rewatch Midsommar4 even though I was tempted.
Links:
-
klara bezug Prints and Posters: I have a few of these and they’re delightfully odd.
-
Dishonored 2 Devs Explain the Clockwork Mansion: The Clockwork Mansion is probably my favourite location in the series.
Tech links:
-
Technotes (Zhenyi Tan): Neat!
-
Can I fix tech’s awful keynote presentations? (Good Work)
-
Double-Entry Ledgers: The Missing Primitive in Modern Software (Paul Gross): I am not sure I’d call this a missing primitive, per se, but double-entry ledgers deserve more attention.
-
mhoye/maintenance-terms: Project Maintenance Terms: I think this is quite relevant to the open-source(-ish) software that I am making.
-
Rolling the ladder up behind us (Xe Iaso)
-
Contra Ptacek’s Terrible Article On AI (Nikhil Suresh)
-
Unavowed (Wadjet Eye Games, 2018), published by Wadjet Eye Games. ↩︎
-
Twin Peaks, written by David Lynch and Mark Frost (Lynch/Frost Productions, Propaganda Films, Spelling Entertainment, 1990). ↩︎
-
Unfortunately, the car says “Sheriff Department” while the building is titled “Sheriff’s Department.” This discrepancy naturally makes the entire series barely watchable. ↩︎
-
Midsommar, written and directed by Ari Aster (A24, B-Reel Films, Nordisk Film, 2019). ↩︎