Senior software engineer focused on product, UX, and developer experience.

I take on difficult product problems and stay with them from the first technical decisions through rollout and real use.

When the problem is unclear

I bring assumptions and trade-offs into the open early so the team can challenge the direction before there is code to unpick.

I start with what will unblock the team, then use what we learn in production to decide what deserves another pass.

Selected work

Structured-document change review

Authors and reviewers needed to understand changes in rich, structured documents without comparing versions by hand, losing their place or breaking the document’s reading flow.

I designed and built the comparison experience, turning raw change data into additions, removals and edits that reviewers could scan in context. We tested it first across product teams, then with the wider company.

Fine-grained matching made small edits easy to follow but confused larger changes. I paired detailed comparisons with explicit replacement states, preferring an honest result to a misleading match. The interface also had to preserve the document’s reading flow as those states changed.

Reviewers could scan and judge changes without leaving the document. Early monitoring showed that reviews finished faster and that people used the review workflow more often.

Real-time meeting UX and accessibility

Room calls lacked the accessible captions available on other clients, and their layouts needed to stay legible on different displays and as the call state changed.

I was technical lead for a four-engineer workstream. I built Workplace Rooms’ first captions experience, shaped the pre-call and in-call layouts, and led the meeting-UX part of the move from C++ to React Native.

Caption fragments changed before becoming final, so the interface assembled and revised them in real time. The C++ and React Native implementations also had to coexist during the migration.

Captions reached Meta’s global rooms, made meetings easier to follow and drew positive feedback. They delivered the first room call on the React Native foundation; later, my rendering and caching work achieved a double-digit reduction in frame latency.

Geospatial drawing platform

Property teams needed to draw, measure and annotate maps, but only had a hard-to-find radius tool or a heavyweight, site-specific workflow.

I led a four-engineer team through an initial release in roughly one quarter. I designed and built the PostGIS/Node.js storage and retrieval service and a framework-independent TypeScript library.

Interactive browser geometry had to work with tiled spatial queries. We prefetched beyond the visible map, cached results and invalidated only dirty tiles after edits. Early user testing also changed how text labels behaved at different zoom levels.

We shipped drawing, measurement, transformations and text incrementally rather than waiting for one large release. Property teams gained one coherent toolset, and the common spatial foundation was later reused across multiple products.

Where I’m strongest

  1. Product and interface engineering

    I build accessible interfaces for real-time, spatial and structured data.

  2. Full-stack and platform work

    I design browser and mobile products together with the services, data and infrastructure behind them.

  3. Developer experience

    At LandTech, I built and maintained a service template that teams used to start at least five services without copying an existing repository.

I most often work with TypeScript, React, Node.js, GraphQL, AWS, Postgres and Kubernetes.

Experience, in brief

  1. B2B software company

    Product engineer

    2025 to present

  2. Meta

    Senior Software Engineer

    2020 to 2025

  3. LandTech / LandInsight

    Lead Software Engineer

    2017 to 2020

  4. SG Digital / OpenBet

    Software Engineer

    2016 to 2017

  5. Torquing Robotics

    Software Developer

    2015

  6. Griffiths Waite

    Software Engineer

    2014 to 2015

Explore my experience

Start a conversation

If my experience fits the work your team is taking on, I’d be glad to talk.

I’m happy to share a full résumé and further project detail directly.