RSSAmplifier

Blog

Kallin Nagelberg

Reality-adjacent thoughts on software, games, and whatever I’m building.

kallin.github.ioRSS feed ↗6 posts

Latest posts

Beaten by an If-Statement

Part 3: the agent that beat a random player every game loses every game to a few hundred lines of hand-written priorities. Stranger: a near-perfect imitation of those priorities still loses four games in five. The cause is not the learning, the data, or the network. It is how the network was allowed to answer.

From Random to Reasonable

Part 2: before a machine can learn a game, something has to run the game. Building the engine that plays anything, meeting Jaipur (the two-player trading duel that carries this series), and bolting an off-the-shelf learner onto it to watch random flailing become recognizable play. Plus the first war stories: an agent that found the one legal way to do nothing forever.

One Machine, Any Game

Opening a series about a question that won't leave me alone: if you handed a machine a board game's instruction manual and the contents of its box, could it teach itself to play well? Any game, with no game-specific code. Seventy-five years of game-playing AI says the pieces finally exist. The catch is how you tell the machine the rules.

Giving Coding Agents Eyes for Motion

Coding agents can’t see motion: they write an animation, watch the tests pass, and never notice it looks broken. Here’s a trick that gives an agent motion perception: capture the animation as a timed burst, tile it into one labeled contact sheet, and hand it back as a single image.

Tracing Ontario’s $244 Billion Budget: Where It Disappears

I built an interactive tool to trace Ontario’s $244B budget as deep as the public data allows, tagging every number as verified, a government black box, missing from public data, or classified. Here’s what I found, and why AI changes what civic analysis can do.

Understanding Complexity Density: A New Approach with RuboCop

A RuboCop cop I proposed, Metrics/SingleLineComplexity, that applies the ABC metric per line to measure "complexity density" and flag the individual lines packing in too much logic.