---
title: "Blog Voice Measured: When Artifacts Trump Abstract Rules"
canonical: https://dxdev.com/blog/2026-09-26_measure-against-published-not-guide/
datePublished: 2026-08-06
---
Two rewrites in, the post still had a forty-five line code block in it, and it still read like documentation.

The first draft was the technical one. The style guide I write against says things like "keep it concrete" and "match the reader," and I read that as permission to show everything. So I rewrote it tighter and kept the code. It was still too technical. I rewrote it again, trimmed prose, kept the code, and got the same feeling back. Two passes of rewriting to a rule I could not measure gave me two passes of the same mistake. Each rewrite cost a session, and neither one moved the draft any closer to something publishable.

## Why the style guide kept passing a bad draft

The problem was what I was checking against. The guide is a set of sentences about voice. "Concrete" and "not too technical" are both true of a forty-five line block, depending on who is reading the sentence. Every time I reread the draft against the guide, the draft passed, because the guide never says how many lines is too many.

What I did have was a folder of posts already released to the site. Those are not opinions about voice. They are the voice, as shipped, with real numbers in them.

## Measuring the draft against the posts already live

So I stopped consulting the guide and measured the draft against every published post. The comparison was mechanical: code lines per post, prose density, how often a post reaches for a command versus a sentence. The published posts were nowhere near forty-five lines of code. The draft was an outlier on the one axis I had been rewriting around without ever counting.

That turned the vague complaint into a number. Forty-five lines had to come down to about five. I cut the block to the five lines that carry the mechanism and moved the rest of the weight into prose, the way the released posts do it. The next comparison came back inside the range, and I had a reason to stop editing other than being tired of it.

I also saved the measured thresholds into a resume file, next to the queue of posts still waiting and the publish recipe. That file matters more than the post. The next draft in the cluster starts from the measured numbers instead of from my memory of the guide.

## Three dead links the measurement missed

Measuring the voice did not catch everything, and the publish step found the rest. The post carried a Related section with three links. All three pointed at posts that were not published yet. Shipping it as written would have put three dead links on a live page.

I stripped the section from the published version and parked the three links inside the post source, so they can be restored one at a time as each target goes live. It is a small thing, but it is the same failure as the code block in a different form. The draft described a state of the site that did not exist yet, and I only saw it when I compared the draft to what was actually published.

## From a feeling to a diff

Before this, every iteration ended with a feeling. Is this too technical yet? I would reread it, decide it was fine or not fine, and rewrite on that basis. That is a loop with no signal in it, which is why it ran twice without converging.

Now every iteration has a check I can run. Take the draft, compare it against the released posts on the axes I measured, and see which number is out of range. The rule stopped being an adjective and became a diff. A guide can say "keep the code short" all day. A folder of shipped posts tells you that short means five lines and that yours is forty-five.

If you keep a written style guide for your own site, point your drafts at your published output. The guide is your intention, and the archive is what you actually do. When the two disagree, the archive is the one your readers have already seen. I would rather calibrate against the thing readers saw than against the thing I meant.

The first post of the cluster went out after two rewrites and one measurement. The measurement did the work of the rewrites, and it took less time than either of them.
