DEV Community

Nathan C.
Nathan C.

Posted on

AI tutors don't teach. So I made mine stop talking.

Every AI can explain pointers. None of them can tell whether you understood.

Type "Teach me C" into any AI assistant. You'll get a beautiful lecture: five headings, a code block, and "let me know when you're ready to continue."

You'll read it, nod along, and remember almost none of it by Friday.

That isn't teaching. It's a textbook that talks back. Nothing makes you recall anything, nothing checks your work, and tomorrow it won't remember what you learned.

So this week I rebuilt how my agent, Flash, teaches. The new rule is simple:

The model writes the course. It doesn't get to grade it.

Now "Teach me C" builds a course

You don't get a lecture. You get a path of lessons right in the chat, like a language-learning app. Each lesson is a few short paragraphs, then something you have to do:

  • Pick an answer.
  • Type the missing word.
  • Put scrambled steps back in order.
  • Write real code.

That last one is the point. Your C actually compiles. It runs in a throwaway folder, and Flash checks what it printed. Get it wrong and you see the compiler's errors, or your output next to the expected one.

It works for C, C++, Python, JavaScript, Rust, Go, Java and Linux shell. You earn XP, keep a daily streak, and can go full screen when you want to focus.

Zero model calls to check your answer

Every answer is marked right on the page. No round trip, no waiting, and no model deciding your code "looks about right."

The model only comes back when you press Ask Flash. Even then, it's told to give you a hint, never the answer.

This runs on a laptop, on local models. Keeping the model out of the marking loop is what makes it feel instant.

It knows what you know

Every answer updates an estimate of whether you've actually got it. A lucky guess counts for less; so does a careless slip.

Get a lesson right once and the next one opens. Then it comes back tomorrow, in 2 days, in 4, in 8. Get it wrong and it's back the next day.

That's spaced repetition, built into a chat.

The part nobody tells you about small models

Small models take the shortest path through your schema.

Ask one for "the next unit" and you get six lessons with nothing to answer. Ask again and it teaches unit one a second time, under new titles.

Pages of instructions didn't fix it. One rejected tool call did:

"structs has nothing to answer. Every step after a unit's introduction needs a quiz, a blank, an order or an exercise. Add the steps again, each with one."

Models ignore paragraphs of advice. They fix errors immediately. If you want a model to behave, make the wrong move fail with a clear message.

I gave the agent a manual, with a test

Flash now ships 34 guides on using its own tools: teaching, building web pages, making videos, handling email. The agent sees their names, and reads one only when a task needs it.

The guides hold 116 example tool calls. Examples go stale the day you change a tool, so a test checks every one against the live tool definitions. It caught two broken examples on its first run.

Extensions can ship guides too. If a plugin brings a tool, it also brings the manual for it.

Also shipped this week

  • Web page to MP4. The agent animates a page and renders it frame by frame on an exact clock.
  • Ears. It measures any audio file for pitch, tempo, loudness and clipping, and writes sound from notes.
  • Ask your own files. Your notes, PDFs and code, with every answer citing its source.
  • Blind model battles. Two models answer anonymously, you pick the winner, and it keeps score.

That's 40 commits in three days, with 2,955 tests passing. Everything runs on your own machine.

Open Flash, type "Teach me C", and write some code.

github.com/Natuworkguy/Flash

Top comments (0)