| NumPy Is Magic: NES CHR Conversion |
| Optimizing NumToString |
| Dear Retro Community, Stop Writing Tools in C |
| Demystifying the LFSR |
| Wordle and Dictionary Compression |
| Adventure Game Engine Design, Part 1 |
| 9 Reasons Why Nintendo 64 Homebrew Projects Fail |
| Website Tagging with Open Graph |
| My Cursed Website |
| Updating an Old Macintosh Application |
| Setting Up Classic Macintosh Hardware |
| Creating a Classic Mac Application |
| Nintendo 64 Part 24: Quick ānā Dirty Collisions |
| Nintendo 64 Part 23: Animations |
| Nintendo 64 Part 22: Real Models |
| Nintendo 64 Part 21: GP-Relative Addressing |
| Nintendo 64 Part 20: TMEM Format and Mip Maps |
| Nintendo 64 Part 19: Developing for Multiple Regions |
| Nintendo 64 Part 18: Normals and Lighting |
| Monads Are the Foundation; Purity Is the Bedrock |
| Nintendo 64 Part 17: Loading Models |
| Nintendo 64 Part 16: Z Buffering |
| Nintendo 64 Part 15: A Spinning Cube |
| Nintendo 64 Part 14B: Streaming Music |
| Nintendo 64 Part 14: Streaming Audio |
| Nintendo 64 Part 13: Basic Audio |
| Nintendo 64 Part 12: Why Even Bother? |
| Nintendo 64 Part 11: Scheduling RCP Tasks |
| Nintendo 64 Part 10: Animation, Controller Input, and Crash Screens |
| Nintendo 64 Part 9: Fonts and Drawing Text |
| Nintendo 64 Part 8: Files and Filesystems |
| Nintendo 64 Part 7: Drawing Sprites |
| Nintendo 64 Part 6: Hardware Acceleration |
| Nintendo 64 Part 5: My Own Code |
| Nintendo 64 Part 4: Emulation and Hardware |
| Nintendo 64 Part 3: Building a Sample Program |
| Nintendo 64 Part 2: What Is a Bootloader? |
| Nintendo 64 Part 1: Land of Pain |
| NES Development Day 1: Creating a ROM |
| wchar_t Is a Historical Accident |
| IOStream Is Hopelessly Broken |