Download CV

George Campbell

Software Engineer

Me

Bio

Hi, I'm George. I love what I do and do what I love. From creating interactive visualisers such ashttps://classicvisualiser.jaguar.com andhttps://computer-visualiser.vercel.app to websites such as Kirk's portfolio which won several SOTD awards.

Providing delightful experiences to real people through the digital medium. The art of coding, and its practical application, is what moves me to do what I do.

I'm highly capable of web development, adaptable and consistent.

Skills

JavaScript, ES6+, TypeScript

This is the ace up my sleeve.

Fluent in JavaScript/TypeScript, I am extremelly confident working with these languages.

React.js, Redux, state-management

React solves the problem of UI for SPAs which is why I love it. No messing around with the History API, it gets the job done. React with JSX is what I am most confident in for developing UIs.

I'm experienced with Redux and several other state management technologies. I prefer low-boilerplate solutions such as React context the most.

Node.js and Express.js

As part of a MERN stack, this can be a great choice. I've learnt a lot about back-end development by working with these technologies.

Styled components, UI/UX and aesthetics.

Styled components solved the problem of CSS-in-JS in the best way and I love using it.

Design and aesthetics is something I realised I needed to learn ever since the days of my first "programmer art" when I started learning software development.

Next.js + Tailwind

Next.js being my favourite react framework of choice, I'm highly confident using this tech for full-stack development.

I also have fallen in love with Tailwind for the styling.

+

Three.js and GLSL

My first Three.js project https://trees.vercel.app was the beginning of my journey into 3D for the web and shader languages.

MongoDB and mongoose

A NoSQL solution to databases, using these has taught me the fundamentals.

GraphQL

GraphQL is an amazing alternative to REST for client-server communication. Only the necessary data is requested and received.

Automated testing

I have experience with Mocha, Jest, Cypress, React Testing Library for writing Unit, Integration and E2E tests.

Miscellaneous skills

Here is a list of some other technical skills I have or have had a fair bit of experience with:

  • Git
    • I use this daily both for professional and personal projects.
  • Amazon Web Services (AWS)
    • For hosting and as an email provider, AWS has excellent services that I love to utilize.
    • Using EC2 to host servers on Ubuntu.
    • Using the S3 API to store assets.
    • Setting up domain names using Route 53.
  • Apache Cordova
    • I used Cordova for one of my first JavaScript projects to make apps for mobile devices.
  • Stripe
    • I learnt how to implement a Stripe payment solution a few years ago.

Work history

TravelLocal - Frontend engineerMarch 2023 - November 2023
Remote

I solved many varied problems at TravelLocal. I communicated with the designer to reduce ambiguities and bring their vision to life. The main tech stack was a headless Wordpress + ACF CMS with GraphQL and Next.js. We used storybook to visualise the UI components we built. We used i18n with Locize to translate content. We used Github Actions for the CI/CD pipeline which included automated tests.

DRPG October 2020 - August 2022
Remote

DRPG has been a delight to work for, with projects ranging from a beautiful 3D winter wonderland celebrating 40 years of DRPG, to the massively successful Jaguar C-Type customiser which you can play with here: https://classicvisualiser.jaguar.com

Freelancing - Web-based 3D visual experiencesApril 2020 - October 2020
Remote

Developing 3D and WebGL solutions for various clients on a freelance basis. Working closely with the client I bring their project from an idea into a reality. Creating visual experiences in the browser making it simple for the end user. For example, I made https://kirkwhayman.com which utilises WebGL to make Kirk's portfolio stand out.

Zengenti Ltd. April 2019 - 2020
Ludlow, UK

Here I worked diligently in squads of designers and developers to produce elegant yet functional websites for Universities and councils. We used React.js for website development and an Angular based CMS.

In this role I also trained a less experienced developer, to help them become a self sufficient one, with the ability to solve technical problems independently.

In addition to this, I wrote novel internal documentation for processes such as setting up Node.js servers for production, helping the company move towards full-stack JavaScript.

Express KCSJune 2018 - April 2019
Milton Keynes, UK

This was my first time working in a small team of designers and developers, where I also learnt how to use JIRA and Git for daily use.

The main technology we used was React.js and Node.js to develop the product. I also started learning about and writing automated tests.

