This is part of my Return Statement for my Fall ‘24 batch at The Recurse Center (RC). I’ve split it out into multiple parts for better linking and structure. I’ll be writing about the groups I joined, the textbooks/courses I followed, and my advice to future/aspiring Recursers in a later post.

Cover splash with screenshots of various projects I worked on at RC


12 weeknotes posts

In support of my goal of writing more and RC’s self-directive to learn generously, I posted about the things I made, learned, and discovered each week. These are a good representation of what a random week at RC might entail.

  1. RC Weeknotes 01: Notes from my first week of Recurse or: How I learned to stop nerdsniping and love Rust.
  2. RC Weeknotes 02: Projects and flaming hot takes from my second week at the Recurse Center.
  3. RC Weeknotes 03: Rustling up some skills and making addictive games in week 3 at the Recurse Center.
  4. RC Weeknotes 04: Now we’re cookin’ with gas!
  5. RC Weeknotes 05: Move fast and make games.
  6. Continuing at RC, a new game, and epic links | Weeknotes
  7. Second half of RC, falling leaves, and turning off the copilot | Weeknotes
  8. Shader art, links, and assorted ponderings | Weeknotes
  9. Gigabucks, burning my Mac’s GPU, and Karpathy’s lament | Weeknotes
  10. Cargo build and SpaceX-inspired graphics | Weeknotes
  11. The universe is a big and numerically-unstable video game | Weeknotes
  12. Never graduate, revisiting RL, and orbital mechanics | Weeknotes

2 essays

  1. Make games people play: What Paul Graham doesn’t tell you about delighting 7 year olds.
  2. What OpenAI’s o1 really means: The AGI is dead. Long live the AGI.

10 creative coding projects

One of the highlights each week was Creative Coding: someone suggests a prompt, then we spend a couple hours 1 ideating and implementing something inspired by it, with demos at the end.

  1. Weekly (sub)routine: a procedurally-generated schedule for your week.
  2. Pointy birds: a dynamic swarm / flock simulation of “birds” that follows the mouse and gradually multiplies.
    • It’s kinda cool finding sets of parameters that cause stable orbits vs ones that collapse to a frenzied mosh pit. Also, it’s kinda wild just how much quicker and easier Three.js is compared to building graphics from scratch.
    • Visit pointy birds on codepen.
  3. With or Without You: A.K.A the “addictive hedgehog game”: a hedgehog and a balloon explore their complex push-pull relationship with the help of “sleight of hand” from the player and “twist of fate” from the RNG.
  4. Universal Plums: A resource-management click-game about plums with ridiculously over-the-top 3D graphics. So it’s like the fantastic Universal Paperclips, except not as good, they’re plums, you’re not a rogue AI, and your device gets hotter because of WebGL running.
  5. Fluid-Sim Sailor game: A 2D fluid simulation sailing game where you have to hit just the right angles with your boat and sails in order to navigate the riverways.
  6. AAAHHH: Somewhere between a click trainer game and a psychological torture device
  7. Falling Leaves: A hypnotic 3D autumnal experience in your browser, built with three.js.
  8. Cold Fingers - A Sonic Annealing: A programmatic music piece that gets increasingly chaotic, loud, and complex as the temperature parameter increases.
  9. Webcam aberration: trippy shader art that uses your webcam as input
  10. Switching Trains: This was going to be a game inspired by Dostoyevsky’s Notes from the Underground — a meditation on free will where the player is a non-human machine who explores the limits of their agency and choices whilst managing the locomotives of a 19th-Century Russian train station. What I ended up doing was spending an hour fighting with model and texture formats to get a basic train model loaded into Three.js and applied to a PBR material.

14 bigger projects

I focused mainly on games, browser graphics, machine learning (particularly LLMs), and Rust.

  1. Orbital: an orbital mechanics simulator / game that runs in your browser
  2. tai (Terminal AI): a Rust-based tool for working with LLMs as first-class command line utilities.
  3. DevLog: llmpossible: A real-time devlog I wrote during Impossible Day 2 as I implemented a command-line LLM on Apple Silicon with the Metal Performance Shader backend. Despite challenges with download speeds and privacy issues, I successfully set up a 3B-parameter LLM with GPU acceleration on my Mac through a custom command-line interface.
  4. mtop (Apple M-series top, in Rust) which pivoted into contributing to macmon.
  5. Went deeper on my SimCell project for Impossible Day 1.
  6. AImong Us: a reverse Turing Test game for Game Jam 1
    • A terminal-based game where you go undercover as a large language model (LLM) in an arena of actual LLMs, powered by OpenAI’s GPT-4o 1. You must remain undetected as the AI’s probe you (and each other) for clues about who the human impostor is. The more rounds you survive without being outed by majority vote, the higher your score.
  7. My first WebGL shader art and a web app template for creating more like it that are compatible with Shadertoy.com.
  8. A tool to migrate Goodreads data to personal notes / website. e.g. my new /books page. You can also view the code and use it to liberate your own Goodreads data: gianlucatruda/goodreads-to-md: Convert Goodreads books to markdown files (Obsidian, Hugo, Jekyll etc.)
  9. Contributed to llm with rich text rendering.
  10. Made my first open-source contribution to the Rust ecosystem
  11. Speedran a 7-hour Three.js course from ZTM and used the code examples to build my own bespoke Three.js template project that anyone can use to quickly spin up future projects.
  12. A Markovian Rock-Paper-Scissors bot for when I participated in the intense RPS tournament we had. It involved multiple rounds of submitting a Python bot (with no dependencies) that played 200 rounds against some simple bots as well as the other participants’ bots. I managed to finish 3rd using a third-order Markov model with a stop-loss heuristic to switch back to the Game Theory optimal random play style.
  13. minigrep, a Rust grep clone, following Chapter 12 of Rust book. I went about it in a try-and-check fashion – reading the spec, implementing the code myself and getting it to work, then checking the reference solution in the book to improve on my attempt.
  14. A memoised recursive Fibonacci generator in Rust.

Other stuff I made


Thanks for checking this out! If you’re interested in any of these projects, working with me, applying to Recurse, etc. then please do reach out on X, Bluesky, or by email.

If you think other people might like to read this or any of my other posts, I’d appreciate you sharing it with them.


  1. I gave a few of these some extra polishing after the original two hours. ↩︎