EJ Portfolio Site

Creative Work

Rainbow Smoke Engine

This is a render engine built in C++ for the implementation of the 'Rainbow Smoke' algorithm.

The pipeline consists of several stages: Initially, every frame of a given video is analysed and the colours of each individual pixel are recorded. From this data, the canvas is filled with the individual pixels from the given video, using perlin noise and the average colours of the surrounding pixels.

The result is a beautiful generative art piece that consists of every pixel colour from a given video. In this example, the render is formed from the every pixel in the first episode of the Netflix show 'Arcane'.

RayTracing Engine

This image is a render from several years ago from a RayTracing Engine I had created in preparation for teaching the 'Programming for 3D' module at the University of Sussex.

The render engine is built in C++ and is capable of rendering spheres, cubes, triangles and planes. The materials of these geometries can be reflective, refractive, or can use simple Phong shading.

The engine is also capable of using point lights, directional lights, solid shadows and supersampling.


This was a generative art piece that I had created in my spare time to get accustomed to using Perlin Noise. The piece uses three layers of string-like agents following the direction of a flow field, and rectangles to represent buildings - adjusted for size and colour along the y-axis of the image to give the illusion of depth.

Some of my subconscious may have also bled into the design, as I created it in 30 degree heat.

This piece was created using P5 JS in Typescript, with a little post processing in Photoshop.

The Complex Woman

This was a generative art piece that I had created as a birthday gift. The algorithms for this piece were taken from the field of 'Complex Systems' - Simple rules followed by individual agents can create much more intricate systems when in large quantity in an environment. (e.g. an ant colony, the neurons of a brain or a flock of birds)

This piece containes 60,000 agents moving independently - it was created in a week using P5 JS and a JS GPU library - with some post processing in After Effects and Photoshop.

The biggest challenge here was the time constraint. The state of a complex system is defined by it's own history, and so in order to get this image, the entire simulation needed to run from the beginning - Meaning that several hours of rendering was needed for every draft.

Watch the full render here.

100 Pages of (un)shared thoughts.

A book cover design commissioned by a writer for her debut poetry collection.

The cover took less than a day to create, as the writer allowed full autonomy when it came to the design - and was happy with one of the eariest drafts. The design was created completely in Photoshop.

After persuing an interest in generative design, the process for this piece would have been much faster and less tedious had it been done programmatically, since the words were taken directly from the poems of the book and placed manually around the centre.

AEM Cover Design

While working as a Design Technician at the Interact Lab, I was lucky enough to be given the opportunity to submit a design draft to Advanced Engineering Materials to be considered as the cover of an upcoming issue.

Technically speaking, this design was created using Blender for the 3D models, and Photoshop for post-processing in the time span of a couple of weeks.

The biggest challenge for this project was not any technical issues, but rather the contrasting design ideas between myself and the laboratory management. The original designs that were suggested to me were far too practical for what the project needed, and were better suited as diagrams in a research paper than the cover of a journal.

As you can see from the design, I managed to push the importance of aesthetics over realism for this particular case, and was later accepted as the official cover of Advanced Engineering Materials.

Swimwear Designs

I was commissioned to create two seamless men's swimwear patterns. The design ideas were sent to me, and my task was simply to create them.

These patterns were created in Photoshop, and with the assistance of a simple photo editor I had created in p5 js.

The blue design was fairly simple to create in Photoshop with 'mirroring'. The randomized circles however, were not as simple. Since this pattern was to repeat on an item of clothing, it was very important for it to be seamless. This, however, turned out to be extremely difficult to do manually in Photoshop. Instead, I created a simple custom photo editor to achieve the exact effect I was looking for in p5 JS, and the pattern was finished within a couple of hours.