Hello, I'm Joel.

I built this page to display some of my proudest coding creations. This first one here to the right is a rasterisation engine I made in Scratch. It takes a 3D model and renders it in 2D using quaternions — 4-dimensional numbers; I prefer to work in Scratch to prove my competence because it doesn't have any system packages. Thus every part of this engine was built from mathematical foundations! Be sure to explore every part of the texture editor; it has several less obvious features which I put a lot of work into. (Hold space and swipe to scroll the texture editor)

Now you're hopefully hooked on that first project, here is a bit about myself. I am a 17-year-old student from the UK, and I have been programming for about 10 years. I have a strong interest in computer graphics, and I have been working on a few projects in that area. I enjoy learning about new technologies and programming languages, and I am always looking for new challenges to improve my skills.

I am self–taught in almost every field — I attend the microschool Flourish, An Acton Academy, which is a school that focuses on self-directed learning. I moved to Pune with my family in 2025, and I am currently studying for my A Levels in Maths, Further Maths, Physics and Chemistry. Despite the lack of it in my current formal education, I am interested in pursuing a career in programming.

In 2025 I completed my GCSE exams, and achieved the following grades (the scale goes from 1 to 9):

  • Maths: 9
  • Further Maths: 9
  • Physics: 8
  • Chemistry: 8
  • Computer Science: 8
  • German: 9
  • English Language: 8
  • Biology: 7
  • Spanish: 8
  • Fine Art: 9

For my A-Levels, I am predicted to achieve top grades in all my subjects.

Although the examples on this page are written in Scratch, I do also have knowledge of Python (the main language I use), a little of C, and some experience with JavaScript and HTML. I am not a gamer, although I do love to create games and I believe I have great skill with level design (see for yourself in the first example). My hobbies include 3d modelling and printing (I'm learning to use Blender at the moment), reading (my favorite book is Ender's Game by Orson Scott Card, which I'd highly recommend), badminton, chess (my highest blitz rating is 1405, which is about 94th percentile), and music (any era, as long as I can sing along).

Here are a few links:

  • My GitHub page, where I post some of my code and projects

  • My LinkedIn page

  • My Chess.com account, if you want to challenge me to a game

  • My Scratch page, if you are interested in seeing more of my Scratch projects (although the ones shown here are my best ones)

  • My own website, Demystifying Maths, which is still very much in progress yet has a few complete pages. I am coding it directly in VSCode using HTML.

Projects

I strongly recommend you only run one project at a time, as running multiple projects at once can cause performance issues. You can stop a project by pressing the red stop button above the left side of the frame. Additionally, these projects were not designed for mobile, so the first and third projects will not work properly on mobile devices.

The Ultimate Platformer

I know they all say this, but I truly believe this is one of the best platformer engines possible in Scratch. The game starts simple, and then in successive levels more features are introduced, including world rotation, non-euclidean geometry, moving platforms, and directional tiles. There are 11 levels to play through. All instructions are provided within the game.


I have created platformers in the past which have each of these features individually, but the effect of the combination is very powerful, and is based on some quite interesting maths.


If you find playing the game is too much, here is a video speedrun that I recorded of the first eight levels:

Watch Speedrun

Circus Mirror!

I created this project to show how reflections can be predicted in wonky or curvy mirrors. The dots can all be dragged around to see how they change the reflections. The pink dots are the control points for a B-spline which acts as a mirror, reflecting the array of dots.


I find it fascinating to watch something that we normally see only in random fleeting moments captured in mathematics. The computation of the reflections actually requires some intensive calculations, such as finding the real solutions to a quintic (5th degree) polynomial using the Durand–Kerner algorithm.

The Solids

This is a project I made at the very beginning of 2025, so my current abilities would allow a slightly better menu interface. However, I decided to leave it unchanged, in part to show my development.


This project is another 3D engine, which can render line drawings of any of the regular and semi-regular polyhedra. The user can rotate the solids in 3D, and the program will render them in 2D. The engine is powered by matrices, as opposed to quaternions like my rasterisation project.


If something looks wrong with a shape, try zooming out or adjusting the Field Of View (FOV).

Reflection and Refraction

This is a simulation of a light source interacting with two vertical glass cylinders in air. You can drag the source to change the pattern of reflection and refraction. One of the things I love about this simulation is the emergent phemonenon of the cardioid — the bulbous shape that appears when the light reflects off curved surfaces.


It works via ray casting and tracing, so the arrangement of the cylinders is not fixed (if you don't mind editing the source code). I used Snell's law to calculate the angles of refraction and percentage transmittance. The hyperbola shapes are artifacts of the rendering process.