Getting a sorceress into a board game involved learning Lua, baking textures in Blender, and explaining to an AI assistant that “Add one kill per Hero Stone” was an important distinction. I adapted Goblin Slayer, a board game by Rich Carlson and Iikka Keränen, for Tabletop Simulator. It gave me a concrete reason to learn […]
The ongoing conversation
Month: October 2026
Upload Test: Passed. Upload: Failed.
A PDF preview loaded on a WordPress site I was working on, but the original PDF returned “access denied”. I had already worked on an upload-permission repair, and the tests had passed. The next uploads showed what my earlier tests had missed. The first repair addressed permissions in the upload folders. Existing files became readable, […]
A Useful Tool Doesn’t Always Need a Server
While prepping an orienteering trail, we needed to compare GPS track and photographs alongside an existing map that might be out of date with the current park trails. That was the delivery problem for the Grant Park review tool: put the material together so it could be examined, layers compared, and photos of interesting features […]
Who Pays for AI Progress
A data center can be a good investment for its owner and a bad deal for the people paying for the power lines. Before calling it progress, ask whether those are the same people, what each group gets, and who pays if the expected customers never arrive. A company forecasts demand.A utility plans construction.A community […]
A “Successful” Search That Found Nothing
A search in a job search application I’m developing reported success without finding any usable postings. The workers were running, the task had finished, and the application reported no error. Unfortunately, the user wants job postings, not reassurance about the workers. Finding nothing can be a perfectly valid result; the problem was that the application […]
You Don’t Have to Accept Every AI Code Review
On one of my pull requests for the Grand Comics Database project, Gemini Code Assist offered three suggestions: two warned about possible errors and the third suggested a clearer way to write a loop. I accepted the third and explained why I wasn’t making the other two changes. The warnings sounded reasonable, but they depended […]