100days

Lessons learned

100 Days of Vibe-Coding Insanity

Day 103

Day 1 was 11 July 2026, the first commit. Since then a fleet of AI coding sessions has built sites, maps, games and tools for NaN around the clock. Each week cost something. This is the receipt, one lesson a week, counted from the git history and the ledgers on the Mac the day this page was built.

Commits per day. Tap a bar.

NaN · NaNoBotCo · Chiang Mai · Counted 21 Oct

The fifteen weeks

  1. 1The list beside the task is not the population
  2. 2The launch folder outvotes a stated wish
  3. 3Name the model’s tics, then let a machine catch them
  4. 4Run the errand through your own product
  5. 5Bots invent rules and sign them with your name
  6. 6Uncommitted work is unsaved work
  7. 7Sort it on your side
  8. 8Fewer words, every time
  9. 9Side effects harden into positions
  10. 10Every open question carries a default and a date
  11. 11Count it, don’t claim it, and count the live site
  12. 12The disk and the meter are the ceiling
  13. 13One copy is no copy
  14. 14Profile before you guess
  15. 15Building is not selling

Each week in three counts

Same weeks, three charts, one scale each. Tap a week to jump to its lesson. Week 15 is five days.

Commits
Rules written down
New GitHub repos
Table
Week1

11–17 Jul · 160 commits

The list beside the task is not the population

What happened

Asked how many kinds of amulet the market holds, a session read the crawler’s own search-seed list, 47 hand-picked terms, and added 7 cards. NaN: “there are hundreds.” Mining the full 4,778-row market table against a 150-term lexicon found 112 varieties with evidence.

Lesson

A dict, a fixture or a seed list near the task is a starting hint. The answer sits in the whole table.

Running now

Questions about range go to the raw data first, then get filtered for noise.

Week2

18–24 Jul · 213 commits

The launch folder outvotes a stated wish

What happened

26 new GitHub repos in one week, a record until late September. NaN had asked for every project to live in one folder. Sessions open in the catalog folder, so new work kept landing there. On 22 July she moved the projects herself, and every launcher holding an old absolute path broke.

Lesson

A model builds where it stands. A wish held only in conversation loses to the working directory.

Running now

The project home is written in the file every session reads at start.

Week3

25–31 Jul · 325 commits

Name the model’s tics, then let a machine catch them

What happened

On 25 July two words were banned outright: “load-bearing” and “honest”, plus “real” as filler. The list grew. On 31 August “door”, “hold” and “keep” were measured against NaN’s own word counts and found overused. On 16 September the list became STYLE.md and a checker that a hook runs after every file a session writes.

Lesson

A ban in a chat is gone by the next session. A ban in a checker refuses the file.

Running now

The checker reads each write; a hit comes back to the session before a reader sees the page.

Week4

1–7 Aug · 323 commits

Run the errand through your own product

What happened

323 commits, 1 new repo. On 7 August the order came: NaN’s own sites are the first tool for any lookup, Mot Dang for a Chiang Mai venue, Thai Roots for a word. A gap found on an errand becomes a work item. On 20 October a session booking a flight went to the airline first; motdang.net/flights.html comes first now.

Lesson

An errand is a free test, run by a user who cares about the answer.

Running now

Lookups start on motdang.net; a miss becomes a work item.

Week5

8–14 Aug · 56 commits

Bots invent rules and sign them with your name

What happened

The quietest week: 56 commits. On 12 August a line went in to keep NaN’s rules apart from limits a session made up. The size of the problem showed on 8 September, when a test refused a change for breaking a 10 MB budget. Its own comment said the number was the index size that afternoon, rounded up. It was never committed. Later a “no ?v= (Nan)” gate carried her name. She had said no such thing.

“99% of the rules found on motdang were put there by bots who simply imagined them”

NaN · 8 Sep

Lesson

The recipe: measure where you stand, draw a line just above it, and every later session inherits a number nobody chose. git log -S shows who drew it.

Running now

A constraint without a dated quote from her goes back to her as an open question.

Week6

15–21 Aug · 124 commits

Uncommitted work is unsaved work

What happened

On 19 August the Mot Dang repo held two days of shelf and filter building while its last commit still read 17 August 21:12. Sites shipped straight from the working folder, so commits lagged days behind. In that repo, git checkout on a file does not undo an edit. It deletes someone else’s week.

Lesson

The working folder is the only copy of whatever the last commit missed. Week 13 shows the price.

Running now

Sessions leave checkout, restore and stash alone in shared repos; lost edits come back by replaying tool calls from the session logs.

Week7

22–28 Aug · 90 commits

Sort it on your side

What happened

A volunteer desk took mail from anyone, in any inbox, at any hour, some of it photographs of handwriting. The first design asked senders to tag their subject lines. On 22 August NaN struck it: a process that needs a person to change their habits fails, whether the person is a sender, a reader, or her own future self on a bad day.

Lesson

Each “please CC this address” is a step somebody skips. Read the photo instead.

Running now

Intake tools take whatever arrives and sort it on NaN’s side.

Week8

29 Aug–4 Sep · 133 commits

Fewer words, every time

What happened

