Skip to content

skills: ouro-timeline, the thinkers' lives on one timeline - #63

Merged
h0ffmann merged 2 commits into
mainfrom
skills/ouro-timeline
Oct 15, 2026
Merged

h0ffmann merged 2 commits into
mainfrom
skills/ouro-timeline

Conversation

@h0ffmann

@h0ffmann h0ffmann commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

New skill ouro-timeline and command tools/fabric timeline: the lives of the thinkers of 50THINKERS.md on one timeline.

The result (last iteration)

The 50 thinkers, their lives

On the website (last iteration)

The drawing is inline in the 50 Thinkers section. Below: the hover state (Dostoevsky: the dashed lines drop to 1821 and 1881 on the axis, and the others fade), at 1280 px and at 500 px wide.

The timeline on the site, desktop, hovering Dostoevsky

The timeline on the site, phone width

  • Scrolling sideways: a scroll region that takes focus (role="region", tabindex="0", so the arrow keys scroll it), a thick red scrollbar, ← Earlier / Later → buttons (44 px high, smooth scroll unless reduced motion), and a caption saying how to read it, with a link to the full drawing.
  • Points that show their years: each life is a focusable group with an aria-label ("Fyodor Dostoevsky, 1821–1881"). Hover, Tab or tap shows the year marks on the axis. A 26 px invisible stroke makes the hit target easy.
  • No style leaks: every class in the SVG is tl- and every rule is scoped to #tl. The drawing follows the site's light/dark theme (data-theme and prefers-color-scheme). Its title band is hidden on the site, because the section heading names it.
  • Site test: the_timeline_scrolls_and_each_life_takes_focus_test (18 site tests pass). just check and just site-build pass.

How it keeps the scale

  • One scale everywhere: 3 px a year in every era, so a 70-year life is equally long in Athens and today.
  • Empty years cut out: a stretch of more than 60 years with no thinker alive is removed and marked with a red // and its real length (≈ 216, 1308, 212, 137 years).
  • Lanes: overlapping lives (not mutually exclusive) stack; each takes the first lane where it fits, name included.
  • Look: the book's colours (black band, yellow capitals, red for cuts and for thinkers the paper cites ☑), the site's tokens with a dark scheme, and picasso's line manner (round caps, no fill, broken frame).

Data

timeline/lives.tsv: one row per named thinker with Wikidata years (item id on each row, read 2026-10-15). 9 thinkers have no verifiable dates and are listed under the drawing, not guessed: Gregory Wolfe (the only Wikidata match is an authority record I could not confirm is him), Boaz Barak, Arfon M. Smith, Gwern Branwen, Sandy Maguire, Mark D. Wilkinson, personX, Pamela Samuelson, Marcus Baffa.

Checks

  • tools/test/timeline_test.gleam: parsing, the cut, same scale in every era, lanes (86 tests pass).
  • just check now runs tools/fabric timeline --check: fails if the SVG is stale or a named thinker has no row. Passes.
  • 50THINKERS.md and 50THINKERS.easy.pt-BR.md embed the drawing.

🤖 Generated with Claude Code

h0ffmann and others added 2 commits October 14, 2026 23:54
tools/fabric timeline draws timeline/thinkers.svg from
timeline/lives.tsv (years from Wikidata): one scale everywhere (3 px a
year), stretches of more than 60 empty years cut out and labelled,
overlapping lives in lanes, red for the thinkers the paper cites, in
the book's colours and picasso's line manner. --check runs in just
check; 50THINKERS.md and its easy pt-BR version show the drawing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… years

The timeline is inlined in the 50 Thinkers section (content.timeline
from tools/fabric content), in a focusable scroll region with Earlier
and Later buttons and a caption. Each life is a focusable group: on
hover, focus or tap, dashed lines drop to the axis with its birth and
death years and the other lives fade. SVG classes take a tl- prefix and
rules a #tl scope, so page and drawing never style each other.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@h0ffmann
h0ffmann merged commit a17ca22 into main Oct 15, 2026
6 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant