Times tables, one diary entry at a time

My eight-year-old needs to know her times tables by heart. I built her a game around what the research says actually makes math facts stick, then dressed it up as the doodle diary she’d want to write in every day.

The diary’s home screen: sticky notes counting facts colored in, days in a row, and stickers, then today’s page as a checklist with the warm-up, new facts, and practice ticked off, puzzles up next, and a Keep going button
The home screen partway through a day: three parts of today’s page done, puzzles next. Screenshots use a sample diary rather than hers.

Start with how facts stick

In the US, kids are expected to know every product of two one-digit numbers by the end of third grade. England goes further: its Year 4 check covers everything up to 12 × 12, with six seconds per question. I went up to 12 × 12. Before designing anything game-like, I read up on how math facts are learned. The research is unusually consistent, and it turned into five rules the game had to follow.

  • Recall, never recognizeEvery answer is typed. Multiple choice lets you eliminate and guess; pulling the answer out of memory is what makes it stick.
  • Every day, in short partsPractice is one page a day: about 20 minutes, split into five short parts with a break offered between each. Facts she knows come back at growing intervals instead of all at once.
  • Mostly winsNew or shaky facts are slotted in between ones she already knows, a technique called incremental rehearsal. Most questions should feel easy, and a few should stretch her.
  • Fix mistakes on the spotA miss shows the answer, a strategy, and a dot picture. Then she types it from memory with the answer covered, and the fact comes back twice more before that part of the page ends.
  • Speed matters, but there’s no clockKnowing a fact by heart means answering in about three seconds without counting. The game times every answer silently, because a visible countdown is one of the best-documented ways to make a kid anxious about math.
A practice question, 6 × 3, beside a large handmade number pad
Every answer goes through a big on-screen keypad, so the iPad keyboard never covers the question.
After a miss: 6 × 6 = 36 with the hint five 6s is 30, plus one more 6, and a dot array of five pink rows and one teal row
A miss becomes a small lesson: the answer, a strategy, and dots grouped in fives. Then she types it from memory.

Shrinking the mountain

A 12 × 12 chart has 144 facts, which sounds like a mountain. It isn’t. Teach turnarounds first (3 × 8 is the same as 8 × 3) and there are 78. Teach a handful of strategies in the right order and almost all of those can be worked out. What is left, the six facts where 6, 7 and 8 meet each other, is the part that genuinely has to be memorized.

