Who Gets to Say “I Built”? On Judging People Who Create With AI

A follow-up to “From Sociology to Software Engineering” (2024) and “Hope in Learning To Code” (2025)

Eighteen months ago I published a Hangman game and called it hope. The game was nothing more than a couple hundred lines of JavaScript, an ASCII stick figure, and one text box.

The original game, played to a win with one guess to spare. The word it drew, from its own list: sociology.

I said then that it wasn’t about competing with the billion-line apps. It was about finding out I could still learn something at the age of forty, after a seven-year relapse, which included being homeless at the beginning of COVID and panhandling to support my habit and pay the hotel for the night. You can read about that here.

This week I rebuilt it.


I did not type most of the code. But before I show you what I made, I want to tell you what a stranger told me they thought about “my build.”

“I built”

A while back I shared a companion site I put together for a resource from MakerZero, Nick Saraev’s free Skool community. Somebody on LinkedIn did not like that I used the phrase “I built.” They let me know by commenting just those words.

“I built.”

Quotation marks and all. That was the entire comment. Their profile said junior software developer. I was a little confused, or maybe amused. 🤔

They had not clicked the repo (repository) — the public folder where a project’s code and its whole history live. I had linked it right there in the post: every commit I pushed while working with Claude Code on my own machine, each one a dated record of what changed and why. I did not type the code by hand and I am not going to pretend I did. But a thing that did not exist now exists, it is genuinely useful to me, and there is a timestamped record of it being made one decision at a time. That sounds a lot like building to me.

I put that repo up so anyone who wanted the dashboard could run it on their own machine. I keep it up now for a different reason. See it here.

What a prompt does not do

The story people tell about this is that you type a sentence and the thing appears.

A typed one-sentence prompt, then a finished premium website appearing in a single instant
The story, animated: one sentence in, a finished website out. Nothing on this page was made that way.

What actually happened was a long chain of instructions and questions. The machine writes the code in pieces, as drafts. Each piece it writes is a response to something I asked for. But wait, there’s more.

In addition to directions given and suggestions read (most of which get rejected), sometimes the machine even pushes back. It actually pushes back often, but that is wholly intentional — out of the box, Claude does not do that. The pushing back is critical, because that is how what was broken gets caught and said out loud, whether I am the one catching it or Claude is. Every line of code is reviewed multiple times, be it by me or the swarm of AIs working for me. 🙂

The receipts

So here is the part the commenter did not look at.

