How this site was built.

Built by AI coding agents, directed by Ashwin. The words in his voice are his: any line an agent drafted stays out of production until he signs it off.

Work

Budgets

Default page budgets, with route-specific limits where needed. The lab profile is: 390 by 844 pixels, 4x CPU slowdown, 150 ms round trips, 1.6 Mbps down, cold cache, median of 3 runs. Sizes are compressed transfer.

MetricBudgetTarget
Largest contentful paint1.5 s1000 ms
Cumulative layout shift0.020.01
Total blocking time250 ms50 ms
First-load JavaScript148 KB–
CSS18 KB12 KB
HTML document45 KB–
Total first load270 KB300 KB
Prefetched before interaction5 KB20 KB

Stack

Framework
Next.js 16 and React 19, every page prerendered to static HTML.
Language
TypeScript, checked by the native compiler on every build.
Styling
Tailwind CSS 4 over a small set of design tokens: an exercise-book sheet, ink, the visitor’s blue pen, the teacher’s red pen, a margin and a twelve-column grid.
Type
Newsreader for reading, Atkinson Hyperlegible Next for the interface and numbers, Kalam for the teacher’s notes, and the system monospace for code.
Words
Essays and poems in MDX; everything else in typed content files. Keystatic edits both in development only.
Hosting
A Docker image on a small VPS behind Caddy, deployed by GitHub Actions with a key that can run one command.

Every page carries one note in its source: a line from a poem, a small programming puzzle, a credit, or a nod to the 2011 blog. View source to find it.