Welcome! You will find here a growing collection of digital experiences and content by Max Irwin. All code on this site is lovingly handcrafted by yours truly. If you like what you see here and would like to get in touch, you can contact me on twitter @binarymax.




A web-playable version of the classic chess variant. Like chess, in order to play, you need two players for a game. In-depth rules and guide are available on the site. The entire game was built as a side project over 4 months time, and is fully open source under the MIT License.



A single player anagram game, inspired by the British game show 'Countdown'. The entire game was built as a side project over a week, and is playable on desktop and tablet devices.

Shape Experiment


A single player shape identification game for mobile devices (and also browsers). An exercise in interface and minimalism and intuition, to be quickly understandable and playable by anyone. The game was written in a single day, and tens of thousands of shapes have been identified since release.



A collection of my Father's Kaballah inspired works of art. After his passing, my siblings and I gathered this small selection from his much larger volume of artwork to display on the web.



A tool to draw 7-color 80x20 artworks that can be exported as a bash script to display in a *nix terminal. Useful for creating graphics that identify servers upon connection, or just for fun. Images can be shared as easily as links. Here is the image in the thumbnail which I quickly drew for this card.



A fully functional open source Backgammon engine, UI, and basic AI written in JavaScript and HTML5. Highly compact and efficient, the linked demonstration page runs 24 self-playing games simultaneously.



A basic HTML5 drawing tool. While the site is live the tool is no longer under development. Eventually the domain will house the in-development Palettable sprite illustration app.


Dilated Age of Information

Link to Demo

A commission for an art show 'Conflicts In Time'. The piece shows a color map representation of the time dilation difference for a ping between the observer and the server.

Palette Extractor

Link to Demo

A tool to extract nice-looking palettes from arbitrary images. A set of MegaMan II images are used to demonstrate the algorithm.


Link to Demo

An experiment in data cube structures in javascript, used to efficiently calculate aggregate results of an arbitrary dataset of several dimensions. Two structures are shown, each one having pros and cons, depending on use case.

Reality Remix

Link to Demo

A video remix experiment, with a resulting video run through a custom filter coded in C#. The filter splits a video into frames, remixes the frame using a bitwise Sierpinski carpet algorithm, and stiches the frames back together.

Square Chase

Link to Demo

My javascript entry into the first JS1k competition, with a concept based on a video game I wrote in Pascal in 1995. The demo consists of 4 squares of different colors that leave trails as they flee from the observer's mouse. Clicking a square increments the score by one and the square respawns. The demo is 1024 bytes of hand-golfed javascript.

Tree Generator

Link to Demo

An interactive art project that creates a genetic tree starting from a single seed of observer-defined parameters. The observer can specify trunk size, branch count, leaf size, growth rate, and other parameters. Each generated tree is unique. The piece was displayed as an installation at a show, and participants ordered their printed trees on A3 paper. The resulting image is SVG and can be printed to keep pure vector resolution.


Link to Demo

My Entry into the 2013 Victory Boogie Woogie code competition. Artists were asked to recreate the last work of Piet Mondriaan in Utrect Netherlands. The piece uses a genetic algorithm to slowly recreate the box-like work with circles, lines, or squares. The longer the algorithm runs, the greater the likeness. The resulting image is SVG and can be printed to keep pure vector resolution.


Link to Demo

An early canvas experiment, renders a raytrace of an observer-defined number of spheres of random size and color.


Link to Demo

An experiment which used the Twitter stream API as entropy for randomness to generate a brownian motion image. The resulting images are beautiful and discerning clumps of information. The applicaton no longer works, due to restrictions Twitter placed on its public API, but a screenshot and the code remains for archival purposes.


Hidden Shapes

Link to Post

I am slowly working on a side-project that makes a video into a mishmash of circles for each frame. I have an early version running, that manually takes a video, splits it into frames, remixes each frame into the circle mishmash, and recomposes the video with the new remixed frames. The project is called 'Harissa'. read more

Artificial Expression

Link to Post

Artificial Expression(AE) draws a parallel to Artificial Intelligence(AI), in that an artificially expressive program will display sentience relating to creating original subjective aesthetics. I explore the ideas behind these complexities, as well as techniques in use today to generate art, and set a standard to use in deciding whether a work is an artificial expression. read more

Anagramica is now FOSS

Link to Post

I'm not entirely sure why I never open sourced it in the first place. After 25 years of coding I've only recently become active in opening my code for others to see and use. I have a cathartic story to tell about a previous project, which I've never told anyone about, and silently open sourced this past winter. read more

The Idea is Art

Link to Post

'What is art' has been debated ad infinitum, and some like to draw the line and say something is not art if it cannot be expressed - as art is, by definition, expression. My argument is that one not even need express the idea outwards with our own voice, hands, or otherwise. The idea can exist purely in one's own mind and still be a work of art. It is expression to oneself, therefore it is art. read more



Link to Profile

A good deal of my work is available as Open Source on Github. Much of it is available under MIT license. If you have any questions regarding any package or repository, or would like to contribute, please get in touch! A curated selection of some of my projects on github are summarized in the other cards in this section.


Link to Repo

A cross-compiling DSL (domain specific language) for building APIs. Restlang is a markdown-inspired language that is used to generate server route specifications, client libraries, testing scripts, and developer documentation for web based APIs.


Link to Repo

Heimdall is a type-safe, documentation oriented, and security minded API library for Express. The goal of Heimdall is to provide an easy way to create reflective and secure REST resources, to enforce documentation standards, to separate req/res from the MVC pattern, and to ensure all incoming and outgoing data is registered, validated, documented, and tested.


Link to Repo

Datatype validation, casting, and documentation library for node.js. Originally written as part of Heimdall, it was split out into its own package to be used independently.


Link to Repo

An experimental video-filter GUI and Algorithm for the browser. 'Probably the most inneficient way to remix video'


Link to Repo

An experimental frame sprite editing suite for the browser. Meant to allow easy pixel style sprite illustrations and animations for use in games, gifs, and other media.


Link to Repo

A better working algorithm and library derived from my work on Randriaan, meant to be suitable for any photo. The same algorithm is used to filter frames for Harissa.


Link to Repo

A javascript library for plug-and-play hoisting of data and functions into webworkers, for multithreaded browser execution.


Link to Repo

Playground and benchmarks for hand-coded 2d graphics in asm.js. Written to test the feasibility of outsourcing entire graphics jobs to a pixel manipulating engine, by rewriting fundamental canvas API methods such as arc and line. The short answer: faster than canvas in FireFox, slower in Chrome (as of November 2014).



On npmjs.org you will find a list of node.js packages I have made available for installation. If you have any questions about any of them or would like to contribute, please get in touch!