Telemetry · Education
What did the prototype record?
A 20-minute data exercise for student builders. Eight toy trials and all 18 event rows are fictional. Once you have the printable materials or CSV, the exercise needs no account, student data, or internet connection.
Count recorded trials, not rows
Imagine a practice-question app that records a start, a question opening, and an answer submission. Count distinct trial IDs at each step. Why do seven question-opening rows represent only six trials? Which transition loses more recorded trials? Does a missing submission prove a person gave up?
A 20-minute route through the data
- 0–5 min: Find each event type in the table. A trial ID is one fictional attempt, not a person.
- 5–12 min: Tally distinct trial IDs for each event. Compare the start-to-open and open-to-submit gaps.
- 12–20 min: Give two possible reasons for a missing submit event, then name one extra event that could help test one reason. Check your counts with the SQL if time allows.
| event | Distinct trial IDs |
|---|---|
flow_started | ________ |
question_opened | ________ |
answer_submitted | ________ |
The event rows
trial_id | event |
|---|---|
| toy-01 | flow_started |
| toy-01 | question_opened |
| toy-01 | answer_submitted |
| toy-02 | flow_started |
| toy-02 | question_opened |
| toy-02 | question_opened |
| toy-02 | answer_submitted |
| toy-03 | flow_started |
| toy-03 | question_opened |
| toy-04 | flow_started |
| toy-04 | question_opened |
| toy-04 | answer_submitted |
| toy-05 | flow_started |
| toy-05 | question_opened |
| toy-06 | flow_started |
| toy-07 | flow_started |
| toy-07 | question_opened |
| toy-08 | flow_started |
Check with SQL
Import the CSV as a table named prototype_events in SQLite, or count the IDs by hand. This query does not send data anywhere.
SELECT
COUNT(DISTINCT CASE WHEN event = 'flow_started' THEN trial_id END) AS started,
COUNT(DISTINCT CASE WHEN event = 'question_opened' THEN trial_id END) AS opened,
COUNT(DISTINCT CASE WHEN event = 'answer_submitted' THEN trial_id END) AS submitted
FROM prototype_events;Organizer and teacher key
Eight trials have a start event, six have a question-open event, and three have a submission event. toy-02 has two question-opening rows but is one trial. The recorded count falls by two, then by three. The CSV does not explain why: someone could stop, the app could fail, or an event could fail to arrive. There is no randomized comparison, so the rows cannot prove a design change helped. An explicit_exit event would be evidence of an explicit exit if recorded as intended; its absence would still leave the outcome unknown.
What if the log misses a submission?
In this separate thought experiment, three submissions happen. Choose how many browser submission events fail to arrive. The underlying actions stay fixed.
Submissions visible in the log3
Submissions in this thought experiment3
The recorded count changes even though the actions do not. A server-side acceptance record could help check what happened; a missing browser event alone cannot.
Read the longer explanation (English)Optional software extension
Run the same fictional rows in Telemetry’s browser SQL playground without an account. Telemetry stores structured software events and lets developers query them with SQL, but the exercise works without the hosted service. If an organizer later wants to send synthetic events, the public $0 plan includes 1 GB of storage and needs no credit card. Never send real student identities, answers, or learning records.
Telemetry’s current terms require account creators to be over 18. Younger students can use the printable activity without creating an account. Terms of Service
Run this query in the browserFirst-event guide
I’m JR, the founder of Telemetry. I prepared this exercise with AI help; it has not been tested in a classroom or event. Review it before use. No hackathon or school has endorsed it.
Found an error? Tell me without sending student data.