Bengaluru · --:-- IST

Engineer. I work on the parts of the web that other teams build on.

Frontend Engineering · Publicis Sapient · Kyro.aiCarnival · Unilever · Optum

01 / Work

Work

Five pieces of work: what was wrong, what I changed, and how I knew.

D-01Carnival4.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.
Cunard · P&O bookingNext.jsSSR · hydrationrendering boundariesmeasured: field data, release window

I kept server rendering, moved that logic behind a rendering boundary, and lined the client fetch up with what the server had already sent.

demo · in progress
D-02Carnival−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.
Design systemWCAG 2.1 AA18 components · 4 codebasesCI a11y checksmeasured: QA defect logs, before and after adoption

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.

demo · in progress
D-03Kyro.ai60 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.
Geospatial moduleMapbox GL · WebGLcompositor layersroving tabindexmeasured: frame rate under load · Lighthouse accessibility 70 → 100

Animation moved onto compositor layers and tiles loaded as needed, which held 60 fps on heavy datasets.

D-04Unilever40+ hrsIntegration rework removed per sprintThree brands ran React, Angular and vanilla JS.
Web component libraryStencil.jsShadow DOMmicro-frontendsmeasured: integration ticket hours per sprint, before and after

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.

demo · in progress
D-05Optum40+ issuesLogged across six React codebases (100k+ lines)Six React codebases on one Optum team, midway through moving from class components to functions.
Architecture reviewReact6 codebases100k+ LOCmeasured: shared issue tracker, tagged by codebase and category

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.

demo · in progress
02 / Lab

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.live
Streaming reply you can interruptAbortController, aria-live and optimistic UI with rollback.building
10,000-message virtual listVariable row heights with stable scroll anchoring.building
03 / Positions

Where 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.

longThe accessibility tree. Browser agents read a page through the same tree screen readers use. The keyboard and screen-reader work I've done serves them too.D-03
longScreens built for the moment. More interfaces will be put together for one person's task, right when they need it. That puts the weight on the components and the rules between them, which is the layer I like working in.
longResults that arrive in pieces. Replies, saves and generated views will come in a little at a time. People should be able to read early, stop anytime, and tell what's finished.Lab
longOne action, three ways in. Anything you can do with a click should also work from a keyboard and from a sentence. Someone else will design the sentence, so the action underneath has to be clear.D-03
shortChanges without a preview. If a generated view is about to change something, I want to see the change before it happens.
shortUnreviewed generated code. Generated code goes through the same review standard and CI checks as anything else I ship.D-05
04 / Now

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
05 / Contact