I also implemented a modular i18n solution into the React codebase, using Locize so that translators could do their job without having to code.

Click Together Ltd.February - March 2018
Remote

Making use of the emergence of the HTML5 History API and CSS3 animations, I developed a lightweight Single Page Application (SPA) showcasing one of their apps, giving a blazing fast and sleek experience.

Rudolf Greiff - SanobizJan 2016 - Feb 2017
Remote

Over the period of a year, involving 2 separate contracts, I worked closely with the client to provide excellent bespoke software to solve their specific problems.

This included a feature dense, offline-first HTML5 SPA for their business clients, and a data processing application for doctors which digitized and automated certain tasks of this vital role, meaning an improvement in their healthcare and therefore a real-world impact.

Portfolio

Jaguar C-Type Visualiser

Configure your own classic c-type jaguar car.

Customise the inside and the outside.

This was a project I built whilst working at DRPG. There was another developer who helped with the UI, whilst I built the core functionality, such as the visualiser, configurator, plus a bunch of the UI work.

It uses variable dimensions webp images, saving data and loading times whilst providing high clarity visualisations of the car up to 4K in resolution.

I'd say this was a success, because Jaguar received customers from those who used this visualiser/customiser, for this classic car continuation.

Kirk Whayman - Design Director - Portfolio

A beautiful visual interactive portfolio developed by George Campbell and designed by Kirk Whayman. A modern website developed with Next.js, Three.js, and custom GLSL shaders.

Kirk Whayman and George Campbell join forces

I worked with Kirk, converting his designs and high quality renders and animations from VFX production software, into code for displaying in a web browser.

Over the period of several weeks I worked on this project, helping Kirk reach his vision. A thought provoking concept, with visuals to back it up.

Initially I developed the iridescent cube which has a glassy refractive index.

Later, I involved another developer who had already built exploding geometry, this allowed the cube to be blasted into peices. Future devs then coloured the shattered glass.

The later part of the project was developing the pages in the Work section. The carousel effect, and grainy noise, warping effects and so on were all custom made with GLSL for this project.

Kirk and I won several awards for this site from Awwwards and were featured for some time.

Feel free to contact Kirk if you're needing someone like him, click the About section of his website for contact details.

3D terrain generation.

This was my first three.js project. The reason for this project was to learn Three.js.

It uses simplex noise to generate infinite terrain. There is a day-night cycle made possible with dynamic lighting.

I thoroughly enjoyed making this!

Limitations and the future

I wish I had made the trees go on for ever, too, before abandoning this project. Currently they don't go on forever like the sand and water does.

Web graphics is an ever evolving beast. This was built on the WebGL renderer with Three.js, HTML, CSS, JavaScript.

A goal I have is to continue learning computer graphics, Rust, Bevy, and use WASM which would be a major improvement in technology compared to WebGL/Three.js, to produce graphical web projects.

Task timer

This is a light-weight way to keep track of time spent on tasks.

It is an installable web app which works offline.

Computer visualiser

This uses Three.js to visualise a computer.

I built this to try out my Three.js skill, to visualise a computer.

I had built a couple of computers when I was younger, so knew the components I needed.

However, I don't yet feel comfortable in Blender nor Houdini by Side Fx so I had to find free models online.

Finding all the components of the computer, from chassis, to motherboard, to all the other components was difficult.

I did open blender and resolve some issues with the models, and make the consistent e.g. make sure the CPU fan has red colours to match the motherboard.

This was a challenging but enjoyable project I did in my free time. I'd prefer to develop in react-three-fiber nowadays though.

Simple Audio Visualiser

This is a simple audio visualiser which uses Meyda for audio feature extraction and the HTML5 canvas to draw the visualisations.

If you're curious of the source code, visit the repo, it's written in vanilla JavaScript and uses Vite.

Limitations

There's a lot to learn about audio/sound engineering, and to convert audio to visuals is a difficult thing if you don't know or understand the right concepts.

This visualiser could probably be improved a lot to make more desirable looking animations.

Lorem image

This project uses the Intersection Observer API to load an endless stream of images as you scroll.

MASSLESS.art

This is a collection of art I have created.

Many of the works have been developed in the GLSL shader language, which I adopted whilst learning Three.js

Contact me

I run a software development company, MASSLESS LTD. - give me a shout there or find my personal email address below.

View email