Mushroom Classifier
View Project →

Mushroom Classifier

July 2025

This is a lightweight neural network classifier built with Vite and powered by Brain.js, designed to predict whether mushrooms are edible or poisonous based on their physical characteristics. It uses the UCI Mushroom Dataset, which contains 8,000+ samples of gilled mushrooms from the Agaricus and Lepiota families, each described by 22 categorical features such as cap shape, odor, gill color, and spore print color. The project converts these categorical features into one-hot encoded input vectors suitable for training in Brain.js. A feedforward neural network is configured with a single hidden layer and trained entirely in the browser, leveraging Brain.js’s JavaScript-based GPU acceleration when available. Once trained, the model can classify new mushroom samples with reasonable accuracy and immediate feedback. Everything runs client-side with zero dependencies beyond Brain.js and Vite, making it fast, interactive, and easy to experiment with directly in the browser.

AIBrain.jsClassificationMachine learning
Dijkstra's Shortest Path
View Project →

Dijkstra's Shortest Path

July 2024

This project presents a straightforward implementation of Dijkstra's algorithm for calculating the shortest path on a mesh surface using Three.js. Leveraging Vite for rapid development, Three.js for 3D graphics, and React-Three-Fiber for seamless integration with React, it creates an interactive visualization where users can explore and understand the algorithm's functionality in real-time.

3DAlgorithmDijkstraShortest pathThree.js
Earth Data Visualisation
View Project →

Earth Data Visualisation

July 2023

Earth Data Visualization is a proof-of-concept project developed during a hackathon. It offers a simple tool for visualizing data usage on a globe. It uses datasets with geographic coordinates, and the tool plots the data points on the Earth globe accordingly. It provides a straightforward means of exploring data geographically within a limited scope. It was created using three.js for the 3D graphics and Next.js as a framework.

3DData visualisationShadersThree.js
Particle Effects
View Project →

Particle Effects

September 2022

This project is an experimental blend of Three.js and GLSL shaders, designed to generate dynamic particle effects upon hovering over images. It originated as a variation of @brunoimbrizi's Interactive Particles repository and is featured in his Domestika course, Creative Coding 2.0 in JS: Animation, Sound, & Color. The demo showcases a series of Buddhist mandalas, offering users the opportunity to interact with them by simply hovering over each image.

Creative codingGLSLLessonParticlesShaderThree.js
Glyph Images
View Project →

Glyph Images

September 2022

As part of the Domestica Creative Coding: Making Visuals with JavaScript course by Bruno Imbrizi, is an variation of the previous exercise done during the course to learn about typography and bitmap mapping with canvas-sketch. This one is using an image as the source of data instead of a text. There is a control panel that allows you to input text, choose the glyphs you want to map and tweak multiple parameters in order to achieve different results.

2DCreative codingImage processingLessonP5.jsProcessingTypography
Portal Shader
View Project →

Portal Shader

August 2022

As part of the Three.js Journey course by Bruno Simon I further developed an exercise done during the course, in order to improve the portal shader and make it look like there is another world behind. Everything in this experiment was modelled, coloured and textured by me. It is using baked lighting to achieve better performance. Modelling and baking were done using Blender.

GLSLLessonParticlesThree.jsThree.js Journey
Black Hole Shader
View Project →

Black Hole Shader

August 2016

This happened as part of an accident while playing with shaders some years ago, trying to create a geometry displacement shader that would become transparent on hover. The result was this sort of black hole into hell, which I thought looked quite interesting.

GLSLGraphicsShaderThree.js

All the experiments are interactive, you can click through to try them out.