Readings
Every reading the course sets, grouped by the week that sets it, with what each one has to do with that week.
25 readings across 11 weeks, 21 distinct sources. All of them are short; none is a textbook chapter. This course sets specification text, platform documentation and published research summaries rather than commentary, because the recurring question —what does this claim rest on? — is easier to practise on a primary source.
Two of them are set twice, in different weeks and for different reasons. That is deliberate: re-reading something after you have built the thing it describes is a different activity from reading it first.
This page and each week page render the same list from the same frontmatter, so there is one copy. The build resolves every link on every run and fails if one has rotted, which is the only guarantee worth making about a link list.
Week 1 — What does 99% promise?
- Response Times: The 3 Important Limits — Nielsen Norman Group
Where the thresholds that force a waiting interface to exist come from — about one second before a user notices a delay, about ten before they lose the thread. This week's case sits well past both.
- Progress Indicators Make a Slow System Less Insufferable — Nielsen Norman Group
The standard argument for progress bars. Read it as the position the rest of this course argues with: it is about how waiting feels, and says very little about whether the indicator is telling the truth.
Week 2 — What counts as done?
- Uploading and copying objects using multipart upload — AWS S3 documentation
A real upload lifecycle written by the people who operate it: initiate, upload parts, complete, and the states in between where a part exists but the object does not. Read the Multipart upload process section.
- The <progress> element — MDN
Worth reading before you write your own. The platform already has a determinate/indeterminate distinction in one attribute, and it maps onto the state question more closely than most people expect.
Week 3 — Where is the denominator?
- ProgressEvent.lengthComputable — MDN
Two paragraphs holding the whole of this week's question: the platform hands you a boolean saying whether a denominator exists, and total is meaningless when it is false.
- XMLHttpRequest: progress event — MDN
What a browser actually reports during an upload, at what granularity. Note what is not in it: nothing about what the server does after receiving the bytes.
Week 4 — No idea how long
- The <progress> element — MDN
Re-read the value attribute paragraph specifically. Omitting value is how the platform spells indeterminate, and it is deliberately not the same as value="0".
- Skeleton Screens — Nielsen Norman Group
A widely used indeterminate treatment, argued for on perception grounds. Read it against this week's constraint and decide whether a skeleton admits a fractional reading — the article does not ask that, which is why it is worth arguing with.
Week 5 — Why the estimate keeps jumping
- Exponential smoothing — Wikipedia
Read the Basic (simple) exponential smoothing section only. The one-line recurrence is the whole of the third estimator, and the article is explicit about what the smoothing factor assumes.
- curl man page — the progress meter — curl project
Search for --progress-bar. A thirty-year-old progress meter shipping on millions of machines, documented unusually bluntly about what the display can and cannot promise. Worth seeing a design that chose austerity.
Week 6 — Motion, and how long it felt
- Progress Bars (research summary) — Chris Harrison, Carnegie Mellon
The researchers' own summary of the perceived-duration experiments, including effect sizes. Read the numbers rather than the headline: notice how large a difference had to be before it was detectable, and compare that with what you could detect today.
- Response Times: The 3 Important Limits — Nielsen Norman Group
Re-read in week 6. These thresholds are an order of magnitude larger than the perceived-duration effects above — a useful sense of proportion before deciding how much easing is worth.
Week 7 — Understood without the animation
- ARIA: progressbar role — MDN
The required and optional attributes, and what a missing aria-valuenow means. Audit line 2.
- aria-valuetext — MDN
For when the number needs words around it — which, on a staged upload, is most of the time.
- Understanding SC 4.1.3: Status Messages — W3C, WCAG 2.2
The success criterion behind audit line 3. Read the Intent section; the examples are a good model for what counts as a status change worth announcing.
- prefers-reduced-motion — MDN
The mechanics for audit line 4. Note that no-preference is a separate value from the query not matching.
Week 8 — Stuck, timed out, disconnected
- Understanding SC 2.2.1: Timing Adjustable — W3C, WCAG 2.2
A timeout is a time limit imposed on a user, and this is the criterion that governs it. The exceptions matter as much as the rule.
- Alert pattern — W3C ARIA Authoring Practices
When a failure warrants an assertive announcement rather than week 7's polite live region. The guidance on not stealing focus is the part that applies here.
- AbortSignal.timeout() — MDN
The platform's own timeout mechanism, and useful before week 9 — it is the same object that will implement your Cancel.
Week 9 — Cancel and retry
- AbortController — MDN
The platform's cancellation primitive. Read what abort() guarantees and, more importantly, what it does not: it stops the client listening, which is not the server stopping work.
- Multipart upload — aborting — AWS S3 documentation
The Aborting a multipart upload part specifically. A real service documenting that parts persist and cost money until explicitly aborted — precisely the failure the Cancel guarantee is written to exclude.
Week 10 — Numbers without sources
- Meter pattern — W3C ARIA Authoring Practices
Short and pointed for this week: a meter reports a measurement, a progressbar reports progress toward completion, and using one for the other misstates what the value means. Check your register for a value that is really a meter.
- Performance.now() — MDN
Read this if any of your rows traced back to a timer. It documents what a clock reading is, and why it is not evidence that work occurred.
Week 11 — Watching someone wait
- Why You Only Need to Test with 5 Users — Nielsen Norman Group
The standard argument for small-n usability testing. Read it critically and note the scope of the claim: it is about the share of findable usability problems surfaced, not about how often anything happens in a population — exactly this week's existence-proof-versus-rate line.
- Progress Bars (research summary) — Chris Harrison, Carnegie Mellon
Re-read after week 6. Compare the participant numbers and controls in that work against what you ran today, and you have the size of the gap between an experiment and an afternoon.
Week 12
No reading. The last week is a defence of work that is already finished.