Lettera: A Refined Markdown Document Editor
For a while now I’ve been working with the people at Shiny Frog – the team behind Bear – on something new. Today it goes into beta testing. It’s called Lettera , and it’s a Markdown editor for macOS.
For a while now I’ve been working with the people at Shiny Frog – the team behind Bear – on something new. Today it goes into beta testing. It’s called Lettera , and it’s a Markdown editor for macOS.
In my teenage coding days around 2001, before I used version control systems, and for a long time, I spent a lot of time reading code just to somewhat memorize it and to know what happens where and when and how I got there. This state of mind has a distinct feeling for me, or rather: an aftertaste, that I instantly remember when I stare at a codebase that past me left with tons of dirty changes.
The very first Swift Blog Carnival is a wrap. Six folks took the prompt of Tiny Languages and ran with it in directions I hadn’t anticipated – from task runners and result builders to symbolic math and German verb conjugation. Thanks to everyone who participated!
Recently on a meetup, I was asked whether the age of manual note-taking and Zettelkasten is over now that LLM’s are everywhere and can produce so much text in such a short time that humans can’t outcompete them anymore. Outcompeting a computer on producing text was never the goal, of course.
I picked up a term that I have not used in all my years of programming, and I love it: “Drift”. As in “Specification Drift”: you write the spec at time T , implement at T+1 , learn something new about the problem domain in the process and adjust your implementation (you know, normal programming) at T+2 , then at T+3 the spec doesn’t reflect the reality of the code base anymore.
The April Carnival is closed. See the roundup of all submissions . To kickstart the Swift Blog Carnival , I’ll pick a topic that is inoffensive (I hope!) and applies to the vast ecosystem of Swift programming: Tiny Languages .
It took me a decade to try Emacs again, for reasons totally unrelated to computer programming (task management!), and a lot of effort by my pal Sascha Fast . In hindsight, I realize I had to learn a couple of things first. This is my contribution to Emacs Carnival March 2026: Mistakes and Misconceptions , hosted by Philip Kaluđerčić.
What if “bicycle for the mind” never meant that it’s a way to speed up, but a way to exercise? Since in 2026 nobody uses bikes to exercise anymore, the more understandable metaphor would be “a Peloton for the mind,” an ergometer to get your mind-muscles into motion at all before they atrophy. Then the goal is not to be quick, to get stuff done – at least not for you, personally, – but to learn and…
Put away your Betteridge’s Law of Headlines , I genuinely don’t know the answer :) In “Training large language models on narrow tasks can lead to broad misalignment” , Betley et al found that fine-tuning LLM’s with e.g. insecure coding practices can affect the outcome of non-coding related answers in a bad way.
In November, I posted how to make Claude Code mark itself as the author of git commits. You can do the same with OpenAI Codex.
Agentic engineering practices changed from “you should commit everything yourself” to giving the agentic tools more autonomy for example in order to try out different things to implement a change. Small git commits are part of that toolset. Here’s how to teach Codex CLI to self-identify as the git author.
Shout-out to FreeBSDKit : FreeBSDKit provides idiomatic Swift, C and C++ interfaces to FreeBSD’s unique system features including Capsicum sandboxing, jails, process descriptors, kqueue-based signal handling, and inter-process communication with descriptor passing. The framework embraces move-only semantics (~Copyable) to model resource ownership explicitly in the type system.
Over on the Zettelkasten forums, Edmund Gröpl, in a post: “On Zettelkasten Productivity” , proposes to reframe the “how many books have I written” lifetime achievement number as “how many books have grown out of what I read”, showing how small the ‘tip’ of our productivity is compared to the huge foundation of what we read.
I really, really don’t like how I get ebooks onto, and notes off my Supernote e-ink tablet. I’ve had it for a year now. Great device. But the stuff I create just … is there. I don’t want to connect to the web UI to push an Upload button to select a file to upload (drag and drop doesn’t work!) just because I’d like to read a new book; and I don’t want to sift through filenames, hastily cobbled…
Completion within Emacs is not just about “intellisense” auto-completion as you type, or tab-completion in command prompts. When I think of “completion” within Emacs, I think about all operations within Emacs being (closed over) textual representations. Text buffers form a complete representation of process interaction in Emacs.
Tony Arnold shared a video by Dr. Helen Edwards that captures one important insight: The people who would’ve adapted to the next thing you did not see coming are gone. Institutional knowledge is not a stockpile you can extract and keep. It’s a river – cut off the source, and it dries up. — Dr. Helen Edwards
I noticed that in all terminal emulators I tried (iTerm, Ghostty, kitty), I rely on a system-global shortcut to show me a session that I use whenever I need to terminalize something right now, right there, like ffmpeg something or bulk delete with a pattern or convert magick an image. I had this for ages, and I miss it when it’s not there.
The Xcode 26 System Prompts collection contains a couple of chat templates, but more interestingly: typical LLM-targeted documentation of new-ish technology to prime their context for stuff that’s not well-represented in training data.
I was reading the SendableMetatype docs because the new NotificationCenter messages I was catching up on use that in the API headers.
I learned threee new things when I read Doug Gregor’s “Improving the usability of C libraries in Swift” blog post that may also affect your daily life importing C libraries: Until today, I was under the impression that you can make C functions sound a little bit nicer and add argument labels with SWIFT_NAME mostly, but this is something on a different level.