The 144 facts from 1 × 1 to 12 × 12, colored by the strategy that unlocks each one, with turnarounds left blank1122334455667788991010111112121 × 1 = 1 · Rules11 × 2 = 2 · Rules21 × 3 = 3 · Rules31 × 4 = 4 · Rules41 × 5 = 5 · Rules51 × 6 = 6 · Rules61 × 7 = 7 · Rules71 × 8 = 8 · Rules81 × 9 = 9 · Rules91 × 10 = 10 · Rules101 × 11 = 11 · Rules111 × 12 = 12 · Rules122 × 1 is the turnaround of 1 × 2, so there’s nothing new to learn2 × 2 = 4 · Doubles and fives42 × 3 = 6 · Doubles and fives62 × 4 = 8 · Doubles and fives82 × 5 = 10 · Doubles and fives102 × 6 = 12 · Doubles and fives122 × 7 = 14 · Doubles and fives142 × 8 = 16 · Doubles and fives162 × 9 = 18 · Doubles and fives182 × 10 = 20 · Rules202 × 11 = 22 · Doubles and fives222 × 12 = 24 · Doubles and fives243 × 1 is the turnaround of 1 × 3, so there’s nothing new to learn3 × 2 is the turnaround of 2 × 3, so there’s nothing new to learn3 × 3 = 9 · Build from known93 × 4 = 12 · Build from known123 × 5 = 15 · Doubles and fives153 × 6 = 18 · Build from known183 × 7 = 21 · Build from known213 × 8 = 24 · Build from known243 × 9 = 27 · Pattern tricks273 × 10 = 30 · Rules303 × 11 = 33 · Pattern tricks333 × 12 = 36 · Build from known364 × 1 is the turnaround of 1 × 4, so there’s nothing new to learn4 × 2 is the turnaround of 2 × 4, so there’s nothing new to learn4 × 3 is the turnaround of 3 × 4, so there’s nothing new to learn4 × 4 = 16 · Build from known164 × 5 = 20 · Doubles and fives204 × 6 = 24 · Build from known244 × 7 = 28 · Build from known284 × 8 = 32 · Build from known324 × 9 = 36 · Pattern tricks364 × 10 = 40 · Rules404 × 11 = 44 · Pattern tricks444 × 12 = 48 · Build from known485 × 1 is the turnaround of 1 × 5, so there’s nothing new to learn5 × 2 is the turnaround of 2 × 5, so there’s nothing new to learn5 × 3 is the turnaround of 3 × 5, so there’s nothing new to learn5 × 4 is the turnaround of 4 × 5, so there’s nothing new to learn5 × 5 = 25 · Doubles and fives255 × 6 = 30 · Doubles and fives305 × 7 = 35 · Doubles and fives355 × 8 = 40 · Doubles and fives405 × 9 = 45 · Doubles and fives455 × 10 = 50 · Rules505 × 11 = 55 · Doubles and fives555 × 12 = 60 · Doubles and fives606 × 1 is the turnaround of 1 × 6, so there’s nothing new to learn6 × 2 is the turnaround of 2 × 6, so there’s nothing new to learn6 × 3 is the turnaround of 3 × 6, so there’s nothing new to learn6 × 4 is the turnaround of 4 × 6, so there’s nothing new to learn6 × 5 is the turnaround of 5 × 6, so there’s nothing new to learn6 × 6 = 36 · The final six366 × 7 = 42 · The final six426 × 8 = 48 · The final six486 × 9 = 54 · Pattern tricks546 × 10 = 60 · Rules606 × 11 = 66 · Pattern tricks666 × 12 = 72 · Build from known727 × 1 is the turnaround of 1 × 7, so there’s nothing new to learn7 × 2 is the turnaround of 2 × 7, so there’s nothing new to learn7 × 3 is the turnaround of 3 × 7, so there’s nothing new to learn7 × 4 is the turnaround of 4 × 7, so there’s nothing new to learn7 × 5 is the turnaround of 5 × 7, so there’s nothing new to learn7 × 6 is the turnaround of 6 × 7, so there’s nothing new to learn7 × 7 = 49 · The final six497 × 8 = 56 · The final six567 × 9 = 63 · Pattern tricks637 × 10 = 70 · Rules707 × 11 = 77 · Pattern tricks777 × 12 = 84 · Build from known848 × 1 is the turnaround of 1 × 8, so there’s nothing new to learn8 × 2 is the turnaround of 2 × 8, so there’s nothing new to learn8 × 3 is the turnaround of 3 × 8, so there’s nothing new to learn8 × 4 is the turnaround of 4 × 8, so there’s nothing new to learn8 × 5 is the turnaround of 5 × 8, so there’s nothing new to learn8 × 6 is the turnaround of 6 × 8, so there’s nothing new to learn8 × 7 is the turnaround of 7 × 8, so there’s nothing new to learn8 × 8 = 64 · The final six648 × 9 = 72 · Pattern tricks728 × 10 = 80 · Rules808 × 11 = 88 · Pattern tricks888 × 12 = 96 · Build from known969 × 1 is the turnaround of 1 × 9, so there’s nothing new to learn9 × 2 is the turnaround of 2 × 9, so there’s nothing new to learn9 × 3 is the turnaround of 3 × 9, so there’s nothing new to learn9 × 4 is the turnaround of 4 × 9, so there’s nothing new to learn9 × 5 is the turnaround of 5 × 9, so there’s nothing new to learn9 × 6 is the turnaround of 6 × 9, so there’s nothing new to learn9 × 7 is the turnaround of 7 × 9, so there’s nothing new to learn9 × 8 is the turnaround of 8 × 9, so there’s nothing new to learn9 × 9 = 81 · Pattern tricks819 × 10 = 90 · Rules909 × 11 = 99 · Pattern tricks999 × 12 = 108 · Pattern tricks10810 × 1 is the turnaround of 1 × 10, so there’s nothing new to learn10 × 2 is the turnaround of 2 × 10, so there’s nothing new to learn10 × 3 is the turnaround of 3 × 10, so there’s nothing new to learn10 × 4 is the turnaround of 4 × 10, so there’s nothing new to learn10 × 5 is the turnaround of 5 × 10, so there’s nothing new to learn10 × 6 is the turnaround of 6 × 10, so there’s nothing new to learn10 × 7 is the turnaround of 7 × 10, so there’s nothing new to learn10 × 8 is the turnaround of 8 × 10, so there’s nothing new to learn10 × 9 is the turnaround of 9 × 10, so there’s nothing new to learn10 × 10 = 100 · Rules10010 × 11 = 110 · Rules11010 × 12 = 120 · Rules12011 × 1 is the turnaround of 1 × 11, so there’s nothing new to learn11 × 2 is the turnaround of 2 × 11, so there’s nothing new to learn11 × 3 is the turnaround of 3 × 11, so there’s nothing new to learn11 × 4 is the turnaround of 4 × 11, so there’s nothing new to learn11 × 5 is the turnaround of 5 × 11, so there’s nothing new to learn11 × 6 is the turnaround of 6 × 11, so there’s nothing new to learn11 × 7 is the turnaround of 7 × 11, so there’s nothing new to learn11 × 8 is the turnaround of 8 × 11, so there’s nothing new to learn11 × 9 is the turnaround of 9 × 11, so there’s nothing new to learn11 × 10 is the turnaround of 10 × 11, so there’s nothing new to learn11 × 11 = 121 · Pattern tricks12111 × 12 = 132 · Pattern tricks13212 × 1 is the turnaround of 1 × 12, so there’s nothing new to learn12 × 2 is the turnaround of 2 × 12, so there’s nothing new to learn12 × 3 is the turnaround of 3 × 12, so there’s nothing new to learn12 × 4 is the turnaround of 4 × 12, so there’s nothing new to learn12 × 5 is the turnaround of 5 × 12, so there’s nothing new to learn12 × 6 is the turnaround of 6 × 12, so there’s nothing new to learn12 × 7 is the turnaround of 7 × 12, so there’s nothing new to learn12 × 8 is the turnaround of 8 × 12, so there’s nothing new to learn12 × 9 is the turnaround of 9 × 12, so there’s nothing new to learn12 × 10 is the turnaround of 10 × 12, so there’s nothing new to learn12 × 11 is the turnaround of 11 × 12, so there’s nothing new to learn12 × 12 = 144 · Build from known144
  1. 1. Rules23 facts×1 and ×10. Anything times 1 stays the same; times 10 puts a zero on the end.
  2. 2. Doubles and fives19 facts×2 and ×5. Double it; five of anything is half of ten of it.
  3. 3. Pattern tricks15 facts×9 and ×11. Nine is ten groups minus one; 11 × 7 is just the 7 said twice.
  4. 4. Build from known15 facts×3, ×4 and ×12. Double plus one more; double, then double again; ten plus two.
  5. 5. The final six6 facts6, 7 and 8 with each other. 6 × 6 through 8 × 8: five groups and a bit more, plus a rhyme or two.
  6. 144 on the chart, 78 once turnarounds are free, and 6 that are genuinely hard.
