I currently lead the frontend engineering team at Corellium, a virtual hardware lab for security researchers, pen-testers, IoT developers and government defense contractors.

ReactJavaScriptTypeScriptTailwindStorybookNextReduxStripeSegmentGTMGoogle Analytics

Corellium are pioneers of a unique Arm-based device virtualisation platform, working to advance security and development work on mobile, IoT, and beyond.

Design System

I was one of the first dedicated Frontend Engineering hires brought on board to help the company as it moves to scale up its growth. Our team had a large number of future projects planned, so we quickly identified the need for a comprehensive design system.

Our goals were to create a system to allow us to quickly build new interfaces, introduce a consistent visual style and improve developer experience.

It was built out as a Storybook-based design system on React, Next, Typescript, Tailwind, and deployed for preview on Vercel. This stack formed the base for all future frontend projects.

Once our design system was ready we moved onto rebuilding the marketing website as our first build test. Prismic was selected as our headless CMS.

About a year after its first build the marketing team took ownership of the website and rebuilt it again using HubSpot as the base platform.

Trial Request Flow

Next up was the trial request flow which website visitors can fill out to get their hands on Corellium. This has had many iterations of varying complexity and features including Stripe billing integration with 3DS, email validation, automatic geolocation lookup and of course a neat transition and progress indication animation.

The process now is much simpler and represented as a regular form but this project was a great second build test for our design system.

Cloud Administration Platform

Managing our customers was originally an admin-only view built into the primary application frontend. This was another prime candidate for rebuild.

The new Cloud Administration Platform was built as a standalone application using a modern stack and our new design system. Now our team of administrators can review trial requests, send trial invites, manage existing accounts and the status of each of our server deployments from a central location that can be quickly iterated on.


I worked with the product, data and marketing teams to implement tracking across the website, the trial request flow, and the primary app using GTM, GA and Segment. Segment was used to recieve events via our custom data proxy which was setup to handle some of the data processing logic and make the event tracking a little more solution agnositic.

Corellium App

Outside of our greenfield projects my primary role has been to maintain the frontend of the primary Corellium app. Across hundreds of tickets I've implemented new device interaction features, administration features, enterprise features such as whitelabelling for Arm, and supported the launch of multiple Android, iPhone and IoT devices.

The codebase is quite large and complex and has some areas for improvement that we're still working hard at to make it on-par with our design system and other frontend applications.

One of the first big cleanup pieces of work was converting all plain CSS to use reusable design tokens and bring the UI to alignment with our other customer touchpoints, implement greater UI consistency, and improved accessibility. Using Tailwind as our new basis we have almost completed a full conversion of styles framework within the app.

In early 2023 I was promoted from Senior Frontend Engineer to Frontend Engineering Manager. I now lead frontend at Corellium and continue to work with the product, design and other engineering teams to continue to rollout new features and improvements to our customers.

The frontend team is also currently in the process of getting the design system ready for implementation into the primary app to replace existing components. We'll also be finishing the conversion of remaining files to functional components and TypeScript while implementing a sorely needed testing framework.