This is a gallerie of some of my current and past side projects. Some need polishing, some are not finished and some don't work the way I'd want but it's a good ego boost to keep a list of things I have achieved.
An implementation of the Gray-Scott model for Reaction-diffusion systems implemented on the GPU with WebGL. This time I used the regl library to make my code easier to write and maintain. The page contains a writting explaining more in detail what these systems are and how I implemented this project.
Demo - Code - Article
A game of life implementation running on the GPU thanks to WebGL. This one taught me how to use vanilla WebGL and was an introduction to GPGPU: The world is actually held by a 2d texture and is updated with a shader program. And another shader program is responsible for rendering the texture to the screen. This was the opportunity for me to discover that using WebGL is very clunky and that while it's a good learning experience it is a good idea to use a framework like regljs to simplify WebGL code.
Demo - Code
My attempt at recreating the the original particle life application https://particle-life.com/. The performances with p5.js were too limited so I used web workers to update the particles and I reimplemented the graphical display from scratch using the HTML Canvas API. The results are coherent but still too slow to be really interesting. This project prompted me to explore more in depth shader computing in my next projects.
Using tic tac toe variants as an excuse to experiment with more front-end development and with game theory. I implemented an online version of the game Gobblet Gobblers and various IA playing the game.
By far one of my most complete front-end projects. This is an assistant for the game Astroneer allowing the user to plan their production with graph, power and storage analysis and resource trading. The app also includes an encyclopedia of the game items. I didn't finish it completely because the game started bugging on me and that severly impacted my motivation to work on the tool but it was a huge learning experience, especially regarding the framework Svelte.
A quick and dirty playgroud experimenting with particules simulation with different frameworks (P5, P5+webgl, Konva, TwoJS) and an attempt at using webasm. Conclusion: I haven't reached better performances than with the good ol' P5 framework and I'm too lazy to work with webasm for now.
A collection of ansible playbooks to setup my computer.
A 2D circular automaton project where several parameters like the rule, the size of the grid and the color can be changed randomly. The twist is that the automata is represented in a circle rather than in a rectangle as it is usually the case.
Another attempt at a procedurally generated racetrack with autonomous cars learning how to drive on it
Nasa Wallpaper of the Day. This is a script I made which automatically download Nasa's Astronomy Picture of the Day and sets it as my desktop wallpaper and my zoom virtual background. As if I wasn't already talking enough about space exploration to my teammates!
Inspired by Jim Fleser's book The Chord Wheel, this is an online implementation of his paper tool. It is used to identify major scales and their chords. In the future I want to recreate it with a wheel for the minor scales and one for the Ring of Fifths.
I wanted to create a new musical instrument, so this is a bunch of balls trapped in a circle which produce different notes based on where they hit the circle. This was a great opportunity to play with p5.js sounds capabilities.
My first experimentation with the Pixijs framework. This is an implementation of the well known Langton's Ant cellular automata invented in 1986. I also added a twist to fill the different groups of dead cells with different colors.
This is a quick recreation of an animation I saw on this blog. Nothing fancy just a bunch of moving points connected to their closest neighbors.
An incomplete project where I generated some race tracks procedurally and used machine learning algorithm to teach cars to drive on these tracks.
I wanted to create an AI playing simple tracks in Trackmania United Nation Forever. As there is no API I went with a rust application which screenshots the game, check some pixels in the bottom right corner to parse the current speed and which presses some keys on the keyboard to control the car. For now the bot is able to maintain the car at a given speed by pressing and releasing the up arrow key. The next step is to do some ray tracing to detect the borders of the track.
An experiment with Abelian sandpiles. This was pretty quick to implement but I then realized that they are not as interesting as I would have expected.
A simple Abelian sandpile project used to prepare 'Sandpiles -2'
A very small project with trails of color moving randomly on the screen and avoiding each other. I didn't take time to make it as beautiful as I originally expected.
A 2048 game. The initial idea was to create an AI playing 2048 using a Monte-Carlo algorithm. For now the only 'AI' implemented is random, I'll see if I get back to this project.
A color picker implemented with GLSL shaders
My second attempt at simulating a colony of ants. This is not completely finished as I need to fix a bug where the ants get stuck in infinite lines
Generate a smooth path between a set of points using Bezier curves. This is an exploration before digging into a racetrack generation project.
Another genetic algorithm experiment, this time trying to control some cars on a racetrack. It would need a better track generation to have more situations to learn from, this is what inspired me the "Bezier experiement" project.
A short experiment with matter.js and chart.js to create a pendulum simulation and graph the movement.
My implementation of the Reversi game with an AI opponent using the min max algorithm.
My implementation of the triomono game with a not very efficient AI opponent.
A visual representation of some sorting algorithms which became boring before I implemented all the algorithms I had in mind.
Playing with Perlin noise to generate a random terrain
A breathing exercise to help you relax.
My first attempt at simulating an Ant colony. They go out of the anthill, look for food and use pheromones to get back home and form efficient paths.
Simulating a flock of virtual birds to experiment with emerging behaviors.
My implementation of the famous video game from the 80's Asteroids with my own sound effects as a bonus.
Using several algorithms to generate mazes and then solve them with different methods.
The classic game Minesweeper in your browser.
Using a circle packing algorithm to recreate pictures of kitten.
A cellular automaton framework in the browser: Test different neighboring rules and survival conditions to recreate the Game of Life or discover new automaton.
A very simple game I used to experiment with bouncing and jumping behaviors
My first attempt at using genetic algorithms. Trying to teach a flock of Roombas to reach a target.
A pool with a homemade physics engine.
My solution to some of the problems of the project euler. For sure one day I'll finish them all!
The most useful plugin I've written for Vim. Easily quote the doc to post it on stackexchange.com or any markdown file.
Read the title of the posts in a subreddit and plug this data in a markov chain algorithm to generate new titles.
A useless Vim plugin to show an arrow in the gutter of the current line
A slack integration which counts the reactions on each messages in a channel and give a positive score to each user.
When I was a compulsive user of vi.stackexchange.com I created a bot to be notified on slack of every new question on the site to answer fast and get these sweet virtual points from the internet
An electron app I created for my team to print Jira tickets for our physical Scrum board. Please save the planet and don't use this app.
Get a slack notification when the Kimsufi server you're looking for is available