Every fact from 1 × 1 to 12 × 12, colored by the strategy that unlocks it and in the order the game teaches them. The lower half is left blank because turnarounds come free.

The game introduces facts in exactly this order, one table at a time, with each fact’s turnaround close behind. The ×1 and ×10 facts start out already inked in, so even the first page has easy wins to mix with the new material.

A diary that schedules itself

Under the doodles, every fact sits at one of six levels: blank, pencil sketch, inked, colored in, sparkly, and gold star. It’s a Leitner system. Pencil facts come back every day; the higher levels come back after one day, three days, a week, and three weeks.

Daily page
About 20 minutes, in five parts
Review gaps
0, 1, 3, 7, and 21 days
Fast
2.5 to 5 seconds, tuned to her
In progress
At most 8 facts at once
Misses
Back 2 and 6 questions later
Check-ups
Every two weeks

A fact moves up only when she answers it correctly and fast on a day it’s due. A miss drops it back. Right but slow keeps it where it is, because slow usually means she counted her way there. “Fast” is calibrated to her: the game watches how long she takes on facts that need no thinking (×1 and ×10) and sets the bar a little above that, so slow typing isn’t mistaken for not knowing.

The pacing adapts too. When new facts come easily, they come quickly; after a miss, the next hard question waits until she has had a few easy ones. And if she answers the first four facts of a table fast on sight, the rest of that table is inked in right away and confirmed in reviews over the next few days. A kid who already knows her twos shouldn’t spend a week proving it.

