The Observatory
What I learn building sites, written down so you don’t have to learn it the hard way. Organized by what it answers, not by when I wrote it.
Featured reads
Three field notes I'd hand you first. The full log lives is just below.
Observation log
Two themes: build notes from real projects, and the ideas behind them. Filter by what you’re working on.
Smooth scroll without the stutter: Lenis + GSAP in Webflow
Most Lenis + GSAP stutter in Webflow comes from three things: two animation clocks running at once, Lenis's stylesheet missing, and canvas animations that never pause. Drive Lenis from `gsap.ticker`, add Lenis's CSS, and stop anything that isn't on screen.
Interactive 3D in Webflow that doesn't wreck your mobile score
Heavy 3D doesn't have to mean a slow page. Load the scene only when it's about to be seen, pause it whenever it's off screen, render at a lower pixel ratio on touch devices, and give reduced-motion visitors a still image. The first screen stays fast because the 3D isn't on the critical path at all.
Tap is not hover: the touch bug hiding in interactive Webflow builds
On a touchscreen, a single tap fires `pointerenter`, `pointerleave` and then `click`, one after another. If hover code opens something on enter and closes it on leave, it closes it again before your click handler runs. Ignore touch in the hover handlers (`if (e.pointerType === 'touch') return;`) and let taps use `click` alone.
Reduced motion without losing the magic
When a visitor's device asks for reduced motion, keep everything the motion was saying and drop only the movement. Check `prefers-reduced-motion` in every animation, replace big moves with a fade or a still end state, and design the still version on purpose rather than just switching things off.
Why before how: what a philosophy degree taught me about building websites
The most useful thing philosophy taught me isn't any single idea. It's the habit of asking what something is for before deciding how to build it. In web projects, that one question saves more time than any tool: it turns "we need a new website" into a clear goal, a shorter sitemap and a design that has a reason for every section.
Plato's cave: what a crawler sees is not what your visitors see
In Plato's cave, prisoners mistake shadows on a wall for the real world. A crawler reading your site is in a similar spot: it often sees only the raw HTML the server sends, not the page your visitors get after scripts run. If your links, titles or content only appear after JavaScript, some machines are reading the shadow. The fix is to put the real thing in the HTML itself.
Descartes' method of doubt: publish, then check
Descartes built his philosophy on one rule: accept nothing as true unless you've seen for yourself that it is. On a website, that means a change isn't done when a tool says "saved" or "published". It's done when you've checked the live page and found it there. Descartes' four rules of method (verify, divide, order, enumerate) turn out to be a very good checklist for shipping a site.
Browse by topic
The same 27 words tag every observation, mission and service on this site. Pick one to see everything behind it.