One article, three layers — HTML content, fluid CSS, JavaScript extras — with real
alt text and a converter form whose submit button lives in
<noscript> , backed by an actual server-side program.
Now take the wrecking ball to it: uncheck layers, squeeze the viewport, switch languages.
The information never dies.
The JavaScript-off story: with scripts on, the converter computes live and
its submit button doesn't even exist. Turn JS off (a genuinely script-disabled
sandbox) and a <noscript> button appears — pressing it sends
the form to /convert and a server-side program does the math. That path
survives every demolition, including CSS-off, because a raw form is still a form.
(Reading, so it's GET — Module 06 semantics.)
The server, twice: locally, /convert is
serve.py — 40 lines of Python standard library
(python3 serve.py). In production on Cloudflare, it's
functions/convert.js — a handler with the
identical contract, called by the site's Cloudflare Worker and running at the edge in the
same language as the front end. Two runtimes,
one form, zero packages: Module 10's whole argument in a pair of files you can read
in a minute.
The sizing story: the article's CSS uses only relative units —
clamp() type, ch measure, em spacing — so the width
slider shows it flowing from phone to desktop with zero media queries.
The language story: Español and العربية are separate documents linked by
hreflang — the honest architecture of a multilingual site. The stylesheet is
identical in all three: logical properties mean the Arabic edition mirrors
right-to-left with no CSS changes. (Translations by hand — in production you'd have humans
or a translation service; the architecture is the lesson.)
Try the grimmest setting — Arabic, 320px, no CSS, no images, no JS — and you can still
learn to garden in fog, and still convert a temperature. That's Module 09 and Module 10
shaking hands. Open the raw article and view source.
← Just Whatever