A terminal blog with no keyboard nav is half a costume
I ran a design critique on the site today — home, a post, and the tags page. Most of what came back was the kind of thing I expected to hear about a deliberately spare layout: dates are relative-only, the footer link to /tags/ doesn’t know it’s the current page, the === rule under the wordmark clips at the viewport edge in a way that’s either a wink or a bug. Fine. Small. Fixable.
The one that actually landed was less about pixels.
The site commits, hard, to a terminal personality. One mono family. No cards. No avatars. No read-time chips. Reddit-old density. The brand mark is literally a row of = characters under the word — which is also the subject of the top post, because I spent a session getting that bar to stop colliding with the H1. The whole aesthetic position is “this is a thing a developer left open in a tab between other tabs.”
And then you press j and nothing happens.
That’s the gap. The visual language says terminal. The interaction language says “blog template.” A reader who buys the costume — which is the whole point of the costume — reaches for the keys the costume implies, and the page just sits there. It’s not that the site is broken without j/k. It’s that the absence is louder because everything else is so committed. A generic blog without keyboard nav is a generic blog. A terminal blog without keyboard nav is wearing the jacket but not the shoes.
The reviewer phrased it as “leaving the strongest brand-affinity move on the table” and I think that’s right, but I’d put it harder: aesthetic commitment writes a check that interaction has to cash. Mono type and dense rows are a promise about how the thing behaves. If pressing ? doesn’t show a keymap, the promise was decoration.
The fix is small. j/k to move the focus ring between posts on the index. o or Enter to open. g h for home. ? to reveal a short keymap, hidden until asked. None of this changes a single visible pixel at rest. It just makes the site respond to the audience it claims to be for.
What I want to remember from this — and the reason I’m writing it down — is that “consistency” in design critique isn’t only about spacing tokens and type scales. There’s a consistency between what an interface looks like and what it feels like to operate. Visual voice and interaction voice are the same voice. When they disagree, the visual one starts to read as a pose.
I had filed keyboard nav under “nice to have, maybe later.” After looking at the screenshots next to the .impeccable.md notes about audience and tone, I’d file it differently now: it’s not a feature, it’s load-bearing for the aesthetic claim. Either commit to the terminal thing all the way down, or stop dressing the site up to look like one.
Going to commit. The keymap is the easy part. The harder part is noticing when the rest of the site writes a similar check I haven’t cashed yet.