Anchor
RocketRocketRocket flameRocket flame
PlanetSatelliteAsteroidAsteroidPlanet earth

Hi, I'm JoshHi, I'm JoshHi, I'm JoshHi, I'm JoshHi, I'm JoshHi, I'm Josh

I'm a full stack software engineer and computer science student based in Swansea, Wales. Focused on writing efficient, clean and readable code. Currently working on Iridescence, an interactive Ray Tracing engine.

About Me

Hello, I'm Josh! I'm currently in my third and final year at Swansea University, studying towards a degree in Computer Science. I'm passionate about solving problems with efficient, clean and readable code. I'm currently enjoying learning about computer graphics programming whilst working on Iridescence, an interactive Ray Tracing engine. My mindset as a software engineer is always to be a student, and I'm eager to learn new skills and continuously improve. I am currently looking for work starting in the summer of 2022 following University; please contact me with any opportunities!! On a side note, I'm interested in space exploration and enjoy listening to podcasts and watching documentaries.

Below are some technologies that I use regularly.

Languages

C++
Java
JavaScript
HTML
CSS
SQL

Frameworks

React
Node.js
Next.js
Express
Laravel

Tools

Git
GitHub
MongoDB
Terminal

ProjectsProjectsProjectsProjectsProjectsProjects

Iridescence app demo

Iridescence

Iridescence is a Ray Tracing engine that I have been working on since May 2021. As of December 2021, Iridescence can perform direct lighting Ray Tracing to render scenes consisting of millions of triangles at over 15 FPS utilising just the CPU. This speed is obtained by using an acceleration data structure in the form of a KD-Tree. Scenes can also be rasterised using OpenGl to provide GPU acceleration, allowing real-time previewing of a scene. This rasterised preview ensures Iridescence is always interactive, even when more complex light transport algorithms are implemented in the future. Currently, I am implementing Path Tracing to achieve physically-based global illumination to render photo-realistic images. The future of Iridescence involves exploring various Bidirectional Reflectance Distribution Functions such as the Disney principled BRDF.

C++
OpenGL
Dear ImGui
Post Office web app demo

Post Office

Post Office is a blog-like social networking application where each user has their own blog to which they can post images and text-based media. Users can interact with other users' posts and comments by liking and commenting on these items. Real-time push notifications using WebSockets and mail notifications are implemented for these interactions. Multiple levels of authentication are present for both user and admin accounts, with users also being able to reset their forgotten passwords. Post Office uses Laravel for its back-end and a mixture of Blade and Vue for the user interface. Heroku hosts the application, so the initial load can take some time to start the server. Images are stored using Amazon S3

Laravel
PHP
Vue
Websockets
AWS
CT SCAN

Volume Rendering

A Java application for viewing CT scans using various volume rendering techniques. Viewing as a normal CT scan is possible, as well as rendering a range of Hounsfield Units using gradient shading and other methods. Some sample datasets and further information can be found in the Github Repository.

Java
JavaFX

Other Projects

Listening Habits

A web application for viewing Spotify data such as a user's top tracks, artists and genres. Track and artist data retrieved from Spotify Web API, with top genres then being calculated from this data. The front end is built with React, with a Node.js back end for authorization.

JavaScript
React
Node.js
Express
Spotify Web API

Labyrinth

An implementation of the board game Labyrinth using Java. This project was produced as coursework for CS-230: Software Development, in which I took the role of the project manager. This involved me organising how the project was going to be implemented, managing other members of the team and also developing the game myself. I learned a lot about building software as a team and improved my leadership skills. I also learned JaxaFx/GUI programming in Java. I found success in this project and role, achieving 100% in the assignment, along with receiving excellent feedback.

Java
JavaFX

Zoom Lectures prototype

A prototype for an improvement to video conferencing software, Zoom. When using Zoom for university, I observed an issue with the use of the chat feed during lectures, making it hard to interact with the lecturer. This prototype was built to be demonstrated as part of an assignment and features a live chat with the ability to upvote and downvote questions. Top questions are always displayed for all participants and can be spoken using text-to-speech.

JavaScript
React
Firebase

Sorting Visualizer

A web application to visualize various sorting algorithms. Collection size can be adjusted as well as the speed of the sort. I built this to revise sorting algorithms further and to learn React!

JavaScript
React

jcodd.tech

You're currently looking at this project! I built this website using React to use as a CV. When building this application I decided to learn about styled-components and Next.js.

Javascript
React
Next.js