The actual chain. The companion site was built in one day — twelve asks, eleven commits. I did not commit at every ask; plenty got lumped together, so the repo’s history understates the chain. What follows is the chain itself, quoted from the session records — what I asked for, and what each ask produced, changed, or killed. My typos are kept, because the quotes are real. One entry’s wording is lost and marked.
1Turn Nick’s roadmap into a site that helps you fill in the blanksJul 31, 11:13 AM
The ask: spin up a web ui that turns this exact roadmap into an interactive and dynamic webpage or website whose sole purpose is to help a user fil out all of the blanks. The first plan failed — the tool that was supposed to read Nick’s board could not open it, so the machine drove my browser and extracted it that way instead. By the end: a working app, 21 steps, 74 blanks to fill, every resource embedded. Two commits, 36 files.
2Host it free, so anyone can clone itJul 31, 11:58 AM
The ask: i want to hosted for free on github pages so that anybody can use it if they want to go to the github repo, clone it, and make their own version. Shipping waited on a round of questions about how to credit Nick and what a fork should inherit. My answers are the next entry — and entries 6 and 9 below. A third of this chain is me making sure the site supplements Nick’s roadmap instead of replacing it. Then it went live, free, with share links.
3Name it after Nick. Check the spelling.Jul 31, 12:33 PM
The ask: it should be even more explicit that this is Nick Saraev’s Roadmap. You can actually eliminate ‘maker zero’ Call it Nick Saraevs. check spelling. And on my own data: Publish my real progress, but not the details. Result: the repo renamed, spelling verified against Nick’s own board; anyone who forks it starts with an empty roadmap; my public copy shows tool choices and headline figures, no notes at all.
4Optimize the metadata — pasted into the wrong windowJul 31, 12:50 PM
The ask: before I share this, optimize seo and geo metadata for https://daguilar0123.github.io/nick-saraev-roadmap/ — which I accidentally pasted into a different Claude session working on a different project. It did the work anyway, pushed it, and left a formal note in the repo explaining what it had done and how to undo it. The record keeps the mistake.
5Generate the share images; and deal with that noteJul 31, 12:57 PM
The ask: use higgsfield mcp to generate three images for the social share cards and featured image that would be optimal for this website — plus reviewing the wrong-window edit. Three text-free images built from the site’s own colors; and one thing came out of the metadata on review: my home town.
6Label what is Nick’s and what is notJul 31, 1:17 PM
The ask: i want to faithful to Nick’s actual roadmap. however, if nicks roadmap was missing these questions then just label what came from outside of Nicks actual roadmap. Result: a provenance badge on every section — “from Nick’s board” against “added here” — and a credit legend splitting his 21 titles, ninety-odd checklist items, and 50 links from this edition’s 74 fill-in fields.
7Add a “work this out with Claude” buttonJul 31, 1:17 PM
Same message: a “ask claude” or “work this out with claude” feature would be awesome. how can we implement that? From the machine’s options I picked the no-server design: every step composes a ready-made, editable prompt to copy or open — no account, no key, nothing to pay for, works for every fork. And MakerZero thanked warmly in the footer, non-affiliation stated.
8What is that shell? Kill it.Jul 31, 1:33 PM
The chain includes chores. A leftover process from the build was still running on my machine; I asked what it was and had it killed. The live site did not notice. Building is also janitorial.
9Prove none of Nick’s links were droppedJul 31, 1:49 PM
The ask: I do not want to step on nicks toes by replicating a resource he already shared. show me a list of the links he shares in the roadmap and tell me how you incorporated them. Result: a full audit against Nick’s live board — 50 raw links, 29 real destinations once the preview-artwork duplicates were set aside, 28 present in the app. One was missing. It was restored, in its own commit.
10The phone fixes — wording lost, marked as suchJul 31, ~2:05 PM
Two mobile bugs were fixed from a separate session running in the cloud, whose transcript this machine never had: the sticky header covering whatever you scrolled to, and step titles crushed to one word per line on a phone. The commits exist and are dated; the exact words of the ask are gone. That is what an honest record looks like when a piece is missing.
11Where is the link to share with the group?Jul 31, 5:12 PM
The ask, verbatim: where is the link to the public repo to share with the group? Both links came back, with advice to lead with the live tool. This is the share the commenter saw.
12Write the session handoff — interruptedJul 31, 7:05 PM
The last ask of the day was to document the whole session into the repo. I interrupted it six minutes in and it never got written. Even the record of the record has loose ends. I am telling you about it anyway, because that is the point of this section.

The game’s chain

The game at the bottom of this post is the same chain, only longer. It was built in one long conversation in a browser tab that kept no log, so the exact wording of these asks is not preserved. The asks themselves are — in my own writing, in the notes the build agent left, and in what shipped.

No log survived; the asks did. The dated entries at the end come from records that do survive.
1Take the gallows outbuild week
I decided there would be no gallows in it. That was not a prompt, that was a year and a half of thinking about what I had built the first time and not liking the answer. I decided a wrong guess should close a bar around a dove instead of drawing a limb on a hanging man, so that losing builds a cage rather than a corpse. What shipped: the gallows removed entirely, seven bars, and winning frees the bird — confetti and all.
2The words came out sounding like mebuild week
I did not pick the word list, and the game says so itself — its footer reads “word pool expanded live by the Datamuse + Free Dictionary APIs · built by Danny.” What shipped: eight themed seed lists the machine curated from the vocabulary I write in — exodus, jubilee, praxis, hesed, mishpat, gleaning — with clues in the same register (“jubilee, the year debts are cancelled and land goes home”; “mercy, the punishment withheld on purpose”), and two free dictionary services, no account and no key, growing each theme live and showing a real definition after every round. Entry 11 below tells the story of how this entry almost said something false.
3Build a way back from a lost barbuild week
I decided there would be a way to reopen a bar you already lost, because I have been writing against permanent punishment since seminary and it turned out I had never once built it into anything. What shipped: solidarity tokens. Five correct letters earn one, and it buys exactly three things — Testimony reveals a letter, Amnesty clears three dead letters, and Jubilee re-opens a bar you already lost.
4Make it a finished game, not a demobuild week
Scoring, a combo that caps at five times, hints that cost points, a daily word so everyone gets the same puzzle, win-and-streak stats the browser keeps on your own machine, and sound with a toggle.
5The dove looked like a bananabuild week
The first version of the dove rendered as a crescent blob. Catching what is broken and saying so is half the job: it was rebuilt piece by piece — tail, body, neck, head, beak, eye, wing — and the same parts now draw both the little logo and the caged bird.
6The cage bars were invisiblebuild week
The bars refused to render: the color gradient that paints them cannot, by default, attach itself to a line with no width. One drawing setting fixed it, and the build notes turned it into a standing rule so nobody undoes it later.
7The escape flight brokebuild week
Two different systems were both trying to position the bird, and one silently overrode the other, so the dove never flew. The fix gave each its own layer: one holds the bird’s place, the other flies it out.
8WordPress killed the game on its way to the public pagebuild week
Perfect in the editor. Dead on the public page. No error, no warning, nothing in the console — the panel where a browser reports what goes wrong. Just a pretty, inert box. WordPress had silently rewritten every ampersand in the JavaScript into an HTML entity on the way out the door — a code meant for displaying a character, not running it. && became garbage; the script never ran; and from the admin side everything looked fine, because the failure only existed where the actual user stood. The fix rewrote the entire script to contain no literal ampersand at all, with a warning left in the notes: “Do not clean this up or the game dies.”
9Do not touch the 2025 postJul 26
A finished copy of the new game was placed into the original Hangman post, verified byte-for-byte — then cancelled and fully reverted on my instruction. The 2025 post, gallows and all, stays exactly as it was published.
10Ship itJul 26
The finished game packaged as one 41,138-byte file, then placed into the draft of this post as a single block, unmodified. The same file you are about to play.
11The record overclaimed — caught while writing this postAug 16
An earlier draft of this very post said “I decided the word list.” I had not, and I flagged it while reviewing this page. The claim was checked against the game itself — the footer settles it: “word pool expanded live by the Datamuse + Free Dictionary APIs · built by Danny” — and entry 2 above now tells the truth. The chain did not end when the game shipped: directions given, claims checked, what was broken said out loud, this time about my own record. This entry is dated the day it happened.

