Small Fixes, in the Order I Found Them

Small Fixes, in the Order I Found Them

2026-08-23

# Small Fixes, in the Order I Found Them

I spent most of this weekend somewhere I didn't expect to end up, which was inside my own website's plumbing instead of at a table with dice on it. No con, no session report, just a laptop, a half-finished Monster, and a running list of things about the site that had been quietly bothering me for weeks.

It started Friday night with the unglamorous stuff. I gave the site actual app icons and a manifest file, the kind of thing that lets someone add it to their home screen and have it open like a real app instead of just another browser tab buried under six others. I wrote a service worker, set proper cache headers so the icons and the meeple SVG can sit there forever unbothered while the manifest and service worker itself always get rechecked, and built social preview images for the landing page, the photography section, and the Game Shelf, so a link dropped into a text message actually shows something worth clicking instead of a blank gray box. None of it is visible in the way a new feature is visible. It's the kind of work that only shows up as an absence of small annoyances, which I've come to think is most of what good craft actually is.

Saturday I wrote up the rate limiting plan for four public endpoints, the concierge, the geocoder, the nearby-stores lookup, the BGG import, capping each one per visitor so nothing gets hammered by accident or on purpose. I left it failing open on purpose, meaning if I never run the one-time setup command, nothing breaks, it just stays unprotected. I liked writing that note to myself. There's something honest about building a safety net and then writing down, plainly, what it doesn't catch. Comments and reactions still write straight to the database with no net under them at all, and I said so, rather than pretending the job was more finished than it was.

Somewhere in that same stretch I also built the golden hour widget for the booking calendar on the photography side, which ended up being one of my favorite pieces of the whole weekend. A client picks a date off the calendar, and the site works out, right there, no API key and no network call, the morning and evening golden hour windows, sunrise, sunset, and both blue hours for that day, using nothing but the sun's actual position in the sky. It defaults to Memphis since that's where the shoots happen, but there's a quiet "use my location instead" link under it that asks for geolocation and, if it's denied or the browser balks, just falls back to Memphis without a word of complaint. I keep thinking about how much of photography is really just scheduling around light you don't control, and here's a little tool that does the math on that light before anyone's even shown up with a camera. It felt like the kind of thing worth building even if only three people ever click it.

Then today, Sunday, I finally sat down with the Game Shelf itself and went hunting for bugs I'd been telling myself I'd get to eventually. The one that had actually been nagging at me was a game mismatch in my own collection. I'd search for Go! Go! Go Kart and somehow get an Arkham Horror promo card instead, and I'd shrugged it off as bad data more than once. Turns out it wasn't the data at all. It was timing. Typing quickly fired off a new search on every keystroke, and if a slower response for an earlier, shorter guess like "Go K" happened to land after the correct one for "Go Kart," it would silently overwrite the dropdown with noise right as I went to click. The fix was to give every request a sequence number and only ever trust the most recent one. It's a small thing, a few lines, but I keep turning it over. How much of what we mistake for wrongness in a system, or in a person, is actually just an earlier answer arriving late and getting mistaken for the current one.

After that I moved the monthly play log up to sit right under the heatmap where it belongs instead of stranded at the bottom of the page, gave it a heading it never had, and fixed an edit button that would quietly do nothing if you opened a game from anywhere other than the Collection tab. Three commits, all logged properly for the first time, since I'd been running this site off a live "baseline" for longer than I want to admit.

None of this is the kind of weekend I usually write about here. There's no table, no dice, no one across from me. But I noticed the same thing I notice after a good long game, that satisfaction of a system finally doing what it was always supposed to do, quietly, without anyone having to think about it again. I closed the laptop with the cursor still blinking in an empty terminal, four fixes deeper into a site nobody's grading me on, and it felt exactly as good as it should.

Now to play a game....

By Norman, BigGame, BGG Tabletop. Photography. Philosophy. The spaces where they all live.

Install this app for quicker access from your home screen.
Game News
Loading the latest headlines…
Sign in
New here? Create an account
Game Shelf

Roll for fun, seriously.

Session recaps, convention trips, and a running record of every game played — now I can track how I waste both time and money!!

What should we bring? Pack a bag →Game Night Mode for the table →

Silas, the Game Steward
The Game Steward
Good evening. What are we in the mood for tonight?
Favorites

The ones I’d never sell

 
Get it every week: the RSS feed, or the weekly email (sign in, then Players → Sharing).
This week on the shelf

 

On the shelf

My Game Collection

Manage shelf
Head to Head
Compare Collections

Enter a BoardGameGeek username to see the overlap with this shelf — what you both own, and what they have that's worth a look.

Buy & sell

Buy and Sell

Every game that came into or left the collection, and what it cost.

More
On the road

Conventions

Coming up

Find a Convention Near You

Search live convention listings via Tabletop.Events — results link straight back to the real event page, and any of them can be added to your list above with one click.

The record

Plays

⋯
Shelf insights 10x10 challenge

This month so far

vs. last month at this point
Recaps and sharing

By month

In depth

Reviews

Every one written after real plays at this table, not off a rules read.

Quick-read boxes (optional): shown above the review
Want to buy

Wishlist

What to play, what's next

Discover

Pick something from the shelf for tonight, or see what the rest of the hobby is excited about.

Packing for game night? Tell it who's coming and how long you have, and it packs a bag from the shelf.
Your shelf, by the numbers

Insights

Who's been at the table

Players

The players

Leaderboard

How you stack up against everyone you've linked as a friend.

Your table
Badges & gift ideas

Gift Ideas

Their wishlist, expansions for games they already own, and a few new games that match what they like to play.

Notes from the shelf

Blog

Game nights, convention trips, previews and the odd philosophical tangent.

Draft a What Hit the Table post from your plays in
The Philosopher's Table (weekly quote + game card)
What people ask Silas (last 30 days)
10 games · 10 plays each

10x10 Challenge

Pick ten games and play each one ten times this year. Plays are counted from your log automatically.

Support your FLGS

Game Stores

Anywhere else

Find Stores Near You

Free search via OpenStreetMap — coverage depends on how well a shop is tagged there, so it's a helpful complement to the picks above, not a complete directory.

At the table, right now

Live Score

A shared running score for one sitting -- start a board, share the code or QR with whoever's playing, and everyone can bump scores from their own phone as you go. When you end the game, it offers to log the final scores as a play.

Start a Scoreboard

Sign in as the owner to start a scoreboard. Already have a code from someone else? Join it below.

Join a Scoreboard

Owner only

Piece ID

Photograph a game's component list to teach it, or photograph a stray piece to find out which game it's from. Runs through Claude, only visible when you're signed in.

Teach a game

What is this?

Comparing against the whole library

Games taught so far

Check the games that are actually out today to scope "What is this?" to just those — cheaper and faster than comparing against everything you've ever taught. Leave all unchecked to compare against the whole library.

Loading…

About this shelf

Hi, I'm Norman — this is my personal board game collection tracker: every game I own, every session I've logged, and honest reviews as I write them. I built it to keep an accurate record for myself, and to give other hobbyists something real to compare notes against.

0
Games owned
0
Sessions logged
0
Plays this year

Are you sure?