2025 creative
coding experiments
A repository of browser-based creative coding experiments, including Canvas games, Three.js visualisations, and generative art.
2025 creative | coding experiments
I've finally pulled all my creative coding experiments of 2025 into a single repo. Here is what there is.
A collection of browser-based experiments and utilities produced during 2025. Each project is a self-contained directory containing one or more HTML files. Projects span canvas games, Three.js visualisations, API integrations, generative art, and interactive tools.
Projects
Games
| Directory | Description |
|---|---|
apache-game | Vertically-scrolling canyon-flight game with a phosphor-green CRT aesthetic, procedural canyon generation via superimposed sine waves, three enemy types, and a homing missile system |
asteroids-game | Multi-level Asteroids implementation with per-level asteroid silhouette variants, fragmentation trees, and a dual-canvas starfield background |
space-invaders | Canvas implementation of the Space Invaders arcade game with wave-based enemy descents and a glitchy, ‘computer error’ based aesthetic |
ghost-of-molly-roger | A text adventure, set in Victorian England (SCP Universe) built as a single HTML file and driven by a flat JavaScript object, with relationship tracking and a persistent save mechanism |
tokyo-runner | A text-based cyberpunk adventure game, presenting a branching narrative where the user navigates through various scenarios, managing resources such as time and credits to achieve multiple distinct endings |
Three.js Visualisations
| Directory | Description |
|---|---|
anas | Wireframe pterosaur skeleton assembled from Three.js primitives (spheres, cones, cylinders, and ShapeGeometry membranes), rotating continuously with a sinusoidal pitch oscillation |
architectural-wireframes | Wireframe architectural structures rendered in Three.js |
crystal-cave | Procedurally-generated Three.js crystal formations inside a cave environment |
dodecahedron | Animated Three.js dodecahedron with configurable material and lighting |
fluid-background | WebGL fluid simulation using a multipass GLSL shader pipeline with advection, pressure solve, and divergence correction |
hypersphere | Four-dimensional hypersphere projected into 3D and rendered in Three.js with interactive rotation |
julia-set | Real-time Julia set renderer using GLSL fragment shaders, with mouse-driven parameter adjustment |
phases-1-through-4 | Four sequential mathematical visualisations exploring wave interference, Lissajous figures, and related periodic functions |
polytope | Three.js rendering of a regular polytope with configurable symmetry group |
threejs-experiments | Collection of standalone Three.js rendering experiments |
vortex-svg | Animated SVG vortex produced by parametric path generation |
Generative Art and Animation
| Directory | Description |
|---|---|
after-truth-comes-advertising | Generative text and visual composition exploring advertising language |
asteroids-balls | Canvas-based physics simulation where bouncing balls collide with destructible asteroids |
constants | Canvas visualisation of mathematical constants rendered as geometric patterns |
geometries | Eight WebGL geometry experiments: two Glome projections, Klein bottle, Lemniscate of Bernoulli, two Quartic Plane Curves, and two Tesseract projections |
maze | Interactive maze rendered on Canvas, solved using an A* pathfinding algorithm with animated traversal |
psycho-killer-chicken-dinner | Canvas game |
mosaic | Canvas mosaic tile generator producing randomised colour grids |
pocket-tiles | Procedurally-arranged tile grid with configurable colour schemes |
seven-sins | Visual representation of the seven deadly sins |
sine-wave-button | UI component experiment in which a button's border traces an animated sine wave |
webpage-background | Canvas fluid-animation background using particle advection, intended for embedding in other pages |
API Integrations
| Directory | Description |
|---|---|
binary-jazz-api | Queries the Binary Jazz API to generate random musical genre combinations |
colormind-api | Fetches harmonious colour palettes from the Colormind neural-network API and renders swatch previews |
daily-horoscope | Retrieves and displays a daily horoscope via a public horoscope API |
hostio-api | Domain intelligence dashboard querying the Host.io /api/full/ endpoint, displaying web metadata, DNS records, IP information, and related domains across categorised cards |
html-to-markdown-jina-ai-api | Fetches a remote URL via the Jina AI Reader API and returns its content as Markdown, with a wave-animated canvas background |
postcodes-io-api | Queries the Postcodes.io API to retrieve geographic and administrative data for UK postcodes |
reddit-json-extractor | Appends .json to Reddit URLs and parses the response to extract and display post and comment data |
robohash-api | Generates unique robot avatars via the RoboHash API from arbitrary text input |
wayback-machine | Queries the Wayback Machine Availability API to retrieve the closest archived snapshot for a given URL |
Text and Data Tools
| Directory | Description |
|---|---|
datalayer-extraction-tool | Parses dataLayer push objects from pasted page source or a live URL, displaying each event key and value in a structured table |
html-entity-escaper | Converts HTML special characters to their named or numeric entity references, and reverses the process |
keyword-extractor | Analyses pasted text to produce a ranked frequency list of extracted keywords, with configurable stop-word filtering |
morse-code | Bidirectional translator between plain text and International Morse Code, with optional audio tone generation |
phonetic-alphabet | Converts plain text to NATO phonetic alphabet equivalents, one word per character |
prism-js | Code syntax highlighting demonstration using the Prism.js library across multiple language grammars |
semaphore | React 18 application that converts text into animated railway semaphore flag diagrams rendered as SVG |
url-extractor | Extracts all URLs from pasted text or HTML source using regular expression matching |
colour-palette-generator | Generates harmonious colour palettes using HSL arithmetic and renders exportable CSS variable sets |
Narrative and Experimental
| Directory | Description |
|---|---|
echologix | Multi-page narrative project comprising a main story (fragments-of-finn.html), a video archive (videos.html), and an editorial layer (stories.html) |
philosphers-on-linkedIn | Satirical generator producing LinkedIn-style posts written in the voice of historical philosophers |
pulse | Capital and Subjectivity Terminal — a generative text interface producing critical-theory-inflected output |
leo | EchoLogix Terminal — a styled command-line interface for the EchoLogix narrative project |
Audio
| Directory | Description |
|---|---|
strudel-loop | Algorithmic music sequencer using the Strudel live coding environment |