The editor runs on Scittle in your browser, and on
your local environment — real Clojure on your machine — in the
open-source desktop app. You can type anything you like and Run it.
The exercise is waiting on a particular output; whatever you Run is
just printed, and the moment it matches you advance.
Each drill has a par: the number of expressions —
pairs of parentheses — in the provided solution. Solve it in fewer
expressions and you're under par; use more and you're over. You can
reveal a hint if you're stuck, or reveal the whole solution if
you're really stuck.
Exercises are tracked by an automatic BKT estimate
of your fluency and an SRS built on the forgetting
curve. Using hints or revealing the solution lowers the app's
estimate for that concept, so the drill comes back around in your
rotation more often. Repeat any drill as many times as you like to
get a better par and raise your BKT.
learn
Start with a lesson
The lessons give you a brief overview of the syntax and concept,
then invite you to play around with the code in the editor.
practice
Makes perfect
In the practice drill you're prompted to write the code the lesson
just covered. The prompt aims not to give the answer away, and you
can see what the editor expects.
You could of course game it with a print statement — but the point
is to build real fluency in Clojure. Successfully completing the
drill is the only thing that raises your BKT score; the app tracks
solutions revealed and hints used and takes those as evidence you
don't know the code yet.
The par and star system is just there to encourage efficient,
idiomatic Clojure — and to get you playing around with different
solutions. You stay free to answer the problem any way you like.
how it remembers
Knowledge tracing + spaced repetition
As you practise, the app keeps a running estimate of how well you
know each part of a solution — that's Bayesian Knowledge
Tracing, the mastery number you saw jump on the result
card. Because it's per-token and Bayesian, one lucky guess doesn't
read as "known", and getting map right in one topic
carries over to the next.
Left alone, that mastery decays along the forgetting
curve — memory fades fastest right after you learn
something. The selector schedules each item to come back just as
it's about to slip, and every time you get it right the next gap
gets longer.
Each correct review (●) resets mastery higher and stretches the gap before the next one.
the toolbox
Build your fluency in Clojure, one tool at a time
Every topic you've worked on rolls up here: your streak, topics
mastered, lessons done and exercises solved, plus everything that's
due for review. As you practise, each topic earns its own card with
a mastery heatmap and your par against your best.
🌐 The web app
Runs in the browser on Scittle — a small Clojure
interpreter compiled to JavaScript.
No account needed to start; everything works straight away.
Sign in if you want your progress synced across devices.
Or skip the account entirely and keep your progress as a JSON file you export and import yourself.
💻 The desktop build
The open-source build runs entirely on your own
machine, evaluating your code locally.
No account, no telemetry, no backend — it works offline.
Your progress is a JSON file on your own disk; export and import is the only backup.
Local-only, and free software under the EPL.
Built on the Clojure ecosystem
Clojure Fandango was made possible by the following open-source projects.