50 Things I Learnt at the Recurse Center

Learning with the Spring 2026 batch

It is striking to me how much I saw people push themselves in pursuit of following their interests. I saw people diving deeply into projects in a way that I have rarely seen in formal education or outside of RC!

We had a lot of fun, we learnt a lot through pair-programming where we would share what we were working on with others, and collaborate to solve problems and make progress.

Weekly presentations kept us up to speed with people’s updates – always super fun and engaging.

Finally “interest groups” like the game-dev interest group provided
great round-tables for people to share their work on a specific topic in
more depth while also soliciting feedback and asking for guidance. I
know I took many problems I was having with game-dev to the round-table
and received several great pointers for how to proceed.

I was amazed by how much my general knowledge of the technology world grew just from being around so many talented individuals working on so many diverse projects.

In short:

  • People working on similar things to myself were great to pair with. We would chat about the things we knew and work together to understand things that we didn’t know.

  • People working on completely different projects to myself opened my eyes to new aspects of the technological landscape.

50 Things I learned at RC

One of the faculty members (and founder) of RC Nick shared a great article: https://simonwillison.net/guides/agentic-engineering-patterns/hoard-things-you-know-how-to-do/

A big part of the skill in building software is understanding what’s possible and what isn’t, and having at least a rough idea of how those things can be accomplished.

With that in mind here are 50 things I came across! I can’t claim to know all of them in depth, only a handful but I feel richer for having come across all of them.

I hope they will be useful in the future if they haven’t alraedy and hopefully some of the information is helpful for others too!

Original PDF:

1. Cloudflare Static Hosting

  • Cloudfare Pages is both good and free
  • It’s easy to use with Git integrations for automatic deployment
  • I love static sites for fast, simple & reliable hosting

2. Zork

  • The classic 1977 text adventure game had a bit of a moment in our batch

  • Cool to put a name to a face — as I think this was also my favourite
    game at the Barbican’s “Game on” exhibition in 2002. My dad found it
    really funny that out of all the games, the most compelling was a 30
    year old text adventure!

  • We also did a lot of spelunking into how good an LLM is at playing
    Zork. It turns out it’s quite bad at playing autonomously BUT it can
    take free-form human language and translate it into valid game
    commands very well!

3. Godot – A free open-source game engine

  • A freecross platform, open source game engine
  • Easy to export to web & iPhone etc
  • Has a great super friendly community and free tutorials & code

4. Blender is scriptable!

You can write Python scripts to automate and generate 3D content

5. Desmos

  • A free web based graphical calculator.

  • Can do some impressive modelling by defining custom functions

  • One fellow recurser used this to build up a complete collision detection system in Desmos


6. Bevy

  • A game engine written in Rust
  • Super fast for 2D games
  • Compatible with the Rcade

7. In OpenGL the camera doesn’t move

  • The camera projects the game world onto the screen
  • The camera is always at (0,0) — the world is translated instead
  • Graphics work by moving everything to the origin
  • NOT by moving a camera through the world

8. BoardGame.io

  • An easy to use framework for building multiplayer board games
  • Abstracts lobby creation, turn logic, and game state management to strip away a lot of the boiler plate required for building an online board-game
  • Supports simple AI players

9. Realism + Bump Maps

  • Nice lighting is more of a photography / artistic challenge than a coding one

  • Bump maps add surface detail and depth in Godot – without having to add any extra geometry

  • Quick and easy way to get great detail and realism on textures with minimal overhead.

10. MCP — Model Context Protocol

  • Thin wrappers around existing APIs
  • Useful but can feel bloated
  • https://cra.mr/mcp-skills-and-agents/
  • Many MCP servers don’t need to exist — they’re either poor API wrappers or can be replaced with a skill file

The GitHub MCP server consumed ~50,000 tokens of context (later trimmed to ~23,000) to teach an agent how to interact with GitHub.

A SKILL.md file saying “use the gh CLI for these operations” achieved the same result in ~200 tokens

11. Skills.md

  • Easier to use skills than MCP
  • I used some Swift skills and saw a meaningful improvement in AI-generated Swift
  • https://github.com/twostraws/swiftui-agent-skill
  • https://github.com/AvdLee/SwiftUI-Agent-Skill

12. RAG — Retrieval-Augmented Generation

  • Assuming an LLM is good generally at producing results but hasn’t
    been trained thoroughly on your data-set it may have some rudimentary
    knowledge but may also hallucinate a lot when asked about your domain.

  • When asking it about a large corpus, your context window isn’t big
    enough for everything to be loaded into the context window up front.

  • You can solve this by selectively retrieving relevant chunks of data
    and adding them to context window at query time

  • I made Sunnah Search which searches 1000s of quotes from islamic
    texts and injects the relevant ones into an LLM so that it can be
    used as a research tool providing great answers that are well
    referenced, with links to the source material.


