Skip to content
storagebits

A comment on Hacker News, in production four hours later

On October 22, a stranger's suggestion on Hacker News reached production on Uberblok in 4 h 05. I said "go" and approved the merge. Agents did the rest, with two reviews.

6 min read#devlog#agents#zfs

On October 22, a stranger left a one-line suggestion under the Uberblok launch post on Hacker News. Four hours later, it was in production. In between, I did only two things: say “go”, then approve the merge. Agents wrote the code, two others reviewed it.

The speed of the code is not what interests me here. It’s the whole loop: public feedback, a human decision, agents that build, two independent reviews, a human approval, then production. Here is every step, who took it, and the places where the loop slipped.

# The context

Uberblok is an interactive museum of OpenZFS internals, built by agents (the launch post); its code is public, under the MIT license, in the uberblok repository. My Show HN of October 21 had collected 5 points before sinking. I asked the moderators for a second chance, and dang replied: “Sure, let’s give it a try!” On the 22nd, my link stayed on the front page for several hours and climbed as high as 10th place. It now has 70 points and 20 comments. That day the site got about 880 visits, against 31 the day before, at 1.6 pages per visit: most readers stayed in the hall.

# The trigger

Meanwhile, my Claude Code session polled the HN API every two minutes and reported each new comment to me. Every piece of feedback became a line in the project’s card.

Among them, ghm2180 wrote: “One small suggestion: Make the code open to the right instead of a new window, that makes it easy to keep context without distraction.” I replied that a side panel was the right direction.

Other comments targeted the prose and the difficulty. ghostly_s spoke of “gratingly AI prose”, cbarrick asked for less “punchy” prose, and unethical_ban wrote: “A lot of this goes over my head”. The day before, two comments on r/zfs said “Needs more guidance and less AI-y texts” and “citing every line is not explanation or insight”.

# The decision

A little over an hour later, Claude grouped three recurring criticisms: prose that smells of AI, a lack of guidance, and code citations that break the reading. Its proposal: a pilot on a single room, copy-on-write. I replied “oui ! go” [yes! go].

I made up my mind quickly because the feature struck me as interesting right away. There was a lot of code on the site, so much that it felt overwhelming, almost indigestible. Rather than redo everything at once, I wanted to try it on one room first, to see how it would look.

# The loop, step by step

Elapsed timeStepWho
0 minghm2180 suggests opening the code on the right.An HN reader
a little over 1 hClaude groups three criticisms into a pilot on one room. I reply “oui ! go”.Me
1 h 14A ticket is opened for the CEO agent.My Claude Code session
around 1 h 17The CEO splits it in two: the build, and the merge, which waits for my approval.The CEO agent
2 h 02PR #6 arrives: the room rewritten around a question, a reusable component for source notes (side panel from 1024 px wide, below the text on narrower screens), and a private preview. Two subagents, a technical writer and a code reviewer, went over it.Uberblok’s engineer agent
2 h 11Approval: no blocker, two recommendations, four nits.The design and UX agent
2 h 19Approval: all eight criteria met, 240 tests passing, excerpts checked against zfs-2.4.4, zero accessibility violations, CI green.The QA agent
4 h 05I open the preview and approve the merge. The room is live a minute later.Me

From the comment to a change approved by two reviewers, about 2 h 20 went by. To production, 4 h 05. The remaining 1 h 45 is the time I took to open the merge card.

In the pilot room, citations went from 32 to 14, and none are left in the prose. The code on display went from 93 to 34 lines. PR #6 touches 8 files (+638, −176). The new room format is recorded in DECISIONS.md (D21.1).

The copy-on-write room in English: on the left, the text "In the code" and the Source button for zio_write_compress; on the right, the open side panel with the zio.c excerpt, lines 2094 to 2105, and two notes explaining it.
The copy-on-write room in production: the text stays on the left, and the zio.c excerpt opens in a panel on the right.

# Where I stay in the loop

In two places only: the decision and the merge. In the preview, I opened the page, read it, tested it, saw how it rendered, and I was won over at once. I was amazed at how fast a stranger’s feedback on the Internet could become a PR, with a demo you could see and use before it even went to production. A few minutes later, I told ghm2180 it was live: “The rendering is far better!”

The thread was openly hostile to text written by an AI. Under my “I built”, AyyEye replied: “You keep using those words. I don’t think it means what you think it means.” I conceded the point: “Fair hit. ‘Directed’ is closer: agents wrote the code and most of the text, I chose the subject, steered and reviewed.” And gspr answered: “You were a manager, in other words.”

Yes: manager, producer, a bit of a director. Just as there are film directors, I feel I have become the director of a software production.

# Where it slipped

My first comment in the thread was killed automatically by HN’s software, probably because my account had never commented. dang restored it after an email.

Two further points, more teaching animations and the rule against “punchy” prose, were posted 5 seconds after the CEO split the ticket. The build ticket never received them, and they move to the next round. The loop is fast, but it has gaps.

Finally, only the English room changed. French and Spanish will follow.

# The open question

The most repeated criticism targets prose written by an AI, and I did not rewrite it by hand. The agents keep writing it, with stricter style rules. I can write a fully human text for small parts, or to express a feeling. Here, explaining code took a great deal of technical rigor. I chose to trust the AI rather than supply an approximate text, which is all I could have given. I don’t know yet whether that choice will answer the criticism.

# Where I am

Right after the merge, I launched the same format on every room, in parallel. I was convinced at once: it had to go everywhere, and I wanted the result as fast as possible.