Open Office Hours (Daylight Saving Time): Tuesdays, 18:30 CEST (That’s 1 Hour Late)

Starting Tuesday, 2025-04-01, 18:30 CEST (in your timezone), I’ll be hosting an AMA Open Office Hour one hour later than usual.

Except 2025-04-08 (next week), we’ll be hosting our mobile meetup and I won’t be available. So I’ll be there this week on 2025-04-01, then there’ll be 1 week off, then we’ll resume the weekly recurring times starting 2025-04-15.

Why +1 hour?

My daughter is less than a year old. We don’t see a point in forcing her to adjust her sleep schedule by 1h to the same time on the clock, just because DST kicks in. 5:30pm was late during winter; 6:30pm is just as late in her day during summer.

Also, it’s our first summer together, and we don’t yet know whether she’ll be waking up earlier and wants to go to bed later as the days get longer anyway.

So we’ll stick to the sun in the sky and the sun in our lives and pretend DST never happened.

What the Open Office Hour is About

Use the time to get in touch, ask questions about apps or programming projects, discuss your own code, or talk about Zettelkasten or Emacs or sketching or woodworking.

Since starting this experiment in January, I managed to show up on a weekly basis. So you can probably plan ahead to chat.

Join on Jitsi on Tuesday.

Are you new to iOS/macOS programming and app development? You’re very welcome to ask all kinds of questions if you need orientation, be it about Swift, app or web development, programming in general, career, having a baby daughter – you name it!

Working with Process Pipe and Its 64KiB Limit

Helge Heß pointed out that naive usage of Pipe in child Processes can break your program if you pipe too much data. I wasn’t aware of this, followed his references, and here are my findings. Older Mac OS X versions had a pipe buffer size of 16KiB by default, offering 64KiB on demand; in my N=1 test on an M1 with macOS 14, I always get 64KiB buffers, even if I only send 1 Byte. Run pipe buffer size discovery tests yourself to check.

Continue reading …

NSPopover in NSTextView With Links Is Broken: Accessibility Hierarchy Slowdown

Teaser image

Calling NSPopover.show(relativeTo:of:preferredEdge:) with a NSTextView as the positioning view will slow down your app the more links your text view contains. I discovered this with auto-completion popovers in my note-taking app The Archive and hunted down the issue. In notes with ~100 links (hashtags, web links, wiki links, …) displaying the popover with completion candidates was much slower than in short/empty notes. The slowness scales linearly with the amount of links, and is related to accessibility children iteration.

Continue reading …

NSFileWrapper Sometimes Changes Modification Date to the Past

Shiny Frog’s (of Bear.app fame) Matteo Rattoti shared a repository to demonstrate a NSFileWrapper Modification Date Bug:

This repository demonstrates a bug in NSFileWrapper where overwriting a file with the same content using -[NSFileWrapper writeToURL:options:originalContentsURL:error:] sometimes causes the file’s modification date to be set in the past instead of updating to the current time.

It happens about 50% of the time.

Can reproduce on macOS Sonoma.

NSTextView Bypasses performKeyEquivalent Check for Backspace and Option-Backspace

Here’s an AppKit quirk I found out this week. Usually, the NSStandardKeyBindingResponding protocol declares standard text movement and editing functions like selectWord or moveToBeginningOfParagraph or deleteWordForward. While text view subclasses can just override these to modify the behavior, you can get the same key event handling from any NSResponder: call interpretKeyEvents(_:) in its keyDown implementation, and you’re set.

Continue reading …

Comparing Use of AI vs Learning to Code Has Nothing to Do With Knowledge

In New Junior Developers Can’t Actually Code, Namanyay argues that StackOverflow would teach you something, while AI is all about speed. The graph Namanyay shared is this: Side note: Do you remember when StackOverflow was strongly associated with copy-paste-programming without understanding, and that Real Programmers™ read manuals and books instead?

Continue reading …

Preview Mass Text Replacements with Emacs 30.1 replace-regexp-as-diff

Teaser image

Using regular expressions to perform text replacements can be tricky. Without robust undo support or version control, a preview of the changes, or checking every replacement before it’s being made, you can end up with false-positive matches and mess things up. Now Emacs 30.1 released and ships with yet another way to perform mass text replacements more safely: Use run-of-the-mill diffs to show the changes that would be made if you applied a regular expression-based replacement. I love the ingenuity of this idea, because it is so obvious.

Continue reading …

Ethan Marcotte, the Luxury of Job Choice, and Principles

Ethan Marcotte resigned at 18F not even a year after getting on the team, doing exciting things – because it’s tied to the U.S. government, and the DOGE-istas crossed principles he set up for himself. The principles are like exit strategies you would use in investing: they help to make a (morally) good decision early, so that when the stressful time comes, you can follow the plan and won’t be swayed by emotion.

Continue reading …

Important Things Are Never Just Done

Your beliefs mean nothing, and everything. The thing about a large undertaking like, say, “fixing the government”, is that in true Getting Things Done fashion, this is not a Next Action. It cannot be ‘done’. It’s also not a Project, being comprised of 2 or more actionable tasks. It’s an Area of Responsibility. It requires constant effort and realignment of one’s actions.

Continue reading …

Guilt-Free for the First Time. Burkeman’s “Meditations for Mortals”

Burkeman challenges the common notion of productivity, like striving for ever-empty inboxes and ticking of all the tasks on our to-do lists. He does that by offering paradoxical irritations (or interventions) – so that you, the reader, as a system of beliefs, have to react somehow to make sense of what you read.

Continue reading …

Free SwiftUI University Course fro -Boston College Professor

Professor John Gallaugher of Boston College has a free course on making apps with SwiftUI, to be updated in 2025: https://www.youtube.com/playlist?list=PL9VJ9OpT-IPSM6dFSwQCIl409gNBsqKTe On his website, there’s a previous iteration of the course using UIKit (which I believe is still a very valuable framework to learn in 2025, given how often you need to implement or fix things in SwiftUI!)

Continue reading …

Open Office Hours: Tuesdays, 17:30 CET

Starting Tuesday, 2025-01-14, 17:30 CET (in your timezone), I’ll be hosting an AMA Open Office Hour here.

It’s free.

Join on Jitsi on Tuesday.

  • Talk about projects;
  • Ask questions;
  • Conspire to do something cool.

New to programming or app dev? You’re very welcome to ask all kinds of questions if you need orientation, be it about Swift, app or web development, programming in general, career, having a baby daughter – you name it!