You can call me on 07480924132, email me at hi@leakypixel.net, or see additional details at leakypixel.net.
I've been developing for the web for around 16 years and I'm still as eager as ever to push my skills and learn new things. I primarily work remotely, and have led teams and worked on multiple large-scale initiatives for startups and multinational corporations alike.
My primary skills include React, Vue, NodeJS and JavaScript/TypeScript generally - though I've worked with many languages, libraries and tools appropriate to the task at hand and often managed the entire stack from development to production to support.
A short description of my last few roles and what they entailed. I'd be happy to discuss these further, but for now I'll keep it brief.
October 2023 - September 2024
As part of a small, highly commerically-driven team, took up various initiatives and improvements, alongside day-to-day BAU retail work. Initially, this started as a pure front-end role but evolved quickly into a full-stack role, owning the entire process of a service from design to production support. Some of the more noteworthy tasks included:
Skills used: Vue CompositionAPI GraphQL NodeJS Pinia TypeScript Yarn ESBuild pkg Fastify MongoDB Shopify Liquid Storybook Cloudinary Docker Ansible Azure Swagger OpenAPI React-remix
August 2022 - October 2023
Worked on and led various business-critical initiatives, including:
Skills used: Vue CompositionAPI GraphQL NodeJS Vuex Vite Ember Pinia TypeScript Yarn
June - August 2022
Worked together with a cofounder of a small startup to develop core features of the product and decrease tech debt (primarily in the state management and data fetching areas of the app). Developed a state management and data cacheing solution based on Jotai and URQL which fixed a number of long-standing bugs and resulted in a 15-20% performance improvement across the app.
Skills used: React React-hooks GraphQL NodeJS TypeScript NPM Ramda Jotai URQL Hasura
March - June 2022
Worked with a small to medium sized team to develop new features and improvements to the client application, using Vue, Pinia, Vuex and Ramda. Application performance was paramount, and involved heavy use of large datasets and graphing libraries.
Skills used: TypeScript Vue NPM HighCharts WebPack Pinia Vuex Ramda PostCSS Jest Cypress
September 2021 - March 2022
Worked with a medium sized team to refine and develop a cross-platform app to allow customers to manage and analyse their penfold pension. Primary responsibilities included finding and fixing complex multi-layer bugs, developing new features to match stakeholder specifications and performance analysis and recommendations.
Skills used: TypeScript React NPM WebPack Babel React-Hooks NextJS NodeJS Apollo Jest Cypress
October 2020 - September 2021
Architected and led a 3-person front end team, replacing an underpeforming angular site with a fully modularised and modern react-based solution for a high traffic betting company based in South Africa, as well as upskilling the existing development team into the react ecosystem. As part of the team lead role, updated key stakeholders and discussed design of the solution with appropriate people within the business.
Skills used: TypeScript React Docker NPM WebPack Babel React-Hooks React-Sagas
2020
Worked as part of a 10-person team to deliver new functionality to a greenfield implementation of a high-traffic sports betting website, using VueJS and Vuex.
Skills used: TypeScript VueJS Docker NPM WebPack Babel Vuex
2020
Worked as the lead developer with a small (3 person) team on a complete rebuild of a React and TypeScript component based whitelabel system. Built an MVP with functioning cross-module themeing, configuration injection and a reference implementation as the sole developer, which was reviewed and discussed with the technical and design team on a continual basis.
Skills used: TypeScript React Docker NPM WebPack Babel
2019 - 2020
Reverse engineered an existing in-store product showcase solution, requiring use of Erlang/Phoenix, vanilla JS/HTML/CSS, associated animations and the existing custom build and deploy system for a multinational retailer end client.
Skills used: Erlang/Phoenix JavaScript CSS HTML CSS3-animations
2019
Worked on a high-profile project for a well-known international clothing brand, using React, TypeScript, Netlify, Next.js, AWS lambda, nodeJS and AWS dynamoDB to deliver an integrated customer experience across in-store devices, mobile websites and a facebook messenger bot. Working remotely as part of a small, internationally distributed team to deliver a time-critical project with many challenges and tight deadlines.
Skills used: TypeScript React Netlify Next.js LambdaFunctions NodeJS DynamoDB MessengerAPI
2018 to 2019
Worked closely with a worldwide distributed team to develop a deliveroo-like service for fuel and related product delivery. As the only JavaScript developer on the team, I built a react and apollo based web application to interact with an erlang graphql service that was being developed in tandem by other members of the team.
Skills used: JavaScript React LeafletJS Apollo GraphQL Erlang/Phoenix
2018
As part of the ventures team, built a new marketplace application using react for the frontend and python with flask for the backend. Worked in a team of 2 to get the project off the ground and into production. This project was more focused toward user research and constant iteration than technical challenges, something I really enjoyed.
Skills used: JavaScript React Redux Python Flask SQLAlchemy Docker
2017 to 2018 - Life's Great - JavaScript consultant (6 months, part remote)
2017 - Tyres on the Drive - JavaScript consultant (12 months)
2016 - The Hut Group - JavaScript developer (12 months)
2015 - Bet365 - JavaScript developer (6 months)
2013 to 2015 - On The Beach ltd. - Front end developer, Permanent
I'm sometimes lucky enough to get to work on small projects, which can be quite varied. A few of my favourites have been:
Some of the skills I've picked up along the way and tools I've used.
I've around 16 years experience with JavaScript, and consider myself highly proficient. I take an active interest in new developments, often spending my free time checking out new features and frameworks.
In the past few years, I've taken a keen interest in devops-related skills. Initially, this started as a passion project to containerise and self host infrastructure, but quickly developed into managing the full stack in my commerical roles.
Developing the front end of a project was my main focus for many years, picking up a history of tools and techniques. It's still something I find very satisfying, especially in first iterations of products.
I've also picked up a few odds and ends that don't fit anywhere else, often from interested coworkers or personal projects.
Working on many projects has given me contact with quite a few back end environments, with varying degrees of depth.
Things people have said about working with me.
November 2023
I worked with Craig for over a year, very closely on a complex, high-stakes project involving Vue, GraphQL and such, with a lot of technical debt. First of all, it is a joy to work with and talk to Craig. He is very knowledgeable, intelligent, empathic and efficient. He not only managed to analyze the situation clearly, he also proactively suggested and made major improvements to the code base and was able to clearly communicate and explain it even to non-tech people.
We/I will dearly miss working with him and he was only "released" due to unrelated business decisions. Highly recommend hiring Craig, you will not regret it!
July 2022
Craig has been a fantastic and excellent addition to our team for a few months. We have worked together very hard to develop core features of the product and decrease tech debt in the state management and data fetching areas of our web app. He has a very thorough understanding of the React ecosystem and as a whole of front-end technologies. Craig has conducted together with myself the research and PoC implementation of Jotai, which we later have adopted throughout the app. This has resulted in a 15-20% performance improvement and it has reduced significantly the number of network requests and bugs that we have faced with our previous implementation of a data caching layer. Needless to say, this was a very challenging endeavor, with a relatively short deadline, filled with numerous moving parts.
We have also worked together to develop a new feature called the Treemap, which is a visual and interactive representation of the product discovery outcomes.
He is a great communicator and very hard working individual. His technical knowledge covers areas way beyond front-end technologies. I can't recall just how many conversations we had about IoT devices, microcontrollers, networking, and security - always fascinated by the sheer amount of knowledge he has.
We have been very pleased with the work he has done and we are grateful to him for his contribution to the team and the company.
October 2019
Craig worked with us on an extremely intense project with tight timelines. He was able to help deliver the project and put in additional effort above and beyond what was expected of him. He was able to ramp up quickly and own the solutions he worked on, as well as reacting to changing requirements and challenges. Craig worked closely with an external API team to overcome issues and deficiencies with data, and collaborate around improvements with how data was retrieved to optimize for performance. He also produced the frontend for a web experience in ReactJs to design specifications, and with impressive turn-around. Craig also owned and delivered a Facebook Messenger Bot as part of the solution.
This was an unusually challenging and stressful project, and we were lucky to have Craig staying focused and committed to the delivery of the end experience.
June 2019
I had the pleasure of working with Craig on a few month long project implementing an Elixir based app. As our frontend expert he had an additional challenge being the only representative of his field on a distributed team of backend engineers. With members located all over Europe, taking on intertwined tasks, there was an additional requirement of communicating effectively within the team to make sure everyone progresses with their work and does not block others. The success hinged on developers actively coordinating with each other and keeping the conversation going. Craig’s friendly attitude, sense of humour and opened mind played a huge role in making that happen.
Craig managed to combine the requirements of being the sole expert in his field with being a team player aiding other people and overall team progress. He took initiative, was able to advise and guide the customer towards certain solutions, he listened to feedback and changing requirements and moved forward in a steady, confident pace. He is not the loudest voice in the room and not the one to initiate edgy endeavours, but his advice is well thought out, meaningful and opened for debate. He is not afraid to admit mistakes and raise flags if he thinks something is going wrong, which builds trust within the team and allows management to make good decisions.
It is my opinion Craig’s personality will match any team and combined with his expertise as a seasoned frontend developer will help projects reach a successful delivery.
I have quite a few hobbies outside of my development work, and try to keep myself as active as I can - especially during the summer, when I can get outside.