I tested the engine on simulated students before she ever saw it. One who already knows every fact has all 144 colored in within four days of daily pages and mastered within a week. One who misses everything beyond ×1 and ×10 meets at most four new facts a day, and never has more than eight in progress at a time.

The doodle page: a 12 × 12 grid of facts in gold, pink, teal, white, and dashed pencil, with the 6s, 7s, and 8s in the middle still blank
The doodle page is the schedule made visible. Three weeks in, the 6s, 7s, and 8s in the middle are the last facts still blank.

Twenty minutes, no clock

The first version asked about 20 questions a day, three to five minutes. I wanted her practicing for about 20 minutes, but without a timer on screen. So the game now plans a page for each day: an amount of work that takes her about 20 minutes.

Twenty minutes of the original drill would have been around 150 questions, and the scheduler doesn’t have 150 useful questions in a day. Only so many facts are due, and new ones need time between them. Past that point it would have been asking 1 × 7 again and again. So the time goes into five different kinds of work.

  • Warm-upThe reviews due today, plus the check-up when one is due. Easy ones to get going, and nothing new.
  • New factsNew and still-learning facts at least every third question, with familiar ones in between. At most four new facts a day can land in pencil; the rest wait for tomorrow.
  • PracticeThe original mix: mostly facts she knows, with the shakier ones slotted in.
  • PuzzlesThe same facts turned around: 7 × ? = 56, ? × 8 = 56, and 56 ÷ 7. Division is new to her, so a miss explains it through the times table (how many 7s make 56?). Puzzles are practice and never change her doodle page.
  • Lightning lapTwenty facts she knows, as fast as she can. It’s always twenty, so the diary can keep a fair record of her most super-fast answers.

Each part is a number of questions: its share of the 20 minutes divided by how long a question takes her in that kind of part, cheer or fix-up included. The game starts from guesses of 6 to 10 seconds and learns her real times from every part she finishes. Each question counts for at most 40 seconds, so wandering off mid-question doesn’t shrink tomorrow’s page.

Between parts she gets a pause: what she just did, what’s next, and a choice between “Let’s go!” and “Take a break.” The page is saved down to the question on screen, so she can finish it after dinner. The diary page and sticker come when the last part is done.

Early on, the page runs short on purpose. While she knows only a few facts, practice is trimmed to the ones she hasn’t tried yet that day, and the new-facts part ends when nothing more is ready. In simulation, a beginner’s first pages took 13 to 17 minutes and a confident learner’s took the full 20.

A puzzle question, 99 ÷ 9, beside the keypad, with the Puzzles part named in the top bar and dots showing it is the fourth of five parts
Puzzles turn known facts around. The top bar names the part and shows where it falls in the day.
The pause between parts: practice and puzzles ticked off, the lightning lap highlighted as next, a stretch-break suggestion, and Let’s go and Take a break buttons
Between parts: what’s done, what’s next, and the choice to keep going or come back later.

Making it hers

She’s deep into the Dork Diaries books (only on book two, so no spoilers), and the game borrows the look of a doodled-in diary: ruled paper, washi tape, bubbly lettering, and die-cut stickers. None of the books’ characters or art appear.

Each day’s page is a diary entry. Fast answers get a comic-book burst like “SQUEEE!” or “Math star!”; slower ones get a quieter “Got it!” Finishing the page writes a Dear Diary entry in a dramatic, slightly silly first-person voice, built from what actually happened that day (puzzles solved, a lightning-lap record), and adds a sticker to the collection on the cover.

