gridbugs
I post about game development, experiments with retro hardware, and DIY synthesizers.
- Posts
- 262 from 10 Jul 2015 to 6 Mar 2026
- Posting
- monthly (11 in the last year)
- Kind
- personal blog
- Feed
- https://www.gridbugs.org/atom.xml
2026 9
2025 13
- Restoring my Childhood Family Computer Part 4: Emulation
- Porting my Toy OCaml Build System to Windows
- Alice the Caml
- Fixing my Old OS Assignment with Machine Code Hacks
- Sound on OCaml on Windows
- Scope Creep
- 7 Day Roguelike 2025: Success!
- 7 Day Roguelike 2025: Putting it all together
- 7 Day Roguelike 2025: Map, Pickups
- 7 Day Roguelike 2025: Text, Item Labels, Central Hub
- 7 Day Roguelike 2025: Collision Detection and Enemies
- 7 Day Roguelike 2025: Oscillographics
- 7 Day Roguelike 2025: Vector 3D Renderer
2024 14
- Every Game I Made Since 2019 had a Lighting Bug
- Setting up WinGet for the First Time
- Restoring my Childhood Family Computer Part 3: Chime
- Restoring my Childhood Family Computer Part 2: Wasps!
- Restoring my Childhood Family Computer Part 1: Rust
- Frustrating Interactions with the OCaml Ecosystem while developing a Synthesizer Library
- Electric Organ
- 7 Day Roguelike 2024: Shops, Organs, Environment Effects, Boss
- 7 Day Roguelike 2024: Applying Items, Equipment
- 7 Day Roguelike 2024: Items
- 7 Day Roguelike 2024: Ranged Combat, Sound Effects, Message Log
- 7 Day Roguelike 2024: Title, Pathfinding, UI
- 7 Day Roguelike 2024: Animation, Music, Level Switching
- 7 Day Roguelike 2024: Procgen, Graphics
2023 14
- Component Pinouts and Notes
- Programming an Arduino the Hard Way
- Chargrid SDL Frontend
- 7 Day Roguelike 2023: Mechanics, Content, Playtesting
- Boat Journey
- 7 Day Roguelike 2023: Passengers, Art
- 7 Day Roguelike 2023: UI, Night, Loss, Menus
- 7 Day Roguelike 2023: Even More Procedural Generation!
- 7 Day Roguelike 2023: More Procedural Generation
- 7 Day Roguelike 2023: Procedural Generation
- 7 Day Roguelike 2023: Bootstrapping, Boat Gameplay, Vision
- Playing sound on the NES by directly setting its DMC output
- Demystifying Floating Points
- If you use a custom linker script, _start might not be your entry point
2022 8
2021 10
- Reverse-Engineering NES Tetris to add Hard Drop
- Orbital Decay
- 7 Day Roguelike 2021: Gamepad Support, Audio, Maps, Help Screen, Play Testing
- 7 Day Roguelike 2021: Enemies, Message Log, Space Gradient
- 7 Day Roguelike 2021: Weapons
- 7 Day Roguelike 2021: Upgrades
- 7 Day Roguelike 2021: Depressurisation
- 7 Day Roguelike 2021: NPCs, Pathfinding, First Level, Final Level, Projectiles, Destructible Terrain
- 7 Day Roguelike 2021: Procedural Generation, Rendering, Pretty Menus, End Text
- 7 Day Roguelike 2021: Preparation
2020 138
- 2020 Recap
- NTFS on FreeBSD
- NTFS on FreeBSD
- Daily Posts
- dmenu_histogram
- dmenu_histogram
- Stopping daily posts
- Disk image tool progress - Counter-intuitive header population
- Disk image tool progress - directory hierarchies
- Learning about kqueue
- Configuring Feh
- Chargrid HiDPI Scaling Fix
- Ruby shell with custom .inputrc
- Tmux runs a login shell by default
- Building this site sometimes crashes ruby
- How I start X
- Make sure your terminal emulator runs in the expected environment
- Make sure your terminal emulator runs in the expected environment
- Winit makes windows the wrong size in some cases I think
- Why you need a .bashrc and .profile
- Why you need a .bashrc and .profile
- Updating Library Dependencies
- How I spent 2020-10-31
- FreeBSD 12.2 intel graphics bug
- Vanilla Javascript and Under Engineering
- Simple Wolfenstein-3D-esque renderer
- Simple Wolfenstein-3D-esque renderer
- Parsing and Generating GUIDs in GPT Header Fields
- Cellular automata drawing prompt generator
- Repository of new words
- Boss fights in traditional roguelikes
- Boss fights in traditional roguelikes
- The latest rust release broke backtraces on FreeBSD
- Raidz setup
- Rust stacktraces are <unknown> on FreeBSD
- Train Game
- Fixing zpool after FreeBSD fresh install on ZFS mirror
- New URL and title formats for daily posts
- Time to start using language managers?
- Unsafely removing disks in a ZFS pool
- Yes WWW
- What if all your boot disks suddenly got wiped?
- I broke some things
- Formatting GUIDs in GPT header fields
- Encoding disk headers into disk images
- Gradually implementing a tool to create GPT FAT disk images
- All game links on this site now point to itch.io
- More of my 7DRLs are playable on itch.io
- Migrated browser games to nearlyfreespeech
- FAT32 FSInfo and its backup don't always match
- In praise of rEFInd
- Getting back into bouldering
- I accidentally let some of my TLS certs expire
- KID___PER? (2,4,3,3,6)
- Determining the size of a FAT32 partition
- I no longer feel like an imposter
- FAT32 FSInfo
- Cryptic Clues Repository
- I saw an eel in Moore Park
- Have I been using vi keys wrong my whole life?
- Crunch
- What exactly is a "Functional Programming Language"
- Is it a good idea, or are you just proud to understand it?
- Checking backup regions in gpt fat disk image tools
- Separable Convolution Kernels
- Move semantics and argument parsing
- Parsing command-line arguments with meap in real programs
- Problems, not Solutions, Part 2
- Meap Help Messages
- roglkpl
- New phone, and an arduous journey bootstrapping LineageOS
- Renamed "args_af" to "meap"
- Quality of life in command-line argument parsing
- Parsing my first command-line arguments
- I was briefly wrong about list's behaviour as an applicative
- Low-Level and High-Level Command-Line Argument Parsing
- New argument parsing library
- Re-added MBR parsing to my GPT disk image library
- First thoughts after playing Epistory
- Word navigation in Vim
- Reading and listing files with my disk image tools
- Qwerty Quirks
- Relearning Qwerty
- Disk image tool no longer reads entire image
- Disk image tool progress
- Creating and mounting a FAT32 partition in a GPT disk on FreeBSD
- Image Creation Tool - First Steps
- My keyboard backlight works!
- Planning to make a simple disk image creator
- Should I make my own bootloader?
- Fixing bugs in sample code
- Quick'n'dirty user-level switching
- x86 Basic Interrupt Handling Kind of Working
- Global Descriptor Table
- Trampolining
- More fun with linking
- I need to go learn more about ELF and static linking
- In Homogeneous Coordinates Addition is Multiplication
- Homogeneous Coordinates
- Printing over serial on x86
- Trekking is good because it's a problem you can solve
- Part 13 - Equipment
- Part 12 - Increasing Difficulty
- Chargrid Roguelike Tutorial 2020
- Problems, not Solutions
- BOOTBOOT
- Sticking with FreeBSD for now
- Bootstrapping Nightly Rust on OpenBSD
- Rust on OpenBSD
- Part 11 - Descending the Stairs
- Time to stop using language managers
- Roguelike Tutorial - Levelling up the player character
- OpenBSD
- stevebob.net
- Replace all the CSS!
- I'll probably move this site to nearlyfreespeech
- Part 10 - Saving and Loading
- Distro Hopping
- Part 9 - Ranged Scrolls and Targeting
- Part 8 - Items and Inventory
- Part 6 - AI and Combat
- Part 7 - User Interface
- Part 4 - Field of View
- Part 5 - Placing NPCs
- Part 2 - Entities, Rendering, Map
- Part 3 - Generating a Dungeon
- Part 0 - Setting Up
- Part 1 - Drawing and Moving the Player
- Conway's Game of Life on the NES in Rust
- slime99
- 7 Day Roguelike 2020: Day 7
- 7 Day Roguelike 2020: Day 6
- 7 Day Roguelike 2020: Day 5
- 7 Day Roguelike 2020: Day 4
- 7 Day Roguelike 2020: Day 3
- 7 Day Roguelike 2020: Day 2
- 7 Day Roguelike 2020: Day 1
- 7 Day Roguelike 2020: Plan
2019 12
- Zelda Screen Transitions are Undefined Behaviour
- NES Emulator Debugging
- Get Well Soon
- 7 Day Roguelike 2019: Content, Plot, Polish, Publish
- 7 Day Roguelike 2019: More Enemies, More Upgrades, More Cards
- 7 Day Roguelike 2019: Character Progression
- 7 Day Roguelike 2019: Card Gameplay
- 7 Day Roguelike 2019: Card Display, Death Screen
- 7 Day Roguelike 2019: Physics and Improved Pathfinding
- 7 Day Roguelike 2019: Procgen and Basic Pathfinding
- 7 Day Roguelike 2019: Planning and Preparation
- Procedural Generation with Wave Function Collapse
2018 10
- 2018 Recap
- Meters Below the Ground
- 7 Day Roguelike 2018: Success
- 7 Day Roguelike 2018: Meters, Objectives
- 7 Day Roguelike 2018: NPCs
- 7 Day Roguelike 2018: Character Progression, Melee Combat
- 7 Day Roguelike 2018: Items, Glossary, Combat, Railgun
- 7 Day Roguelike 2018: Procgen, Visibility, Missions, Colour
- 7 Day Roguelike 2018: Day 1
- Pathfinding on a Grid
2017 13
- Another Roguelike Lighting Demo
- Modifying Entity Component System for Turn-Based Games
- Programming Languages Make Terrible Game Engines
- Apocalypse Post
- 7 Day Roguelike 2017: Success
- 7 Day Roguelike 2017: Consumables
- 7 Day Roguelike 2017: Procgen and Explosions
- 7 Day Roguelike 2017: Mechanics and Descriptions
- 7 Day Roguelike 2017: Vehicles
- 7 Day Roguelike 2017: Shopping
- 7 Day Roguelike 2017: Day 1
- 7 Day Roguelike 2017: Plan
- Howl
2016 13
- Roguelike Lighting Demo
- Even Separation Algorithm
- Skeleton Crew
- 7 Day Roguelike 2016: Success
- 7 Day Roguelike 2016: Ending
- 7 Day Roguelike 2016: Polish
- 7 Day Roguelike 2016: Pathfinding
- 7 Day Roguelike 2016: Procedural Generation
- 7 Day Roguelike 2016: Day 1
- 7 Day Roguelike 2016: Plan
- Encoding Rules for Turn-Based Games
- Glacial
- Bug Catcher