Here’s a short definition of the two terms: Cohesion is about how well elements within a module belong together and serve a common purpose. Coupling is about how much one module depends or interacts with other modules. Thus, cohesion is an intra-module concern whereas coupling … | Continue reading
When you work with NSTextView and happen to use insertText(_:) to programmatically insert text, you get an undoable action for free. This might give the impression you get undo/redo functionality for free. Eventually, you’ll notice how other changes don’t have an affordance in th … | Continue reading
Reactive, declarative code is sequentially cohesive: you have a sequence of events and reactions to events, and it’s pieces are tied together real close. The processing chain itself is then a function or feature of the app. The chain of operators is a thing itself; the step-by-st … | Continue reading
Ever since Brett Terpstra posted about ⌘← to jump to the first character of the line back in 2014, I’ve used behavior like this in Xcode. Nowadays, ⌘⌫ automatically deletes up to the beginning of the line, stopping at whitespace. That’s quite handy to rewrite the current line. Th … | Continue reading
Thanks everyone for joining the AMA yesterday! Was a fun experience :) We talked about a couple of technical and historic things. Here’s an outline of the pieces: My first App Store success When I released Calendar Paste v1 in 2012, I shaved my head and got a mohawk to cel … | Continue reading
On Reddit, there was a recent thread called “Your dependency on external packages reduce with experience”. I have been using zoom-window in the past to temporarily “unsplit” buffers. So this: ┌───┐╔════════════╗┌─────┐ │ │║ ║│ │ │ A │║ C ║│ B │ │ │║... | Continue reading
I’ve added a couple of “hidden pages” to the website: Edward Yourdon: Structured Design (1979) Related wiki page: Cohesion Wiki pages on MVC, MVVM, DRY Receive Christian’s new posts via email | Continue reading
I realized that my officiel 10th “company” anniversary is just around the corner! To celebrate and hang out with people online, I’d like to party with all of you in a live chat and video. To round things up, I’m doing this Ask Me Anything style. No agenda from my part, but I’m op … | Continue reading
How long does it take to become a true SwiftUI master? How far am I on my own way to mastery? 🤔 Let’s quantify and have a wild guess! Point of Reference: Text Kit I start this introspective journey by looking at another topic I feel like I could become quite the expert, e … | Continue reading
YouTube video of today's evening sketching This time I remembered to record our weekly sketch-together over Discord. Here’s a 4x speed version with narration of this evening’s sketches. The focus was on tonal values, so no colors, just pen and ink, then ink washes on watercolor p … | Continue reading
Pop quiz! What is the output of this program, e.g. when run in a playground or an autoclosure block? import Combine class ValueHolder { @Published var value: Int = 0 init() {} } let valueHolder = ValueHolder() let sub = valueHolder.$value.sink { value in print("received", v … | Continue reading
To get more structure into my day so I get work stuff done in time and have free time in the evenings to tackle other things, I’m now experimenting with notifications to end the work day. The following is a translated version of the current data. I am using the German term "Feier … | Continue reading
When you have nested and complex UI components with multiple sub-view controllers, passing an optional output port (event handler or delegate) down the tree is cumbersome. There are two straight-forward approaches: Sub-components use the output port directly: When you inject th … | Continue reading
My blog posts here usually have a line like: tags: [ swift, xcode, codesigning ] For tags I don’t use a lot, I sometimes don’t remember how to write them. So I do the only sane thing – and go to my website’s list of tags and look for a match. Got annoyed by that now after a coup … | Continue reading
Tyler Hall wrote about "Half-Assed Mac Apps " the other day. His argument goes like this: Catalyst made it easy to deploy iPad apps to the Mac. But iPad apps don't make the best experience on Mac. Users ... | Continue reading
In a Discord chat, we've recently talked about how well funding for Blender turned out (https://fund.blender.org/). At the time of writing, they get $137k per month for development. I cannot say if that's ... | Continue reading
My grandmother approves of Atkinson Hyperlegible free font for her phone book printout | Continue reading
The project that I've been working on over the weekend, I worked on in emacs. This is part of my re-learning the basics of text editing and programming in emacs to slowly move away from TextMate when it ... | Continue reading
My favorite monospace programming font, Fira Code, was updated to v2. (https://github.com/tonsky/FiraCode/releases/tag/2) This is even supposed to solve an issue (https://github.com/tonsky/FiraCode/issues/459) ... | Continue reading
Don't panic. DevMate's components can be replaced, one by one. Here's a breakdown of it all. | Continue reading
Today I work on The Archive. The focus is on an issue brought up by the community (https://forum.zettelkasten.de/discussion/541/bug-v1-2-x-note-list-doesnt-update-on-external-change). ... | Continue reading