Will Clarke

Projects

Small things I've built. A few are useful; most exist for their own sake.

Play these in your browser

Small games in C, Rust, Elm and Haskell. Five are compiled to WebAssembly and playable here. They share a design brief from an old README: everything is pushable, and optimise for OMG WOW moments.

▶ Recursive Sokoban

C · raylib · wasm

Boxes contain whole levels. Push one, step inside, solve the puzzle within, climb back out. Nests up to 16 deep.

▶ Functional Sokoban

C · raylib · wasm

Push value boxes through function boxes - +1, *2, NEG, INV. Later levels quietly teach you currying.

▶ Paint Machine

C · raylib · wasm

A small Zachtronics-ish factory: emitters feed colorers, cloners, portals and fans to paint bands onto a canvas. Play, step, rewind.

▶ Slime & Teleports

C · raylib · wasm

Slime trails make things slide and refuse to stop. Recursive slime, coloured teleport pairs, and a lighting system I did not need to add.

▶ Worm Division

C · raylib · wasm

A worm divides, and the clones replay your input history with relative orientation. Automation by accident. Now also has time machines.

These five grew out of one 685-commit repo that got away from me. In the history there's a level called 09_true_infinite.txt, a 05_curry.lvl titled "Currying: Make +5 Function", and a commit that just says "Put OMG TESTING level at the top". The main branch is mostly a segfault diary, including three separate reverts of a time machine.

Polyhedra playground

Lifted wholesale from my intuition project and embedded here to run: a from-scratch general Conway engine, nothing hard-coded per solid.

◆ Polyhedra playground

typescript · webgl

Pick a Platonic seed, stack sixteen operators - truncate, snub, gyro, stellate - and drag to spin. Stellation is cells of the face-plane arrangement, on true star faces: stellate the dodecahedron, then a, and out falls the dodecadodecahedron.

chip8

C · wasm port pending

A CHIP-8 emulator with a portable core and 36 real ROMs bundled - PONG, TETRIS, INVADERS among them. It currently runs in a terminal; a browser port is planned.

Things that are alive on the internet

The ones that only have a gif

Terminal and GUI games with no browser versions. There are gifs.

The meta bits

The websites before this one

This is at least the sixth version of my personal site. Each rebuild fixed a problem the previous rebuild had caused. All of them are restored and browsable in the museum. In chronological order:

Running alongside all of this, for ten years, was my CV. It went: pure Ruby → org-mode → pandoc PDF → JSON Resume → "try using pure HTML as a markdown file" → "Revert 'try using pure HTML as a markdown file'" → org-mode as an intermediate format → and finally, in 2024, the last commit: "Use Google Docs instead of anything fancy."

The early stuff (2014)

My first code, from 2014, left up on purpose.

Learning in public, with receipts

Books I worked through - including the ones I gave up on.