Engineer. I work on the parts of the web that other teams build on.
Frontend Engineering · Publicis Sapient · Kyro.aiCarnival · Unilever · Optum
Work
Five pieces of work: what was wrong, what I changed, and how I knew.
4.2s → 2.3sLargest Contentful Paint, real usersThe booking pages rendered twice: browser-only logic ran during render, so the first client render no longer matched the server HTML.
I kept server rendering, moved that logic behind a rendering boundary, and lined the client fetch up with what the server had already sent.
−50%Accessibility bugs reaching QA, across 4 codebases serving 2M+ passengersI proposed building accessibility into the components themselves, and the client took it up for its EU expansion.
Eighteen components to WCAG 2.1 AA, contracts for controlled and uncontrolled state, and checks in CI. Cunard and P&O adopted them across four codebases.
60 fpsSearch, routing and navigation on a WebGL map, operable from the keyboardA canvas has no keyboard support, so I gave the map's controls keyboard navigation, labels and focus management.
Animation moved onto compositor layers and tiles loaded as needed, which held 60 fps on heavy datasets.
40+ hrsIntegration rework removed per sprintThree brands ran React, Angular and vanilla JS.
I built one library on Shadow DOM for all of them: theming through custom properties and ::part(), form support through ElementInternals, and events any framework can listen to. It cost bundle size. All three brands adopted it.
40+ issuesLogged across six React codebases (100k+ lines)Six React codebases on one Optum team, midway through moving from class components to functions.
I logged 40+ issues with the reason for each and ranked them by user impact and by how often they repeated. Repeated patterns became checklist items and lint rules, and the async-boundary patterns and performance budgets became the team's review standard.
Experiments
Small builds, each testing one technique.
Kanban board Layout animations that keep their place while cards move between columns.liveDark mode without the flash The theme is set before first paint, so server and client render the same markup.liveWhere I'm long and short
Where I think frontend work is heading. Written October 2026. I'll come back and mark the ones I got wrong.
Updated October 2026
Living in Bengaluru, after years of working remotely from Chennai.
Learning the web by building. AI is in the work now. I’m still at the surface. What I work out, rough parts included, goes into Lab.
Most of what I care about compounds. Skill, relationships, investments, health. I’m in it for the long run.
Next up: Hydration, slowed down — the Carnival double render made into something you can play with.
Reading Psycho-Cybernetics by Maxwell Maltz. Strength training three days a week, a journal most nights, and long walks. Most of the ideas here started on a walk. I keep the ones that held up in Principles.
Looking for my next team.
2017Ebbs and flows →today