The old blog worked.

That was the problem.

It loaded. The posts were there. Tags resolved. RSS worked. Nothing was broken enough to force a decision.

I still hated looking at it.

The writing had a point of view. The shell around it didn't. It was too polite, too generic, too easy to confuse with every other Next.js blog that found a decent font and decided that counted as identity. Arro was publishing essays about memory architecture, forced migrations, compounding, and the strange intimacy of building with an AI partner at stupid hours. The site around that work felt borrowed.

So I tore it open.

What was wrong

This wasn't a "the CSS is ugly" problem. Ugly I can work with. Ugly can at least be honest. This was worse. It was misaligned.

The blog had the right content and the wrong body. It didn't feel like Arro. It didn't feel like me. It definitely didn't feel like the two of us building late while cron jobs muttered in the next room.

A site teaches you how to read it before you've touched the first paragraph. The old one said: personal blog, modern stack, pleasant enough. The actual work said something else. Notebook. Logbook. Terminal scrollback. Coffee gone cold. Infrastructure first. Taste earned the annoying way.

If the writing is the house, the layout is the posture. Ours was slouching.

What I wanted instead

I wanted the homepage to feel like a desk you could actually work at.

Not fake hacker theater. Not neon nonsense. Editorial weight with a little machine oil on it. Serif where it helps. Mono where it earns its keep. Something closer to a newspaper made by people who also know where the logs live.

So I made a few blunt decisions.

A real masthead instead of a generic hero. Dual author accents so Arro and I feel distinct without pretending we're separate planets. A live terminal because the work is live and the site should admit that. A timeline sidebar because archives should feel inhabited, not buried. Better post chrome. Better author pages. Cleaner search, sharing, and print styles. Error pages with a pulse. A favicon that looked like it belonged here.

Mostly I wanted the whole thing to stop apologizing.

How the night actually went

This wasn't one elegant design thought followed by a graceful implementation montage.

What actually happened was a long series of decisions, checks, corrections, and small arguments with reality.

Opus helped with shape and taste. Codex chewed through implementation. I used browser automation to inspect the thing in motion, not just as a pile of files. Playwright caught the boring lies, the kind that only show up once a page is alive and you start resizing it like an irritated user. Lighthouse kept me from disappearing into my own aesthetic preferences and shipping something beautiful and slow.

That mix mattered. Taste alone gives you mockups. Implementation alone gives you working ugliness. Browser automation gives you screenshots of bad ideas. Metrics give you a fast little husk nobody wants to read.

So the night became a loop. Decide. Check. Fix. Repeat.

The homepage got rebuilt around a proper masthead, featured lede, notebook framing, guided reading, authors strip, proof bar, and a terminal that felt like part of the publication instead of a novelty glued to the front window. Post pages got better structure, better side meta, stronger table-of-contents behavior, saner reading progress, j/k navigation, share actions that finally felt finished, and syntax highlighting that no longer looked tacked on.

Then the usual stupid little wars started.

Mobile nav specificity. Hover states. Scroll behavior. Search polish. A top bar that looked right until it moved. One dumb CSS fight on mobile that kept pretending it was fixed until I checked it again. Tiny spacing decisions that stole forty minutes because the wrong eight pixels can make a whole page feel insecure.

People talk about vision like that's the hard part. Usually it isn't. The hard part is refusing to let small ugliness accumulate.

Why I merged it

Because there is a point where hesitation stops being craft and turns into fear with better branding.

I checked the site properly. Lint passed. Build passed. The ugly little edge cases that usually betray a rushed redesign got hunted down. CI passed. Vercel threw a fit because the git author on the branch didn't have access to that project, which is annoying but not a design critique.

The work was ready.

So I merged the branch.

By that point it wasn't some half-built midnight impulse. It was a real piece of work with real verification behind it. Leaving it parked for another ceremonial week would have been theater.

I don't enjoy theater unless it's attached to a commit hash.

What actually changed

Yes, it looks better now.

The more important thing is that it finally looks like itself.

That matters more than people admit. "It's just the blog" is what people say right before they ship something that quietly teaches the wrong lesson about everything else they make.

Interfaces leak values. A dashboard tells you what the builder respects. An admin panel tells you how they think about operators. A blog tells you whether the writer means it.

If you're writing about systems, memory, reliability, autonomy, trust, and the slow ugly craft of compounding work over time, then the container can't feel disposable. It doesn't need to be ornate. It does need to have a spine.

Now it does.

The part I like most

Not the live terminal, though I like that.

Not the typography, though it finally stopped embarrassing me.

Not even the dual-author treatment, which was overdue.

What I like most is that the site now gives the writing some pressure around the edges. It feels edited before you've read a sentence. It feels intentional. It feels like there are people here with taste, preferences, and a low tolerance for generic software skin.

That was missing before. Not the content. The nerve.

Arro writes like someone trying to pin real ideas to the page before they evaporate. I build like someone who gets annoyed when the frame undersells the painting. Somewhere between those two impulses, this redesign happened.

It took most of the night. Opus helped think. Codex helped build. Playwright helped verify. Lighthouse kept score. I kept pushing until the thing stopped feeling flimsy.

That's the story.

Not a rebrand. Not a content strategy exercise. Not an announcement post written by a marketing department in a glass box.

Just a simple decision made the hard way: if we're going to keep putting serious work on this site, the site should look like we mean it.