The small motivational choices mattered as much as the big ones. A streak survives one skipped day. The home screen counts facts colored in rather than facts mastered, because mastery takes several separate days and “0 mastered” is a crushing thing to see on day one.

A yellow comic-book starburst reading Math star! over the question card
Fast answers pop. Slower right answers get a smaller, calmer burst.
A Dear Diary page describing the session: facts that got sparkles, a fact that tried to trick her, and a 19-day streak
Finishing the day’s page writes a diary entry and awards a sticker.

Seven more looks

The diary is built around one kid’s taste. To share the game with other kids, it now comes in eight looks: the diary, plus bricks, creatures, ninja, construction, basketball, princess, and puppies. A new player picks one on the welcome screen, and a grown-up can switch it in Settings at any time. The choice syncs with the rest of the diary, and progress, rewards, and past pages all carry over.

The welcome screen with a Pick a look grid of eight tiles in two rows: Diary, Bricks, Creatures, Ninja, Construction, Basketball, Princess, and Puppies, each in its own colors and lettering, above the diary’s cover
A new player picks a look before writing their name. The diary stays the default.

Each look brings its own fonts, colors, drawings, cheers, and names for things. The engine underneath doesn’t change: the same 144 facts in the same order, the same schedule, and the same 20-minute page. What changes is what the progress turns into.

  • BricksEvery times table is a build, from a duck and a house to a rocket and a castle. Each fact colored in snaps on a layer, and a build turns gold when its table is mastered.
  • CreaturesTwelve original creatures, one per table, each with its own element. An egg hatches when its table is first practiced, the creature evolves twice as facts are colored in, and it turns shiny when the table is mastered.
  • NinjaFacts earn belts from white to gold, and a table earns a belt on the dojo’s belt rack when all 12 of its facts have it.
  • ConstructionThe doodle page becomes a 12-floor tower, one floor per table and one window per fact. Windows get built as facts are colored in, and their lights come on when they’re mastered.
  • BasketballEvery fact is a shot, from air ball and off the rim up to layup, swish, and slam dunk. Each table gets a half-court shot chart with a spot per fact, and earns pennants and then a banner in the rafters.
  • PrincessA kingdom to rule. Each table is a crown with its own gem, from ruby to garnet, and each fact is a gem that gets found, cut, polished, and made to sparkle. When all 12 are polished, it’s crowning day.
  • PuppiesTwelve original puppies, one per table, each with a name. A puppy comes home when its table is first practiced, learns to sit, graduates with a collar and tag, and wins a rosette when the table is mastered.
The Bricks collection page: twelve brick builds on cards, from a duck and a house to a dinosaur and a castle, some finished, one gold, and others missing their upper layers
Bricks: twelve builds, each one growing a layer at a time.
The Creatures page: twelve cartoon creatures on cards, each showing its table, its stage and element, and how many facts it needs to evolve
Creatures: one for every table, at every stage from baby to shiny.
The Ninja dojo board: a belt rack with a slot for each table, holding orange, green, white, and black belts, and dashed outlines for tables without a belt yet
Ninja: the belt rack shows each table’s belt.
The Construction tower: a crane over a 12-floor building whose windows are the facts, many lit gold and some framed or empty, with a digger and two trucks on the ground below
Construction: a tower of facts, with the lights on where they’re mastered.

Each look also writes the end-of-day entry in its own voice. Every line the diary can write is supplied by the look, so the same day comes out as “I snapped together 171 times table facts” in a build log, “I trained 171 times table facts” on a training scroll, and “I took 171 times table shots” in a game recap. Big moments, like a creature hatching or a floor of the tower being finished, pop up during practice (at most one every eight answers, with any in between shown together) and get a line in that day’s entry.

A Build log page for day 17: 171 facts snapped together in 18 minutes, 93 of them super fast, the whole build finished, and 30 of 32 puzzles solved
The same day as a build log, styled like a step in an instruction booklet.
A Field Journal page for day 17 on lined parchment with a place stamp: 171 facts explored, the whole expedition finished, and 30 of 32 puzzles cracked
As a field journal, with a place stamp as the day’s reward.
A Training Scroll for day 17 hanging from a wooden rod, with a lucky cat as the day’s treasure: 171 facts trained, all the training finished, and 30 of 32 riddles solved
As a training scroll, with a dojo treasure.
A Daily Site Report, number 17, on a clipboard, with each line of the day ticked off like a checklist
As a site report on a clipboard, every line ticked off.

