I.
Ship the foundations firstAuth, error states, empty states, observability. The interesting work sits on top of the boring work doing its job.
II.
AI as a tool, not a featurePick the right model for the job — OpenAI, Claude, Gemini — and design around its failure modes, not its demo.
III.
Performance is a UX decisionA 40% drop in API latency at Blurock changed how the product felt. Measure first, optimise second, ship third.
IV.
Frontend is a data problemState, types, and data flow decide whether an interface feels reliable. Components are just the surface.
V.
Working code beats good intentionsTwo internships, four shipped products, and a final year of CS. The receipts live below this page.