DARE · DEVREPORTS · 2026-05-15

Page-hits reimagined

A/B sketch preview. The current Weekday/Month bar chart aggregates 70 active days into a handful of totals — losing the bimodal shape that the underlying data has. Two treatments below restore access to the days the current chart erases.

6
spike days (≥6K)
48,518
hits from spikes
64
baseline days
2,931
median baseline day
10,007
hottest day (2026-03-07)

Sketch A — calendar heatmap

90 daily cells. Rows = weekday (Mon top, Sun bottom). Columns = calendar weeks. Colour intensity ∝ hits (log-binned). Hover any cell for the date + value.

Mon Wed Fri Sun 2026-02-14: no data 2026-02-15: no data 2026-02-16: no data 2026-02-17: no data 2026-02-18: no data 2026-02-19: no data 2026-02-20: no data 2026-02-21: no data 2026-02-22: no data 2026-02-23: no data 2026-02-24: no data 2026-02-25: no data 2026-02-26: no data 2026-02-27: no data 2026-02-28: no data 2026-03-01: no data 2026-03-02: no data 2026-03-03: no data 2026-03-04: no data 2026-03-05: no data 2026-03-06: 4 hits 2026-03-07: 10,007 hits 2026-03-08: 4,087 hits 2026-03-09: 3,746 hits 2026-03-10: 4,607 hits 2026-03-11: 5,515 hits 2026-03-12: 5,490 hits 2026-03-13: 9,923 hits 2026-03-14: 6,779 hits 2026-03-15: 5,214 hits 2026-03-16: 8,272 hits 2026-03-17: 2,825 hits 2026-03-18: 2,102 hits 2026-03-19: 2,536 hits 2026-03-20: 6,494 hits 2026-03-21: 2,709 hits 2026-03-22: 3,559 hits 2026-03-23: 1,975 hits 2026-03-24: 3,228 hits 2026-03-25: 4,034 hits 2026-03-26: 2,438 hits 2026-03-27: 2,230 hits 2026-03-28: 2,774 hits 2026-03-29: 4,477 hits 2026-03-30: 3,130 hits 2026-03-31: 3,004 hits 2026-04-01: 3,998 hits 2026-04-02: 3,514 hits 2026-04-03: 2,272 hits 2026-04-04: 2,358 hits 2026-04-05: 2,813 hits 2026-04-06: 1,728 hits 2026-04-07: 3,559 hits 2026-04-08: 2,433 hits 2026-04-09: 2,337 hits 2026-04-10: 3,487 hits 2026-04-11: 2,631 hits 2026-04-12: 2,224 hits 2026-04-13: 2,496 hits 2026-04-14: 2,323 hits 2026-04-15: 2,921 hits 2026-04-16: 3,775 hits 2026-04-17: 3,309 hits 2026-04-18: 3,687 hits 2026-04-19: 2,854 hits 2026-04-20: 3,745 hits 2026-04-21: 4,084 hits 2026-04-22: 5,940 hits 2026-04-23: 3,512 hits 2026-04-24: 3,804 hits 2026-04-25: 3,527 hits 2026-04-26: 2,496 hits 2026-04-27: 3,067 hits 2026-04-28: 7,043 hits 2026-04-29: 3,190 hits 2026-04-30: 3,093 hits 2026-05-01: 3,455 hits 2026-05-02: 542 hits 2026-05-03: 1,246 hits 2026-05-04: 1,645 hits 2026-05-05: 1,940 hits 2026-05-06: 2,076 hits 2026-05-07: 2,165 hits 2026-05-08: 2,941 hits 2026-05-09: 2,906 hits 2026-05-10: 1,687 hits 2026-05-11: 1,328 hits 2026-05-12: 3,429 hits 2026-05-13: 2,686 hits 2026-05-14: 3,168 hits Feb Mar Apr May Less More
What it reveals The March spike cluster jumps out as a column of dark cells; baseline days form the muted background. Weekday rhythm (if any) reads as horizontal bands. Both axes (weekday + month) coexist in one view, so the Weekday/Month toggle becomes vestigial.
What it loses Exact numbers are gone — you read pattern, not value. Wrong tool for "what was last Tuesday's count?"; right tool for "is anything anomalous?"

Sketch C — cumulative-volume curve (concentration view)

Active days sorted by hits descending. Curve shows cumulative % of total hits as you walk through the top days first. The dashed 45° line is what perfect equality would look like; the bow off the line is the concentration. Where the curve elbows from steep to shallow is the spike-vs-baseline boundary.

25% 50% 75% 100% 0% 25% 50% 75% 100% Spike boundary: 6 days = 8.6% of active days carry 20.2% of total hits (48,518) 6 days (9%) carry 20% of volume Active days, sorted by hits (descending) Cumulative % of total hits Actual cumulative Perfect equality (45°) Spike-elbow
What it reveals The top 6 days (8.6% of active days) carry 20% of total hits — a Pareto-like concentration. The top 10% of days (7 days) carry 23% of volume. The curve's elbow is the natural spike-threshold; the bar-chart B uses a hardcoded 6K cutoff, but this curve derives the boundary from the data's own shape.
What it loses Time — both x-axis and y-axis are about distribution, not when. A March-clustering vs April-evenness story is invisible here. Pair with the heatmap or two-mode bar; this curve is a complement, not a substitute.

Sketch B — two-mode bar (spike vs baseline)

Same months on x-axis as today's chart, but each bar is split: red top segment = sum of spike days (≥6K hits), green bottom = baseline days. Hover for the spike-day dates.

0 28K 56K 83K 111K Feb '26 baseline: 0 hits across 15 days 0.0K Feb '26 Mar '26 baseline: 69,684 hits across 26 days Mar '26 spike days: 41,475 hits across 5 days (2026-03-07, 2026-03-13, 2026-03-14, 2026-03-16, 2026-03-20) 111.2K Mar '26 5 spike day(s) Apr '26 baseline: 91,177 hits across 29 days Apr '26 spike days: 7,043 hits across 1 days (2026-04-28) 98.2K Apr '26 1 spike day(s) May '26 baseline: 31,214 hits across 14 days 31.2K May '26 Baseline days (<6,000 hits) Spike days (≥6,000 hits)
What it reveals How much of each month's total is baseline vs event-driven. March's 111K is ~37% spike, April's 98K is ~7% spike. The story shifts from "March was big" to "March had a 5-day burst on top of a normal floor."
What it loses The spike threshold (6K) is a categorical decision — obscures values 4-6K. Less honest if the distribution were continuous; works because this data IS bimodal.

Recommendation

  1. Two-mode bar = the upgrade to the existing chart (Dan's pick). Same shape, restored bimodality. Threshold becomes a config knob; tooltip ports the rich bar-tooltip pattern; click-through to a per-day report is the future workstream.
  2. Cumulative-volume curve = the small companion beside the metric strip. Shows how concentrated the distribution is in one curve (6 days carrying 20% of hits). The elbow of the curve naturally argues for the spike-threshold in B — they're two views of the same boundary, mutually reinforcing.
  3. Heatmap = the future investigation surface — when the per-day deep-link lands, each cell becomes a portal. Less urgent than B + C; park as v2.
  4. Together the three views answer different questions: when (heatmap), how much (two-mode bar), how concentrated (cumulative curve). Each earns its slot by answering something the others can't.

Sketch built one-shot from the live dashboard data. Production would re-read on each cron refresh + cache-bust on data change. Generator: ~/Downloads/dare_ab_preview_pagehits_reimagine_build.py.