Blog
Building i18n tooling in the open.
Design notes, honest benchmarks, and lessons from the third time around — written by the maintainer, not a content team.
01 — Posts
The third time I built JavaScript i18n tooling
From qooxdoo's gettext macros to an enterprise Lingui migration to Palamedes — what repeats, what finally changed, and why the third design is source-string-first all the way down.
~8 min02A calmer path for JavaScript i18n
Why 'calm' is a feature: one runtime model, one identity model, and a catalog workflow that doesn't reopen with every framework decision.
~6 min03Measuring Palamedes honestly
Benchmarks are easy to game and easy to distrust. Here is the methodology: same corpus, semantic validation after every run, checked-in reports anyone can re-run.
~7 min04Browser-verifying i18n across six frameworks
How 24 example apps get driven by the same verification flow in CI — and why versioned screenshots beat compatibility tables.
~6 min05What we delegated to Ferrocat and why
Why Palamedes keeps catalog parsing, ICU diagnostics, merge behavior, and storage semantics in Ferrocat instead of spreading them across every adapter.
~7 min06From Lingui to Palamedes without changing how authoring feels
A migration story for teams that want familiar macro-shaped authoring while moving the machinery underneath to a stricter source-string-first foundation.
~7 min07Round 1 micro-content
Short proof-led posts for the first Palamedes content round, each tied to one concrete repository-backed evidence point.
~4 min