RSS.Social

gridbugs

follow: @[email protected]

Posts

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

Every Game I Made Since 2019 had a Lighting Bug

Setting up WinGet for the First Time

Restoring my Childhood Family Computer: Part 3

Restoring my Childhood Family Computer: Part 2

Restoring my Childhood Family Computer: Part 1

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

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

Rain Forest

7 Day Roguelike 2022: Complete

7 Day Roguelike 2022: Interactions

7 Day Roguelike 2022: Motivation

7 Day Roguelike 2022: Time

7 Day Roguelike 2022: Content

7 Day Roguelike 2022: Atmosphere

7 Day Roguelike 2022: Bootstrapping

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 Recap

NTFS on FreeBSD

NTFS on FreeBSD

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

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 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

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

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

Visible Area Detection with Recursive Shadowcast

Cellular Automata Cave Generation

2D Phong Illumination in WebGL

Post Mortem of an Abandoned Game

Top-down Sidescrolling Engine

Pitch Controlled Game