13. ChatGPT voice interviews

  • Put ChatGPT in voice mode
  • Give it the job description + your CV + cover letter + full career CV
  • Ask it to give model answers based on your experience
  • Great to practice talking about your work, which can feel unnatural if you’re not generally a big self-promoter.

14. Child’s Play — Money vs a rich life

15. “One shot” doesn’t mean what I thought

  • When an AI “one shots” something, ”One shot” refers to how many examples you give the model
  • Not how many attempts it takes to generate something!

16. OKLCH

  • An alternative colour space to HSL / HSV
  • Perceptually uniform — colours feel consistent at different hues

17. Opus is really good — even at CSS

  • We had a fun challenge “100 apps in 100 minutes”
  • The quality of your model matters a lot.
  • I was using a smaller model — my apps were bad, often buggy and
    super dull to look at.
  • Opus changed that, all of its outputs looked great and stylish.

18. Git Worktrees

  • Allows multiple working trees from the same repo

  • Great for agents to independently work on the same codebase locally.

  • In practice this just meant I spent more time fixing merge conflicts

  • However this is easily avoided. Just like a regular dev team we can have agents work on disjoint parts of the code to avoid conflicts


19. Capacitor!

  • Turns websites into native apps

  • Easy cross-platform

  • Not really my cup of tea as I prefer native apps — but good to know what the latest development are in cross-platform “write-once-run-anywhere” frameworks.


20. Firecracker VMs

  • Super lightweight VMs used by AWS Lambda
  • Spins up in milliseconds

21. Lean

  • State-of-the-art tool for formally proving mathematical theorems computationally
  • Interesting intersection of maths and programming
  • Great fun interactive intro here: https://adam.math.hhu.de/#/g/leanprover-community/nng4

22. IAP — In-App Purchases

  • Great for accepting payments in iOS apps
  • Lots of flexibility: one-time purchases, subscriptions
  • Subscription events sync from the app-store to your BE so you can manage state
  • I automated a sync from local Xcode config test files up to App Store Connect

23. SwiftUI under the hood

  • Watched some great WWDC sessions to understand SwiftUI in more depth
  • SwiftUI does some interesting magic with structs and diffing
  • Understanding this better makes it easy to optimise your SwiftUI code once you understand the model it is working with
  • Videos here: https://developer.apple.com/videos/play/wwdc2021/10022/

24. What is an agentic loop?

  • Instead of just asking an LLM for an answer you can also give the LLM tools that it can use when it doesn’t know an answer.
  • These tool calls exist in a loop — the model decides when it’s done.

  • This all combines to make an agentic loop = LLM + tool calls

  • More powerful than just having an LLM

  • More flexible than manually building toolchains

  • About as reliable and unpredictable as any LLM tool — but it’s
    possible to try and validate output and steer it in the right
    direction.

  • Can set it up in \~50 lines of Python


25. Ollama

  • Run local LLMs insanely easily, but not necessarily well — unless you have > 30GB RAM
  • 64GB RAM: works great. 11GB RAM: not so much.
  • Not run by Facebook — it’s a nice independent project!

26. OpenWebUI

  • A self-hosted ChatGPT-style interface for local models
  • Pair with Ollama for your own private AI assistant running entirely
    locally

27. Claude as a code reviewer

  • Found multiple production vulnerabilities in a friend’s project with a simple prompt for Claude Code.
  • Results were quite excellent, from just pointing Opus4.6 at the
    codebase and saying:

    • You are an expert solution architect who has been brought in
      todo a code-review and audit of this project both for the
      non-technical CEO and the development team – review the
      @BE_Shared_Code and tell me the overall summary of what it
      does, what it does well, where it could be improved, any bad
      anti-patterns that are being used any possible bugs or security
      vulnerabilities and any good areas that exemplify best practice
      (or how they could be improved to exemplify best practice)
  • Found \~5 vulnerabilities which were really critical! Also gave a bunch of useful suggestions. Would recommend everyone todo this periodically!

28. Creative Coding

  • Making art through code: generative visuals, interactive pieces
  • It’s a whole community!

29. Xcode Agentic Mode vs Claude Code vs Cursor

I had been using Cursor and Xcode for a while but in batch I had a chance to try out more agentic coding setups to compare pros and cons.

  • Xcode AI has been trained on a bunch of skills relating to Apple
    frameworks and as such often performs better out of the box than
    others.

  • Claude is token-hungry and then loves asking you to buy more tokens…

  • Cursor is my new best friend – best all rounder. Love the interface,
    feels like a much more mature offering. Can also integrate with
    Anthropic’s models.

  • Cursor’s composer and auto models are VERY fast allowing for much faster and easier iteration.


