Quizine, or learning to cook on purpose
Why do you sear meat before braising?
I'd have told you, confidently, that it seals in the juices. That's the answer I absorbed from two decades of cookery programmes, and it's wrong — the sealing-juices theory has been thoroughly demolished, with Kenji López-Alt's side-by-side weigh-ins showing seared meat loses moisture just the same. Searing is about flavour: proteins and sugars browning at high heat, the Maillard reaction building hundreds of new compounds. The braise doesn't need the juices sealed. It needs the brown.
I cook most nights and I love it. But that question made me admit something: an awful lot of what I do at the stove is imitation, not understanding. I follow the recipe's what and couldn't defend the why. Why rest the meat, why salt the aubergine, why does the garlic go in after the onion, what oil actually smokes when. Recipes don't teach that — they can't, they're procedures — and cookbooks that do teach it are read once and forgotten.
What actually fixes "read once and forgotten" is retrieval practice: being asked, getting it wrong, being corrected, being asked again. I remembered Freerice, the vocabulary quiz that ate hours of my time years ago with nothing but multiple choice and a difficulty ramp. So I built the cooking version — Quizine, quiz plus cuisine, and yes, the name arrived before some of the features did.
The explanation is the product
A quiz question has four parts: the question, the options, the answer, and what happens after you answer. Every design decision in Quizine assumes the fourth part is the whole point. Whether you were right or wrong, you get an explanation — not "correct!", but why the answer is what it is, and usually why the tempting wrong option is wrong:
Writing those explanations was most of the work. The first hundred-and-thirty-odd questions were seeded by hand across the areas I actually wanted to be better at — technique, seasoning and timing, fats and oils, knives, cookware, terminology, temperature, practice. The categories have since grown to fifteen; it turns out once you have the drilling machine, you keep finding things you'd like it to drill. The myth-busting questions are deliberately over-represented, because a confidently held wrong belief does more damage in a kitchen than an honest gap.
Difficulty as a thermostat
Freerice's real trick was never the questions — it was keeping you exactly at the edge of your knowledge, where it's neither boring nor demoralising. Quizine copies that shamelessly with a mechanism small enough to describe in two lines:
correct → streak++; three in a row at this level → level up (cap at 3)
wrong → streak resets; level down (floor at 1)
That's the whole adaptive engine. No spaced-repetition scheduling, no knowledge graph, no model of the learner. Three-in-a-row-up, one-wrong-down turns out to be a perfectly good thermostat for a quiz you play in ninety-second bursts, and I resisted every urge to make it cleverer. There's a weak-spots view that tells me which categories drag my accuracy down — temperature, embarrassingly, since day one — which is all the analytics a personal learning tool needs.
The rest of the app grew the way side projects do: streaks, achievements, a daily challenge with a shareable result card (the share image is generated server-side with PHP's GD — no headless browser was harmed), opt-in push and email nudges. Gamification is doing honest work here rather than dark-pattern work; the streak exists to get me back to the questions, and the questions are where the learning is.
Deliberately boring on purpose
The technical decisions all point the same direction. It started life as a single-user app for my own phone, so: Laravel with SQLite — one file, no database server, the deploy is the code. Blade templates with Alpine.js for the quiz interactivity — no Livewire, no Inertia, no SPA, because a quiz round is a form submission with good manners. A PWA manifest so it installs on the home screen. When it later grew sign-in and other users, the boring foundation took the weight without complaint.
There's a lesson in that I keep re-learning across side projects: match the architecture to the actual shape of the thing. A personal quiz app that reaches for a SPA framework and Postgres on day one isn't engineering, it's cosplay. The interesting problems in Quizine were never technical — they were which questions, what explanations, and what difficulty curve keeps a tired person playing at 10pm.
Has it worked? At the stove, genuinely yes — in the specific, testable sense that the why now surfaces while I cook. I rest meat and know what the rest is doing. I know why the pan has to be dry before the oil goes in. Some evenings I'll catch myself explaining the Maillard reaction to a pan of browning onions, at which point the app has arguably worked too well.
I built it because I wanted to be a better cook, and it made me one. That's a better outcome than most side projects manage, and it cost me a quiz app.