Work in progress — not claimed as portfolio yet, but every experiment must report its findings
LAB. 01RunningStarted
Rendering video from an HTML page
What was tried
Built a site-intro video by writing a single HTML page and rendering it to video — layout, colors, type, motion timing, and the sound bed are all synthesized from code, no editing software involved.
What was learned
The site's color tokens and type carried over value-for-value, and code gives finer timing control than hand editing — but the overall visual quality isn't ready to be a primary asset yet. Logged as round one, with the gaps as next round's brief.
LAB. 01 — Silent video from the actual experiment file
LAB. 02RunningStarted
Separating the play zone from the read zone
What was tried
Took apart OpenAI's GPT-6 Astra launch page and found its star field is one layer spanning all 32,783px while only 1,908px is actually draggable — the rest looks identical but cannot be touched, and drifts over the numbers in the benchmark tables. So I built a dot field that declares where it is playable, with a toggle to compare both treatments side by side.
What was learned
Layering worked better than expected — remove the opaque plate and values like 5.8% and 1,908 / 32,783 px immediately become harder to parse. The problem was never 'there is decoration', it is that the playable and unplayable thing share one appearance. What fell short: judged by an audience of one, with no outside test of whether the zone label actually helps; on warm paper the contrast is lower than white-on-black, so the cursor-repel effect reads more faintly than the original; and the play zone sets touch-action to none so it can be dragged, which costs page scrolling for a finger that lands inside it — still unresolved.
Read zone — numbers must stay sharp
Property
Value
Dots in the field
140
Play zone · pointer-events
auto
Read zone · pointer-events
none
Original page: actually draggable area
1,908 / 32,783 px
Share of the page
5.8%
LAB. 02 — One dot field, two zones — toggle to see how much harder the numbers get to read once dots sit on them
LAB. 03RunningStarted
The chapter globe — ten forms before the final one
What was tried
Grew LAB.02 into a field that carries real data (one dot = one of 228 chapters across 18 books) and searched for its form by mocking, playing, and deciding round by round — from a plain dotted sphere, through a globe whose ladder rungs are inner shells revealed by a cutaway wedge, to the form that was finally chosen.
What was learned
The most 'creative' form (chapters strung into drill strings) lost to the most legible one · soft glowing dots that look good on black vanish on warm paper — on paper, brightness means saturated ink with a crisp edge, not blur · a cutaway fixed to the viewer feels 'locked'; it had to travel with the globe to read as an object · what fell short: every round was judged by an audience of one — this entry records the search for the form; the thing itself is the next entry.
ROUND 01Dropped
Plain dotted sphere — dots were only dots, no story
ROUND 02Kept
Wide strata — moved to become the /handbooks navigator
ROUND 03Dropped
First drill-core wedge, screen-aligned — two faces collapsed to lines, flat 2D
ROUND 04Dropped
Tilted octant — cut faces ate half the globe, most dots vanished · re-created frame, the original was overwritten
ROUND 05Dropped
Full-height cake slice — one wall face-on, the other a line
ROUND 06Kept
Lower 60° wedge — the right shape, but fixed to the viewer: a window, not an object
ROUND 07Kept
Wedge attached, box removed, 2×2 figures — a real object that turns with the hand
ROUND 08Dropped
Drill strings — 'worse than before': dots bunched into strands, unreadable
ROUND 09Dropped
Bokeh glow dots — pretty on dark, invisible on paper
ROUND 10Kept
Crisp ink dots — the site's chart language, every dot legible · the chosen form
LAB. 03 — Each frame is labelled kept or dropped · the reason sits underneath it
The chapter globe, built — round one on the real surfaces
What was tried
Built the form chosen in LAB.03 and wired it into two real surfaces: the home hero became a cutaway globe (one dot = one of 228 chapters across 18 books, colour = rung, size = chapter length, full ink = read, click a book and the figures panel becomes that book's core sample), and /handbooks became every book's core sample laid side by side above the existing list. The data is counted at build time, not typed in. The real thing is playable in this entry, both forms behind one switch, reading progress from the reader's own device.
What was learned
None of the four costliest bugs were caught by a test — every one surfaced only when the screenshots were opened and read: the rung axis on /handbooks ran upside down against the caption printed beside it (the original mock had it wrong and the port copied the mistake faithfully); the field radius disagreed with the rule written in its own comment, so the top row of dots was clipped; the English tag overflowed its slot into a two-line block (Thai fit on one line, so nobody saw it); and the tag collided with the hint at 390px. The lesson: automated gates confirm 'not broken', never 'correct' — and when a document and the code disagree, the document wins if it is the promise already shown to the reader. What fell short: still an audience of one; no way to verify by machine whether a swipe across the globe scrolls the page at the right moment (scripts can only check touch-action and taps); and above all, in daily use the owner still prefers LAB.02's plain dot field to a globe with structure inside it — the form is not settled, and this entry is the record of round one before the rebuild.
Form
Spotlight a rung
Running totals · recounted on every site update
Handbooks
18books
Chapters finished
228ch.
Diagrams drawn by hand
145figs
Projects on the registry
15items
Read (this device)
—ch.
LAB. 04 — The real component from the main surfaces, fed the same dataset: 18 books, 228 chapters · dot = a real chapter (bigger = longer) · colour = rung L0→L4 · full colour = read on this device · globe: click a book = drill · strata: click a dot = open the chapter
ROUND 01Kept
The home hero — every dot a real chapter, all pale because none are read yet
ROUND 02Kept
Click a book and the totals become that book's core sample — how deep you got, shown where the numbers were
ROUND 03Kept
/handbooks — every core sample side by side, L0 on top and L4 at the bottom, as the caption promises
ROUND 04Kept
Dark mode — dots still do not sink into the ink, the thing most feared when moving off the light ground
LAB. 04 — Each frame is labelled kept or dropped · the reason sits underneath it