Kaj Kowalski

kjanat · Amsterdam

I read specifications carefully and file against whichever side turns out to be wrong. Sometimes that is the implementation, sometimes the standard, occasionally both in the same week.

In other people's words

jampe/kp2bw · the original author, in his README

This repository is no longer under active development by the original maintainer. The project has been forked and is actively maintained at kjanat/kp2bw. The fork uses bw serve HTTP transport instead of the subprocess-based approach in this version, supports nested collections, proper org/collection item creation, and ongoing bug fixes.

He also redirected seven open issues to the fork.

ewels/mkdocs-quiz · Phil Ewels, author of MultiQC, co-creator of nf-core

I was poking around in the Network tab at the various forks of this repo and spotted kjanat/mkdocs-exam by @kjanat

He then opened eight pull requests in his own repository, each crediting a feature back to my fork: numeric answers with tolerance and units, progressive hints, matching and ordering questions, partial credit, timed questions, essay questions, conditional asset injection, and accessibility styles.

astral-sh/actionlint · ten pull requests

Adapted from kjanat/actionlint@47ff132

oven-sh/bun · commit 302d15da

Co-authored-by: Kaj Kowalski

My pull request for the npm alias resolution work was closed and the work was folded into a larger pnpm-parity PR opened by Bun's creator, landing as a co-authored commit. Shipped in v1.4, credited by name in the v1.3.6 and v1.4.0 release notes.

patrickjaja/claude-desktop-extra v1.26832.0-3 release notes

Contributed by Kaj Kowalski. The release job now publishes a GitHub build-provenance attestation for every release asset before anything goes live. The step is fail-closed ahead of all publishing: if attestation fails, the release aborts cleanly with every channel still on the previous version.

Specification work

RFC 8410 erratum 9045 IETF · Technical · reported 2026-07-29

The ASN.1 module in Section 9 lists CERT-KEY-USAGE { keyAgreement } for pk-X25519 and pk-X448, while RFC 9295 Section 3 permits encipherOnly or decipherOnly alongside it. RFC 9295 replaced Section 5 and never touched the module, so the ASN.1 has been out of step for eight years. Argued from RFC 5912, RFC 5280 and RFC 9295.

w3c/svgwg #1116 merged

Corrected swapped href targets for open and closed subpath terms in the SVG specification's definitions.

no-hyperlinks.org convention

A de facto convention for controlling OSC 8 terminal hyperlinks, in the tradition of NO_COLOR. Two environment variables, one precedence rule: NO_HYPERLINKS disables, FORCE_HYPERLINKS overrides detection, explicit flags win over both.

Built

svg Rust · LSP

An SVG language server. Seven crates, four tree-sitter grammars including injected ones for path data, transform lists and paint values. Hover carries MDN links and Baseline browser-compat status generated from spec data. Colour handling from hex through oklch(), color-mix() and var() resolved out of embedded stylesheets. Published to crates.io and npm with prebuilt binaries across fourteen platforms.

mosaic Rust · typesetting

A typesetting compiler with its own source language. Fourteen crates: parser, expression evaluator, layout engine, font handling, PDF and HTML backends, CSL bibliography, package manifest and resolution, incremental cache, language server. Pure-Rust Adobe Font Metrics parsing underneath the PDF backend.

micro509 TypeScript · PKI

A zero-dependency PKI toolkit for real certificates.

actionlint Go · maintained fork

Static checker for GitHub Actions workflow files. An actively released fork of rhysd/actionlint with build-provenance-attested binaries, a fork-owned Go module, and multi-platform images at ghcr.io/kjanat/actionlint.

recipe DSL · pharmacology

A domain-specific language for pharmacological recipe notation, with a tree-sitter grammar, a language server, a Shiki pack and a TextMate grammar.

Merged upstream

Plus smaller fixes merged into go-task, nuxt-content and others, and three extension releases published to the Zed registry.

What I work on

PKIX and cryptographic conformance. X.509, ASN.1, key usage semantics. Finding where implementations and specifications disagree, then filing against both when both are wrong.

Supply chain and provenance. Build attestation, byte-reproducible archives, signed release containers, commit signing.

Language tooling. Parsers, tree-sitter grammars, language servers, formatters and linters.