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 spot changes in structured documents without comparing versions by hand or losing their place.

I designed and built the comparison experience. We tested it first with 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.

Reviewers could find and judge changes without leaving the document’s reading flow. Early monitoring showed that reviews finished faster and the workflow was used 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.

The work reached conference rooms across Meta’s global offices and received positive feedback from hearing-impaired colleagues. It also delivered the first room call on the React Native foundation. Later, my rendering and caching work produced a measured 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 the PostGIS/Node.js spatial service and a framework-independent TypeScript library.

Map interactions had to work with tiled spatial queries, prefetching, caching and selective invalidation. User testing also showed that text labels needed visibility rules tied to zoom.

We shipped drawing, measurement, transformations and text incrementally, giving property teams one coherent toolset. The 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.