Basketball, princess, and puppies came next. Here is each one’s collection page beside the page it writes at the end of the day.

The Basketball shot charts on maple hardwood: a scoreboard of 94 shots made, 3 games won, and 1 banner, then twelve small half-courts with numbered spots colored by level, each labeled Tryouts, Halftime, Game won, or Champs
Basketball: a shot chart for every table, with each one’s standing.
A Hoops Herald game recap for game 17: a box score of 104 shots made, 93 super fast, and 18 minutes, a headline, a byline from Sam, team captain, and a photo of a fox mascot
The day as a sports-page recap, with a box score.
The Princess crown room: twelve crowns on cards, from ruby and topaz to garnet, some solid gold and crowned, others with empty gem settings, each saying how many gems are found or polished
Princess: a crown for every table, each with its own gem.
A royal letter, number 17, under a gold crown letterhead reading From the castle of Princess Sam, beginning Dear kingdom and Hear ye, hear ye
As a royal letter to the kingdom, sealed with her initial.
The puppy yard: twelve kennels with roofs in different colors, each holding a named cartoon puppy, some new and curled in their beds, others learning tricks, graduated, or a champion with a rosette
Puppies: a kennel for every table, each puppy at its own stage.
A puppy scrapbook page on dotted paper with a taped photo of a fluffy puppy captioned Waffles says hi!, beside the day’s lines about 171 facts trained
As a scrapbook page, with a taped photo of one of the puppies.

Adding them turned up a bug in the ninja look. A table’s belt is its weakest fact’s belt, and the look listed only each table’s current belt. A wrong answer drops a fact back a level, so after a miss the lower belt looked new and popped up as if she’d just earned it. Now every look lists all the moments reached so far, a table that jumps several at once still celebrates only the highest, and a test checks every look to make sure a miss never brings one back.

The one rule was that her diary had to stay exactly as it was. Comparing screenshots pixel by pixel couldn’t prove that, because the same code rendered twice differs by a scattering of anti-aliased pixels. So I compared the position, size, and text of every element on 18 screens, old code against new, at two iPad sizes. They matched everywhere except the two places that were meant to change: the picker on the welcome screen and a new Look section in Settings. The three later looks passed the same check, with the picker growing to two rows of four.

Built for an iPad

It’s a web app, installed from Safari with Add to Home Screen, so it opens full screen, works offline, and keeps its data like an app rather than a website. It draws its own keypad, because even inputmode="numeric" brings up the full iPad keyboard over half the screen. The rest was Safari housekeeping: no double-tap zoom, no long-press menus, no rubber-band scrolling, and layouts for both orientations. Guided Access, in the iPad’s accessibility settings, keeps it on the diary during practice time.

Keeping score

Progress is saved on the iPad first and then synced to a small Vercel Function backed by a Neon Postgres database. There are no accounts: a diary is opened with her name and a family PIN. The server never stores either one. It turns them into the diary’s ID with a keyed hash, turns away easy PINs like 1234, and rate-limits guesses. Saves are version-checked, and if two devices both changed the diary, the merge keeps whichever copy of each fact has more practice behind it, and whichever copy of today’s page got further.

Every answer is logged, which is what makes the grown-ups’ progress report possible: mastery over time, how far along each table is, minutes practiced and a calendar of finished and partial pages, puzzle and lightning-lap results, the trickiest facts, and two measures of retention. One counts how often mastered facts are still answered correctly when they come back for review a week or more later. The other is an explicit check-up: every two weeks, the day’s warm-up starts with up to ten mastered facts she hasn’t practiced for at least a week.

The progress report: 56 of 144 facts mastered, 133 colored in, 100% remembered on re-tests, 19 diary days in a row, and a line chart of facts mastered over time
The progress report sits behind a press-and-hold grown-ups button, out of the way of small fingers.

Source and references