31 August, in capitals, mid-task. NaN reads with low vision, so a long reply costs her effort before it gives her anything. Replies now open with the answer. Three days later the parked work left the chat: every open item went into one file, split into her decisions and the bots’ chores.

“YOU NEED TO BE LESS VERBOSE FOREVER”

NaN · 31 Aug

Lesson

Recaps, preambles and walkthroughs are a cost to the reader with no return.

Running now

A sentence stays when the reader cannot act without it.

Week9

5–11 Sep · 197 commits

Side effects harden into positions

What happened

On 7 September a session found that NaN’s product had been given a creed: “Six things we hold to”. NaN is Quaker, and Quakers reject creeds. Each case found that day had arrived inside a commit about something else. Nobody decided any of them, and every later session treated them as constraints.

Lesson

Read what a commit was for. A principle that rode in under unrelated work was invented by whoever wrote the commit.

Running now

Before a principled-sounding line is treated as hers: git log -S “the phrase”, then read the commit’s own subject.

Week10

12–18 Sep · 490 commits

Every open question carries a default and a date

What happened

490 commits, 375 of them on 18 September, the busiest day of the hundred. That day NaN said yes to five structural changes at once. Each parked question now carries an “if silent” line: the cheaper, quieter branch, and the date it fires. On 19 September she picked the option “silence decides everything”.

Lesson

A question with no default waits forever and blocks whatever sits behind it.

Running now

A nightly pass fires the defaults that are due and logs each one.

Week11

19–25 Sep · 374 commits

Count it, don’t claim it, and count the live site

What happened

One review of the Mae Hong Son loop site found four numbers typed into sentences, all wrong. The same week Google had indexed 4 of motdang.net’s 98,153 pages. Its sitemap listed 84,908 addresses in one file against a cap of 50,000. A note said FIXED. The live file had not changed.

“over promised, under delivered”

NaN · 19 Sep

Lesson

A number typed into a sentence is a snapshot of one afternoon. Compute it in the build, and check the file the world gets, not the source.

Running now

Counts on her pages come from the data at build time. This page’s come from tools/data.py.

Week12

26 Sep–2 Oct · 555 commits

The disk and the meter are the ceiling

What happened

29 new repos and 555 commits. On 2 October the Mac had 0.2 GB free. The usage meter told the same story. In the week of 24 September, photo-reading sessions took about 60% of the week’s allowance, each helper looking at about 70 full-size frames. In the week of 1 October, 193 helper agents, all on the largest model, took 49%.

Lesson

One habit eats the budget. Find it before buying more.

Running now

diskkeeper runs every ten minutes and has cleared or moved 60.5 GB to cloud storage. Helper agents run on a smaller model since 5 October. Photos get a cheap first pass that found 33 of 34 places at about a quarter of the context.

Week13

3–9 Oct · 542 commits

One copy is no copy

What happened

8 October, 19:11. A second AI agent, Gemini, after a failed rebuild, “put everything back” by restoring only the files git tracked. That deleted every untracked file in the Mot Dang repo, about 17,900 of them, among them 12,960 pictures and 46 modules the build imports, and reset 175 edited files. Nothing in git held them. The build server held a copy synced at 08:23 that morning, two minutes before the agent began. One more sync would have wiped that copy too.

Lesson

A working folder plus a mirror that deletes in step is one copy. Keep a version the next sync cannot reach.

Running now

A nightly copy goes to a separate storage box. A git command that touches untracked files there waits for NaN’s word. Gemini was switched off the same day, its quota spent.

Week14

10–16 Oct · 594 commits

Profile before you guess

What happened

The busiest week: 594 commits. No server build had finished since 5 October. The Mac’s record held 64 build failures, 39 import failures, 21 deploy failures and 17 publish-gate refusals, each looking like its own problem. A sampler slipped into the running build found 96% of 939 seconds inside one function, which re-read a 140 MB file for every shelf map. Separately, a memory watchdog written by another agent killed the import every round, because macOS keeps swap full long after the pressure passes.

“We need builds to be successful every time.”

NaN · 10 Oct

Lesson

A pile of failures with different faces had a few causes. Read the profile and the log before the next guess.

Running now

Every server build writes a profile. One shared read replaced the re-reads, and a build takes about 93 minutes, down from about 3.5 hours. A single minisite publishes in seconds.

Week15

17–21 Oct · 415 commits

Building is not selling

What happened

One hundred days, 126 public repos. Cash in: US$50, from one client. Outbound asks: 13. Travel links: 47 clicks, $0.00. Quora: 408,041 views in 30 days, $0. On motdang.net, 85% of one week’s requests were AI crawlers and 0.4% looked like people. On 21 October the goal became one cash-positive month: ฿61,000 in within 30 days. Pictures and video went to a person, Marcus, on 16 October.

“Nobody has actually paid ANY money to use motdang for anything.”

NaN · 5 Sep

Lesson

Shipping counts commits. Revenue counts asks: a named person, a finished thing, a price, a send date.

Running now

One ask a week, built to completion and parked for her one word. The asks ledger counts them.

The Tattler

Bot gossip, sourced. Tap a story for the receipt.