Blog

Sep 29, 2026

Debugging race condition that was actually a lifetime bug

A random QThread crash looked like a race condition, but turned out to be an orphaned editor buffer and delayed garbage collection.

Sep 16, 2026

Next steps for navigation

Rethinking editor navigation around lightweight histories, on-demand search, and local structure.

Sep 11, 2026

Redesigning the title bar

Moving from a custom title bar to native AppKit, and figuring out what to do with tabs along the way.

Sep 8, 2026

Vim bindings for Koi Editor?

Why I'm reluctant to add Vim bindings to Koi Editor, and what I might build instead.

Sep 3, 2026

Using smaller models for fast code completion

I've been using the same 1.5B model for local code completion for about a year.

Sep 2, 2026

A better use for the outline panel

A file outline is nice, but I don't like it.

Jul 30, 2026

Lexer design in Koi

Koi uses small handwritten lexers instead of syntax definitions or syntax trees. This provides direct control over highlighting and folding, with very little work at runtime.