Product-minded engineer with an unorthodox, self-taught background: former lawyer, project manager, and translator. 5+ years experience. Fluent Spanish.
Senior developer working on 2 proprietary products and 5 client projects, from product strategy and system design, to implementation and deployment.
Building a greenfield project for a global leader in energy technology in a cross-functional team of 6 developers, participating in early architectural decisions, with C#, .NET, and Angular.
Led the implementation of an interactive data visualisation dashboard for a climate non-profit, that computes and displays the complex effect of hundreds of policy measures, with Next.js and D3.js.
Led the development of a 2-way data sync between Personio and Teamleader APIs as a scheduled Node.js Firebase Cloud Function, with Google Cloud monitoring and Slack alert integration.
Core developer of the website for the German branch of game publisher Asmodee (Settlers of Catan, Carcassonne), a Next.js app, with Strapi CMS and Python to import products from Magento.
Reduced client-side asset loading times significantly through persistent server-side caching of uploaded assets in commonly-used dimensions, improving app performance and UX, with Rust.
Improved the UX of a legacy Next.js app by making it responsive, adding transition animations, error and suspense boundaries, with TypeScript, React, React Query, Tailwind.
Implemented the first CI tests and quality checks when joining a legacy Next.js project, with Jest, ESLint, and GitLab CI/CD, encouraging best practices, code quality, and maintainability.
Migrated a Next.js app from v13 Pages Router app to v14 with App Router, after getting management buy-in and investigating migration strategies, improving performance and developer experience.
Improved website performance by over 100% by migrating a Wordpress site from managed hosting to self-hosted, after investigating and considering possible solutions.
Refactored a Node.js cron job to a separate Docker container using Terraform, after noting an unusual way of running it in a Next.js API route, improving fault tolerance and best practices.
Identified a high risk of production data loss in a project with no staging environment, and set up a mock server using Mock Service Worker and Faker.js, enabling faster, safer development.
Developed and maintained a scalable, reusable React component library for the front end e-commerce store of a 1-billion-euro retail business, in a cross-functional scrum team, using TypeScript, Next.js, Styled Components, SCSS, Contentful CMS, Figma and Jira.
Member of the core team tasked with migrating a legacy monolith Java back end to an event-driven microservices architecture, with Node.js, Google Cloud Platform (GCP), and Commercetools.
Created a Node.js service in GCP to fetch ~1 million stock records for 28 brick-and-mortar stores from an undocumented legacy production SOAP API and import them into Commercetools, every night, and on-demand via Google Pub/Sub.
Extended the native Contentful rich text renderer to provide custom functionality, after investigating how to give content managers a requested custom CMS feature.
Developed a scalable white-label job and real estate portal, serving over 80,000 listings across 90 portals to over 3 million visitors per month, with React, MobX, vanilla JavaScript, Webpack, jQuery, Bootstrap, SCSS, PHP, and Symfony.
Scheduling and management app for personal trainers made with Next.js 15. Made in collaboration with and used in production by a real personal trainer.
Education
LL.M. International Business Law
University of London
2017 – 2019
B.A. French
King's College London
2000 – 2004
Interests
Running/hiking: ran 972 km in 2024. Hikes include Mulhacén in Spain and the Tour du Mont Blanc.
Skateboarding: descended 1,200 m down Mount Fuji along the 29 km Fuji Subaru Line road.