004Journal

Writing.

Thinking about design, development, typography, and the craft of building for the web.

One paragraph from an essay on web typography is set twice in Georgia, both times at the same 487-pixel measure and with identical line breaks, so that only the word spaces differ. The left column is justified: to reach its flush right edge the word spaces are stretched to between 1.0 and 2.1 times their natural width, and a river runs down it — five consecutive lines whose word spaces line up into a vertical channel of white, traced here in blue. That column also leaves a widow, the single word defaults stranded alone on the last line of its paragraph. The right column is set ragged right: every word space stays at 1.0, and the slack that justification would have spent inside the lines collects at the right-hand edge instead, where the real line ends are traced 1:1 as the rag. The deepest ragged line is 43 pixels short, and that is exactly the white that drives the same line in the justified column to 2.1 times spacing. A baseline grid on a 28-pixel pitch runs under both columns, with the leading dimensioned between two of its lines in the gutter. A measure axis below runs from 45 to 75 characters, the comfortable range, and is marked at 58, where this setting actually counts out.

A Field Kit in PETG

Eighty-odd printed parts hold a flying magnetometer together: clamps, cradles, couplers, and a towed sensor pod, all printed overnight on a desktop machine. Notes on 3D printing as a field-engineering practice, revision by revision.

4 min read

Designing for an Invisible Constraint

A drone that measures magnetic fields cannot be built like other drones: every screw is a design decision. What a survey aircraft taught me about constraint-first design — a lesson twenty years of typography had already tried to teach.

3 min read

The Agent in the Workshop

I gave Claude three specialized subagents — a mount designer, an OpenSCAD author, and a print checker — and let them iterate real drone parts through eighteen logged revisions. Notes on what AI-assisted mechanical design actually looks like.

4 min read

The Performance Budget of a Typeface

If the brand face earns its place, make it cheap: one variable file instead of four statics, ruthless subsetting, honest font-display, and a fallback engineered so the swap is invisible. Font loading as an engineering discipline.

3 min read

The Stack Under the Vibes

Vibe coding works — I've shipped a portfolio, AI platforms, and drone hardware this way. But it only works because three unfashionable tools hold it up: git for undo, GitHub for memory, and a plain Linux box you can actually reason about.

4 min read

The Zero-Kilobyte Font Stack

The fastest webfont is the one you don't ship. When system font stacks are the right typographic decision for high-performance applications, how to build one well in 2026 — and when the brand face still earns its bytes.

3 min read

Choosing Type for Data-Dense Interfaces

Dashboards, terminals, and monitoring screens ask different questions of a typeface than prose does: do the digits hold columns, can you tell 0 from O at 11 pixels, does the bold survive a dark theme? A selection checklist for interfaces under pressure.

3 min read

On Typography and the Web

Why typographic craft still matters in an era of design systems, utility classes, and AI-generated layouts.

3 min read

Building for Longevity

Thoughts on choosing technologies and architectures that age well, and why simplicity compounds.

3 min read