This project dates back to 2020. I had just completed Arup's Graduate programme and moved into a new role working with the City Modelling Lab. An in-house research group building out the company's city simulation capabilities.
The team was tasked with developing new city simulation capabilities, including work on Monty, a nationwide agent-based modelling platform for the Ministry of Transport in New Zealand. I wanted to understand the foundations behind these kinds of models better.
I noticed that a few foundational simulations appeared repeatedly in the literature. I decided that implementing these examples from scratch would be a good way to build intuition around the underlying ideas.
The first two projects I tackled were Conway’s Game of Life and a flocking simulation (Boids).
Both projects are well understood and not especially large. So I wanted to use them as an opportunity to learn some new technologies.
I had been interested in Rust for a while. Python had become my primary tool during my time at Arup. However, as I worked on larger projects, I became increasingly aware of the trade-offs Python makes for its simplicity. This made me eager to learn languages that placed more emphasis on safety and performance.
At the same time, I had very little experience with web technologies and was curious about WebAssembly. A technology that allows code written in languages like Rust to run in the browser.
The result, embedded at the start of this post, is a working version of Conway's Game of Life using Rust and WASM.