None of those decisions came from a prompt. They came from me, and then I spent a week arguing with a machine until the thing on the screen matched them. Expand any of them and you will see what I was trying to do and what I got wrong on the way.

First the whole 2025 game: a couple hundred lines, the stick figure drawn out of plain keyboard characters. Then the rebuild — all 41 KB of it — replayed as a typing animation. Nobody typed it like this, least of all me. That is the point.

The bug that proves it

One entry in the game’s chain deserves its own telling. Near the end of the build, the game worked perfectly in the WordPress editor and came out dead on the public page — no error, no warning, nothing. The cause, eventually: WordPress was silently rewriting a single character in the code, the ampersand, on its way out the door. Entry 8 of the game’s chain above has the full story. What that bug taught me is the best thing I took from this whole build, and it is not really about code.

That bug took an hour to find. An hour of reading output, forming a guess, testing it, being wrong, and going again. No prompt does that. There is no sentence you can type that produces “the thing you cannot see is happening between the database and the browser.” Somebody has to suspect it.

If this is not building, then what is it?

The part I am actually worried about

The pushback on AI is not wrong. There are serious critiques and I hold some of them myself. I have written before that access to AI sorts the way everything else sorts, that the frontier models — the newest and most capable ones, the ones behind a subscription — cost money and the good ones cost more, and that the people whose jobs go first will be the last ones consulted about any of it. I still think that.

Sorts is the plain word for it: access follows money, the same way housing and good schools already do. I worked on the staff of a nonprofit helping people enroll in health coverage they qualified for and still could not reach, so that pattern is not a theory to me.

What worries me is the overcorrection. When the pendulum swings too far, the people who lose are the ones who had the most to gain.

I think about education inside prisons and in GED programs, and I do not think about it abstractly. RAND’s meta-analysis found that people who took part in correctional education had 43 percent lower odds of returning to prison. Now think about what an AI tutor actually is for that population. It never gets tired. It never gets impatient. It never makes you feel stupid for asking the same question four times. That is exactly what an adult who has been out of school for fifteen years needs, and it is the one thing the system has never been able to afford to give them.

I do not want the stigma of building with AI to set. If it sets, maybe those AI-assisted tutoring programs never get built. Not because anybody decided against them. Because nobody wanted to be the person who proposed them.

Who gets to say it

When somebody puts “I built” in quotation marks, it is a small thing. A stranger being a little snide on the internet costs me nothing.

But it is the same instinct underneath, deciding in advance who is allowed to say they created something. I have been on the wrong end of that instinct in rooms with much higher stakes than a comment section. The people who get told their work does not count are reliably the same people, and it is reliably decided before anyone looks at the work.

So look at the work. The commits are right there. Then tell comment below if it is building or not.

In Power, Solidarity, and Militant Joy,
Comrade Danny 😉

Three real games, back to back, on a loop. Not a rendering of the game — the game itself, played through its own keyboard. The dove goes free all three times; watch the streak count 1, 2, 3.

Free the Dove

Hangman, reimagined. There is no gallows here — you are picking a lock.

0score
0streak
0freed
theme
7 bars open
choose a theme loading word pool…
solidarity 0

word pool expanded live by the Datamuse + Free Dictionary APIs · built by Danny