Back to Blog

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

DirectoryDescription
apache-gameVertically-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-gameMulti-level Asteroids implementation with per-level asteroid silhouette variants, fragmentation trees, and a dual-canvas starfield background
space-invadersCanvas implementation of the Space Invaders arcade game with wave-based enemy descents and a glitchy, ‘computer error’ based aesthetic
ghost-of-molly-rogerA 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-runnerA 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

DirectoryDescription
anasWireframe pterosaur skeleton assembled from Three.js primitives (spheres, cones, cylinders, and ShapeGeometry membranes), rotating continuously with a sinusoidal pitch oscillation
architectural-wireframesWireframe architectural structures rendered in Three.js
crystal-caveProcedurally-generated Three.js crystal formations inside a cave environment
dodecahedronAnimated Three.js dodecahedron with configurable material and lighting
fluid-backgroundWebGL fluid simulation using a multipass GLSL shader pipeline with advection, pressure solve, and divergence correction
hypersphereFour-dimensional hypersphere projected into 3D and rendered in Three.js with interactive rotation
julia-setReal-time Julia set renderer using GLSL fragment shaders, with mouse-driven parameter adjustment
phases-1-through-4Four sequential mathematical visualisations exploring wave interference, Lissajous figures, and related periodic functions
polytopeThree.js rendering of a regular polytope with configurable symmetry group
threejs-experimentsCollection of standalone Three.js rendering experiments
vortex-svgAnimated SVG vortex produced by parametric path generation

Generative Art and Animation

DirectoryDescription
after-truth-comes-advertisingGenerative text and visual composition exploring advertising language
asteroids-ballsCanvas-based physics simulation where bouncing balls collide with destructible asteroids
constantsCanvas visualisation of mathematical constants rendered as geometric patterns
geometriesEight WebGL geometry experiments: two Glome projections, Klein bottle, Lemniscate of Bernoulli, two Quartic Plane Curves, and two Tesseract projections
mazeInteractive maze rendered on Canvas, solved using an A* pathfinding algorithm with animated traversal
psycho-killer-chicken-dinnerCanvas game
mosaicCanvas mosaic tile generator producing randomised colour grids
pocket-tilesProcedurally-arranged tile grid with configurable colour schemes
seven-sinsVisual representation of the seven deadly sins
sine-wave-buttonUI component experiment in which a button's border traces an animated sine wave
webpage-backgroundCanvas fluid-animation background using particle advection, intended for embedding in other pages

API Integrations

DirectoryDescription
binary-jazz-apiQueries the Binary Jazz API to generate random musical genre combinations
colormind-apiFetches harmonious colour palettes from the Colormind neural-network API and renders swatch previews
daily-horoscopeRetrieves and displays a daily horoscope via a public horoscope API
hostio-apiDomain 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-apiFetches a remote URL via the Jina AI Reader API and returns its content as Markdown, with a wave-animated canvas background
postcodes-io-apiQueries the Postcodes.io API to retrieve geographic and administrative data for UK postcodes
reddit-json-extractorAppends .json to Reddit URLs and parses the response to extract and display post and comment data
robohash-apiGenerates unique robot avatars via the RoboHash API from arbitrary text input
wayback-machineQueries the Wayback Machine Availability API to retrieve the closest archived snapshot for a given URL

Text and Data Tools

DirectoryDescription
datalayer-extraction-toolParses dataLayer push objects from pasted page source or a live URL, displaying each event key and value in a structured table
html-entity-escaperConverts HTML special characters to their named or numeric entity references, and reverses the process
keyword-extractorAnalyses pasted text to produce a ranked frequency list of extracted keywords, with configurable stop-word filtering
morse-codeBidirectional translator between plain text and International Morse Code, with optional audio tone generation
phonetic-alphabetConverts plain text to NATO phonetic alphabet equivalents, one word per character
prism-jsCode syntax highlighting demonstration using the Prism.js library across multiple language grammars
semaphoreReact 18 application that converts text into animated railway semaphore flag diagrams rendered as SVG
url-extractorExtracts all URLs from pasted text or HTML source using regular expression matching
colour-palette-generatorGenerates harmonious colour palettes using HSL arithmetic and renders exportable CSS variable sets

Narrative and Experimental

DirectoryDescription
echologixMulti-page narrative project comprising a main story (fragments-of-finn.html), a video archive (videos.html), and an editorial layer (stories.html)
philosphers-on-linkedInSatirical generator producing LinkedIn-style posts written in the voice of historical philosophers
pulseCapital and Subjectivity Terminal — a generative text interface producing critical-theory-inflected output
leoEchoLogix Terminal — a styled command-line interface for the EchoLogix narrative project

Audio

DirectoryDescription
strudel-loopAlgorithmic music sequencer using the Strudel live coding environment