30. WebSockets: peer-to-peer in the browser

  • Real-time, bidirectional, low-latency connections for streams of
    data

  • Helpful for my baby monitor app!

31. Apple on-device text-to-speech

// Crete an utterance.  
let utterance = AVSpeechUtterance(string: "The quick brown fox jumped over the lazy dog.")

// Retrieve the British English voice.  
let voice = AVSpeechSynthesisVoice(language: "en-GB")

// Assign the voice to the utterance.  
utterance.voice = voice

// Create a speech synthesizer.  
let synthesizer = AVSpeechSynthesizer()

// Tell the synthesizer to speak the utterance.  
synthesizer.speak(utterance)

32. UV

  • Python package manager — no more pip hell
  • Handles venvs, lockfiles, and installs in one tool
  • If pip and venv have ever made you pull your hair out, try UV

33. OAuth

  • A relatively complex way of authenticating users
  • But surprisingly easy to set up in practice
  • Redirect → token exchange → done

34. Railway hosting

35. Music classification: Essentia

  • Open-source audio analysis library from the MTG
  • Can classify genre, mood, tempo, key and more

36. Google Colab

  • Run GPU-heavy code for free in the browser

  • Pairs well with HuggingFace for ML experiments

37. Fine-tuning an image generator

  • Start with existing model weights, continue training on your own data

  • ComfyUI makes the workflow visual and scriptable

  • Lots of great resources available for free on HuggingFace – goto place for ML!

38. TUIs — Terminal User Interfaces

  • Not just REPLs — almost like GUIs but in the terminal
  • Can even be written in React
  • Ink is a great(?) library for writing TUI’s in React
  • Claude Code uses Ink!
  • Great website that explains terminals more, how they work in depth: https://how-terminals-work.vercel.app/

39. 🧃Juice in video games

  • The fun extra bits that make games feel alive
  • Screen shake, sound effects, particles, animations
  • Juice is what separates ‘playable’ from ‘fun’

40. StyleGAN

  • Interpolate smoothly between two different visual features
  • e.g: Morph between styles or faces

41. You can build your own coding agent easily

  • Codex is open source — OpenAI’s coding agent — source available on GitHub
  • You can build your own harness in \~200 lines of Python
  • https://www.mihaileric.com/The-Emperor-Has-No-Clothes/

42. Local open-source alternatives to Claude Code

Pi — integrates with Ollama

43. Aperiodic tiling (Museum of Mathematics)

The Museum Of Math in NYC has an aperiodic tiling that covers their floor!

  • A tiling that covers a plane with no repeating pattern

  • The hat / einstein tile: a single shape that tiles aperiodically

  • Only discovered in 2023!

44. Ghidra — reverse engineering

Open-source reverse engineering tool from the NSA

  • Disassemble, decompile, and analyse compiled binaries

  • If you ask it to, Claude is great at using this!

45. MLX — run models on Apple Silicon

Apple’s ML framework optimised for M-series chips

46. Monads are Burritos

https://blog.plover.com/prog/burritos.html

  • Haskell syntax is way more obtuse than I remember. Great language
    but readability for new-comers is not one of its priorities.

  • Watching Raf (one of my batch mates) whizz through code in Clojure
    gave me a better feel for the value of functional languages and how
    to architect software through functional languages.


47. Java version 8 is not the latest

Java 8 comes up first when you Google ‘Java for Mac’ (May 2026)

  • Version 8 still gets security patches so the release date seems
    modern.
  • However you probably want version 21+
  • Java 26 is the current release
  • Java 8 is from 2014

48. Japan has non-Apple App stores

  • Due to regulation. An interesting advancement in tech legislation.
  • This has been supported since Dec 2025
  • But on March 31st 2026: “Japangets an alternative iOS game store. Aptoide’s AppArena is now available in Japan as an Apple Store alternative”

49. Clipboards are wild

The clipboard stores multiple representations of the same data:

  • Apps pick whichever format they prefer: HTML, RTF, plain text…
  • Always wondered why pasting sometimes keeps formatting and sometimes doesn’t
  • Thanks George M for giving some great presentations and demos on
    this: https://github.com/georgemandis/copycat
  • George also has a cross-platform clipboard CLI for visualising this
    more easily

  • Can’t wait for “Schrodinger” to be released – which is a GUI
    clipboard manager that exposes the multiple formats each copy may
    store!

50. Unschooling works!

  • Self-directed learning without a fixed curriculum
  • RC is living proof: motivated people learn deeply and broadly

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *