A web app for viewing graphics files for the Atari ST and Commodore Amiga computers of the 16-bit era.
ZzFXM is a tiny music generator and toolkit designed for size-limited JavaScript productions.
A web app for extracting retro sprite sheets, tilesets, fonts and other graphics from data files, executables, or disk images.
A devtools extension that disables CSS features, allowing developers to see how their sites render in older browsers.
My entry for JS1k 2019. A 1024 byte rolling demo featuring seven scenes and a byte beat sound track.
An experimental custom element that renders 3D models inline with other HTML elements. Models can be styled using CSS.
CSSVR is an experiment that simulates browser support for creating VR experiences using media queries and CSS transforms.
My winning entry for JS1K 2015 is a frantic 1023 byte scrolling shooter inspired by the iconic arcade game Defender.
A 3D world with lighting, shadows and collision detection created with CSS transforms and HTML.
A pure CSS approach to parallax scrolling websites. Uses 3D transforms and perspective to create the effect.
A browser extension for Chrome and Firefox devtools to debug Google Analytics tracking code while browsing websites.
In September 2013, I spoke at Hacker News London about my 3D CSS experiments and some of the techniques used.
An attempt to create real-time lighting and shadows cast from 3D models created with CSS transforms.
Dynamically shading elements positioned using CSS 3D transforms by decomposing matrices and calculating vertex data.
My entry for the 2014 JavaScript 1K competition was a remake of the classic 8-bit computer game, Thrust.
Fuse is a boilerplate for creating Firefox, Opera and Google Chrome devtools extensions from a single codebase.
A prototype renderer for three.js. Capable of rendering lights, textures and geometry using CSS.
A JavaScript utility that emulates CSS3 pseudo-class and attribute selectors in Internet Explorer 6-8
My work is referenced in a number of industry publications, including books and magazines.