Fourteen years,
five teams,
one standard.
Front-end heavy, full-stack when the work calls for it, and comfortable on native mobile. Where I go deepest is performance, architecture, and the small decisions that quietly settle whether something feels finished or merely shipped. Five teams so far, from payroll software to a consumer health product used by millions.
Senior Engineer
Hims & HersSenior individual contributor on consumer products used by millions of people, and the informal technical lead on most of what I touch. I mentor engineers across teams that range from four people to twenty, and I help set the frontend standards and shared patterns the rest of the org builds against.
- Owned and led the migration of the company blog to Next.js. Page visits doubled, SEO improved sharply, and Lighthouse scores went from the mid-50s to 90 and above on production pages.
- Led large TypeScript refactors and the architectural changes that came with them, designing reusable components so content teams could ship and iterate without waiting on an engineer.
- Designed and integrated GraphQL APIs in production, shaping the schemas alongside backend teams and tuning queries that were doing more work than they needed to.
- Played a key role in major releases during the moments where the business could least afford a bad one, which usually means balancing speed against reliability in public.
- Worked with product to define what success actually meant for a change, weigh the trade-offs honestly, and iterate on real usage and performance data rather than on opinion.
Senior Frontend Engineer
Gatsby (acquired by Netlify)Led frontend UI development while bringing the team along with me, so that modern frontend practice got adopted because people understood it rather than because it had been mandated.
- Built the Node integrations that let the framework source content from almost any CMS a customer happened to be running, along with the components those integrations needed.
- Drove several proof-of-concept initiatives that fed into the company's broader technology transition and informed the architectural decisions taken after it.
- Tightened how content queries ran and improved site performance and maintainability while I was in there.
Senior Software Engineer
ZS | MedullanLed and owned the frontend and mobile work across a run of client projects, introducing frameworks and patterns that went on to influence how later projects were built. Five years, a lot of clients, and a wide spread of problems.
- Modernised and maintained core legacy systems, bringing them up to date for current browsers and platforms while steadily reducing the technical debt underneath.
- Delivered high-quality UI for native mobile and web, working closely with design and backend to meet client requirements that were rarely simple.
- Helped move the company off Angular and onto Vue, and led several teams driving the UX and UI for native applications, which roughly doubled the pace that work shipped at.
- Mentored junior engineers both formally and in passing, taking people from their first job through to senior with technical guidance, code review and architectural support.
- Integrated Dialogflow into a large-scale Drupal and Vue.js application, improving customer support automation and cutting the reliance on manual workflows.
Software Engineer
JamICTA (ICT Authority)Public-sector engineering, which meant research, platform direction, and looking after the systems the organisation actually ran on every day. Reliability mattered more than novelty, and that was the right call.
- Researched and delivered four proof-of-concept solutions for the next generation of the platform, which helped shape the technical direction taken afterwards.
- Overhauled and maintained the organisation's public-facing website, making it more reliable, easier to use and considerably easier to maintain.
- Designed and built a streamlined internal CRM that improved how the office worked day to day and took real friction out of internal workflows.
- Cleared dozens of long-standing bugs out of legacy systems, and was part of the small group that introduced Scrum and ran the standups that came with it.
Software Engineer
Interactive Payroll SolutionsThe first shirt. Payroll and business applications, where the fundamentals got built and where I learned that a bug isn't an abstraction when it lands in somebody's pay.
- Rebuilt the company website from the ground up in four days, which remains the shortest runway I have had for a whole site.
- Converted the core legacy system off FoxPro and dBase onto .NET, moving the business off a stack that was running out of road.
- Led the visual overhaul of two internal systems.
- Contributed to the development and maintenance of payroll and business applications, working on production systems and business logic that people relied on.
- Supported ongoing system enhancements and issue resolution, which built the foundation for how I approach engineering practice and working with a team.
What I'm hired for, listed roughly in order of how deep I go.
Next.js, React, TypeScript, Vue and Svelte. Performance, SEO and accessibility are part of the build for me rather than a pass at the end of it.
Node.js, NestJS, Java and .NET Core. I design REST and GraphQL APIs with the people who have to consume them in mind, because I have been on that side often enough.
Native iOS in Swift and native Android, shipped alongside the web surfaces rather than instead of them.
AWS, Firebase, Azure and Cloudflare. PostgreSQL, MySQL and MongoDB, with Prisma and Drizzle when an ORM earns its place.
Apollo GraphQL, plus headless CMS work in Contentful, Sanity, Dato and Drupal, wired up for teams that publish every day and cannot wait on a deploy.
Mentoring through code review and architectural guidance, and using AI-assisted workflows where they help, with enough engineering judgement to know when they do not.
After that, a long tail of self-taught front-end. Animation, rendering performance, and whatever the weekend happens to demand. Most of what I use day to day I picked up after the degree, which I suspect is true for most of us.