About me

I am an experienced frontend developer who's worked with React and Vue (both with typescript). I like working in small, collaborative teams, working alongside design and UX departments. I'm a big fan of component-driven development and of Agile ways of working - I'm never afraid to throw out something if it's not performing. I love progressive enhancement and I like to build with this in mind - creating HTML and CSS that works, then adding complexities on top. I like to question decisions and believe there's no such thing as a stupid question. I'm big on keeping things simple and effective, do one thing and do it well.

In my spare time, I enjoy playing the drums and running.

My work

  • The Upzelo logo

    Upzelo

    Sep 2021 - present
    Senior frontend developer
    • Vue 3
    • Laravel
    • Cypress
    • Tailwind

    As the first frontend hire at the company, I was brought on to build out a component library that had been designed in Figma. This project was a success in that it allowed the business to work at a fast pace and iterate on the product. I was responsible for regularly updating the components to ensure they were fit for purpose and easy to use.

    My research found a lack of a Storybook equivalent for Laravel. In response, I gradually built a site for documenting and testing the components that was used by the designers and developers.

    I was also responsible for selecting the frontend tech stack and making decisions about when to update or rebuild areas of the codebase. One example of this is a drag and drop UI that had grown in complexity and the state management was getting out of hand. I made the decision to rebuild it in Vue which reduced bugs and sped up UI updates. The decision was not taken lightly as it was a primary part of the product and in constant use. Due to it's modular build, much of the backend remained the same and the tests did not need updating, simplifying the process.

    As the primary point of contact for frontend work, I oversaw all frontend tasks completed by backend developers and worked closely with the design and UX team to ensure that all site changes met their standards. I also took on on-call responsibilities for addressing customer issues and contributed to the public-facing documentation for our javascript library.

    My role was spread across three codebases, the product itself (an installable widget), the admin areas and the marketing website.

    Screenshots of work produced

  • The Teamed logo

    Teamed

    Oct 2020 - Sep 2021
    Senior frontend developer
    • React
    • Tailwind
    • RxJS

    As a frontend developer for Teamed, a SAAS platform that allows employers to hire people from around the world, my role was to build and design the interface for both employers and employees. I utilized React and consumed a REST API built with Ruby in order to complete this task.

    In addition to my technical responsibilities, I also reported to management for research and sign-off and managed my own workload and deadlines. One of the biggest challenges I faced in this role was ensuring that both the platform and the marketing site were fully multilingual. To achieve this, we used the React i18n library and a Webflow plugin that allowed for CMS editing on the marketing site.

    Another important aspect of my role was to create an interface that made sense for all of our worldwide users. This included selecting an understandable date format for the holiday booking system, among other considerations. Overall, my role as a frontend developer for Teamed required me to use my technical skills and problem-solving abilities in order to create a user-friendly and effective platform.

    Screenshots of work produced

  • The StratumFive logo

    StratumFive

    Nov 2018 - Nov 2020
    Frontend developer
    • Vue
    • Typescript
    • ChartJs
    • PWA
    • VueX
    • Cypress
    • CSS
    • Sass
    • Canvas
    • Storybook

    At StratumFive, I worked on software that was designed to manage large ships, specifically those that carry shipping containers. Our team built multiple products, including a PWA that could be used offline at sea. The frontend was built with VueJS and TypeScript. To ensure the reliability and safety of our software, we integrated our Cypress tests with the deployment pipeline and worked to minimize downtime.

    In addition to building a customizable dashboard with various chart types, we also created our own map layers for weather and port overlays. One example of this was a map layer that rendered every port in the world, and clustered them together based on the map zoom level. The data was fetched from a REST API.

    Some of the challenges involved dealing with large datasets. We found the SVG based chart libraries struggled with so many DOM nodes and so moved to a canvas based chart library, this was a relatively simple switch due to how we'd built our components as an abstraction on top of the library. We also often used sampled data but had to employ some sampling algorithms to ensure outliers were not removed. The decision to do this in the frontend was made so that the user could zoom in to a dataset at speed and not require more network requests.

    To manage the development of our shared component library, I implemented Storybook and used it to test and develop components with a large sample of test data. In my role, I also led two more junior frontend developers and worked with them to ensure the smooth operation of the project.

    Screenshots of work produced

  • The Simpplr logo

    Simpplr

    Oct 2017 - Nov 2018
    Frontend developer
    • React
    • GraphQL
    • CSS
    • Modules
    • Sass
    • React Native
    • Agile
    • HTML Email

    I was responsible for building a user-customizable dashboard using React, Redux, and CSS modules. To document and develop my work, I utilized Storybook. Throughout the project, I worked closely with the design team to develop ideas and suggest improvements.

    Later, we moved on to a greenfield project where we implemented GraphQL and shared components across React and React Native.

    The work was managed using Agile methodologies, and I took a scrum master training course to learn more about this approach.

    Screenshots of work produced

  • The Create logo

    Create

    Mar 2014 - Aug 2017
    Junior frontend developer
    • PHP
    • Sass
    • CSS
    • HTML
    • Legacy IE

    One of my main responsibilities was updating the legacy codebase to incorporate modern technologies and take advantage of new capabilities that were not previously available.

    One of the major projects I worked on was building a drag and drop site builder with inline editing capabilities. This site builder could be previewed on three different sample screen widths, and I was responsible for building some of the first responsive website templates. I also played a key role in moving away from using gifs for border radius and other outdated techniques. When I first started at Create, we still supported IE6, but we were able to quickly phase out this outdated browser.

    Overall, my role at Create was very collaborative and allowed me to learn a lot about UX and project management, as well as the fundamentals and best practices of frontend development.

    Screenshots of work produced