A dated chronological feed of what I’m reading, building, and figuring out as I develop this curriculum and pursue a three-paper research program with Jeff Anderson. The point is not polish — it is recency. If a thought is worth ten minutes of writing, it lives here.
Tags#a11y#habit#process#seo#site#teach_cs
April 2026
2 entries
Build
Per-course Open Graph cards + accessibility pass on teach_cs
Shipped per-course OG image generation so sharing /courses/cs180-intro-ai now renders a branded card with the course number and accent color. Same iteration also added a global focus-visible ring, skip-to-main link, ARIA roles for course detail tabs (with arrow-key nav), an active-page highlight in the navbar, and an EducationalOrganization JSON-LD block on the homepage. The site is now keyboard-navigable end to end and shareable on a per-course basis.
Added /log as a single chronological surface for what I'm reading, building, and figuring out. The goal is twofold: develop a weekly capture habit, and give Jeff Anderson a single URL to bookmark for visible progress. The format is intentionally minimal — a TypeScript file I edit and push. No CMS, no markdown processor, no friction. If a thought is worth ten minutes of writing, it lives here.
Entries live in lib/data/log.ts. Add a new object at the top of the array, push, and the entry goes live. No CMS, no markdown processor, no friction. The format is intentionally minimal so the cost of capturing a thought stays under ten minutes.
Entries marked Starter — replace are placeholder content meant to be edited or deleted as real notes accumulate.