Eight minutes to an app, and what that leaves to teach
I volunteer as a mentor with Mouse AI League, a year-long program in which high school students learn how AI systems work, practice human-centered design, do market research, and ship an interactive app prototype over six sprints. Last year I judged the students' final projects when they came to an Amazon office to present them. This year, at a mentor mixer, the organizers handed the mentors an AI coding agent and eight minutes. Mine produced a French flashcard app in one HTML file: 72 words in five decks, a spaced-repetition scheduler, spoken pronunciation, and progress that survives a reload. It runs here. The agent did the typing in those eight minutes. I spent the same eight on five decisions, and the decisions are what I want the students to look at.
The machine typed 487 lines and I made five decisions#
The agent wrote the scheduler, a simplified version of SM-2, the 1987 algorithm that Anki still descends from. It wired the browser's own speech engine to read each word in a French voice, put the review history in the browser's local storage, and laid out a card on the ruled paper of a French exercise book, for phone and desktop, in 487 lines. None of that took a question from me beyond the brief: one page, no framework, no build step.
The decisions were mine. Which 72 words: greetings, the café, directions, the core verbs, numbers and time, the vocabulary of a first week in France rather than a frequency list. Eight new words a day, because a deck learned in one sitting all comes due on the same afternoon and day three becomes a wall. The article printed with the noun and colored by gender, blue for le and rose for la, because "le pain" is the unit a learner has to carry and "pain" on its own is half a word. One example sentence on every card, since "the bill" is a fact and "L'addition, s'il vous plaît" is a sentence you will say at a table. And one trade I made knowingly: progress lives in one browser and does not follow you to your phone, which kept the whole build to a single file with no account behind it.
None of those five needed a line of code. All five decide whether the app is worth opening twice. That is the ratio the League's curriculum is built on. The prototype is one item on a sixty-hour syllabus; the rest of the hours go to who the user is, what they already do instead, and whether the design serves them.
The feedback loop is now shorter than a class period#
The agent's first phone layout scrolled sideways. I only knew because I rendered the page at 400 pixels wide and looked, and the fix, two CSS values, took under a minute. That loop, build, look, fix, ran three times inside the challenge. A responsive-design lecture would still have been on its fourth slide.
That loop is what the speed of the machine gives a sixteen-year-old. The distance between an idea and a version someone else can hold used to be a semester of syntax, and most ideas did not survive the semester. Now a student who has spent a sprint interviewing users can put a running prototype in front of those same users the week after, and find out that afternoon that the font is too small or the third screen is the one people wanted first. Human-centered design has always taught that lesson with sticky notes and paper mockups. A prototype that runs teaches it with the user's own thumb on the screen, and the correction costs minutes instead of a rebuild.
It also changes what a judge can assume. When the students present this year, the code will run; the agent makes it run. What separates the entries is whether the student can name who the app is for, what it does on the first screen, and what it deliberately leaves out. The student who says "it does not sync between devices, because we wanted to ship without accounts" has made a product decision and can defend it. That is the answer I am listening for, and it is a harder skill than syntax ever was, because there is no compiler to tell you when it is wrong.
What sixty hours buys at that price#
The brief I gave the agent was three constraints long, and everything the brief did not say, the agent chose, which meant I had to look at all of it. Writing the brief and reviewing the result are the two skills the challenge exercises, and both are the skills the League's sprints spend the year on under other names: define the user, scope the problem, test the prototype, revise.
The cost of a wrong product decision used to be measured in weeks of code thrown away. On this build the daily cap is one constant and the interval table is six numbers; either is a one-minute edit. Sixty hours is enough time to be wrong a hundred times at that price, and a hundred corrected decisions is more product judgment than most of us had when we started getting paid for it.
Keep reading
Running a factor scoring engine from a phone
I built a quant research platform, then built an agent to operate it: a scheduled Claude session that reads the boards, keeps a pre-registered track record, and texts me three times a day without ever saying buy.
Ballast: An LLM App Whose Best Feature Is Saying 'I Don't Know'
I built a self-healing RAG pipeline, a guardrails gateway, and an eval gate as one system, then threw a 44-question battery at it. Zero hallucinations, because the behavior that matters most is refusal. Here is how trust got built into the architecture instead of the prompt, and the safety check that leaked the very secret it was guarding.
Building an AI-Native Platform: A Retrospective
A year of building and operating a small fleet of finance and content products almost entirely through an AI coding agent. What worked, what was hard, the honest failures (including a flagship signal that measured nothing and an edge that vanished net of costs), and the lessons that transfer.
Composite What You Trust, Watch What You Don't: A Trust Boundary for Data With Money Attached
Every system that fuses signals into one consequential number has a fault line: the data you trust enough to composite into a grade versus the data you only trust enough to watch. How I drew that boundary in my personal finance engine, and how a test keeps it honest.
The Orange Pi That Maintains Itself
A small ARM box that started as a local LLM experiment and ended up a self-governing node: private retrieval, a resident agent under a written constitution, a code-enforced safety fence, and a nightly job where it audits itself and files its own backlog.
Wiring Garmin Into My Marathon Coach: A Live Data Integration Without an Official API
How I replaced manual CSV exports with a live Garmin data feed for my AI marathon coach: a scheduled unofficial-API poller, resilient session handling, and the design calls that keep training and recovery data fresh and trustworthy.
Follow the work
New tools and writing as they ship — pick a channel.